Repository: ionic-team/starters Branch: main Commit: cbac18102df5 Files: 754 Total size: 9.4 MB Directory structure: gitextract_q5flt7bx/ ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE.md │ ├── ionic-issue-bot.yml │ └── workflows/ │ ├── main.yml │ └── wizard-templates.yml ├── .gitignore ├── .gitmodules ├── .npmrc ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── angular/ │ ├── base/ │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── extensions.json │ │ │ └── settings.json │ │ ├── angular.json │ │ ├── ionic.config.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ └── app.module.ts │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── global.scss │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── test.ts │ │ │ ├── theme/ │ │ │ │ └── variables.scss │ │ │ └── zone-flags.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.module.ts │ │ └── home/ │ │ ├── home-routing.module.ts │ │ ├── home.module.ts │ │ ├── home.page.html │ │ ├── home.page.scss │ │ ├── home.page.spec.ts │ │ └── home.page.ts │ ├── list/ │ │ ├── ionic.config.json │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.module.ts │ │ ├── home/ │ │ │ ├── home-routing.module.ts │ │ │ ├── home.module.ts │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── message/ │ │ │ ├── message.component.html │ │ │ ├── message.component.scss │ │ │ ├── message.component.spec.ts │ │ │ ├── message.component.ts │ │ │ └── message.module.ts │ │ ├── services/ │ │ │ ├── data.service.spec.ts │ │ │ └── data.service.ts │ │ └── view-message/ │ │ ├── view-message-routing.module.ts │ │ ├── view-message.module.ts │ │ ├── view-message.page.html │ │ ├── view-message.page.scss │ │ ├── view-message.page.spec.ts │ │ └── view-message.page.ts │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ └── folder/ │ │ ├── folder-routing.module.ts │ │ ├── folder.module.ts │ │ ├── folder.page.html │ │ ├── folder.page.scss │ │ ├── folder.page.spec.ts │ │ └── folder.page.ts │ └── tabs/ │ ├── ionic.starter.json │ └── src/ │ └── app/ │ ├── app-routing.module.ts │ ├── app.component.html │ ├── app.module.ts │ ├── explore-container/ │ │ ├── explore-container.component.html │ │ ├── explore-container.component.scss │ │ ├── explore-container.component.spec.ts │ │ ├── explore-container.component.ts │ │ └── explore-container.module.ts │ ├── tab1/ │ │ ├── tab1-routing.module.ts │ │ ├── tab1.module.ts │ │ ├── tab1.page.html │ │ ├── tab1.page.scss │ │ ├── tab1.page.spec.ts │ │ └── tab1.page.ts │ ├── tab2/ │ │ ├── tab2-routing.module.ts │ │ ├── tab2.module.ts │ │ ├── tab2.page.html │ │ ├── tab2.page.scss │ │ ├── tab2.page.spec.ts │ │ └── tab2.page.ts │ ├── tab3/ │ │ ├── tab3-routing.module.ts │ │ ├── tab3.module.ts │ │ ├── tab3.page.html │ │ ├── tab3.page.scss │ │ ├── tab3.page.spec.ts │ │ └── tab3.page.ts │ └── tabs/ │ ├── tabs-routing.module.ts │ ├── tabs.module.ts │ ├── tabs.page.html │ ├── tabs.page.scss │ ├── tabs.page.spec.ts │ └── tabs.page.ts ├── angular-standalone/ │ ├── base/ │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── extensions.json │ │ │ └── settings.json │ │ ├── angular.json │ │ ├── ionic.config.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.spec.ts │ │ │ │ └── app.component.ts │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── global.scss │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── test.ts │ │ │ ├── theme/ │ │ │ │ └── variables.scss │ │ │ └── zone-flags.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app.component.html │ │ ├── app.component.ts │ │ ├── app.routes.ts │ │ └── home/ │ │ ├── home.page.html │ │ ├── home.page.scss │ │ ├── home.page.spec.ts │ │ └── home.page.ts │ ├── list/ │ │ ├── ionic.config.json │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.routes.ts │ │ ├── home/ │ │ │ ├── home.page.html │ │ │ ├── home.page.scss │ │ │ ├── home.page.spec.ts │ │ │ └── home.page.ts │ │ ├── message/ │ │ │ ├── message.component.html │ │ │ ├── message.component.scss │ │ │ ├── message.component.spec.ts │ │ │ └── message.component.ts │ │ ├── services/ │ │ │ ├── data.service.spec.ts │ │ │ └── data.service.ts │ │ └── view-message/ │ │ ├── view-message.page.html │ │ ├── view-message.page.scss │ │ ├── view-message.page.spec.ts │ │ └── view-message.page.ts │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ └── app/ │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.routes.ts │ │ └── folder/ │ │ ├── folder.page.html │ │ ├── folder.page.scss │ │ ├── folder.page.spec.ts │ │ └── folder.page.ts │ └── tabs/ │ ├── ionic.starter.json │ └── src/ │ └── app/ │ ├── app.component.html │ ├── app.component.ts │ ├── app.routes.ts │ ├── explore-container/ │ │ ├── explore-container.component.html │ │ ├── explore-container.component.scss │ │ ├── explore-container.component.spec.ts │ │ └── explore-container.component.ts │ ├── tab1/ │ │ ├── tab1.page.html │ │ ├── tab1.page.scss │ │ ├── tab1.page.spec.ts │ │ └── tab1.page.ts │ ├── tab2/ │ │ ├── tab2.page.html │ │ ├── tab2.page.scss │ │ ├── tab2.page.spec.ts │ │ └── tab2.page.ts │ ├── tab3/ │ │ ├── tab3.page.html │ │ ├── tab3.page.scss │ │ ├── tab3.page.spec.ts │ │ └── tab3.page.ts │ └── tabs/ │ ├── tabs.page.html │ ├── tabs.page.scss │ ├── tabs.page.spec.ts │ ├── tabs.page.ts │ └── tabs.routes.ts ├── bin/ │ └── ionic-starters ├── integrations/ │ └── cordova/ │ ├── config.xml │ └── resources/ │ ├── README.md │ └── android/ │ └── xml/ │ └── network_security_config.xml ├── ionic-angular/ │ ├── base/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── ionic.config.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.scss │ │ │ │ └── main.ts │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ ├── service-worker.js │ │ │ └── theme/ │ │ │ └── variables.scss │ │ ├── tsconfig.json │ │ └── tslint.json │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── aws/ │ │ ├── README.md │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── app/ │ │ │ ├── app.component.ts │ │ │ ├── app.html │ │ │ └── app.module.ts │ │ ├── assets/ │ │ │ └── aws-sdk.js │ │ ├── index.html │ │ ├── pages/ │ │ │ ├── about/ │ │ │ │ ├── about.html │ │ │ │ ├── about.scss │ │ │ │ └── about.ts │ │ │ ├── account/ │ │ │ │ ├── account.html │ │ │ │ ├── account.scss │ │ │ │ └── account.ts │ │ │ ├── confirm/ │ │ │ │ ├── confirm.html │ │ │ │ ├── confirm.scss │ │ │ │ └── confirm.ts │ │ │ ├── confirmSignIn/ │ │ │ │ ├── confirmSignIn.html │ │ │ │ ├── confirmSignIn.scss │ │ │ │ └── confirmSignIn.ts │ │ │ ├── confirmSignUp/ │ │ │ │ ├── confirmSignUp.html │ │ │ │ ├── confirmSignUp.scss │ │ │ │ └── confirmSignUp.ts │ │ │ ├── login/ │ │ │ │ ├── login.html │ │ │ │ ├── login.scss │ │ │ │ └── login.ts │ │ │ ├── settings/ │ │ │ │ ├── settings.html │ │ │ │ └── settings.ts │ │ │ ├── signup/ │ │ │ │ ├── signup.html │ │ │ │ ├── signup.scss │ │ │ │ └── signup.ts │ │ │ ├── tabs/ │ │ │ │ ├── tabs.html │ │ │ │ └── tabs.ts │ │ │ ├── tasks/ │ │ │ │ ├── tasks.html │ │ │ │ ├── tasks.scss │ │ │ │ └── tasks.ts │ │ │ └── tasks-create/ │ │ │ ├── tasks-create.html │ │ │ ├── tasks-create.scss │ │ │ └── tasks-create.ts │ │ └── providers/ │ │ ├── aws.dynamodb.ts │ │ └── providers.ts │ ├── blank/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── app/ │ │ │ ├── app.component.ts │ │ │ ├── app.html │ │ │ └── app.module.ts │ │ └── pages/ │ │ └── home/ │ │ ├── home.html │ │ ├── home.scss │ │ └── home.ts │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── app/ │ │ │ ├── app.component.ts │ │ │ ├── app.html │ │ │ └── app.module.ts │ │ └── pages/ │ │ ├── home/ │ │ │ ├── home.html │ │ │ ├── home.scss │ │ │ └── home.ts │ │ └── list/ │ │ ├── list.html │ │ ├── list.scss │ │ └── list.ts │ ├── super/ │ │ ├── README.md │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── app/ │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── app.scss │ │ ├── assets/ │ │ │ └── i18n/ │ │ │ ├── ar.json │ │ │ ├── bs.json │ │ │ ├── by.json │ │ │ ├── da.json │ │ │ ├── de.json │ │ │ ├── el.json │ │ │ ├── en.json │ │ │ ├── es-eu.json │ │ │ ├── es.json │ │ │ ├── fil.json │ │ │ ├── fr.json │ │ │ ├── he.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── nb_NO.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt-PT.json │ │ │ ├── pt-br.json │ │ │ ├── ru.json │ │ │ ├── sk.json │ │ │ ├── sl.json │ │ │ ├── sn.json │ │ │ ├── sv.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ ├── ua.json │ │ │ ├── zh-cmn-Hans.json │ │ │ └── zh-cmn-Hant.json │ │ ├── mocks/ │ │ │ └── providers/ │ │ │ └── items.ts │ │ ├── models/ │ │ │ └── item.ts │ │ ├── pages/ │ │ │ ├── README.md │ │ │ ├── cards/ │ │ │ │ ├── README.md │ │ │ │ ├── cards.html │ │ │ │ ├── cards.module.ts │ │ │ │ ├── cards.scss │ │ │ │ └── cards.ts │ │ │ ├── content/ │ │ │ │ ├── README.md │ │ │ │ ├── content.html │ │ │ │ ├── content.module.ts │ │ │ │ ├── content.scss │ │ │ │ └── content.ts │ │ │ ├── index.ts │ │ │ ├── item-create/ │ │ │ │ ├── README.md │ │ │ │ ├── item-create.html │ │ │ │ ├── item-create.module.ts │ │ │ │ ├── item-create.scss │ │ │ │ └── item-create.ts │ │ │ ├── item-detail/ │ │ │ │ ├── README.md │ │ │ │ ├── item-detail.html │ │ │ │ ├── item-detail.module.ts │ │ │ │ ├── item-detail.scss │ │ │ │ └── item-detail.ts │ │ │ ├── list-master/ │ │ │ │ ├── README.md │ │ │ │ ├── list-master.html │ │ │ │ ├── list-master.module.ts │ │ │ │ ├── list-master.scss │ │ │ │ └── list-master.ts │ │ │ ├── login/ │ │ │ │ ├── README.md │ │ │ │ ├── login.html │ │ │ │ ├── login.module.ts │ │ │ │ ├── login.scss │ │ │ │ └── login.ts │ │ │ ├── menu/ │ │ │ │ ├── README.md │ │ │ │ ├── menu.html │ │ │ │ ├── menu.module.ts │ │ │ │ ├── menu.scss │ │ │ │ └── menu.ts │ │ │ ├── search/ │ │ │ │ ├── README.md │ │ │ │ ├── search.html │ │ │ │ ├── search.module.ts │ │ │ │ ├── search.scss │ │ │ │ └── search.ts │ │ │ ├── settings/ │ │ │ │ ├── README.md │ │ │ │ ├── settings.html │ │ │ │ ├── settings.module.ts │ │ │ │ ├── settings.scss │ │ │ │ └── settings.ts │ │ │ ├── signup/ │ │ │ │ ├── README.md │ │ │ │ ├── signup.html │ │ │ │ ├── signup.module.ts │ │ │ │ ├── signup.scss │ │ │ │ └── signup.ts │ │ │ ├── tabs/ │ │ │ │ ├── README.md │ │ │ │ ├── tabs.html │ │ │ │ ├── tabs.module.ts │ │ │ │ ├── tabs.scss │ │ │ │ └── tabs.ts │ │ │ ├── tutorial/ │ │ │ │ ├── README.md │ │ │ │ ├── tutorial.html │ │ │ │ ├── tutorial.module.ts │ │ │ │ ├── tutorial.scss │ │ │ │ └── tutorial.ts │ │ │ └── welcome/ │ │ │ ├── README.md │ │ │ ├── welcome.html │ │ │ ├── welcome.module.ts │ │ │ ├── welcome.scss │ │ │ └── welcome.ts │ │ ├── providers/ │ │ │ ├── api/ │ │ │ │ └── api.ts │ │ │ ├── index.ts │ │ │ ├── items/ │ │ │ │ └── items.ts │ │ │ ├── settings/ │ │ │ │ └── settings.ts │ │ │ └── user/ │ │ │ └── user.ts │ │ └── theme/ │ │ └── variables.scss │ ├── super.welcome.js │ ├── tabs/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── app/ │ │ │ ├── app.component.ts │ │ │ ├── app.html │ │ │ └── app.module.ts │ │ └── pages/ │ │ ├── about/ │ │ │ ├── about.html │ │ │ ├── about.scss │ │ │ └── about.ts │ │ ├── contact/ │ │ │ ├── contact.html │ │ │ ├── contact.scss │ │ │ └── contact.ts │ │ ├── home/ │ │ │ ├── home.html │ │ │ ├── home.scss │ │ │ └── home.ts │ │ └── tabs/ │ │ ├── tabs.html │ │ └── tabs.ts │ └── tutorial/ │ ├── ionic.starter.json │ └── src/ │ ├── app/ │ │ ├── app.component.ts │ │ ├── app.html │ │ └── app.module.ts │ └── pages/ │ ├── hello-ionic/ │ │ ├── hello-ionic.html │ │ ├── hello-ionic.scss │ │ └── hello-ionic.ts │ ├── item-details/ │ │ ├── item-details.html │ │ ├── item-details.scss │ │ └── item-details.ts │ └── list/ │ ├── list.html │ ├── list.scss │ └── list.ts ├── ionic1/ │ ├── base/ │ │ ├── .bowerrc │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── bower.json │ │ ├── gulpfile.js │ │ ├── hooks/ │ │ │ ├── README.md │ │ │ └── after_prepare/ │ │ │ └── 010_add_platform_class.js │ │ ├── ionic.config.json │ │ ├── package.json │ │ ├── scss/ │ │ │ └── ionic.app.scss │ │ └── www/ │ │ ├── index.html │ │ ├── js/ │ │ │ └── app.js │ │ ├── lib/ │ │ │ └── ionic/ │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── css/ │ │ │ │ └── ionic.css │ │ │ ├── js/ │ │ │ │ ├── ionic-angular.js │ │ │ │ ├── ionic.bundle.js │ │ │ │ └── ionic.js │ │ │ └── scss/ │ │ │ ├── _action-sheet.scss │ │ │ ├── _animations.scss │ │ │ ├── _backdrop.scss │ │ │ ├── _badge.scss │ │ │ ├── _bar.scss │ │ │ ├── _button-bar.scss │ │ │ ├── _button.scss │ │ │ ├── _checkbox.scss │ │ │ ├── _form.scss │ │ │ ├── _grid.scss │ │ │ ├── _items.scss │ │ │ ├── _list.scss │ │ │ ├── _loading.scss │ │ │ ├── _menu.scss │ │ │ ├── _mixins.scss │ │ │ ├── _modal.scss │ │ │ ├── _platform.scss │ │ │ ├── _popover.scss │ │ │ ├── _popup.scss │ │ │ ├── _progress.scss │ │ │ ├── _radio.scss │ │ │ ├── _range.scss │ │ │ ├── _refresher.scss │ │ │ ├── _reset.scss │ │ │ ├── _scaffolding.scss │ │ │ ├── _select.scss │ │ │ ├── _slide-box.scss │ │ │ ├── _slides.scss │ │ │ ├── _spinner.scss │ │ │ ├── _tabs.scss │ │ │ ├── _toggle.scss │ │ │ ├── _transitions.scss │ │ │ ├── _type.scss │ │ │ ├── _util.scss │ │ │ ├── _variables.scss │ │ │ ├── ionic.scss │ │ │ ├── ionicons/ │ │ │ │ ├── _ionicons-font.scss │ │ │ │ ├── _ionicons-icons.scss │ │ │ │ ├── _ionicons-variables.scss │ │ │ │ └── ionicons.scss │ │ │ └── tsconfig.json │ │ ├── manifest.json │ │ └── service-worker.js │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── ionic.starter.json │ │ └── www/ │ │ ├── css/ │ │ │ └── style.css │ │ ├── index.html │ │ └── js/ │ │ └── app.js │ ├── maps/ │ │ ├── ionic.starter.json │ │ └── www/ │ │ ├── css/ │ │ │ └── style.css │ │ ├── index.html │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── controllers.js │ │ │ └── directives.js │ │ ├── lib/ │ │ │ └── ionic/ │ │ │ ├── css/ │ │ │ │ └── ionic.css │ │ │ ├── js/ │ │ │ │ ├── angular/ │ │ │ │ │ ├── angular-animate.js │ │ │ │ │ ├── angular-resource.js │ │ │ │ │ ├── angular-sanitize.js │ │ │ │ │ └── angular.js │ │ │ │ ├── angular-ui/ │ │ │ │ │ └── angular-ui-router.js │ │ │ │ ├── ionic-angular.js │ │ │ │ ├── ionic.bundle.js │ │ │ │ └── ionic.js │ │ │ └── version.json │ │ └── templates/ │ │ ├── browse.html │ │ ├── menu.html │ │ ├── playlist.html │ │ ├── playlists.html │ │ └── search.html │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ └── www/ │ │ ├── css/ │ │ │ └── style.css │ │ ├── index.html │ │ ├── js/ │ │ │ ├── app.js │ │ │ └── controllers.js │ │ └── templates/ │ │ ├── browse.html │ │ ├── login.html │ │ ├── menu.html │ │ ├── playlist.html │ │ ├── playlists.html │ │ └── search.html │ └── tabs/ │ ├── ionic.starter.json │ └── www/ │ ├── css/ │ │ └── style.css │ ├── index.html │ ├── js/ │ │ ├── app.js │ │ ├── controllers.js │ │ └── services.js │ └── templates/ │ ├── chat-detail.html │ ├── tab-account.html │ ├── tab-chats.html │ ├── tab-dash.html │ └── tabs.html ├── package.json ├── react/ │ ├── base/ │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── extensions.json │ │ ├── ionic.config.json │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── src/ │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── service-worker.ts │ │ │ ├── serviceWorkerRegistration.ts │ │ │ ├── setupTests.ts │ │ │ └── theme/ │ │ │ └── variables.css │ │ └── tsconfig.json │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── ExploreContainer.css │ │ │ └── ExploreContainer.tsx │ │ └── pages/ │ │ ├── Home.css │ │ └── Home.tsx │ ├── list/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── MessageListItem.css │ │ │ └── MessageListItem.tsx │ │ ├── data/ │ │ │ └── messages.ts │ │ └── pages/ │ │ ├── Home.css │ │ ├── Home.tsx │ │ ├── ViewMessage.css │ │ └── ViewMessage.tsx │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── ExploreContainer.css │ │ │ ├── ExploreContainer.tsx │ │ │ ├── Menu.css │ │ │ └── Menu.tsx │ │ └── pages/ │ │ ├── Page.css │ │ └── Page.tsx │ └── tabs/ │ ├── ionic.starter.json │ └── src/ │ ├── App.tsx │ ├── components/ │ │ ├── ExploreContainer.css │ │ └── ExploreContainer.tsx │ └── pages/ │ ├── Tab1.css │ ├── Tab1.tsx │ ├── Tab2.css │ ├── Tab2.tsx │ ├── Tab3.css │ └── Tab3.tsx ├── react-vite/ │ ├── base/ │ │ ├── .browserslistrc │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── extensions.json │ │ ├── cypress/ │ │ │ ├── fixtures/ │ │ │ │ └── example.json │ │ │ └── support/ │ │ │ ├── commands.ts │ │ │ └── e2e.ts │ │ ├── cypress.config.ts │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── ionic.config.json │ │ ├── package.json │ │ ├── public/ │ │ │ └── manifest.json │ │ ├── src/ │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── main.tsx │ │ │ ├── setupTests.ts │ │ │ ├── theme/ │ │ │ │ └── variables.css │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── cypress/ │ │ │ └── e2e/ │ │ │ └── test.cy.ts │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── ExploreContainer.css │ │ │ └── ExploreContainer.tsx │ │ └── pages/ │ │ ├── Home.css │ │ └── Home.tsx │ ├── list/ │ │ ├── cypress/ │ │ │ └── e2e/ │ │ │ └── test.cy.ts │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── MessageListItem.css │ │ │ └── MessageListItem.tsx │ │ ├── data/ │ │ │ └── messages.ts │ │ └── pages/ │ │ ├── Home.css │ │ ├── Home.tsx │ │ ├── ViewMessage.css │ │ └── ViewMessage.tsx │ ├── sidemenu/ │ │ ├── cypress/ │ │ │ └── e2e/ │ │ │ └── test.cy.ts │ │ ├── ionic.starter.json │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── ExploreContainer.css │ │ │ ├── ExploreContainer.tsx │ │ │ ├── Menu.css │ │ │ └── Menu.tsx │ │ └── pages/ │ │ ├── Page.css │ │ └── Page.tsx │ └── tabs/ │ ├── cypress/ │ │ └── e2e/ │ │ └── test.cy.ts │ ├── ionic.starter.json │ └── src/ │ ├── App.tsx │ ├── components/ │ │ ├── ExploreContainer.css │ │ └── ExploreContainer.tsx │ └── pages/ │ ├── Tab1.css │ ├── Tab1.tsx │ ├── Tab2.css │ ├── Tab2.tsx │ ├── Tab3.css │ └── Tab3.tsx ├── src/ │ ├── commands/ │ │ ├── build.ts │ │ ├── deploy.ts │ │ ├── find-redundant.ts │ │ ├── generate-checksum.ts │ │ └── test.ts │ ├── definitions.ts │ ├── index.ts │ ├── lib/ │ │ └── build.ts │ └── utils/ │ └── index.ts ├── tsconfig.json ├── types/ │ ├── cross-spawn.d.ts │ └── string-width.d.ts ├── vue/ │ ├── base/ │ │ ├── .browserslistrc │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── extensions.json │ │ ├── babel.config.js │ │ ├── cypress.json │ │ ├── ionic.config.json │ │ ├── jest.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── main.ts │ │ │ ├── shims-vue.d.ts │ │ │ └── theme/ │ │ │ └── variables.css │ │ ├── tests/ │ │ │ └── e2e/ │ │ │ ├── .eslintrc.js │ │ │ ├── plugins/ │ │ │ │ └── index.js │ │ │ └── support/ │ │ │ ├── commands.js │ │ │ └── index.js │ │ └── tsconfig.json │ ├── community/ │ │ └── .gitkeep │ └── official/ │ ├── blank/ │ │ ├── ionic.starter.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── router/ │ │ │ │ └── index.ts │ │ │ └── views/ │ │ │ └── HomePage.vue │ │ └── tests/ │ │ ├── e2e/ │ │ │ └── specs/ │ │ │ └── test.js │ │ └── unit/ │ │ └── example.spec.ts │ ├── list/ │ │ ├── ionic.starter.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── components/ │ │ │ │ └── MessageListItem.vue │ │ │ ├── data/ │ │ │ │ └── messages.ts │ │ │ ├── router/ │ │ │ │ └── index.ts │ │ │ └── views/ │ │ │ ├── HomePage.vue │ │ │ └── ViewMessagePage.vue │ │ └── tests/ │ │ ├── e2e/ │ │ │ └── specs/ │ │ │ └── test.js │ │ └── unit/ │ │ └── example.spec.ts │ ├── sidemenu/ │ │ ├── ionic.starter.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── router/ │ │ │ │ └── index.ts │ │ │ └── views/ │ │ │ └── FolderPage.vue │ │ └── tests/ │ │ ├── e2e/ │ │ │ └── specs/ │ │ │ └── test.js │ │ └── unit/ │ │ └── example.spec.ts │ └── tabs/ │ ├── ionic.starter.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── ExploreContainer.vue │ │ ├── router/ │ │ │ └── index.ts │ │ └── views/ │ │ ├── Tab1Page.vue │ │ ├── Tab2Page.vue │ │ ├── Tab3Page.vue │ │ └── TabsPage.vue │ └── tests/ │ ├── e2e/ │ │ └── specs/ │ │ └── test.js │ └── unit/ │ └── example.spec.ts └── vue-vite/ ├── base/ │ ├── .browserslistrc │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .vscode/ │ │ └── extensions.json │ ├── cypress.config.ts │ ├── index.html │ ├── ionic.config.json │ ├── package.json │ ├── src/ │ │ ├── main.ts │ │ ├── theme/ │ │ │ └── variables.css │ │ └── vite-env.d.ts │ ├── tests/ │ │ └── e2e/ │ │ ├── fixtures/ │ │ │ └── example.json │ │ └── support/ │ │ ├── commands.ts │ │ └── e2e.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── community/ │ └── .gitkeep └── official/ ├── blank/ │ ├── ionic.starter.json │ ├── src/ │ │ ├── App.vue │ │ ├── router/ │ │ │ └── index.ts │ │ └── views/ │ │ └── HomePage.vue │ └── tests/ │ ├── e2e/ │ │ └── specs/ │ │ └── test.cy.ts │ └── unit/ │ └── example.spec.ts ├── list/ │ ├── ionic.starter.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── MessageListItem.vue │ │ ├── data/ │ │ │ └── messages.ts │ │ ├── router/ │ │ │ └── index.ts │ │ └── views/ │ │ ├── HomePage.vue │ │ └── ViewMessagePage.vue │ └── tests/ │ ├── e2e/ │ │ └── specs/ │ │ └── test.cy.ts │ └── unit/ │ └── example.spec.ts ├── sidemenu/ │ ├── ionic.starter.json │ ├── src/ │ │ ├── App.vue │ │ ├── router/ │ │ │ └── index.ts │ │ └── views/ │ │ └── FolderPage.vue │ └── tests/ │ ├── e2e/ │ │ └── specs/ │ │ └── test.cy.ts │ └── unit/ │ └── example.spec.ts └── tabs/ ├── ionic.starter.json ├── src/ │ ├── App.vue │ ├── components/ │ │ └── ExploreContainer.vue │ ├── router/ │ │ └── index.ts │ └── views/ │ ├── Tab1Page.vue │ ├── Tab2Page.vue │ ├── Tab3Page.vue │ └── TabsPage.vue └── tests/ ├── e2e/ │ └── specs/ │ └── test.cy.ts └── unit/ └── example.spec.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/CODEOWNERS ================================================ # Lines starting with '#' are comments. # Each line is a file pattern followed by one or more owners. # More details are here: https://help.github.com/articles/about-codeowners/ # The '*' pattern is global owners. # Order is important. The last matching pattern has the most precedence. # The folders are ordered as follows: # In each subsection folders are ordered first by depth, then alphabetically. # This should make it easy to add new rules without breaking existing ones. * @ionic-team/framework ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ **Starter Type:** **Starter Template:** **Description:** **My `ionic info`:** ``` ``` **Other Information:** ================================================ FILE: .github/ionic-issue-bot.yml ================================================ triage: label: triage dryRun: false closeAndLock: labels: - label: "ionitron: support" message: > Thanks for the issue! This issue appears to be a support request. We use this issue tracker exclusively for bug reports and feature requests. For support questions, please see our [Support Page](https://ionicframework.com/support). Thank you for using Ionic! - label: "ionitron: pro" message: > Thanks for the issue! This issue appears to be related to our commercial products. We use this issue tracker exclusively for bug reports and feature requests. Please [open a support ticket](https://ionicframework.com/support/request) and we'll be happy to assist you. Thank you for using Ionic! - label: "ionitron: missing template" message: > Thanks for the issue! It appears that you have not filled out the provided issue template. We use this issue template in order to gather more information and further assist you. Please create a new issue and ensure the template is fully filled out. Thank you for using Ionic! - label: "ionitron: cordova" message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with Cordova. Please see Cordova's [Reporting Issues](https://cordova.apache.org/contribute/issues.html) page. Thank you for using Ionic! close: true lock: true dryRun: false wrongRepo: repos: - label: "ionitron: framework" repo: ionic message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with the Ionic Framework. I am moving this issue to the Ionic Framework repository. Please track this issue over there. Thank you for using Ionic! - label: "ionitron: cli" repo: ionic-cli message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with the Ionic CLI. I am moving this issue to the Ionic CLI repository. Please track this issue over there. Thank you for using Ionic! - label: "ionitron: capacitor" repo: capacitor message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with Capacitor. I am moving this issue to the Capacitor repository. Please track this issue over there. Thank you for using Ionic! - label: "ionitron: ionic-native" repo: ionic-native message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with Ionic Native. I am moving this issue to the Ionic Native repository. Please track this issue over there. Thank you for using Ionic! - label: "ionitron: ionic-site" repo: ionic-site message: > Thanks for the issue! We use this issue tracker exclusively for bug reports and feature requests. It appears that this issue is associated with the Ionic website. I am moving this issue to the Ionic website repository. Please track this issue over there. Thank you for using Ionic! close: true lock: true dryRun: false ================================================ FILE: .github/workflows/main.yml ================================================ name: Build & Test on: push: branches: - main pull_request: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - uses: actions/setup-node@v4 with: node-version: 20 - name: Build run: | npm install npm run src:lint npm run src:build npm run starters:find-redundant npm run starters:build -- --current - run: tar -cf build.tar build dist - uses: actions/upload-artifact@v4 with: name: build path: build.tar test: strategy: matrix: # We explicitly list each test app so they can # be built in parallel rather than only specifying # "vue" which would cause several projects to be built sequentially. framework: ['vue-vite-official-blank', 'vue-vite-official-list', 'vue-vite-official-tabs', 'vue-vite-official-sidemenu', 'vue-official-blank', 'vue-official-list', 'vue-official-tabs', 'vue-official-sidemenu', 'react-vite-official-blank', 'react-vite-official-list', 'react-vite-official-tabs', 'react-vite-official-sidemenu', 'react-official-blank', 'react-official-list', 'react-official-tabs', 'react-official-sidemenu', 'angular-standalone-official-blank', 'angular-standalone-official-list', 'angular-standalone-official-tabs', 'angular-standalone-official-sidemenu', 'angular-official-blank', 'angular-official-list', 'angular-official-tabs', 'angular-official-sidemenu'] runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: build - run: tar -xf build.tar - uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: | build/${{ matrix.framework }}/ionic.starter.json build/${{ matrix.framework }}/package.json - name: Test ${{ matrix.framework }} run: | npm install rm -rf node_modules/@types npm run starters:test -- --type=${{ matrix.framework }} # This step allows us to have a required # status check for each matrix job without having # to manually add each matrix run in the branch protection rules. # Source: https://github.community/t/status-check-for-a-matrix-jobs/127354 verify-test: if: ${{ always() }} needs: test runs-on: ubuntu-latest steps: - name: Check build matrix status if: ${{ needs.test.result != 'success' }} run: exit 1 test-legacy: strategy: matrix: framework: ['ionic-angular', 'ionic1'] runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: build - run: tar -xf build.tar - uses: actions/setup-node@v4 with: # Legacy starter apps do not support # node 16+ which is why we have a separate job node-version: 14 cache: npm cache-dependency-path: | build/${{ matrix.framework }}-*/ionic.starter.json build/${{ matrix.framework }}-*/package.json - name: Test ${{ matrix.framework }} run: | npm install rm -rf node_modules/@types npm run starters:test -- --type=${{ matrix.framework }} # This step allows us to have a required # status check for each matrix job without having # to manually add each matrix run in the branch protection rules. # Source: https://github.community/t/status-check-for-a-matrix-jobs/127354 verify-test-legacy: if: ${{ always() }} needs: test-legacy runs-on: ubuntu-latest steps: - name: Check build matrix status if: ${{ needs.test-legacy.result != 'success' }} run: exit 1 deploy: runs-on: ubuntu-latest needs: [verify-test, verify-test-legacy] permissions: contents: read id-token: write if: ${{ github.ref == 'refs/heads/main' }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - uses: actions/download-artifact@v4 with: name: build - run: tar -xf build.tar - uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ secrets.AWS_ROLE_ARN }} aws-region: us-west-2 - name: Deploy run: | npm install npm run starters:deploy -- --tag latest ================================================ FILE: .github/workflows/wizard-templates.yml ================================================ name: Generate Wizard Templates on: schedule: - cron: '30 9 * * *' jobs: wizard-templates: strategy: matrix: framework: ['angular', 'react', 'vue'] template: ['list', 'tabs', 'sidemenu'] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Ionic CLI run: npm install -g @ionic/cli - name: Run ionic start run: ionic start __NAME__ ${{ matrix.template }} --type=${{ matrix.framework }} --capacitor --no-link --no-interactive --no-color --confirm - name: Run git push run: | git config user.email hi@ionicframework.com git config user.name Ionitron git add __NAME__ git commit -m 'Initial commit' git subtree split -P __NAME__ -b wizard/${{ matrix.framework }}-official-${{ matrix.template }} git push -f origin wizard/${{ matrix.framework }}-official-${{ matrix.template }} ================================================ FILE: .gitignore ================================================ .idea logs *.log npm-debug.log* .DS_Store node_modules/ .env build/* !build/.gitkeep dist starter-checksum* ================================================ FILE: .gitmodules ================================================ [submodule "ionic-angular/community/ionic-team/example"] path = ionic-angular/community/ionic-team/example url = https://github.com/ionic-team/starter-example.git [submodule "ionic-angular/community/danielsogl/super"] path = ionic-angular/community/danielsogl/super url = https://github.com/danielsogl/ionic-super-starter.git [submodule "ionic-angular/community/oktadeveloper/jhipster"] path = ionic-angular/community/oktadeveloper/jhipster url = https://github.com/oktadeveloper/ionic-jhipster-starter.git [submodule "angular/community/oktadeveloper/jhipster"] path = angular/community/oktadeveloper/jhipster url = https://github.com/oktadeveloper/ionic-jhipster-starter.git [submodule "angular/community/ionic-team/enterprise-tabs"] path = angular/community/ionic-team/enterprise-tabs url = https://github.com/ionic-team/ionic-enterprise-starter.git [submodule "react/community/ionic-team/portals"] path = react/community/ionic-team/portals url = https://github.com/ionic-team/portals-starter-react [submodule "angular/community/ionic-team/portals"] path = angular/community/ionic-team/portals url = https://github.com/ionic-team/portals-starter-angular [submodule "vue/community/ionic-team/portals"] path = vue/community/ionic-team/portals url = https://github.com/ionic-team/portals-starter-vue [submodule "vue-vite/community/ionic-team/portals"] path = vue-vite/community/ionic-team/portals url = https://github.com/ionic-team/portals-starter-vue-vite # The portals app for React does not # have any code that changes between Create React App # and Vite which is why we map to the same repo. [submodule "react-vite/community/ionic-team/portals"] path = react-vite/community/ionic-team/portals url = https://github.com/ionic-team/portals-starter-react ================================================ FILE: .npmrc ================================================ package-lock=false ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing ## Getting Started To get started, clone the repo, and install dependencies: ```bash npm i ``` Then build using: ```bash npm run src:build ``` or build and watch for changes using: ```bash npm run src:watch ``` > [!NOTE] > We use TypeScript, so the code must be compiled before it runs. ## Generating You can generate the starters by running: ```bash npm run starters:build -- --current ``` You can build a single starter by specifying the path: ```bash npm run starters:build -- angular/official/tabs --current ``` * Starters are generated by overlaying starter files (located in `/official//` or `/community///`) onto base files (located in `/base/`) into the `build/` directory. * If the `--current` flag is not passed to the build command, the base files will be checked out from the value of the `baseref`. * The `baseref` is defined in the starter's manifest file, which is a special file that invokes additional operations on the generated starter files. [Example manifest file](https://github.com/ionic-team/starters/blob/7bcf9aa56289f36a5f03ed24bed76ba8c3ac89fe/vue/official/list/ionic.starter.json#L3). ## Previewing You can preview the starters by navigating to the `build` directory and running `ls` to find the name of the starter you want to preview: ```bash cd build/ ls ``` The commands to serve the app differ slightly based on the framework. View each framework's commands below. ### Angular Navigate into the starter's directory, install dependencies, then serve the app: ```bash cd angular-official-list/ npm i npm run start ``` > [!NOTE] > Navigate to http://localhost:4200/ in your browser to preview the app. ### React Navigate into the starter's directory, install dependencies, then serve the app: ```bash cd react-official-list/ npm i npm run start ``` > [!NOTE] > The browser will automatically open a tab and navigate to http://localhost:3000/ to preview the app. ### React Vite Navigate into the starter's directory, install dependencies, then serve the app: ```bash cd react-vite-official-list/ npm i npm run dev ``` > [!NOTE] > The URL to preview the app defaults to http://localhost:5173/ unless that port is in use. The exact URL will be displayed after running the dev server. ### Vue Navigate into the starter's directory, install dependencies, then serve the app: ```bash cd vue-official-list/ npm i npm run serve ``` > [!NOTE] > Navigate to http://localhost:8080/ in your browser to preview the app. ### Vue Vite Navigate into the starter's directory, install dependencies, then serve the app: ```bash cd vue-vite-official-list/ npm i npm run dev ``` > [!NOTE] > The URL to preview the app defaults to http://localhost:5173/ unless that port is in use. The exact URL will be displayed after running the dev server. ## Testing You can test starters by running: ```bash npm run starters:test ``` You can test a single starter by specifying the starter ID (also the starter's directory name within the `build/` directory): ```bash npm run starters:test -- angular-official-tabs ``` * Starters must be generated before they can be tested. The test command works with starters generated in the `build/` directory. * To test a starter, first the dependencies are installed (`npm install`), and then the `scripts.test` key in the starter's manifest file is executed. This way, each starter can define how it must be tested. ### Manifest Files The starter manifest file (named `ionic.starter.json`) is a required JSON file at the root of the starter. The build process reads the manifest and takes actions based upon what's defined in the file. | Key | Description |----------------|------------- | `name` | The human-readable name. | `baseref` | The latest git ref (branch or sha) at which the starter is compatible with the base files (located in `/base/`). | `welcome` | _(optional)_ A custom message to be displayed when the user runs `ionic start` on the starter. See [Starter Welcome](#starter-welcome). | `gitignore` | _(optional)_ During build, the defined array of strings will be added to the bottom of the project's `.gitignore` file. | `packageJson` | _(optional)_ During build, the defined keys will be recursively merged into the generated `package.json`. | `tsconfigJson` | _(optional)_ During build, the defined keys will be recursively merged into the generated `tsconfig.json`. | `tarignore` | _(optional)_ During deploy, the defined array of strings will be interpreted as globs to ignore files to include in the tar file when deployed. | `scripts` | _(optional)_ An object of scripts that run during build or deploy. | `scripts.test` | _(optional)_ During test, after dependencies are installed, the defined script will be executed to test the starter. ### Community Starters To submit your own starter, 1. Fork this repo. 1. Fork or copy the [Example Starter](https://github.com/ionic-team/starter-example). 1. Add a git submodule for your starter at `/community//`. For example: ```bash git submodule add https://github.com/ionic-team/starter-example.git ionic-angular/community/ionic-team/example ``` 1. Build your starter. For example: ```bash npm run starters:build -- ionic-angular/community/ionic-team/example ``` 1. Copy the generated starter into a different directory and test it! To update your starter, 1. Push changes to your starter repo freely. 1. Run `git pull` in your starters fork directory (`ionic-angular/community/ionic-team/example` for example). 1. Commit the changes to your fork and create a PR. Tips: * When you `cd` into a git submodule directory (i.e. `ionic-angular/community/ionic-team/example`), git commands operate on the submodule as its own repository. * Inside a submodule folder, `git remote add local /path/to/starter/at/local` will add a new [git remote](https://git-scm.com/docs/git-remote) which you can use to pull local changes in. Make commits in your local starter repo, then `git pull local`. * New commits in a submodule must also be saved in the base repository for PRs. * Don't include a `.gitignore` file. If you need to ignore some files in your starter repo, you can use the private gitignore file located at `.git/info/exclude`. If you need to add entries, you can use the `gitignore` key in your manifest file. ### Starter Welcome For a custom message to be displayed for your starter during `ionic start`, you can set the `welcome` key of your starter manifest file to a string. For terminal colors and other formatting, you can create a quick script to generate the message, JSON-encode it, and copy it into your manifest file. See [this example script](https://github.com/ionic-team/starters/tree/master/ionic-angular/official/super.welcome.js) for the Super Starter. ## Deploying (Automatic through CI) Starters are deployed automatically when new commits are pushed to the `master` branch. During the deploy process, the `build/` directory is read and an archive of each generated starter is created and gzipped and uploaded to an S3 bucket. The S3 bucket has a CloudFront distribution for close-proximity downloads. The distribution ID is `E1XZ2T0DZXJ521` and can be found [at this URL](https://d2ql0qc7j8u4b2.cloudfront.net). ## Deploying (Manually) First, make sure you pull down the latest community starter submodules by running: ```bash git pull --recurse-submodules ``` If you have not already initialized the submodules locally run: ```bash git submodule update --init --recursive ``` Then run: ```bash npm run starters:deploy ``` You can use `npm run starters:deploy -- --dry` to test the tar process. By default, starters are deployed to the `testing` "tag" (`latest` is production). You can install tagged starters by specifying the `--tag=` option to `ionic start`). > Note you will need permissions to the S3 bucket to manually deploy ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2017 Ionic Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # Ionic Starter Templates :book: **Start an Ionic app**: See our [Getting Started](https://ionicframework.com/docs) guide. :mega: **Support**: See our [Support Page][ionic-support] for general support questions. The issues on GitHub should be reserved for bug reports and feature requests. :sparkling_heart: **Modify or add starter templates**: See [CONTRIBUTING.md](./CONTRIBUTING.md). ### Starters Project Type | Ionic Framework Version | Framework Version | Build Tool | Template Links | Notes -------------------------------------|-------------------------|-------------------|--------------------------|---------------------------------------------------------------------------| ---- **`ionic1`** | 1 | AngularJS | | [Base](ionic1/base) / [Starters](ionic1/official) | Legacy framework; supports AngularJS only. **`ionic-angular`** | 2/3 | Angular (2+) | `@ionic/app-scripts` | [Base](ionic-angular/base) / [Starters](ionic-angular/official) | Uses legacy build tool; Angular CLI unsupported. **`angular`** | 4+ | Angular (4+) | Angular CLI | [Base](angular/base) / [Starters](angular/official) | Modern Angular CLI tooling. **`angular-standalone`** | 6+ | Angular (8+) | Angular CLI | [Base](angular-standalone/base) / [Starters](angular-standalone/official) | Supports standalone components introduced in Angular 8. **`react` (Ionic CLI v6 and below)** | 4.11+ | React (16+) | `react-scripts` | [Base](react/base) / [Starters](react/official) | Uses Create React App; supports React Hooks. **`react` (Ionic CLI v7+)** | 4.11+ | React (17+) | Vite (`vite`) | [Base](react-vite/base) / [Starters](react-vite/official) | Vite-based tooling for modern React development. **`vue` (Ionic CLI v6 and below)** | 5.4+ | Vue (3+) | `@vue/cli-service` | [Base](vue/base) / [Starters](vue/official) | Uses Vue CLI; supports Vue Composition API. **`vue` (Ionic CLI v7+)** | 5.4+ | Vue (3+) | Vite (`@vite/cli`) | [Base](vue-vite/base) / [Starters](vue-vite/official) | Vite-based tooling for modern Vue development. ### Integrations * [Cordova](integrations/cordova) [ionic-support]: https://ionicframework.com/support [circle-badge]: https://circleci.com/gh/ionic-team/starters.svg?style=shield [circle-badge-url]: https://circleci.com/gh/ionic-team/starters ================================================ FILE: angular/base/.browserslistrc ================================================ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. # For additional information regarding the format and rule options, please see: # https://github.com/browserslist/browserslist#queries # For the full list of supported browsers by the Angular framework, please see: # https://angular.dev/reference/versions#browser-support # You can see what browsers were selected by your queries by running: # npx browserslist Chrome >=107 Firefox >=106 Edge >=107 Safari >=16.1 iOS >=16.1 ================================================ FILE: angular/base/.editorconfig ================================================ # Editor configuration, see https://editorconfig.org root = true [*] charset = utf-8 indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true [*.ts] quote_type = single [*.md] max_line_length = off trim_trailing_whitespace = false ================================================ FILE: angular/base/.eslintrc.json ================================================ { "root": true, "ignorePatterns": ["projects/**/*"], "overrides": [ { "files": ["*.ts"], "parserOptions": { "project": ["tsconfig.json"], "createDefaultProgram": true }, "extends": [ "plugin:@angular-eslint/recommended", "plugin:@angular-eslint/template/process-inline-templates" ], "rules": { "@angular-eslint/prefer-standalone": "off", "@angular-eslint/component-class-suffix": [ "error", { "suffixes": ["Page", "Component"] } ], "@angular-eslint/component-selector": [ "error", { "type": "element", "prefix": "app", "style": "kebab-case" } ], "@angular-eslint/directive-selector": [ "error", { "type": "attribute", "prefix": "app", "style": "camelCase" } ] } }, { "files": ["*.html"], "extends": ["plugin:@angular-eslint/template/recommended"], "rules": {} } ] } ================================================ FILE: angular/base/.gitignore ================================================ # Specifies intentionally untracked files to ignore when using Git # http://git-scm.com/docs/gitignore *~ *.sw[mnpcod] .tmp *.tmp *.tmp.* UserInterfaceState.xcuserstate $RECYCLE.BIN/ *.log log.txt /.sourcemaps /.versions /coverage # Ionic /.ionic /www /platforms /plugins # Compiled output /dist /tmp /out-tsc /bazel-out # Node /node_modules npm-debug.log yarn-error.log # IDEs and editors .idea/ .project .classpath .c9/ *.launch .settings/ *.sublime-project *.sublime-workspace # Visual Studio Code .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json .history/* # Miscellaneous /.angular /.angular/cache .sass-cache/ /.nx /.nx/cache /connect.lock /coverage /libpeerconnection.log testem.log /typings # System files .DS_Store Thumbs.db ================================================ FILE: angular/base/.vscode/extensions.json ================================================ { "recommendations": [ "Webnative.webnative" ] } ================================================ FILE: angular/base/.vscode/settings.json ================================================ { "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular/standalone"] } ================================================ FILE: angular/base/angular.json ================================================ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "app": { "projectType": "application", "schematics": {}, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "www", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", "input": "src/assets", "output": "assets" }, { "glob": "**/*.svg", "input": "node_modules/ionicons/dist/ionicons/svg", "output": "./svg" } ], "styles": ["src/global.scss", "src/theme/variables.scss"], "scripts": [] }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" }, { "type": "anyComponentStyle", "maximumWarning": "2kb", "maximumError": "4kb" } ], "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "outputHashing": "all" }, "development": { "buildOptimizer": false, "optimization": false, "vendorChunk": true, "extractLicenses": false, "sourceMap": true, "namedChunks": true }, "ci": { "progress": false } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "app:build:production" }, "development": { "buildTarget": "app:build:development" }, "ci": { "progress": false } }, "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "buildTarget": "app:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", "input": "src/assets", "output": "assets" }, { "glob": "**/*.svg", "input": "node_modules/ionicons/dist/ionicons/svg", "output": "./svg" } ], "styles": ["src/global.scss", "src/theme/variables.scss"], "scripts": [] }, "configurations": { "ci": { "progress": false, "watch": false } } }, "lint": { "builder": "@angular-eslint/builder:lint", "options": { "lintFilePatterns": [ "src/**/*.ts", "src/**/*.html" ] } } } } }, "cli": { "schematicCollections": [ "@ionic/angular-toolkit" ] }, "schematics": { "@ionic/angular-toolkit:component": { "styleext": "scss" }, "@ionic/angular-toolkit:page": { "styleext": "scss" } } } ================================================ FILE: angular/base/ionic.config.json ================================================ { "name": "ionic-app-base", "app_id": "", "type": "angular", "integrations": {} } ================================================ FILE: angular/base/karma.conf.js ================================================ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), require('karma-coverage'), require('@angular-devkit/build-angular/plugins/karma') ], client: { jasmine: { // you can add configuration options for Jasmine here // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html // for example, you can disable the random execution with `random: false` // or set a specific seed with `seed: 4321` }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, jasmineHtmlReporter: { suppressAll: true // removes the duplicated traces }, coverageReporter: { dir: require('path').join(__dirname, './coverage/app'), subdir: '.', reporters: [ { type: 'html' }, { type: 'text-summary' } ] }, reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false, restartOnFileChange: true }); }; ================================================ FILE: angular/base/package.json ================================================ { "name": "ionic-app-base", "version": "0.0.0", "author": "Ionic Framework", "homepage": "https://ionicframework.com/", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test", "lint": "ng lint" }, "private": true, "dependencies": { "@angular/animations": "^20.0.0", "@angular/common": "^20.0.0", "@angular/compiler": "^20.0.0", "@angular/core": "^20.0.0", "@angular/forms": "^20.0.0", "@angular/platform-browser": "^20.0.0", "@angular/platform-browser-dynamic": "^20.0.0", "@angular/router": "^20.0.0", "@ionic/angular": "^8.0.0", "ionicons": "^7.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^20.0.0", "@angular-eslint/builder": "^20.0.0", "@angular-eslint/eslint-plugin": "^20.0.0", "@angular-eslint/eslint-plugin-template": "^20.0.0", "@angular-eslint/schematics": "^20.0.0", "@angular-eslint/template-parser": "^20.0.0", "@angular/cli": "^20.0.0", "@angular/compiler-cli": "^20.0.0", "@angular/language-service": "^20.0.0", "@ionic/angular-toolkit": "^12.0.0", "@types/jasmine": "~5.1.0", "@typescript-eslint/eslint-plugin": "^8.18.0", "@typescript-eslint/parser": "^8.18.0", "eslint": "^9.16.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prefer-arrow": "1.2.2", "jasmine-core": "~5.1.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.9.0" } } ================================================ FILE: angular/base/src/app/app.component.html ================================================ ================================================ FILE: angular/base/src/app/app.component.scss ================================================ ================================================ FILE: angular/base/src/app/app.component.spec.ts ================================================ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); }); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); }); ================================================ FILE: angular/base/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], standalone: false, }) export class AppComponent { constructor() {} } ================================================ FILE: angular/base/src/app/app.module.ts ================================================ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppComponent } from './app.component'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot()], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [AppComponent], }) export class AppModule {} ================================================ FILE: angular/base/src/environments/environment.prod.ts ================================================ export const environment = { production: true }; ================================================ FILE: angular/base/src/environments/environment.ts ================================================ // This file can be replaced during build by using the `fileReplacements` array. // `ng build` replaces `environment.ts` with `environment.prod.ts`. // The list of file replacements can be found in `angular.json`. export const environment = { production: false }; /* * For easier debugging in development mode, you can import the following file * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. * * This import should be commented out in production mode because it will have a negative impact * on performance if an error is thrown. */ // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. ================================================ FILE: angular/base/src/global.scss ================================================ /* * App Global CSS * ---------------------------------------------------------------------------- * Put style rules here that you want to apply globally. These styles are for * the entire app and not just one component. Additionally, this file can be * used as an entry point to import other CSS/Sass files to be included in the * output CSS. * For more information on global stylesheets, visit the documentation: * https://ionicframework.com/docs/layout/global-stylesheets */ /* Core CSS required for Ionic components to work properly */ @import "@ionic/angular/css/core.css"; /* Basic CSS for apps built with Ionic */ @import "@ionic/angular/css/normalize.css"; @import "@ionic/angular/css/structure.css"; @import "@ionic/angular/css/typography.css"; @import "@ionic/angular/css/display.css"; /* Optional CSS utils that can be commented out */ @import "@ionic/angular/css/padding.css"; @import "@ionic/angular/css/float-elements.css"; @import "@ionic/angular/css/text-alignment.css"; @import "@ionic/angular/css/text-transformation.css"; @import "@ionic/angular/css/flex-utils.css"; /** * Ionic Dark Mode * ----------------------------------------------------- * For more info, please see: * https://ionicframework.com/docs/theming/dark-mode */ /* @import "@ionic/angular/css/palettes/dark.always.css"; */ /* @import "@ionic/angular/css/palettes/dark.class.css"; */ @import "@ionic/angular/css/palettes/dark.system.css"; ================================================ FILE: angular/base/src/index.html ================================================ Ionic App ================================================ FILE: angular/base/src/main.ts ================================================ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.log(err)); ================================================ FILE: angular/base/src/polyfills.ts ================================================ /** * This file includes polyfills needed by Angular and is loaded before the app. * You can add your own extra polyfills to this file. * * This file is divided into 2 sections: * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. * 2. Application imports. Files imported after ZoneJS that should be loaded before your main * file. * * The current setup is for so-called "evergreen" browsers; the last versions of browsers that * automatically update themselves. This includes recent versions of Safari, Chrome (including * Opera), Edge on the desktop, and iOS and Chrome on mobile. * * Learn more in https://angular.io/guide/browser-support */ /*************************************************************************************************** * BROWSER POLYFILLS */ /** * By default, zone.js will patch all possible macroTask and DomEvents * user can disable parts of macroTask/DomEvents patch by setting following flags * because those flags need to be set before `zone.js` being loaded, and webpack * will put import in the top of bundle, so user need to create a separate file * in this directory (for example: zone-flags.ts), and put the following flags * into that file, and then add the following code before importing zone.js. * import './zone-flags'; * * The flags allowed in zone-flags.ts are listed here. * * The following flags will work for all browsers. * * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames * * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js * with the following flag, it will bypass `zone.js` patch for IE/Edge * * (window as any).__Zone_enable_cross_context_check = true; * */ import './zone-flags'; /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ ================================================ FILE: angular/base/src/test.ts ================================================ // This file is required by karma.conf.js and loads recursively all the .spec and framework files import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), ); ================================================ FILE: angular/base/src/theme/variables.scss ================================================ // For information on how to create your own theme, please refer to: // https://ionicframework.com/docs/theming/ ================================================ FILE: angular/base/src/zone-flags.ts ================================================ /** * Prevents Angular change detection from * running with certain Web Component callbacks */ // eslint-disable-next-line no-underscore-dangle (window as any).__Zone_disable_customElements = true; ================================================ FILE: angular/base/tsconfig.app.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", "types": [] }, "files": [ "src/main.ts", "src/polyfills.ts" ], "include": [ "src/**/*.d.ts" ] } ================================================ FILE: angular/base/tsconfig.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "sourceMap": true, "declaration": false, "downlevelIteration": true, "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, "target": "es2022", "module": "es2020", "lib": [ "es2018", "dom" ], "skipLibCheck": true, "useDefineForClassFields": false }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, "strictTemplates": true } } ================================================ FILE: angular/base/tsconfig.spec.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": [ "jasmine" ] }, "files": [ "src/test.ts", "src/polyfills.ts" ], "include": [ "src/**/*.spec.ts", "src/**/*.d.ts" ] } ================================================ FILE: angular/community/.gitkeep ================================================ ================================================ FILE: angular/official/blank/ionic.starter.json ================================================ { "name": "Blank Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular/official/blank/src/app/app-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: 'home', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) }, { path: '', redirectTo: 'home', pathMatch: 'full' }, ]; @NgModule({ imports: [ RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) ], exports: [RouterModule] }) export class AppRoutingModule { } ================================================ FILE: angular/official/blank/src/app/app.component.html ================================================ ================================================ FILE: angular/official/blank/src/app/app.module.ts ================================================ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [AppComponent], }) export class AppModule {} ================================================ FILE: angular/official/blank/src/app/home/home-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { HomePage } from './home.page'; const routes: Routes = [ { path: '', component: HomePage, } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class HomePageRoutingModule {} ================================================ FILE: angular/official/blank/src/app/home/home.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { IonicModule } from '@ionic/angular'; import { FormsModule } from '@angular/forms'; import { HomePage } from './home.page'; import { HomePageRoutingModule } from './home-routing.module'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, HomePageRoutingModule ], declarations: [HomePage] }) export class HomePageModule {} ================================================ FILE: angular/official/blank/src/app/home/home.page.html ================================================ Blank Blank
Ready to create an app?

Start with Ionic UI Components

================================================ FILE: angular/official/blank/src/app/home/home.page.scss ================================================ #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular/official/blank/src/app/home/home.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { HomePage } from './home.page'; describe('HomePage', () => { let component: HomePage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [HomePage], imports: [IonicModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(HomePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/blank/src/app/home/home.page.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], standalone: false, }) export class HomePage { constructor() {} } ================================================ FILE: angular/official/list/ionic.config.json ================================================ { "name": "list", "integrations": {}, "type": "angular" } ================================================ FILE: angular/official/list/ionic.starter.json ================================================ { "name": "List Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular/official/list/src/app/app-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: 'home', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) }, { path: 'message/:id', loadChildren: () => import('./view-message/view-message.module').then( m => m.ViewMessagePageModule) }, { path: '', redirectTo: 'home', pathMatch: 'full' }, ]; @NgModule({ imports: [ RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) ], exports: [RouterModule] }) export class AppRoutingModule { } ================================================ FILE: angular/official/list/src/app/app.component.html ================================================ ================================================ FILE: angular/official/list/src/app/app.module.ts ================================================ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [AppComponent], }) export class AppModule {} ================================================ FILE: angular/official/list/src/app/home/home-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomePage } from './home.page'; const routes: Routes = [ { path: '', component: HomePage } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule], }) export class HomePageRoutingModule {} ================================================ FILE: angular/official/list/src/app/home/home.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { IonicModule } from '@ionic/angular'; import { FormsModule } from '@angular/forms'; import { HomePage } from './home.page'; import { HomePageRoutingModule } from './home-routing.module'; import { MessageComponentModule } from '../message/message.module'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, MessageComponentModule, HomePageRoutingModule ], declarations: [HomePage] }) export class HomePageModule {} ================================================ FILE: angular/official/list/src/app/home/home.page.html ================================================ Inbox Inbox @for (message of getMessages(); track message) { } ================================================ FILE: angular/official/list/src/app/home/home.page.scss ================================================ ================================================ FILE: angular/official/list/src/app/home/home.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterModule } from '@angular/router'; import { IonicModule } from '@ionic/angular'; import { MessageComponentModule } from '../message/message.module'; import { HomePage } from './home.page'; describe('HomePage', () => { let component: HomePage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [HomePage], imports: [IonicModule.forRoot(), MessageComponentModule, RouterModule.forRoot([])] }).compileComponents(); fixture = TestBed.createComponent(HomePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/list/src/app/home/home.page.ts ================================================ import { Component, inject } from '@angular/core'; import { RefresherCustomEvent } from '@ionic/angular'; import { MessageComponent } from '../message/message.component'; import { DataService, Message } from '../services/data.service'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], standalone: false, }) export class HomePage { private data = inject(DataService); constructor() {} refresh(ev: any) { setTimeout(() => { (ev as RefresherCustomEvent).detail.complete(); }, 3000); } getMessages(): Message[] { return this.data.getMessages(); } } ================================================ FILE: angular/official/list/src/app/message/message.component.html ================================================ @if (message) {

{{ message.fromName }} {{ message.date }} @if (isIos()) { }

{{ message.subject }}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

} ================================================ FILE: angular/official/list/src/app/message/message.component.scss ================================================ ion-item { --padding-start: 0; --inner-padding-end: 0; } ion-label { margin-top: 12px; margin-bottom: 12px; } ion-item h2 { font-weight: 600; margin: 0; /** * With larger font scales * the date/time should wrap to the next * line. However, there should be * space between the name and the date/time * if they can appear on the same line. */ display: flex; flex-wrap: wrap; justify-content: space-between; } ion-item p { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 95%; } ion-item .date { align-items: center; display: flex; } ion-item ion-icon { color: #c9c9ca; } ion-item ion-note { font-size: 0.9375rem; margin-right: 8px; font-weight: normal; } ion-item ion-note.md { margin-right: 14px; } .dot { display: block; height: 12px; width: 12px; border-radius: 50%; align-self: start; margin: 16px 10px 16px 16px; } .dot-unread { background: var(--ion-color-primary); } ion-footer ion-title { font-size: 11px; font-weight: normal; } ================================================ FILE: angular/official/list/src/app/message/message.component.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterModule } from '@angular/router'; import { IonicModule } from '@ionic/angular'; import { MessageComponent } from './message.component'; describe('MessageComponent', () => { let component: MessageComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [MessageComponent], imports: [IonicModule.forRoot(), RouterModule.forRoot([])] }).compileComponents(); fixture = TestBed.createComponent(MessageComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/list/src/app/message/message.component.ts ================================================ import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core'; import { Platform } from '@ionic/angular'; import { Message } from '../services/data.service'; @Component({ selector: 'app-message', templateUrl: './message.component.html', styleUrls: ['./message.component.scss'], standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, }) export class MessageComponent { private platform = inject(Platform); @Input() message?: Message; isIos() { return this.platform.is('ios') } } ================================================ FILE: angular/official/list/src/app/message/message.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { IonicModule } from '@ionic/angular'; import { MessageComponent } from './message.component'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, RouterModule], declarations: [MessageComponent], exports: [MessageComponent] }) export class MessageComponentModule {} ================================================ FILE: angular/official/list/src/app/services/data.service.spec.ts ================================================ import { TestBed } from '@angular/core/testing'; import { DataService } from './data.service'; describe('DataService', () => { beforeEach(() => TestBed.configureTestingModule({})); it('should be created', () => { const service: DataService = TestBed.inject(DataService); expect(service).toBeTruthy(); }); }); ================================================ FILE: angular/official/list/src/app/services/data.service.ts ================================================ import { Injectable } from '@angular/core'; export interface Message { fromName: string; subject: string; date: string; id: number; read: boolean; } @Injectable({ providedIn: 'root' }) export class DataService { public messages: Message[] = [ { fromName: 'Matt Chorsey', subject: 'New event: Trip to Vegas', date: '9:32 AM', id: 0, read: false }, { fromName: 'Lauren Ruthford', subject: 'Long time no chat', date: '6:12 AM', id: 1, read: false }, { fromName: 'Jordan Firth', subject: 'Report Results', date: '4:55 AM', id: 2, read: false }, { fromName: 'Bill Thomas', subject: 'The situation', date: 'Yesterday', id: 3, read: false }, { fromName: 'Joanne Pollan', subject: 'Updated invitation: Swim lessons', date: 'Yesterday', id: 4, read: false }, { fromName: 'Andrea Cornerston', subject: 'Last minute ask', date: 'Yesterday', id: 5, read: false }, { fromName: 'Moe Chamont', subject: 'Family Calendar - Version 1', date: 'Last Week', id: 6, read: false }, { fromName: 'Kelly Richardson', subject: 'Placeholder Headhots', date: 'Last Week', id: 7, read: false } ]; constructor() { } public getMessages(): Message[] { return this.messages; } public getMessageById(id: number): Message { return this.messages[id]; } } ================================================ FILE: angular/official/list/src/app/view-message/view-message-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { ViewMessagePage } from './view-message.page'; const routes: Routes = [ { path: '', component: ViewMessagePage } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule], }) export class ViewMessagePageRoutingModule {} ================================================ FILE: angular/official/list/src/app/view-message/view-message.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { ViewMessagePage } from './view-message.page'; import { IonicModule } from '@ionic/angular'; import { ViewMessagePageRoutingModule } from './view-message-routing.module'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, ViewMessagePageRoutingModule ], declarations: [ViewMessagePage] }) export class ViewMessagePageModule {} ================================================ FILE: angular/official/list/src/app/view-message/view-message.page.html ================================================ @if (message) {

{{ message.fromName }} {{ message.date }}

To: Me

{{ message.subject }}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

} ================================================ FILE: angular/official/list/src/app/view-message/view-message.page.scss ================================================ ion-item { --inner-padding-end: 0; --background: transparent; } ion-label { margin-top: 12px; margin-bottom: 12px; } ion-item h2 { font-weight: 600; /** * With larger font scales * the date/time should wrap to the next * line. However, there should be * space between the name and the date/time * if they can appear on the same line. */ display: flex; flex-wrap: wrap; justify-content: space-between; } ion-item .date { align-items: center; display: flex; } ion-item ion-icon { font-size: 42px; margin-right: 8px; } ion-item ion-note { font-size: 0.9375rem; margin-right: 12px; font-weight: normal; } h1 { margin: 0; font-weight: bold; font-size: 1.4rem; } p { line-height: 1.4; } ================================================ FILE: angular/official/list/src/app/view-message/view-message.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { RouterModule } from '@angular/router'; import { ViewMessagePageRoutingModule } from './view-message-routing.module'; import { ViewMessagePage } from './view-message.page'; describe('ViewMessagePage', () => { let component: ViewMessagePage; let fixture: ComponentFixture; beforeEach(async () => { TestBed.configureTestingModule({ declarations: [ViewMessagePage], imports: [IonicModule.forRoot(), ViewMessagePageRoutingModule, RouterModule.forRoot([])] }).compileComponents(); fixture = TestBed.createComponent(ViewMessagePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/list/src/app/view-message/view-message.page.ts ================================================ import { Component, inject, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { IonicModule, Platform } from '@ionic/angular'; import { DataService, Message } from '../services/data.service'; @Component({ selector: 'app-view-message', templateUrl: './view-message.page.html', styleUrls: ['./view-message.page.scss'], standalone: false, }) export class ViewMessagePage implements OnInit { public message!: Message; private data = inject(DataService); private activatedRoute = inject(ActivatedRoute); private platform = inject(Platform); constructor() {} ngOnInit() { const id = this.activatedRoute.snapshot.paramMap.get('id') as string; this.message = this.data.getMessageById(parseInt(id, 10)); } getBackButtonText() { const isIos = this.platform.is('ios') return isIos ? 'Inbox' : ''; } } ================================================ FILE: angular/official/sidemenu/ionic.starter.json ================================================ { "name": "Sidemenu Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular/official/sidemenu/src/app/app-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: '', redirectTo: 'folder/inbox', pathMatch: 'full' }, { path: 'folder/:id', loadChildren: () => import('./folder/folder.module').then( m => m.FolderPageModule) } ]; @NgModule({ imports: [ RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) ], exports: [RouterModule] }) export class AppRoutingModule {} ================================================ FILE: angular/official/sidemenu/src/app/app.component.html ================================================ Inbox hi@ionicframework.com @for (p of appPages; track p; let i = $index) { {{ p.title }} } Labels @for (label of labels; track label) { {{ label }} } ================================================ FILE: angular/official/sidemenu/src/app/app.component.scss ================================================ ion-menu ion-content { --background: var(--ion-item-background, var(--ion-background-color, #fff)); } ion-menu.md ion-content { --padding-start: 8px; --padding-end: 8px; --padding-top: 20px; --padding-bottom: 20px; } ion-menu.md ion-list { padding: 20px 0; } ion-menu.md ion-note { margin-bottom: 30px; } ion-menu.md ion-list-header, ion-menu.md ion-note { padding-left: 10px; } ion-menu.md ion-list#inbox-list { border-bottom: 1px solid var(--ion-background-color-step-150, #d7d8da); } ion-menu.md ion-list#inbox-list ion-list-header { font-size: 22px; font-weight: 600; min-height: 20px; } ion-menu.md ion-list#labels-list ion-list-header { font-size: 16px; margin-bottom: 18px; color: #757575; min-height: 26px; } ion-menu.md ion-item { --padding-start: 10px; --padding-end: 10px; border-radius: 4px; } ion-menu.md ion-item.selected { --background: rgba(var(--ion-color-primary-rgb), 0.14); } ion-menu.md ion-item.selected ion-icon { color: var(--ion-color-primary); } ion-menu.md ion-item ion-icon { color: #616e7e; } ion-menu.md ion-item ion-label { font-weight: 500; } ion-menu.ios ion-content { --padding-bottom: 20px; } ion-menu.ios ion-list { padding: 20px 0 0 0; } ion-menu.ios ion-note { line-height: 24px; margin-bottom: 20px; } ion-menu.ios ion-item { --padding-start: 16px; --padding-end: 16px; --min-height: 50px; } ion-menu.ios ion-item.selected ion-icon { color: var(--ion-color-primary); } ion-menu.ios ion-item ion-icon { font-size: 24px; color: #73849a; } ion-menu.ios ion-list#labels-list ion-list-header { margin-bottom: 8px; } ion-menu.ios ion-list-header, ion-menu.ios ion-note { padding-left: 16px; padding-right: 16px; } ion-menu.ios ion-note { margin-bottom: 8px; } ion-note { display: inline-block; font-size: 16px; color: var(--ion-color-medium-shade); } ion-item.selected { --color: var(--ion-color-primary); } ================================================ FILE: angular/official/sidemenu/src/app/app.component.spec.ts ================================================ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { RouterModule } from '@angular/router'; import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [RouterModule.forRoot([])], }).compileComponents(); }); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); // TODO(ROU-10799): Fix the flaky test. xit('should have menu labels', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const app = fixture.nativeElement; const menuItems = app.querySelectorAll('ion-label'); expect(menuItems.length).toEqual(12); expect(menuItems[0].textContent).toContain('Inbox'); expect(menuItems[1].textContent).toContain('Outbox'); }); it('should have urls', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const app = fixture.nativeElement; const menuItems = app.querySelectorAll('ion-item'); expect(menuItems.length).toEqual(12); expect(menuItems[0].getAttribute('href')).toEqual('/folder/inbox'); expect(menuItems[1].getAttribute('href')).toEqual('/folder/outbox'); }); }); ================================================ FILE: angular/official/sidemenu/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], standalone: false, }) export class AppComponent { public appPages = [ { title: 'Inbox', url: '/folder/inbox', icon: 'mail' }, { title: 'Outbox', url: '/folder/outbox', icon: 'paper-plane' }, { title: 'Favorites', url: '/folder/favorites', icon: 'heart' }, { title: 'Archived', url: '/folder/archived', icon: 'archive' }, { title: 'Trash', url: '/folder/trash', icon: 'trash' }, { title: 'Spam', url: '/folder/spam', icon: 'warning' }, ]; public labels = ['Family', 'Friends', 'Notes', 'Work', 'Travel', 'Reminders']; constructor() {} } ================================================ FILE: angular/official/sidemenu/src/app/app.module.ts ================================================ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [AppComponent], }) export class AppModule {} ================================================ FILE: angular/official/sidemenu/src/app/folder/folder-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { FolderPage } from './folder.page'; const routes: Routes = [ { path: '', component: FolderPage } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule], }) export class FolderPageRoutingModule {} ================================================ FILE: angular/official/sidemenu/src/app/folder/folder.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { IonicModule } from '@ionic/angular'; import { FolderPageRoutingModule } from './folder-routing.module'; import { FolderPage } from './folder.page'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, FolderPageRoutingModule ], declarations: [FolderPage] }) export class FolderPageModule {} ================================================ FILE: angular/official/sidemenu/src/app/folder/folder.page.html ================================================ {{ folder }} {{ folder }}
{{ folder }}

Explore UI Components

================================================ FILE: angular/official/sidemenu/src/app/folder/folder.page.scss ================================================ ion-menu-button { color: var(--ion-color-primary); } #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular/official/sidemenu/src/app/folder/folder.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterModule } from '@angular/router'; import { IonicModule } from '@ionic/angular'; import { FolderPage } from './folder.page'; describe('FolderPage', () => { let component: FolderPage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [FolderPage], imports: [IonicModule.forRoot(), RouterModule.forRoot([])] }).compileComponents(); fixture = TestBed.createComponent(FolderPage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/sidemenu/src/app/folder/folder.page.ts ================================================ import { Component, inject, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'app-folder', templateUrl: './folder.page.html', styleUrls: ['./folder.page.scss'], standalone: false, }) export class FolderPage implements OnInit { public folder!: string; private activatedRoute = inject(ActivatedRoute); constructor() {} ngOnInit() { this.folder = this.activatedRoute.snapshot.paramMap.get('id') as string; } } ================================================ FILE: angular/official/tabs/ionic.starter.json ================================================ { "name": "Tabs Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular/official/tabs/src/app/app-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: '', loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule) } ]; @NgModule({ imports: [ RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) ], exports: [RouterModule] }) export class AppRoutingModule {} ================================================ FILE: angular/official/tabs/src/app/app.component.html ================================================ ================================================ FILE: angular/official/tabs/src/app/app.module.ts ================================================ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [AppComponent], }) export class AppModule {} ================================================ FILE: angular/official/tabs/src/app/explore-container/explore-container.component.html ================================================
{{ name }}

Explore UI Components

================================================ FILE: angular/official/tabs/src/app/explore-container/explore-container.component.scss ================================================ #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular/official/tabs/src/app/explore-container/explore-container.component.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { ExploreContainerComponent } from './explore-container.component'; describe('ExploreContainerComponent', () => { let component: ExploreContainerComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ExploreContainerComponent], imports: [IonicModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(ExploreContainerComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/tabs/src/app/explore-container/explore-container.component.ts ================================================ import { Component, Input } from '@angular/core'; @Component({ selector: 'app-explore-container', templateUrl: './explore-container.component.html', styleUrls: ['./explore-container.component.scss'], standalone: false, }) export class ExploreContainerComponent { @Input() name?: string; } ================================================ FILE: angular/official/tabs/src/app/explore-container/explore-container.module.ts ================================================ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { IonicModule } from '@ionic/angular'; import { ExploreContainerComponent } from './explore-container.component'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule], declarations: [ExploreContainerComponent], exports: [ExploreContainerComponent] }) export class ExploreContainerComponentModule {} ================================================ FILE: angular/official/tabs/src/app/tab1/tab1-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { Tab1Page } from './tab1.page'; const routes: Routes = [ { path: '', component: Tab1Page, } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class Tab1PageRoutingModule {} ================================================ FILE: angular/official/tabs/src/app/tab1/tab1.module.ts ================================================ import { IonicModule } from '@ionic/angular'; import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { Tab1Page } from './tab1.page'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab1PageRoutingModule } from './tab1-routing.module'; @NgModule({ imports: [ IonicModule, CommonModule, FormsModule, ExploreContainerComponentModule, Tab1PageRoutingModule ], declarations: [Tab1Page] }) export class Tab1PageModule {} ================================================ FILE: angular/official/tabs/src/app/tab1/tab1.page.html ================================================ Tab 1 Tab 1 ================================================ FILE: angular/official/tabs/src/app/tab1/tab1.page.scss ================================================ ================================================ FILE: angular/official/tabs/src/app/tab1/tab1.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab1Page } from './tab1.page'; describe('Tab1Page', () => { let component: Tab1Page; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [Tab1Page], imports: [IonicModule.forRoot(), ExploreContainerComponentModule] }).compileComponents(); fixture = TestBed.createComponent(Tab1Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/tabs/src/app/tab1/tab1.page.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-tab1', templateUrl: 'tab1.page.html', styleUrls: ['tab1.page.scss'], standalone: false, }) export class Tab1Page { constructor() {} } ================================================ FILE: angular/official/tabs/src/app/tab2/tab2-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { Tab2Page } from './tab2.page'; const routes: Routes = [ { path: '', component: Tab2Page, } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class Tab2PageRoutingModule {} ================================================ FILE: angular/official/tabs/src/app/tab2/tab2.module.ts ================================================ import { IonicModule } from '@ionic/angular'; import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { Tab2Page } from './tab2.page'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab2PageRoutingModule } from './tab2-routing.module'; @NgModule({ imports: [ IonicModule, CommonModule, FormsModule, ExploreContainerComponentModule, Tab2PageRoutingModule ], declarations: [Tab2Page] }) export class Tab2PageModule {} ================================================ FILE: angular/official/tabs/src/app/tab2/tab2.page.html ================================================ Tab 2 Tab 2 ================================================ FILE: angular/official/tabs/src/app/tab2/tab2.page.scss ================================================ ================================================ FILE: angular/official/tabs/src/app/tab2/tab2.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab2Page } from './tab2.page'; describe('Tab2Page', () => { let component: Tab2Page; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [Tab2Page], imports: [IonicModule.forRoot(), ExploreContainerComponentModule] }).compileComponents(); fixture = TestBed.createComponent(Tab2Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/tabs/src/app/tab2/tab2.page.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-tab2', templateUrl: 'tab2.page.html', styleUrls: ['tab2.page.scss'], standalone: false, }) export class Tab2Page { constructor() {} } ================================================ FILE: angular/official/tabs/src/app/tab3/tab3-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { Tab3Page } from './tab3.page'; const routes: Routes = [ { path: '', component: Tab3Page, } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class Tab3PageRoutingModule {} ================================================ FILE: angular/official/tabs/src/app/tab3/tab3.module.ts ================================================ import { IonicModule } from '@ionic/angular'; import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { Tab3Page } from './tab3.page'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab3PageRoutingModule } from './tab3-routing.module'; @NgModule({ imports: [ IonicModule, CommonModule, FormsModule, ExploreContainerComponentModule, Tab3PageRoutingModule ], declarations: [Tab3Page] }) export class Tab3PageModule {} ================================================ FILE: angular/official/tabs/src/app/tab3/tab3.page.html ================================================ Tab 3 Tab 3 ================================================ FILE: angular/official/tabs/src/app/tab3/tab3.page.scss ================================================ ================================================ FILE: angular/official/tabs/src/app/tab3/tab3.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { ExploreContainerComponentModule } from '../explore-container/explore-container.module'; import { Tab3Page } from './tab3.page'; describe('Tab3Page', () => { let component: Tab3Page; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [Tab3Page], imports: [IonicModule.forRoot(), ExploreContainerComponentModule] }).compileComponents(); fixture = TestBed.createComponent(Tab3Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/tabs/src/app/tab3/tab3.page.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-tab3', templateUrl: 'tab3.page.html', styleUrls: ['tab3.page.scss'], standalone: false, }) export class Tab3Page { constructor() {} } ================================================ FILE: angular/official/tabs/src/app/tabs/tabs-routing.module.ts ================================================ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { TabsPage } from './tabs.page'; const routes: Routes = [ { path: 'tabs', component: TabsPage, children: [ { path: 'tab1', loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule) }, { path: 'tab2', loadChildren: () => import('../tab2/tab2.module').then(m => m.Tab2PageModule) }, { path: 'tab3', loadChildren: () => import('../tab3/tab3.module').then(m => m.Tab3PageModule) }, { path: '', redirectTo: '/tabs/tab1', pathMatch: 'full' } ] }, { path: '', redirectTo: '/tabs/tab1', pathMatch: 'full' } ]; @NgModule({ imports: [RouterModule.forChild(routes)], }) export class TabsPageRoutingModule {} ================================================ FILE: angular/official/tabs/src/app/tabs/tabs.module.ts ================================================ import { IonicModule } from '@ionic/angular'; import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { TabsPageRoutingModule } from './tabs-routing.module'; import { TabsPage } from './tabs.page'; @NgModule({ imports: [ IonicModule, CommonModule, FormsModule, TabsPageRoutingModule ], declarations: [TabsPage] }) export class TabsPageModule {} ================================================ FILE: angular/official/tabs/src/app/tabs/tabs.page.html ================================================ Tab 1 Tab 2 Tab 3 ================================================ FILE: angular/official/tabs/src/app/tabs/tabs.page.scss ================================================ ================================================ FILE: angular/official/tabs/src/app/tabs/tabs.page.spec.ts ================================================ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TabsPage } from './tabs.page'; describe('TabsPage', () => { let component: TabsPage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [TabsPage], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); }); beforeEach(() => { fixture = TestBed.createComponent(TabsPage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular/official/tabs/src/app/tabs/tabs.page.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'app-tabs', templateUrl: 'tabs.page.html', styleUrls: ['tabs.page.scss'], standalone: false, }) export class TabsPage { constructor() {} } ================================================ FILE: angular-standalone/base/.browserslistrc ================================================ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. # For additional information regarding the format and rule options, please see: # https://github.com/browserslist/browserslist#queries # For the full list of supported browsers by the Angular framework, please see: # https://angular.dev/reference/versions#browser-support # You can see what browsers were selected by your queries by running: # npx browserslist Chrome >=107 Firefox >=106 Edge >=107 Safari >=16.1 iOS >=16.1 ================================================ FILE: angular-standalone/base/.editorconfig ================================================ # Editor configuration, see https://editorconfig.org root = true [*] charset = utf-8 indent_style = space indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true [*.ts] quote_type = single [*.md] max_line_length = off trim_trailing_whitespace = false ================================================ FILE: angular-standalone/base/.eslintrc.json ================================================ { "root": true, "ignorePatterns": ["projects/**/*"], "overrides": [ { "files": ["*.ts"], "parserOptions": { "project": ["tsconfig.json"], "createDefaultProgram": true }, "extends": [ "plugin:@angular-eslint/recommended", "plugin:@angular-eslint/template/process-inline-templates" ], "rules": { "@angular-eslint/component-class-suffix": [ "error", { "suffixes": ["Page", "Component"] } ], "@angular-eslint/component-selector": [ "error", { "type": "element", "prefix": "app", "style": "kebab-case" } ], "@angular-eslint/directive-selector": [ "error", { "type": "attribute", "prefix": "app", "style": "camelCase" } ] } }, { "files": ["*.html"], "extends": ["plugin:@angular-eslint/template/recommended"], "rules": {} } ] } ================================================ FILE: angular-standalone/base/.gitignore ================================================ # Specifies intentionally untracked files to ignore when using Git # http://git-scm.com/docs/gitignore *~ *.sw[mnpcod] .tmp *.tmp *.tmp.* UserInterfaceState.xcuserstate $RECYCLE.BIN/ *.log log.txt /.sourcemaps /.versions /coverage # Ionic /.ionic /www /platforms /plugins # Compiled output /dist /tmp /out-tsc /bazel-out # Node /node_modules npm-debug.log yarn-error.log # IDEs and editors .idea/ .project .classpath .c9/ *.launch .settings/ *.sublime-project *.sublime-workspace # Visual Studio Code .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json .history/* # Miscellaneous /.angular /.angular/cache .sass-cache/ /.nx /.nx/cache /connect.lock /coverage /libpeerconnection.log testem.log /typings # System files .DS_Store Thumbs.db ================================================ FILE: angular-standalone/base/.vscode/extensions.json ================================================ { "recommendations": [ "Webnative.webnative" ] } ================================================ FILE: angular-standalone/base/.vscode/settings.json ================================================ { "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular"] } ================================================ FILE: angular-standalone/base/angular.json ================================================ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "app": { "projectType": "application", "schematics": { "@ionic/angular-toolkit:page": { "styleext": "scss", "standalone": true } }, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": { "base": "www", "browser": "" }, "index": "src/index.html", "polyfills": [ "src/polyfills.ts" ], "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", "input": "src/assets", "output": "assets" } ], "styles": ["src/global.scss", "src/theme/variables.scss"], "scripts": [], "browser": "src/main.ts" }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" }, { "type": "anyComponentStyle", "maximumWarning": "2kb", "maximumError": "4kb" } ], "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "outputHashing": "all" }, "development": { "optimization": false, "extractLicenses": false, "sourceMap": true, "namedChunks": true }, "ci": { "progress": false } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "app:build:production" }, "development": { "buildTarget": "app:build:development" }, "ci": { "progress": false } }, "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "buildTarget": "app:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", "assets": [ { "glob": "**/*", "input": "src/assets", "output": "assets" } ], "styles": ["src/global.scss", "src/theme/variables.scss"], "scripts": [] }, "configurations": { "ci": { "progress": false, "watch": false } } }, "lint": { "builder": "@angular-eslint/builder:lint", "options": { "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] } } } } }, "cli": { "schematicCollections": ["@ionic/angular-toolkit"] }, "schematics": { "@ionic/angular-toolkit:component": { "styleext": "scss" }, "@ionic/angular-toolkit:page": { "styleext": "scss" }, "@angular-eslint/schematics:application": { "setParserOptionsProject": true }, "@angular-eslint/schematics:library": { "setParserOptionsProject": true } } } ================================================ FILE: angular-standalone/base/ionic.config.json ================================================ { "name": "ionic-app-base", "app_id": "", "type": "angular-standalone", "integrations": {} } ================================================ FILE: angular-standalone/base/karma.conf.js ================================================ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), require('karma-coverage'), require('@angular-devkit/build-angular/plugins/karma') ], client: { jasmine: { // you can add configuration options for Jasmine here // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html // for example, you can disable the random execution with `random: false` // or set a specific seed with `seed: 4321` }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, jasmineHtmlReporter: { suppressAll: true // removes the duplicated traces }, coverageReporter: { dir: require('path').join(__dirname, './coverage/app'), subdir: '.', reporters: [ { type: 'html' }, { type: 'text-summary' } ] }, reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false, restartOnFileChange: true }); }; ================================================ FILE: angular-standalone/base/package.json ================================================ { "name": "ionic-app-base", "version": "0.0.0", "author": "Ionic Framework", "homepage": "https://ionicframework.com/", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test", "lint": "ng lint" }, "private": true, "dependencies": { "@angular/animations": "^20.0.0", "@angular/common": "^20.0.0", "@angular/compiler": "^20.0.0", "@angular/core": "^20.0.0", "@angular/forms": "^20.0.0", "@angular/platform-browser": "^20.0.0", "@angular/platform-browser-dynamic": "^20.0.0", "@angular/router": "^20.0.0", "@ionic/angular": "^8.0.0", "ionicons": "^7.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^20.0.0", "@angular-eslint/builder": "^20.0.0", "@angular-eslint/eslint-plugin": "^20.0.0", "@angular-eslint/eslint-plugin-template": "^20.0.0", "@angular-eslint/schematics": "^20.0.0", "@angular-eslint/template-parser": "^20.0.0", "@angular/cli": "^20.0.0", "@angular/compiler-cli": "^20.0.0", "@angular/language-service": "^20.0.0", "@ionic/angular-toolkit": "^12.0.0", "@types/jasmine": "~5.1.0", "@typescript-eslint/eslint-plugin": "^8.18.0", "@typescript-eslint/parser": "^8.18.0", "eslint": "^9.16.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prefer-arrow": "1.2.2", "jasmine-core": "~5.1.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.9.0" } } ================================================ FILE: angular-standalone/base/src/app/app.component.html ================================================ ================================================ FILE: angular-standalone/base/src/app/app.component.scss ================================================ ================================================ FILE: angular-standalone/base/src/app/app.component.spec.ts ================================================ import { TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { AppComponent } from './app.component'; describe('AppComponent', () => { it('should create the app', async () => { await TestBed.configureTestingModule({ imports: [AppComponent], providers: [provideRouter([])] }).compileComponents(); const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/base/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { IonApp } from '@ionic/angular/standalone'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], imports: [IonApp], }) export class AppComponent { constructor() {} } ================================================ FILE: angular-standalone/base/src/environments/environment.prod.ts ================================================ export const environment = { production: true }; ================================================ FILE: angular-standalone/base/src/environments/environment.ts ================================================ // This file can be replaced during build by using the `fileReplacements` array. // `ng build` replaces `environment.ts` with `environment.prod.ts`. // The list of file replacements can be found in `angular.json`. export const environment = { production: false }; /* * For easier debugging in development mode, you can import the following file * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. * * This import should be commented out in production mode because it will have a negative impact * on performance if an error is thrown. */ // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. ================================================ FILE: angular-standalone/base/src/global.scss ================================================ /* * App Global CSS * ---------------------------------------------------------------------------- * Put style rules here that you want to apply globally. These styles are for * the entire app and not just one component. Additionally, this file can be * used as an entry point to import other CSS/Sass files to be included in the * output CSS. * For more information on global stylesheets, visit the documentation: * https://ionicframework.com/docs/layout/global-stylesheets */ /* Core CSS required for Ionic components to work properly */ @import "@ionic/angular/css/core.css"; /* Basic CSS for apps built with Ionic */ @import "@ionic/angular/css/normalize.css"; @import "@ionic/angular/css/structure.css"; @import "@ionic/angular/css/typography.css"; @import "@ionic/angular/css/display.css"; /* Optional CSS utils that can be commented out */ @import "@ionic/angular/css/padding.css"; @import "@ionic/angular/css/float-elements.css"; @import "@ionic/angular/css/text-alignment.css"; @import "@ionic/angular/css/text-transformation.css"; @import "@ionic/angular/css/flex-utils.css"; /** * Ionic Dark Mode * ----------------------------------------------------- * For more info, please see: * https://ionicframework.com/docs/theming/dark-mode */ /* @import "@ionic/angular/css/palettes/dark.always.css"; */ /* @import "@ionic/angular/css/palettes/dark.class.css"; */ @import '@ionic/angular/css/palettes/dark.system.css'; ================================================ FILE: angular-standalone/base/src/index.html ================================================ Ionic App ================================================ FILE: angular-standalone/base/src/main.ts ================================================ import { bootstrapApplication } from '@angular/platform-browser'; import { RouteReuseStrategy, provideRouter, withPreloading, PreloadAllModules } from '@angular/router'; import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalone'; import { routes } from './app/app.routes'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, { providers: [ { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, provideIonicAngular(), provideRouter(routes, withPreloading(PreloadAllModules)), ], }); ================================================ FILE: angular-standalone/base/src/polyfills.ts ================================================ /** * This file includes polyfills needed by Angular and is loaded before the app. * You can add your own extra polyfills to this file. * * This file is divided into 2 sections: * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. * 2. Application imports. Files imported after ZoneJS that should be loaded before your main * file. * * The current setup is for so-called "evergreen" browsers; the last versions of browsers that * automatically update themselves. This includes recent versions of Safari, Chrome (including * Opera), Edge on the desktop, and iOS and Chrome on mobile. * * Learn more in https://angular.io/guide/browser-support */ /*************************************************************************************************** * BROWSER POLYFILLS */ /** * By default, zone.js will patch all possible macroTask and DomEvents * user can disable parts of macroTask/DomEvents patch by setting following flags * because those flags need to be set before `zone.js` being loaded, and webpack * will put import in the top of bundle, so user need to create a separate file * in this directory (for example: zone-flags.ts), and put the following flags * into that file, and then add the following code before importing zone.js. * import './zone-flags'; * * The flags allowed in zone-flags.ts are listed here. * * The following flags will work for all browsers. * * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames * * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js * with the following flag, it will bypass `zone.js` patch for IE/Edge * * (window as any).__Zone_enable_cross_context_check = true; * */ import './zone-flags'; /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ ================================================ FILE: angular-standalone/base/src/test.ts ================================================ // This file is required by karma.conf.js and loads recursively all the .spec and framework files import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), ); ================================================ FILE: angular-standalone/base/src/theme/variables.scss ================================================ // For information on how to create your own theme, please refer to: // https://ionicframework.com/docs/theming/ ================================================ FILE: angular-standalone/base/src/zone-flags.ts ================================================ /** * Prevents Angular change detection from * running with certain Web Component callbacks */ // eslint-disable-next-line no-underscore-dangle (window as any).__Zone_disable_customElements = true; ================================================ FILE: angular-standalone/base/tsconfig.app.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", "types": [] }, "files": [ "src/main.ts", "src/polyfills.ts" ], "include": [ "src/**/*.d.ts" ] } ================================================ FILE: angular-standalone/base/tsconfig.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "esModuleInterop": true, "strict": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "sourceMap": true, "declaration": false, "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, "target": "es2022", "module": "es2020", "lib": ["es2018", "dom"], "skipLibCheck": true, "useDefineForClassFields": false }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, "strictTemplates": true } } ================================================ FILE: angular-standalone/base/tsconfig.spec.json ================================================ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": [ "jasmine" ] }, "files": [ "src/test.ts", "src/polyfills.ts" ], "include": [ "src/**/*.spec.ts", "src/**/*.d.ts" ] } ================================================ FILE: angular-standalone/community/.gitkeep ================================================ ================================================ FILE: angular-standalone/official/blank/ionic.starter.json ================================================ { "name": "Blank Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular-standalone/official/blank/src/app/app.component.html ================================================ ================================================ FILE: angular-standalone/official/blank/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', imports: [IonApp, IonRouterOutlet], }) export class AppComponent { constructor() {} } ================================================ FILE: angular-standalone/official/blank/src/app/app.routes.ts ================================================ import { Routes } from '@angular/router'; export const routes: Routes = [ { path: 'home', loadComponent: () => import('./home/home.page').then((m) => m.HomePage), }, { path: '', redirectTo: 'home', pathMatch: 'full', }, ]; ================================================ FILE: angular-standalone/official/blank/src/app/home/home.page.html ================================================ Blank Blank
Ready to create an app?

Start with Ionic UI Components

================================================ FILE: angular-standalone/official/blank/src/app/home/home.page.scss ================================================ #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular-standalone/official/blank/src/app/home/home.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { HomePage } from './home.page'; describe('HomePage', () => { let component: HomePage; let fixture: ComponentFixture; beforeEach(async () => { fixture = TestBed.createComponent(HomePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/blank/src/app/home/home.page.ts ================================================ import { Component } from '@angular/core'; import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], imports: [IonHeader, IonToolbar, IonTitle, IonContent], }) export class HomePage { constructor() {} } ================================================ FILE: angular-standalone/official/list/ionic.config.json ================================================ { "name": "list", "integrations": {}, "type": "angular" } ================================================ FILE: angular-standalone/official/list/ionic.starter.json ================================================ { "name": "List Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular-standalone/official/list/src/app/app.component.html ================================================ ================================================ FILE: angular-standalone/official/list/src/app/app.component.spec.ts ================================================ import { TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [AppComponent], providers: [provideRouter([])] }).compileComponents(); }); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/list/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', imports: [IonApp, IonRouterOutlet], }) export class AppComponent { constructor() {} } ================================================ FILE: angular-standalone/official/list/src/app/app.routes.ts ================================================ import { Routes } from '@angular/router'; export const routes: Routes = [ { path: 'home', loadComponent: () => import('./home/home.page').then((m) => m.HomePage), }, { path: 'message/:id', loadComponent: () => import('./view-message/view-message.page').then((m) => m.ViewMessagePage), }, { path: '', redirectTo: 'home', pathMatch: 'full', }, ]; ================================================ FILE: angular-standalone/official/list/src/app/home/home.page.html ================================================ Inbox Inbox @for (message of getMessages(); track message) { } ================================================ FILE: angular-standalone/official/list/src/app/home/home.page.scss ================================================ ================================================ FILE: angular-standalone/official/list/src/app/home/home.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { HomePage } from './home.page'; describe('HomePage', () => { let component: HomePage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ imports: [HomePage], providers: [provideRouter([])], }).compileComponents(); fixture = TestBed.createComponent(HomePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/list/src/app/home/home.page.ts ================================================ import { Component, inject } from '@angular/core'; import { RefresherCustomEvent, IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList } from '@ionic/angular/standalone'; import { MessageComponent } from '../message/message.component'; import { DataService, Message } from '../services/data.service'; @Component({ selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], imports: [IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList, MessageComponent], }) export class HomePage { private data = inject(DataService); constructor() {} refresh(ev: any) { setTimeout(() => { (ev as RefresherCustomEvent).detail.complete(); }, 3000); } getMessages(): Message[] { return this.data.getMessages(); } } ================================================ FILE: angular-standalone/official/list/src/app/message/message.component.html ================================================ @if (message) {

{{ message.fromName }} {{ message.date }} @if (isIos()) { }

{{ message.subject }}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

} ================================================ FILE: angular-standalone/official/list/src/app/message/message.component.scss ================================================ ion-item { --padding-start: 0; --inner-padding-end: 0; } ion-label { margin-top: 12px; margin-bottom: 12px; } ion-item h2 { font-weight: 600; margin: 0; /** * With larger font scales * the date/time should wrap to the next * line. However, there should be * space between the name and the date/time * if they can appear on the same line. */ display: flex; flex-wrap: wrap; justify-content: space-between; } ion-item p { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 95%; } ion-item .date { align-items: center; display: flex; } ion-item ion-icon { color: #c9c9ca; } ion-item ion-note { font-size: 0.9375rem; margin-right: 8px; font-weight: normal; } ion-item ion-note.md { margin-right: 14px; } .dot { display: block; height: 12px; width: 12px; border-radius: 50%; align-self: start; margin: 16px 10px 16px 16px; } .dot-unread { background: var(--ion-color-primary); } ion-footer ion-title { font-size: 11px; font-weight: normal; } ================================================ FILE: angular-standalone/official/list/src/app/message/message.component.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { ViewMessagePage } from '../view-message/view-message.page'; import { MessageComponent } from './message.component'; describe('MessageComponent', () => { let component: MessageComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MessageComponent, ViewMessagePage], providers: [provideRouter([])] }).compileComponents(); fixture = TestBed.createComponent(MessageComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/list/src/app/message/message.component.ts ================================================ import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core'; import { RouterLink } from '@angular/router'; import { Platform, IonItem, IonLabel, IonNote, IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { chevronForward } from 'ionicons/icons'; import { Message } from '../services/data.service'; @Component({ selector: 'app-message', templateUrl: './message.component.html', styleUrls: ['./message.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterLink, IonItem, IonLabel, IonNote, IonIcon], }) export class MessageComponent { private platform = inject(Platform); @Input() message?: Message; isIos() { return this.platform.is('ios') } constructor() { addIcons({ chevronForward }); } } ================================================ FILE: angular-standalone/official/list/src/app/services/data.service.spec.ts ================================================ import { TestBed } from '@angular/core/testing'; import { DataService } from './data.service'; describe('DataService', () => { beforeEach(() => TestBed.configureTestingModule({})); it('should be created', () => { const service: DataService = TestBed.inject(DataService); expect(service).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/list/src/app/services/data.service.ts ================================================ import { Injectable } from '@angular/core'; export interface Message { fromName: string; subject: string; date: string; id: number; read: boolean; } @Injectable({ providedIn: 'root' }) export class DataService { public messages: Message[] = [ { fromName: 'Matt Chorsey', subject: 'New event: Trip to Vegas', date: '9:32 AM', id: 0, read: false }, { fromName: 'Lauren Ruthford', subject: 'Long time no chat', date: '6:12 AM', id: 1, read: false }, { fromName: 'Jordan Firth', subject: 'Report Results', date: '4:55 AM', id: 2, read: false }, { fromName: 'Bill Thomas', subject: 'The situation', date: 'Yesterday', id: 3, read: false }, { fromName: 'Joanne Pollan', subject: 'Updated invitation: Swim lessons', date: 'Yesterday', id: 4, read: false }, { fromName: 'Andrea Cornerston', subject: 'Last minute ask', date: 'Yesterday', id: 5, read: false }, { fromName: 'Moe Chamont', subject: 'Family Calendar - Version 1', date: 'Last Week', id: 6, read: false }, { fromName: 'Kelly Richardson', subject: 'Placeholder Headhots', date: 'Last Week', id: 7, read: false } ]; constructor() { } public getMessages(): Message[] { return this.messages; } public getMessageById(id: number): Message { return this.messages[id]; } } ================================================ FILE: angular-standalone/official/list/src/app/view-message/view-message.page.html ================================================ @if (message) {

{{ message.fromName }} {{ message.date }}

To: Me

{{ message.subject }}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

} ================================================ FILE: angular-standalone/official/list/src/app/view-message/view-message.page.scss ================================================ ion-item { --inner-padding-end: 0; --background: transparent; } ion-label { margin-top: 12px; margin-bottom: 12px; } ion-item h2 { font-weight: 600; /** * With larger font scales * the date/time should wrap to the next * line. However, there should be * space between the name and the date/time * if they can appear on the same line. */ display: flex; flex-wrap: wrap; justify-content: space-between; } ion-item .date { align-items: center; display: flex; } ion-item ion-icon { font-size: 42px; margin-right: 8px; } ion-item ion-note { font-size: 0.9375rem; margin-right: 12px; font-weight: normal; } h1 { margin: 0; font-weight: bold; font-size: 1.4rem; } p { line-height: 1.4; } ================================================ FILE: angular-standalone/official/list/src/app/view-message/view-message.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { ViewMessagePage } from './view-message.page'; describe('ViewMessagePage', () => { let component: ViewMessagePage; let fixture: ComponentFixture; beforeEach(async () => { TestBed.configureTestingModule({ imports: [ViewMessagePage], providers: [provideRouter([])], }).compileComponents(); fixture = TestBed.createComponent(ViewMessagePage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/list/src/app/view-message/view-message.page.ts ================================================ import { Component, inject, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Platform, IonHeader, IonToolbar, IonButtons, IonBackButton, IonContent, IonItem, IonIcon, IonLabel, IonNote } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { personCircle } from 'ionicons/icons'; import { DataService, Message } from '../services/data.service'; @Component({ selector: 'app-view-message', templateUrl: './view-message.page.html', styleUrls: ['./view-message.page.scss'], imports: [IonHeader, IonToolbar, IonButtons, IonBackButton, IonContent, IonItem, IonIcon, IonLabel, IonNote], }) export class ViewMessagePage implements OnInit { public message!: Message; private data = inject(DataService); private activatedRoute = inject(ActivatedRoute); private platform = inject(Platform); constructor() { addIcons({ personCircle }); } ngOnInit() { const id = this.activatedRoute.snapshot.paramMap.get('id') as string; this.message = this.data.getMessageById(parseInt(id, 10)); } getBackButtonText() { const isIos = this.platform.is('ios') return isIos ? 'Inbox' : ''; } } ================================================ FILE: angular-standalone/official/sidemenu/ionic.starter.json ================================================ { "name": "Sidemenu Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular-standalone/official/sidemenu/src/app/app.component.html ================================================ Inbox hi@ionicframework.com @for (p of appPages; track p; let i = $index) { {{ p.title }} } Labels @for (label of labels; track label) { {{ label }} } ================================================ FILE: angular-standalone/official/sidemenu/src/app/app.component.scss ================================================ ion-menu ion-content { --background: var(--ion-item-background, var(--ion-background-color, #fff)); } ion-menu.md ion-content { --padding-start: 8px; --padding-end: 8px; --padding-top: 20px; --padding-bottom: 20px; } ion-menu.md ion-list { padding: 20px 0; } ion-menu.md ion-note { margin-bottom: 30px; } ion-menu.md ion-list-header, ion-menu.md ion-note { padding-left: 10px; } ion-menu.md ion-list#inbox-list { border-bottom: 1px solid var(--ion-background-color-step-150, #d7d8da); } ion-menu.md ion-list#inbox-list ion-list-header { font-size: 22px; font-weight: 600; min-height: 20px; } ion-menu.md ion-list#labels-list ion-list-header { font-size: 16px; margin-bottom: 18px; color: #757575; min-height: 26px; } ion-menu.md ion-item { --padding-start: 10px; --padding-end: 10px; border-radius: 4px; } ion-menu.md ion-item.selected { --background: rgba(var(--ion-color-primary-rgb), 0.14); } ion-menu.md ion-item.selected ion-icon { color: var(--ion-color-primary); } ion-menu.md ion-item ion-icon { color: #616e7e; } ion-menu.md ion-item ion-label { font-weight: 500; } ion-menu.ios ion-content { --padding-bottom: 20px; } ion-menu.ios ion-list { padding: 20px 0 0 0; } ion-menu.ios ion-note { line-height: 24px; margin-bottom: 20px; } ion-menu.ios ion-item { --padding-start: 16px; --padding-end: 16px; --min-height: 50px; } ion-menu.ios ion-item.selected ion-icon { color: var(--ion-color-primary); } ion-menu.ios ion-item ion-icon { font-size: 24px; color: #73849a; } ion-menu.ios ion-list#labels-list ion-list-header { margin-bottom: 8px; } ion-menu.ios ion-list-header, ion-menu.ios ion-note { padding-left: 16px; padding-right: 16px; } ion-menu.ios ion-note { margin-bottom: 8px; } ion-note { display: inline-block; font-size: 16px; color: var(--ion-color-medium-shade); } ion-item.selected { --color: var(--ion-color-primary); } ================================================ FILE: angular-standalone/official/sidemenu/src/app/app.component.spec.ts ================================================ import { TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [AppComponent], providers: [provideRouter([])] }).compileComponents(); }); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it('should have menu labels', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const app = fixture.nativeElement; const menuItems = app.querySelectorAll('ion-label'); expect(menuItems.length).toEqual(12); expect(menuItems[0].textContent).toContain('Inbox'); expect(menuItems[1].textContent).toContain('Outbox'); }); it('should have urls', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const app = fixture.nativeElement; const menuItems = app.querySelectorAll('ion-item'); expect(menuItems.length).toEqual(12); expect(menuItems[0].getAttribute('href')).toEqual( '/folder/inbox' ); expect(menuItems[1].getAttribute('href')).toEqual( '/folder/outbox' ); }); }); ================================================ FILE: angular-standalone/official/sidemenu/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { RouterLink, RouterLinkActive } from '@angular/router'; import { IonApp, IonSplitPane, IonMenu, IonContent, IonList, IonListHeader, IonNote, IonMenuToggle, IonItem, IonIcon, IonLabel, IonRouterOutlet, IonRouterLink } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { mailOutline, mailSharp, paperPlaneOutline, paperPlaneSharp, heartOutline, heartSharp, archiveOutline, archiveSharp, trashOutline, trashSharp, warningOutline, warningSharp, bookmarkOutline, bookmarkSharp } from 'ionicons/icons'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], imports: [RouterLink, RouterLinkActive, IonApp, IonSplitPane, IonMenu, IonContent, IonList, IonListHeader, IonNote, IonMenuToggle, IonItem, IonIcon, IonLabel, IonRouterLink, IonRouterOutlet], }) export class AppComponent { public appPages = [ { title: 'Inbox', url: '/folder/inbox', icon: 'mail' }, { title: 'Outbox', url: '/folder/outbox', icon: 'paper-plane' }, { title: 'Favorites', url: '/folder/favorites', icon: 'heart' }, { title: 'Archived', url: '/folder/archived', icon: 'archive' }, { title: 'Trash', url: '/folder/trash', icon: 'trash' }, { title: 'Spam', url: '/folder/spam', icon: 'warning' }, ]; public labels = ['Family', 'Friends', 'Notes', 'Work', 'Travel', 'Reminders']; constructor() { addIcons({ mailOutline, mailSharp, paperPlaneOutline, paperPlaneSharp, heartOutline, heartSharp, archiveOutline, archiveSharp, trashOutline, trashSharp, warningOutline, warningSharp, bookmarkOutline, bookmarkSharp }); } } ================================================ FILE: angular-standalone/official/sidemenu/src/app/app.routes.ts ================================================ import { Routes } from '@angular/router'; export const routes: Routes = [ { path: '', redirectTo: 'folder/inbox', pathMatch: 'full', }, { path: 'folder/:id', loadComponent: () => import('./folder/folder.page').then((m) => m.FolderPage), }, ]; ================================================ FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.html ================================================ {{ folder }} {{ folder }}
{{ folder }}

Explore UI Components

================================================ FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.scss ================================================ ion-menu-button { color: var(--ion-color-primary); } #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { FolderPage } from './folder.page'; describe('FolderPage', () => { let component: FolderPage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ imports: [FolderPage], providers: [provideRouter([])] }).compileComponents(); fixture = TestBed.createComponent(FolderPage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.ts ================================================ import { Component, inject, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { IonHeader, IonToolbar, IonButtons, IonMenuButton, IonTitle, IonContent } from '@ionic/angular/standalone'; @Component({ selector: 'app-folder', templateUrl: './folder.page.html', styleUrls: ['./folder.page.scss'], imports: [IonHeader, IonToolbar, IonButtons, IonMenuButton, IonTitle, IonContent], }) export class FolderPage implements OnInit { public folder!: string; private activatedRoute = inject(ActivatedRoute); constructor() {} ngOnInit() { this.folder = this.activatedRoute.snapshot.paramMap.get('id') as string; } } ================================================ FILE: angular-standalone/official/tabs/ionic.starter.json ================================================ { "name": "Tabs Starter", "baseref": "main", "tarignore": [ "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless" } } ================================================ FILE: angular-standalone/official/tabs/src/app/app.component.html ================================================ ================================================ FILE: angular-standalone/official/tabs/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', imports: [IonApp, IonRouterOutlet], }) export class AppComponent { constructor() {} } ================================================ FILE: angular-standalone/official/tabs/src/app/app.routes.ts ================================================ import { Routes } from '@angular/router'; export const routes: Routes = [ { path: '', loadChildren: () => import('./tabs/tabs.routes').then((m) => m.routes), }, ]; ================================================ FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.html ================================================
{{ name }}

Explore UI Components

================================================ FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.scss ================================================ #container { text-align: center; position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); } #container strong { font-size: 20px; line-height: 26px; } #container p { font-size: 16px; line-height: 22px; color: #8c8c8c; margin: 0; } #container a { text-decoration: none; } ================================================ FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ExploreContainerComponent } from './explore-container.component'; describe('ExploreContainerComponent', () => { let component: ExploreContainerComponent; let fixture: ComponentFixture; beforeEach(async () => { fixture = TestBed.createComponent(ExploreContainerComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.ts ================================================ import { Component, Input } from '@angular/core'; @Component({ selector: 'app-explore-container', templateUrl: './explore-container.component.html', styleUrls: ['./explore-container.component.scss'], }) export class ExploreContainerComponent { @Input() name?: string; } ================================================ FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.html ================================================ Tab 1 Tab 1 ================================================ FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.scss ================================================ ================================================ FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { Tab1Page } from './tab1.page'; describe('Tab1Page', () => { let component: Tab1Page; let fixture: ComponentFixture; beforeEach(async () => { fixture = TestBed.createComponent(Tab1Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.ts ================================================ import { Component } from '@angular/core'; import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone'; import { ExploreContainerComponent } from '../explore-container/explore-container.component'; @Component({ selector: 'app-tab1', templateUrl: 'tab1.page.html', styleUrls: ['tab1.page.scss'], imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent], }) export class Tab1Page { constructor() {} } ================================================ FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.html ================================================ Tab 2 Tab 2 ================================================ FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.scss ================================================ ================================================ FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { Tab2Page } from './tab2.page'; describe('Tab2Page', () => { let component: Tab2Page; let fixture: ComponentFixture; beforeEach(async () => { fixture = TestBed.createComponent(Tab2Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.ts ================================================ import { Component } from '@angular/core'; import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone'; import { ExploreContainerComponent } from '../explore-container/explore-container.component'; @Component({ selector: 'app-tab2', templateUrl: 'tab2.page.html', styleUrls: ['tab2.page.scss'], imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent] }) export class Tab2Page { constructor() {} } ================================================ FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.html ================================================ Tab 3 Tab 3 ================================================ FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.scss ================================================ ================================================ FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { Tab3Page } from './tab3.page'; describe('Tab3Page', () => { let component: Tab3Page; let fixture: ComponentFixture; beforeEach(async () => { fixture = TestBed.createComponent(Tab3Page); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.ts ================================================ import { Component } from '@angular/core'; import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone'; import { ExploreContainerComponent } from '../explore-container/explore-container.component'; @Component({ selector: 'app-tab3', templateUrl: 'tab3.page.html', styleUrls: ['tab3.page.scss'], imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent], }) export class Tab3Page { constructor() {} } ================================================ FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.html ================================================ Tab 1 Tab 2 Tab 3 ================================================ FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.scss ================================================ ================================================ FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.spec.ts ================================================ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { TabsPage } from './tabs.page'; describe('TabsPage', () => { let component: TabsPage; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ imports: [TabsPage], providers: [provideRouter([])] }).compileComponents(); }); beforeEach(() => { fixture = TestBed.createComponent(TabsPage); component = fixture.componentInstance; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); }); ================================================ FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.ts ================================================ import { Component, EnvironmentInjector, inject } from '@angular/core'; import { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { triangle, ellipse, square } from 'ionicons/icons'; @Component({ selector: 'app-tabs', templateUrl: 'tabs.page.html', styleUrls: ['tabs.page.scss'], imports: [IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel], }) export class TabsPage { public environmentInjector = inject(EnvironmentInjector); constructor() { addIcons({ triangle, ellipse, square }); } } ================================================ FILE: angular-standalone/official/tabs/src/app/tabs/tabs.routes.ts ================================================ import { Routes } from '@angular/router'; import { TabsPage } from './tabs.page'; export const routes: Routes = [ { path: 'tabs', component: TabsPage, children: [ { path: 'tab1', loadComponent: () => import('../tab1/tab1.page').then((m) => m.Tab1Page), }, { path: 'tab2', loadComponent: () => import('../tab2/tab2.page').then((m) => m.Tab2Page), }, { path: 'tab3', loadComponent: () => import('../tab3/tab3.page').then((m) => m.Tab3Page), }, { path: '', redirectTo: '/tabs/tab1', pathMatch: 'full', }, ], }, { path: '', redirectTo: '/tabs/tab1', pathMatch: 'full', }, ]; ================================================ FILE: bin/ionic-starters ================================================ #!/usr/bin/env node const { run } = require('../'); run(process.argv.slice(2), process.env).catch(e => { console.error(e); process.exitCode = 1; }); ================================================ FILE: integrations/cordova/config.xml ================================================ MyApp An awesome Ionic/Cordova app. Ionic Framework Team ================================================ FILE: integrations/cordova/resources/README.md ================================================ These are Cordova resources. You can replace icon.png and splash.png and run `ionic cordova resources` to generate custom icons and splash screens for your app. See `ionic cordova resources --help` for details. Cordova reference documentation: - Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html - Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/ ================================================ FILE: integrations/cordova/resources/android/xml/network_security_config.xml ================================================ localhost ================================================ FILE: ionic-angular/base/.editorconfig ================================================ # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs # editorconfig.org root = true [*] indent_style = space indent_size = 2 # We recommend you to keep these unchanged end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false ================================================ FILE: ionic-angular/base/.gitignore ================================================ # Specifies intentionally untracked files to ignore when using Git # http://git-scm.com/docs/gitignore *~ *.sw[mnpcod] .tmp *.tmp *.tmp.* *.sublime-project *.sublime-workspace .DS_Store Thumbs.db UserInterfaceState.xcuserstate $RECYCLE.BIN/ *.log log.txt npm-debug.log* /.idea /.ionic /.sass-cache /.sourcemaps /.versions /.vscode /coverage /dist /node_modules /platforms /plugins /www ================================================ FILE: ionic-angular/base/ionic.config.json ================================================ { "name": "ionic2-app-base", "app_id": "", "type": "ionic-angular", "integrations": {} } ================================================ FILE: ionic-angular/base/package.json ================================================ { "name": "ionic-app-base", "version": "0.0.0", "author": "Ionic Framework", "homepage": "https://ionicframework.com/", "private": true, "scripts": { "start": "ionic-app-scripts serve", "clean": "ionic-app-scripts clean", "build": "ionic-app-scripts build", "lint": "ionic-app-scripts lint" }, "dependencies": { "@angular/animations": "5.2.11", "@angular/common": "5.2.11", "@angular/compiler": "5.2.11", "@angular/compiler-cli": "5.2.11", "@angular/core": "5.2.11", "@angular/forms": "5.2.11", "@angular/platform-browser": "5.2.11", "@angular/platform-browser-dynamic": "5.2.11", "@ionic-native/core": "4.20.0", "@ionic-native/splash-screen": "4.20.0", "@ionic-native/status-bar": "4.20.0", "@ionic/storage": "2.2.0", "ionic-angular": "3.9.9", "ionicons": "3.0.0", "rxjs": "5.5.11", "sw-toolbox": "3.6.0", "zone.js": "0.8.29" }, "devDependencies": { "@ionic/app-scripts": "3.2.4", "typescript": "2.6.2" } } ================================================ FILE: ionic-angular/base/src/app/app.scss ================================================ // https://ionicframework.com/docs/theming/ // App Global Sass // -------------------------------------------------- // Put style rules here that you want to apply globally. These // styles are for the entire app and not just one component. // Additionally, this file can be also used as an entry point // to import other Sass files to be included in the output CSS. // // Shared Sass variables, which can be used to adjust Ionic's // default Sass variables, belong in "theme/variables.scss". // // To declare rules for a specific mode, create a child rule // for the .md, .ios, or .wp mode classes. The mode class is // automatically applied to the element in the app. ================================================ FILE: ionic-angular/base/src/app/main.ts ================================================ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; platformBrowserDynamic().bootstrapModule(AppModule); ================================================ FILE: ionic-angular/base/src/index.html ================================================ Ionic App ================================================ FILE: ionic-angular/base/src/manifest.json ================================================ { "name": "Ionic", "short_name": "Ionic", "start_url": "index.html", "display": "standalone", "icons": [{ "src": "assets/imgs/logo.png", "sizes": "512x512", "type": "image/png" }], "background_color": "#4e8ef7", "theme_color": "#4e8ef7" } ================================================ FILE: ionic-angular/base/src/service-worker.js ================================================ /** * Check out https://googlechromelabs.github.io/sw-toolbox/ for * more info on how to use sw-toolbox to custom configure your service worker. */ 'use strict'; importScripts('./build/sw-toolbox.js'); self.toolbox.options.cache = { name: 'ionic-cache' }; // pre-cache our key assets self.toolbox.precache( [ './build/main.js', './build/vendor.js', './build/main.css', './build/polyfills.js', 'index.html', 'manifest.json' ] ); // dynamically cache any other local assets self.toolbox.router.any('/*', self.toolbox.fastest); // for any other requests go to the network, cache, // and then only use that cached resource if your user goes offline self.toolbox.router.default = self.toolbox.networkFirst; ================================================ FILE: ionic-angular/base/src/theme/variables.scss ================================================ // Ionic Variables and Theming. For more info, please see: // https://ionicframework.com/docs/theming/ // Font path is used to include ionicons, // roboto, and noto sans fonts $font-path: "../assets/fonts"; // The app direction is used to include // rtl styles in your app. For more info, please refer to: // https://ionicframework.com/docs/theming/rtl-support/ $app-direction: ltr; @import "ionic.globals"; // Shared Variables // -------------------------------------------------- // To customize the look and feel of this app, you can override // the Sass variables found in Ionic's source scss files. // To view all the possible Ionic variables, see: // https://ionicframework.com/docs/theming/overriding-ionic-variables/ // Named Color Variables // -------------------------------------------------- // Named colors makes it easy to reuse colors on various components. // It's highly recommended to change the default colors // to match your app's branding. Ionic uses a Sass map of // colors so you can add, rename and remove colors as needed. // The "primary" color is the only required color in the map. $colors: ( primary: #488aff, secondary: #32db64, danger: #f53d3d, light: #f4f4f4, dark: #222 ); // App iOS Variables // -------------------------------------------------- // iOS only Sass variables can go here // App Material Design Variables // -------------------------------------------------- // Material Design only Sass variables can go here // App Windows Variables // -------------------------------------------------- // Windows only Sass variables can go here // App Theme // -------------------------------------------------- // Ionic apps can have different themes applied, which can // then be future customized. This import comes last // so that the above variables are used and Ionic's // default are overridden. @import "ionic.theme.default"; // Ionicons // -------------------------------------------------- // The premium icon font for Ionic. For more info, please see: // https://ionicframework.com/docs/ionicons/ @import "ionic.ionicons"; // Fonts // -------------------------------------------------- @import "roboto"; @import "noto-sans"; ================================================ FILE: ionic-angular/base/tsconfig.json ================================================ { "compilerOptions": { "allowSyntheticDefaultImports": true, "declaration": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": [ "dom", "es2015" ], "module": "es2015", "moduleResolution": "node", "sourceMap": true, "target": "es5" }, "include": [ "src/**/*.ts" ], "exclude": [ "node_modules", "src/**/*.spec.ts", "src/**/__tests__/*.ts" ], "compileOnSave": false, "atom": { "rewriteTsconfig": false } } ================================================ FILE: ionic-angular/base/tslint.json ================================================ { "rules": { "no-duplicate-variable": true, "no-unused-variable": [ true ] }, "rulesDirectory": [ "node_modules/tslint-eslint-rules/dist/rules" ] } ================================================ FILE: ionic-angular/community/.gitkeep ================================================ ================================================ FILE: ionic-angular/official/aws/README.md ================================================ # Ionic AWS Starter This Ionic starter comes with a pre-configured [AWS Mobile Hub](https://aws.amazon.com/mobile/) project set up to use Amazon DynamoDB, S3, Pinpoint, and Cognito. ## Using the Starter ### Installing Ionic CLI 3.0 This starter project requires Ionic CLI 3.0, to install, run ```bash npm install -g ionic@latest ``` Make sure to add `sudo` on Mac and Linux. If you encounter issues installing the Ionic 3 CLI, uninstall the old one using `npm uninstall -g ionic` first. ### Installing AWSMobile CLI ``` npm install -g awsmobile-cli ``` ### Creating the Ionic Project To create a new Ionic project using this AWS Mobile Hub starter, run ```bash ionic start myApp aws ``` Which will create a new app in `./myApp`. Once the app is created, `cd` into it: ```bash cd myApp ``` ### Creating AWS Mobile Hub Project Init AWSMobile project ```bash awsmobile init Please tell us about your project: ? Where is your project's source directory: src ? Where is your project's distribution directory that stores build artifacts: www ? What is your project's build command: npm run-script build ? What is your project's start command for local test run: ionic serve ? What awsmobile project name would you like to use: ... Successfully created AWS Mobile Hub project: ... ``` ### Configuring AWS Mobile Hub Project The starter project gives instructions on how to do this from the command line, but some have reported bugs with [awsmobile](https://github.com/ionic-team/starters/issues/46), so here's how to do it in the browser. #### NoSQL Database Enable. Create a custom table named `tasks`. Make it Private. Accept `userId` as Partition key. Add an attribute `taskId` with type string and make it a Sort key Add an attribute `category` with type string. Add an attribute `description` with type string. Add an attribute `created` with type number. Create an index `DateSorted` with userId as Partition key and taskId as Sort key. #### User Sign-In Turn this on. Set your password requirements. #### Hosting and Streaming Turn this on. #### User File Storage Turn this on. ### Configuring S3 From the AWS Console, go to S3. Select the bucket named `-userfiles-mobilehub-` Go to the Permissions tab. Click on CORS Configuration. Paste the following into the editor and save. ```xml * HEAD PUT GET 3000 x-amz-server-side-encryption x-amz-request-id x-amz-id-2 * ``` ### Integrating Changes into App Go back to the command line for your project. ```bash awsmobile pull ``` Answer yes, when asked "? sync corresponding contents in backend/ with #current-backend-info/" ### Install dependencies ```bash npm install ``` The following commands are needed due to breaking changes in [aws-amplify](https://github.com/aws/aws-amplify) 0.4.6. They may not be needed in the future. ```bash npm install @types/zen-observable npm install @types/paho-mqtt ``` ### Running the app Now the app is configured and wired up to the AWS Mobile Hub and AWS services. To run the app in the browser, run ```bash ionic serve ``` To run the app on device, first add a platform, and then run it: ```bash ionic cordova platform add ios ionic cordova run ios ``` Or open the platform-specific project in the relevant IDE: ```bash open platforms/ios/MyApp.xcodeproj ``` ### Hosting app on Amazon S3 Since your Ionic app is just a web app, it can be hosted as a static website in an Amazon S3 bucket. ``` npm run build awsmobile publish ``` ================================================ FILE: ionic-angular/official/aws/ionic.starter.json ================================================ { "name": "AWS Starter", "baseref": "main", "gitignore": [ "cors-policy.xml", "mobile-hub-project.zip" ], "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "packageJson": { "dependencies": { "@ionic-native/camera": "4.5.3", "aws-amplify": "^0.2.9" }, "devDependencies": { "@types/node": "^9.4.0" } } } ================================================ FILE: ionic-angular/official/aws/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { Auth } from 'aws-amplify'; import { TabsPage } from '../pages/tabs/tabs'; import { LoginPage } from '../pages/login/login'; @Component({ templateUrl: 'app.html' }) export class MyApp { rootPage:any = null; constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { let globalActions = function() { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. statusBar.styleDefault(); splashScreen.hide(); }; platform.ready() .then(() => { Auth.currentAuthenticatedUser() .then(() => { this.rootPage = TabsPage; }) .catch(() => { this.rootPage = LoginPage; }) .then(() => globalActions()); }); } } ================================================ FILE: ionic-angular/official/aws/src/app/app.html ================================================ ================================================ FILE: ionic-angular/official/aws/src/app/app.module.ts ================================================ import { NgModule, ErrorHandler } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; import { Camera } from '@ionic-native/camera'; import { MyApp } from './app.component'; import { LoginPage } from '../pages/login/login'; import { SignupPage } from '../pages/signup/signup'; import { ConfirmSignInPage } from '../pages/confirmSignIn/confirmSignIn'; import { ConfirmSignUpPage } from '../pages/confirmSignUp/confirmSignUp'; import { SettingsPage } from '../pages/settings/settings'; import { AboutPage } from '../pages/about/about'; import { AccountPage } from '../pages/account/account'; import { TabsPage } from '../pages/tabs/tabs'; import { TasksPage } from '../pages/tasks/tasks'; import { TasksCreatePage } from '../pages/tasks-create/tasks-create'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { DynamoDB } from '../providers/aws.dynamodb'; import Amplify from 'aws-amplify'; const aws_exports = require('../aws-exports').default; Amplify.configure(aws_exports); @NgModule({ declarations: [ MyApp, LoginPage, SignupPage, ConfirmSignInPage, ConfirmSignUpPage, SettingsPage, AboutPage, AccountPage, TabsPage, TasksPage, TasksCreatePage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ MyApp, LoginPage, SignupPage, ConfirmSignInPage, ConfirmSignUpPage, SettingsPage, AboutPage, AccountPage, TabsPage, TasksPage, TasksCreatePage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler}, Camera, DynamoDB ] }) export class AppModule {} declare var AWS; AWS.config.customUserAgent = AWS.config.customUserAgent + ' Ionic'; ================================================ FILE: ionic-angular/official/aws/src/assets/aws-sdk.js ================================================ // AWS SDK for JavaScript v2.17.0 // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o `0`", "state": "success" }, { "matcher": "error", "expected": "InvalidInstanceID.NotFound", "state": "retry" } ] }, "BundleTaskComplete": { "delay": 15, "operation": "DescribeBundleTasks", "maxAttempts": 40, "acceptors": [ { "expected": "complete", "matcher": "pathAll", "state": "success", "argument": "BundleTasks[].State" }, { "expected": "failed", "matcher": "pathAny", "state": "failure", "argument": "BundleTasks[].State" } ] }, "ConversionTaskCancelled": { "delay": 15, "operation": "DescribeConversionTasks", "maxAttempts": 40, "acceptors": [ { "expected": "cancelled", "matcher": "pathAll", "state": "success", "argument": "ConversionTasks[].State" } ] }, "ConversionTaskCompleted": { "delay": 15, "operation": "DescribeConversionTasks", "maxAttempts": 40, "acceptors": [ { "expected": "completed", "matcher": "pathAll", "state": "success", "argument": "ConversionTasks[].State" }, { "expected": "cancelled", "matcher": "pathAny", "state": "failure", "argument": "ConversionTasks[].State" }, { "expected": "cancelling", "matcher": "pathAny", "state": "failure", "argument": "ConversionTasks[].State" } ] }, "ConversionTaskDeleted": { "delay": 15, "operation": "DescribeConversionTasks", "maxAttempts": 40, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "ConversionTasks[].State" } ] }, "CustomerGatewayAvailable": { "delay": 15, "operation": "DescribeCustomerGateways", "maxAttempts": 40, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "CustomerGateways[].State" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "CustomerGateways[].State" }, { "expected": "deleting", "matcher": "pathAny", "state": "failure", "argument": "CustomerGateways[].State" } ] }, "ExportTaskCancelled": { "delay": 15, "operation": "DescribeExportTasks", "maxAttempts": 40, "acceptors": [ { "expected": "cancelled", "matcher": "pathAll", "state": "success", "argument": "ExportTasks[].State" } ] }, "ExportTaskCompleted": { "delay": 15, "operation": "DescribeExportTasks", "maxAttempts": 40, "acceptors": [ { "expected": "completed", "matcher": "pathAll", "state": "success", "argument": "ExportTasks[].State" } ] }, "ImageExists": { "operation": "DescribeImages", "maxAttempts": 40, "delay": 15, "acceptors": [ { "matcher": "path", "expected": true, "argument": "length(Images[]) > `0`", "state": "success" }, { "matcher": "error", "expected": "InvalidAMIID.NotFound", "state": "retry" } ] }, "ImageAvailable": { "operation": "DescribeImages", "maxAttempts": 40, "delay": 15, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "Images[].State", "expected": "available" }, { "state": "failure", "matcher": "pathAny", "argument": "Images[].State", "expected": "failed" } ] }, "InstanceRunning": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "acceptors": [ { "expected": "running", "matcher": "pathAll", "state": "success", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "shutting-down", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "terminated", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "stopping", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" }, { "matcher": "error", "expected": "InvalidInstanceID.NotFound", "state": "retry" } ] }, "InstanceStatusOk": { "operation": "DescribeInstanceStatus", "maxAttempts": 40, "delay": 15, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "InstanceStatuses[].InstanceStatus.Status", "expected": "ok" }, { "matcher": "error", "expected": "InvalidInstanceID.NotFound", "state": "retry" } ] }, "InstanceStopped": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "acceptors": [ { "expected": "stopped", "matcher": "pathAll", "state": "success", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "pending", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "terminated", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" } ] }, "InstanceTerminated": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "acceptors": [ { "expected": "terminated", "matcher": "pathAll", "state": "success", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "pending", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" }, { "expected": "stopping", "matcher": "pathAny", "state": "failure", "argument": "Reservations[].Instances[].State.Name" } ] }, "KeyPairExists": { "operation": "DescribeKeyPairs", "delay": 5, "maxAttempts": 6, "acceptors": [ { "expected": true, "matcher": "path", "state": "success", "argument": "length(KeyPairs[].KeyName) > `0`" }, { "expected": "InvalidKeyPair.NotFound", "matcher": "error", "state": "retry" } ] }, "NatGatewayAvailable": { "operation": "DescribeNatGateways", "delay": 15, "maxAttempts": 40, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "NatGateways[].State", "expected": "available" }, { "state": "failure", "matcher": "pathAny", "argument": "NatGateways[].State", "expected": "failed" }, { "state": "failure", "matcher": "pathAny", "argument": "NatGateways[].State", "expected": "deleting" }, { "state": "failure", "matcher": "pathAny", "argument": "NatGateways[].State", "expected": "deleted" }, { "state": "retry", "matcher": "error", "expected": "NatGatewayNotFound" } ] }, "NetworkInterfaceAvailable": { "operation": "DescribeNetworkInterfaces", "delay": 20, "maxAttempts": 10, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "NetworkInterfaces[].Status" }, { "expected": "InvalidNetworkInterfaceID.NotFound", "matcher": "error", "state": "failure" } ] }, "PasswordDataAvailable": { "operation": "GetPasswordData", "maxAttempts": 40, "delay": 15, "acceptors": [ { "state": "success", "matcher": "path", "argument": "length(PasswordData) > `0`", "expected": true } ] }, "SnapshotCompleted": { "delay": 15, "operation": "DescribeSnapshots", "maxAttempts": 40, "acceptors": [ { "expected": "completed", "matcher": "pathAll", "state": "success", "argument": "Snapshots[].State" } ] }, "SpotInstanceRequestFulfilled": { "operation": "DescribeSpotInstanceRequests", "maxAttempts": 40, "delay": 15, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "SpotInstanceRequests[].Status.Code", "expected": "fulfilled" }, { "state": "failure", "matcher": "pathAny", "argument": "SpotInstanceRequests[].Status.Code", "expected": "schedule-expired" }, { "state": "failure", "matcher": "pathAny", "argument": "SpotInstanceRequests[].Status.Code", "expected": "canceled-before-fulfillment" }, { "state": "failure", "matcher": "pathAny", "argument": "SpotInstanceRequests[].Status.Code", "expected": "bad-parameters" }, { "state": "failure", "matcher": "pathAny", "argument": "SpotInstanceRequests[].Status.Code", "expected": "system-error" } ] }, "SubnetAvailable": { "delay": 15, "operation": "DescribeSubnets", "maxAttempts": 40, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "Subnets[].State" } ] }, "SystemStatusOk": { "operation": "DescribeInstanceStatus", "maxAttempts": 40, "delay": 15, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "InstanceStatuses[].SystemStatus.Status", "expected": "ok" } ] }, "VolumeAvailable": { "delay": 15, "operation": "DescribeVolumes", "maxAttempts": 40, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "Volumes[].State" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "Volumes[].State" } ] }, "VolumeDeleted": { "delay": 15, "operation": "DescribeVolumes", "maxAttempts": 40, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "Volumes[].State" }, { "matcher": "error", "expected": "InvalidVolume.NotFound", "state": "success" } ] }, "VolumeInUse": { "delay": 15, "operation": "DescribeVolumes", "maxAttempts": 40, "acceptors": [ { "expected": "in-use", "matcher": "pathAll", "state": "success", "argument": "Volumes[].State" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "Volumes[].State" } ] }, "VpcAvailable": { "delay": 15, "operation": "DescribeVpcs", "maxAttempts": 40, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "Vpcs[].State" } ] }, "VpcExists": { "operation": "DescribeVpcs", "delay": 1, "maxAttempts": 5, "acceptors": [ { "matcher": "status", "expected": 200, "state": "success" }, { "matcher": "error", "expected": "InvalidVpcID.NotFound", "state": "retry" } ] }, "VpnConnectionAvailable": { "delay": 15, "operation": "DescribeVpnConnections", "maxAttempts": 40, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "VpnConnections[].State" }, { "expected": "deleting", "matcher": "pathAny", "state": "failure", "argument": "VpnConnections[].State" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "VpnConnections[].State" } ] }, "VpnConnectionDeleted": { "delay": 15, "operation": "DescribeVpnConnections", "maxAttempts": 40, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "VpnConnections[].State" }, { "expected": "pending", "matcher": "pathAny", "state": "failure", "argument": "VpnConnections[].State" } ] }, "VpcPeeringConnectionExists": { "delay": 15, "operation": "DescribeVpcPeeringConnections", "maxAttempts": 40, "acceptors": [ { "matcher": "status", "expected": 200, "state": "success" }, { "matcher": "error", "expected": "InvalidVpcPeeringConnectionID.NotFound", "state": "retry" } ] }, "VpcPeeringConnectionDeleted": { "delay": 15, "operation": "DescribeVpcPeeringConnections", "maxAttempts": 40, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "VpcPeeringConnections[].Status.Code" }, { "matcher": "error", "expected": "InvalidVpcPeeringConnectionID.NotFound", "state": "success" } ] } } } },{}],45:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "ecr-2015-09-21", "apiVersion": "2015-09-21", "endpointPrefix": "ecr", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Amazon ECR", "serviceFullName": "Amazon EC2 Container Registry", "signatureVersion": "v4", "targetPrefix": "AmazonEC2ContainerRegistry_V20150921" }, "operations": { "BatchCheckLayerAvailability": { "input": { "type": "structure", "required": [ "repositoryName", "layerDigests" ], "members": { "registryId": {}, "repositoryName": {}, "layerDigests": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "layers": { "type": "list", "member": { "type": "structure", "members": { "layerDigest": {}, "layerAvailability": {}, "layerSize": { "type": "long" }, "mediaType": {} } } }, "failures": { "type": "list", "member": { "type": "structure", "members": { "layerDigest": {}, "failureCode": {}, "failureReason": {} } } } } } }, "BatchDeleteImage": { "input": { "type": "structure", "required": [ "repositoryName", "imageIds" ], "members": { "registryId": {}, "repositoryName": {}, "imageIds": { "shape": "Si" } } }, "output": { "type": "structure", "members": { "imageIds": { "shape": "Si" }, "failures": { "shape": "Sn" } } } }, "BatchGetImage": { "input": { "type": "structure", "required": [ "repositoryName", "imageIds" ], "members": { "registryId": {}, "repositoryName": {}, "imageIds": { "shape": "Si" }, "acceptedMediaTypes": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "images": { "type": "list", "member": { "shape": "Sv" } }, "failures": { "shape": "Sn" } } } }, "CompleteLayerUpload": { "input": { "type": "structure", "required": [ "repositoryName", "uploadId", "layerDigests" ], "members": { "registryId": {}, "repositoryName": {}, "uploadId": {}, "layerDigests": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "uploadId": {}, "layerDigest": {} } } }, "CreateRepository": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "repositoryName": {} } }, "output": { "type": "structure", "members": { "repository": { "shape": "S13" } } } }, "DeleteRepository": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {}, "force": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "repository": { "shape": "S13" } } } }, "DeleteRepositoryPolicy": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {} } }, "output": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "policyText": {} } } }, "DescribeImages": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {}, "imageIds": { "shape": "Si" }, "nextToken": {}, "maxResults": { "type": "integer" }, "filter": { "type": "structure", "members": { "tagStatus": {} } } } }, "output": { "type": "structure", "members": { "imageDetails": { "type": "list", "member": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "imageDigest": {}, "imageTags": { "type": "list", "member": {} }, "imageSizeInBytes": { "type": "long" }, "imagePushedAt": { "type": "timestamp" } } } }, "nextToken": {} } } }, "DescribeRepositories": { "input": { "type": "structure", "members": { "registryId": {}, "repositoryNames": { "type": "list", "member": {} }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "repositories": { "type": "list", "member": { "shape": "S13" } }, "nextToken": {} } } }, "GetAuthorizationToken": { "input": { "type": "structure", "members": { "registryIds": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "authorizationData": { "type": "list", "member": { "type": "structure", "members": { "authorizationToken": {}, "expiresAt": { "type": "timestamp" }, "proxyEndpoint": {} } } } } } }, "GetDownloadUrlForLayer": { "input": { "type": "structure", "required": [ "repositoryName", "layerDigest" ], "members": { "registryId": {}, "repositoryName": {}, "layerDigest": {} } }, "output": { "type": "structure", "members": { "downloadUrl": {}, "layerDigest": {} } } }, "GetRepositoryPolicy": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {} } }, "output": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "policyText": {} } } }, "InitiateLayerUpload": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {} } }, "output": { "type": "structure", "members": { "uploadId": {}, "partSize": { "type": "long" } } } }, "ListImages": { "input": { "type": "structure", "required": [ "repositoryName" ], "members": { "registryId": {}, "repositoryName": {}, "nextToken": {}, "maxResults": { "type": "integer" }, "filter": { "type": "structure", "members": { "tagStatus": {} } } } }, "output": { "type": "structure", "members": { "imageIds": { "shape": "Si" }, "nextToken": {} } } }, "PutImage": { "input": { "type": "structure", "required": [ "repositoryName", "imageManifest" ], "members": { "registryId": {}, "repositoryName": {}, "imageManifest": {}, "imageTag": {} } }, "output": { "type": "structure", "members": { "image": { "shape": "Sv" } } } }, "SetRepositoryPolicy": { "input": { "type": "structure", "required": [ "repositoryName", "policyText" ], "members": { "registryId": {}, "repositoryName": {}, "policyText": {}, "force": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "policyText": {} } } }, "UploadLayerPart": { "input": { "type": "structure", "required": [ "repositoryName", "uploadId", "partFirstByte", "partLastByte", "layerPartBlob" ], "members": { "registryId": {}, "repositoryName": {}, "uploadId": {}, "partFirstByte": { "type": "long" }, "partLastByte": { "type": "long" }, "layerPartBlob": { "type": "blob" } } }, "output": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "uploadId": {}, "lastByteReceived": { "type": "long" } } } } }, "shapes": { "Si": { "type": "list", "member": { "shape": "Sj" } }, "Sj": { "type": "structure", "members": { "imageDigest": {}, "imageTag": {} } }, "Sn": { "type": "list", "member": { "type": "structure", "members": { "imageId": { "shape": "Sj" }, "failureCode": {}, "failureReason": {} } } }, "Sv": { "type": "structure", "members": { "registryId": {}, "repositoryName": {}, "imageId": { "shape": "Sj" }, "imageManifest": {} } }, "S13": { "type": "structure", "members": { "repositoryArn": {}, "registryId": {}, "repositoryName": {}, "repositoryUri": {}, "createdAt": { "type": "timestamp" } } } } } },{}],46:[function(require,module,exports){ module.exports={ "pagination": { "ListImages": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "imageIds" }, "DescribeImages": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "imageDetails" }, "DescribeRepositories": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "repositories" } } } },{}],47:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-11-13", "endpointPrefix": "ecs", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Amazon ECS", "serviceFullName": "Amazon EC2 Container Service", "signatureVersion": "v4", "targetPrefix": "AmazonEC2ContainerServiceV20141113", "uid": "ecs-2014-11-13" }, "operations": { "CreateCluster": { "input": { "type": "structure", "members": { "clusterName": {} } }, "output": { "type": "structure", "members": { "cluster": { "shape": "S4" } } } }, "CreateService": { "input": { "type": "structure", "required": [ "serviceName", "taskDefinition", "desiredCount" ], "members": { "cluster": {}, "serviceName": {}, "taskDefinition": {}, "loadBalancers": { "shape": "S7" }, "desiredCount": { "type": "integer" }, "clientToken": {}, "role": {}, "deploymentConfiguration": { "shape": "Sa" }, "placementConstraints": { "shape": "Sb" }, "placementStrategy": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "service": { "shape": "Si" } } } }, "DeleteAttributes": { "input": { "type": "structure", "required": [ "attributes" ], "members": { "cluster": {}, "attributes": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "attributes": { "shape": "Sp" } } } }, "DeleteCluster": { "input": { "type": "structure", "required": [ "cluster" ], "members": { "cluster": {} } }, "output": { "type": "structure", "members": { "cluster": { "shape": "S4" } } } }, "DeleteService": { "input": { "type": "structure", "required": [ "service" ], "members": { "cluster": {}, "service": {} } }, "output": { "type": "structure", "members": { "service": { "shape": "Si" } } } }, "DeregisterContainerInstance": { "input": { "type": "structure", "required": [ "containerInstance" ], "members": { "cluster": {}, "containerInstance": {}, "force": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "containerInstance": { "shape": "S10" } } } }, "DeregisterTaskDefinition": { "input": { "type": "structure", "required": [ "taskDefinition" ], "members": { "taskDefinition": {} } }, "output": { "type": "structure", "members": { "taskDefinition": { "shape": "S1b" } } } }, "DescribeClusters": { "input": { "type": "structure", "members": { "clusters": { "shape": "S16" } } }, "output": { "type": "structure", "members": { "clusters": { "type": "list", "member": { "shape": "S4" } }, "failures": { "shape": "S28" } } } }, "DescribeContainerInstances": { "input": { "type": "structure", "required": [ "containerInstances" ], "members": { "cluster": {}, "containerInstances": { "shape": "S16" } } }, "output": { "type": "structure", "members": { "containerInstances": { "shape": "S2c" }, "failures": { "shape": "S28" } } } }, "DescribeServices": { "input": { "type": "structure", "required": [ "services" ], "members": { "cluster": {}, "services": { "shape": "S16" } } }, "output": { "type": "structure", "members": { "services": { "type": "list", "member": { "shape": "Si" } }, "failures": { "shape": "S28" } } } }, "DescribeTaskDefinition": { "input": { "type": "structure", "required": [ "taskDefinition" ], "members": { "taskDefinition": {} } }, "output": { "type": "structure", "members": { "taskDefinition": { "shape": "S1b" } } } }, "DescribeTasks": { "input": { "type": "structure", "required": [ "tasks" ], "members": { "cluster": {}, "tasks": { "shape": "S16" } } }, "output": { "type": "structure", "members": { "tasks": { "shape": "S2k" }, "failures": { "shape": "S28" } } } }, "DiscoverPollEndpoint": { "input": { "type": "structure", "members": { "containerInstance": {}, "cluster": {} } }, "output": { "type": "structure", "members": { "endpoint": {}, "telemetryEndpoint": {} } } }, "ListAttributes": { "input": { "type": "structure", "required": [ "targetType" ], "members": { "cluster": {}, "targetType": {}, "attributeName": {}, "attributeValue": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "attributes": { "shape": "Sp" }, "nextToken": {} } } }, "ListClusters": { "input": { "type": "structure", "members": { "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "clusterArns": { "shape": "S16" }, "nextToken": {} } } }, "ListContainerInstances": { "input": { "type": "structure", "members": { "cluster": {}, "filter": {}, "nextToken": {}, "maxResults": { "type": "integer" }, "status": {} } }, "output": { "type": "structure", "members": { "containerInstanceArns": { "shape": "S16" }, "nextToken": {} } } }, "ListServices": { "input": { "type": "structure", "members": { "cluster": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "serviceArns": { "shape": "S16" }, "nextToken": {} } } }, "ListTaskDefinitionFamilies": { "input": { "type": "structure", "members": { "familyPrefix": {}, "status": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "families": { "shape": "S16" }, "nextToken": {} } } }, "ListTaskDefinitions": { "input": { "type": "structure", "members": { "familyPrefix": {}, "status": {}, "sort": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "taskDefinitionArns": { "shape": "S16" }, "nextToken": {} } } }, "ListTasks": { "input": { "type": "structure", "members": { "cluster": {}, "containerInstance": {}, "family": {}, "nextToken": {}, "maxResults": { "type": "integer" }, "startedBy": {}, "serviceName": {}, "desiredStatus": {} } }, "output": { "type": "structure", "members": { "taskArns": { "shape": "S16" }, "nextToken": {} } } }, "PutAttributes": { "input": { "type": "structure", "required": [ "attributes" ], "members": { "cluster": {}, "attributes": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "attributes": { "shape": "Sp" } } } }, "RegisterContainerInstance": { "input": { "type": "structure", "members": { "cluster": {}, "instanceIdentityDocument": {}, "instanceIdentityDocumentSignature": {}, "totalResources": { "shape": "S13" }, "versionInfo": { "shape": "S12" }, "containerInstanceArn": {}, "attributes": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "containerInstance": { "shape": "S10" } } } }, "RegisterTaskDefinition": { "input": { "type": "structure", "required": [ "family", "containerDefinitions" ], "members": { "family": {}, "taskRoleArn": {}, "networkMode": {}, "containerDefinitions": { "shape": "S1c" }, "volumes": { "shape": "S1x" }, "placementConstraints": { "shape": "S22" } } }, "output": { "type": "structure", "members": { "taskDefinition": { "shape": "S1b" } } } }, "RunTask": { "input": { "type": "structure", "required": [ "taskDefinition" ], "members": { "cluster": {}, "taskDefinition": {}, "overrides": { "shape": "S2m" }, "count": { "type": "integer" }, "startedBy": {}, "group": {}, "placementConstraints": { "shape": "Sb" }, "placementStrategy": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "tasks": { "shape": "S2k" }, "failures": { "shape": "S28" } } } }, "StartTask": { "input": { "type": "structure", "required": [ "taskDefinition", "containerInstances" ], "members": { "cluster": {}, "taskDefinition": {}, "overrides": { "shape": "S2m" }, "containerInstances": { "shape": "S16" }, "startedBy": {}, "group": {} } }, "output": { "type": "structure", "members": { "tasks": { "shape": "S2k" }, "failures": { "shape": "S28" } } } }, "StopTask": { "input": { "type": "structure", "required": [ "task" ], "members": { "cluster": {}, "task": {}, "reason": {} } }, "output": { "type": "structure", "members": { "task": { "shape": "S2l" } } } }, "SubmitContainerStateChange": { "input": { "type": "structure", "members": { "cluster": {}, "task": {}, "containerName": {}, "status": {}, "exitCode": { "type": "integer" }, "reason": {}, "networkBindings": { "shape": "S2r" } } }, "output": { "type": "structure", "members": { "acknowledgment": {} } } }, "SubmitTaskStateChange": { "input": { "type": "structure", "members": { "cluster": {}, "task": {}, "status": {}, "reason": {} } }, "output": { "type": "structure", "members": { "acknowledgment": {} } } }, "UpdateContainerAgent": { "input": { "type": "structure", "required": [ "containerInstance" ], "members": { "cluster": {}, "containerInstance": {} } }, "output": { "type": "structure", "members": { "containerInstance": { "shape": "S10" } } } }, "UpdateContainerInstancesState": { "input": { "type": "structure", "required": [ "containerInstances", "status" ], "members": { "cluster": {}, "containerInstances": { "shape": "S16" }, "status": {} } }, "output": { "type": "structure", "members": { "containerInstances": { "shape": "S2c" }, "failures": { "shape": "S28" } } } }, "UpdateService": { "input": { "type": "structure", "required": [ "service" ], "members": { "cluster": {}, "service": {}, "desiredCount": { "type": "integer" }, "taskDefinition": {}, "deploymentConfiguration": { "shape": "Sa" } } }, "output": { "type": "structure", "members": { "service": { "shape": "Si" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "clusterArn": {}, "clusterName": {}, "status": {}, "registeredContainerInstancesCount": { "type": "integer" }, "runningTasksCount": { "type": "integer" }, "pendingTasksCount": { "type": "integer" }, "activeServicesCount": { "type": "integer" } } }, "S7": { "type": "list", "member": { "type": "structure", "members": { "targetGroupArn": {}, "loadBalancerName": {}, "containerName": {}, "containerPort": { "type": "integer" } } } }, "Sa": { "type": "structure", "members": { "maximumPercent": { "type": "integer" }, "minimumHealthyPercent": { "type": "integer" } } }, "Sb": { "type": "list", "member": { "type": "structure", "members": { "type": {}, "expression": {} } } }, "Se": { "type": "list", "member": { "type": "structure", "members": { "type": {}, "field": {} } } }, "Si": { "type": "structure", "members": { "serviceArn": {}, "serviceName": {}, "clusterArn": {}, "loadBalancers": { "shape": "S7" }, "status": {}, "desiredCount": { "type": "integer" }, "runningCount": { "type": "integer" }, "pendingCount": { "type": "integer" }, "taskDefinition": {}, "deploymentConfiguration": { "shape": "Sa" }, "deployments": { "type": "list", "member": { "type": "structure", "members": { "id": {}, "status": {}, "taskDefinition": {}, "desiredCount": { "type": "integer" }, "pendingCount": { "type": "integer" }, "runningCount": { "type": "integer" }, "createdAt": { "type": "timestamp" }, "updatedAt": { "type": "timestamp" } } } }, "roleArn": {}, "events": { "type": "list", "member": { "type": "structure", "members": { "id": {}, "createdAt": { "type": "timestamp" }, "message": {} } } }, "createdAt": { "type": "timestamp" }, "placementConstraints": { "shape": "Sb" }, "placementStrategy": { "shape": "Se" } } }, "Sp": { "type": "list", "member": { "shape": "Sq" } }, "Sq": { "type": "structure", "required": [ "name" ], "members": { "name": {}, "value": {}, "targetType": {}, "targetId": {} } }, "S10": { "type": "structure", "members": { "containerInstanceArn": {}, "ec2InstanceId": {}, "version": { "type": "long" }, "versionInfo": { "shape": "S12" }, "remainingResources": { "shape": "S13" }, "registeredResources": { "shape": "S13" }, "status": {}, "agentConnected": { "type": "boolean" }, "runningTasksCount": { "type": "integer" }, "pendingTasksCount": { "type": "integer" }, "agentUpdateStatus": {}, "attributes": { "shape": "Sp" } } }, "S12": { "type": "structure", "members": { "agentVersion": {}, "agentHash": {}, "dockerVersion": {} } }, "S13": { "type": "list", "member": { "type": "structure", "members": { "name": {}, "type": {}, "doubleValue": { "type": "double" }, "longValue": { "type": "long" }, "integerValue": { "type": "integer" }, "stringSetValue": { "shape": "S16" } } } }, "S16": { "type": "list", "member": {} }, "S1b": { "type": "structure", "members": { "taskDefinitionArn": {}, "containerDefinitions": { "shape": "S1c" }, "family": {}, "taskRoleArn": {}, "networkMode": {}, "revision": { "type": "integer" }, "volumes": { "shape": "S1x" }, "status": {}, "requiresAttributes": { "type": "list", "member": { "shape": "Sq" } }, "placementConstraints": { "shape": "S22" } } }, "S1c": { "type": "list", "member": { "type": "structure", "members": { "name": {}, "image": {}, "cpu": { "type": "integer" }, "memory": { "type": "integer" }, "memoryReservation": { "type": "integer" }, "links": { "shape": "S16" }, "portMappings": { "type": "list", "member": { "type": "structure", "members": { "containerPort": { "type": "integer" }, "hostPort": { "type": "integer" }, "protocol": {} } } }, "essential": { "type": "boolean" }, "entryPoint": { "shape": "S16" }, "command": { "shape": "S16" }, "environment": { "shape": "S1h" }, "mountPoints": { "type": "list", "member": { "type": "structure", "members": { "sourceVolume": {}, "containerPath": {}, "readOnly": { "type": "boolean" } } } }, "volumesFrom": { "type": "list", "member": { "type": "structure", "members": { "sourceContainer": {}, "readOnly": { "type": "boolean" } } } }, "hostname": {}, "user": {}, "workingDirectory": {}, "disableNetworking": { "type": "boolean" }, "privileged": { "type": "boolean" }, "readonlyRootFilesystem": { "type": "boolean" }, "dnsServers": { "shape": "S16" }, "dnsSearchDomains": { "shape": "S16" }, "extraHosts": { "type": "list", "member": { "type": "structure", "required": [ "hostname", "ipAddress" ], "members": { "hostname": {}, "ipAddress": {} } } }, "dockerSecurityOptions": { "shape": "S16" }, "dockerLabels": { "type": "map", "key": {}, "value": {} }, "ulimits": { "type": "list", "member": { "type": "structure", "required": [ "name", "softLimit", "hardLimit" ], "members": { "name": {}, "softLimit": { "type": "integer" }, "hardLimit": { "type": "integer" } } } }, "logConfiguration": { "type": "structure", "required": [ "logDriver" ], "members": { "logDriver": {}, "options": { "type": "map", "key": {}, "value": {} } } } } } }, "S1h": { "type": "list", "member": { "type": "structure", "members": { "name": {}, "value": {} } } }, "S1x": { "type": "list", "member": { "type": "structure", "members": { "name": {}, "host": { "type": "structure", "members": { "sourcePath": {} } } } } }, "S22": { "type": "list", "member": { "type": "structure", "members": { "type": {}, "expression": {} } } }, "S28": { "type": "list", "member": { "type": "structure", "members": { "arn": {}, "reason": {} } } }, "S2c": { "type": "list", "member": { "shape": "S10" } }, "S2k": { "type": "list", "member": { "shape": "S2l" } }, "S2l": { "type": "structure", "members": { "taskArn": {}, "clusterArn": {}, "taskDefinitionArn": {}, "containerInstanceArn": {}, "overrides": { "shape": "S2m" }, "lastStatus": {}, "desiredStatus": {}, "containers": { "type": "list", "member": { "type": "structure", "members": { "containerArn": {}, "taskArn": {}, "name": {}, "lastStatus": {}, "exitCode": { "type": "integer" }, "reason": {}, "networkBindings": { "shape": "S2r" } } } }, "startedBy": {}, "version": { "type": "long" }, "stoppedReason": {}, "createdAt": { "type": "timestamp" }, "startedAt": { "type": "timestamp" }, "stoppedAt": { "type": "timestamp" }, "group": {} } }, "S2m": { "type": "structure", "members": { "containerOverrides": { "type": "list", "member": { "type": "structure", "members": { "name": {}, "command": { "shape": "S16" }, "environment": { "shape": "S1h" } } } }, "taskRoleArn": {} } }, "S2r": { "type": "list", "member": { "type": "structure", "members": { "bindIP": {}, "containerPort": { "type": "integer" }, "hostPort": { "type": "integer" }, "protocol": {} } } } } } },{}],48:[function(require,module,exports){ module.exports={ "pagination": { "ListClusters": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "clusterArns" }, "ListContainerInstances": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "containerInstanceArns" }, "ListTaskDefinitions": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "taskDefinitionArns" }, "ListTaskDefinitionFamilies": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "families" }, "ListTasks": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "taskArns" }, "ListServices": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "maxResults", "result_key": "serviceArns" } } } },{}],49:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "TasksRunning": { "delay": 6, "operation": "DescribeTasks", "maxAttempts": 100, "acceptors": [ { "expected": "STOPPED", "matcher": "pathAny", "state": "failure", "argument": "tasks[].lastStatus" }, { "expected": "MISSING", "matcher": "pathAny", "state": "failure", "argument": "failures[].reason" }, { "expected": "RUNNING", "matcher": "pathAll", "state": "success", "argument": "tasks[].lastStatus" } ] }, "TasksStopped": { "delay": 6, "operation": "DescribeTasks", "maxAttempts": 100, "acceptors": [ { "expected": "STOPPED", "matcher": "pathAll", "state": "success", "argument": "tasks[].lastStatus" } ] }, "ServicesStable": { "delay": 15, "operation": "DescribeServices", "maxAttempts": 40, "acceptors": [ { "expected": "MISSING", "matcher": "pathAny", "state": "failure", "argument": "failures[].reason" }, { "expected": "DRAINING", "matcher": "pathAny", "state": "failure", "argument": "services[].status" }, { "expected": "INACTIVE", "matcher": "pathAny", "state": "failure", "argument": "services[].status" }, { "expected": true, "matcher": "path", "state": "success", "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" } ] }, "ServicesInactive": { "delay": 15, "operation": "DescribeServices", "maxAttempts": 40, "acceptors": [ { "expected": "MISSING", "matcher": "pathAny", "state": "failure", "argument": "failures[].reason" }, { "expected": "INACTIVE", "matcher": "pathAny", "state": "success", "argument": "services[].status" } ] } } } },{}],50:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2015-02-02", "endpointPrefix": "elasticache", "protocol": "query", "serviceFullName": "Amazon ElastiCache", "signatureVersion": "v4", "uid": "elasticache-2015-02-02", "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" }, "operations": { "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "S3" } } }, "output": { "shape": "S5", "resultWrapper": "AddTagsToResourceResult" } }, "AuthorizeCacheSecurityGroupIngress": { "input": { "type": "structure", "required": [ "CacheSecurityGroupName", "EC2SecurityGroupName", "EC2SecurityGroupOwnerId" ], "members": { "CacheSecurityGroupName": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", "type": "structure", "members": { "CacheSecurityGroup": { "shape": "S8" } } } }, "CopySnapshot": { "input": { "type": "structure", "required": [ "SourceSnapshotName", "TargetSnapshotName" ], "members": { "SourceSnapshotName": {}, "TargetSnapshotName": {}, "TargetBucket": {} } }, "output": { "resultWrapper": "CopySnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "CreateCacheCluster": { "input": { "type": "structure", "required": [ "CacheClusterId" ], "members": { "CacheClusterId": {}, "ReplicationGroupId": {}, "AZMode": {}, "PreferredAvailabilityZone": {}, "PreferredAvailabilityZones": { "shape": "So" }, "NumCacheNodes": { "type": "integer" }, "CacheNodeType": {}, "Engine": {}, "EngineVersion": {}, "CacheParameterGroupName": {}, "CacheSubnetGroupName": {}, "CacheSecurityGroupNames": { "shape": "Sp" }, "SecurityGroupIds": { "shape": "Sq" }, "Tags": { "shape": "S3" }, "SnapshotArns": { "shape": "Sr" }, "SnapshotName": {}, "PreferredMaintenanceWindow": {}, "Port": { "type": "integer" }, "NotificationTopicArn": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {}, "AuthToken": {} } }, "output": { "resultWrapper": "CreateCacheClusterResult", "type": "structure", "members": { "CacheCluster": { "shape": "Su" } } } }, "CreateCacheParameterGroup": { "input": { "type": "structure", "required": [ "CacheParameterGroupName", "CacheParameterGroupFamily", "Description" ], "members": { "CacheParameterGroupName": {}, "CacheParameterGroupFamily": {}, "Description": {} } }, "output": { "resultWrapper": "CreateCacheParameterGroupResult", "type": "structure", "members": { "CacheParameterGroup": { "shape": "S19" } } } }, "CreateCacheSecurityGroup": { "input": { "type": "structure", "required": [ "CacheSecurityGroupName", "Description" ], "members": { "CacheSecurityGroupName": {}, "Description": {} } }, "output": { "resultWrapper": "CreateCacheSecurityGroupResult", "type": "structure", "members": { "CacheSecurityGroup": { "shape": "S8" } } } }, "CreateCacheSubnetGroup": { "input": { "type": "structure", "required": [ "CacheSubnetGroupName", "CacheSubnetGroupDescription", "SubnetIds" ], "members": { "CacheSubnetGroupName": {}, "CacheSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1d" } } }, "output": { "resultWrapper": "CreateCacheSubnetGroupResult", "type": "structure", "members": { "CacheSubnetGroup": { "shape": "S1f" } } } }, "CreateReplicationGroup": { "input": { "type": "structure", "required": [ "ReplicationGroupId", "ReplicationGroupDescription" ], "members": { "ReplicationGroupId": {}, "ReplicationGroupDescription": {}, "PrimaryClusterId": {}, "AutomaticFailoverEnabled": { "type": "boolean" }, "NumCacheClusters": { "type": "integer" }, "PreferredCacheClusterAZs": { "shape": "Sl" }, "NumNodeGroups": { "type": "integer" }, "ReplicasPerNodeGroup": { "type": "integer" }, "NodeGroupConfiguration": { "type": "list", "member": { "shape": "Sk", "locationName": "NodeGroupConfiguration" } }, "CacheNodeType": {}, "Engine": {}, "EngineVersion": {}, "CacheParameterGroupName": {}, "CacheSubnetGroupName": {}, "CacheSecurityGroupNames": { "shape": "Sp" }, "SecurityGroupIds": { "shape": "Sq" }, "Tags": { "shape": "S3" }, "SnapshotArns": { "shape": "Sr" }, "SnapshotName": {}, "PreferredMaintenanceWindow": {}, "Port": { "type": "integer" }, "NotificationTopicArn": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {}, "AuthToken": {} } }, "output": { "resultWrapper": "CreateReplicationGroupResult", "type": "structure", "members": { "ReplicationGroup": { "shape": "S1m" } } } }, "CreateSnapshot": { "input": { "type": "structure", "required": [ "SnapshotName" ], "members": { "ReplicationGroupId": {}, "CacheClusterId": {}, "SnapshotName": {} } }, "output": { "resultWrapper": "CreateSnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "DeleteCacheCluster": { "input": { "type": "structure", "required": [ "CacheClusterId" ], "members": { "CacheClusterId": {}, "FinalSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteCacheClusterResult", "type": "structure", "members": { "CacheCluster": { "shape": "Su" } } } }, "DeleteCacheParameterGroup": { "input": { "type": "structure", "required": [ "CacheParameterGroupName" ], "members": { "CacheParameterGroupName": {} } } }, "DeleteCacheSecurityGroup": { "input": { "type": "structure", "required": [ "CacheSecurityGroupName" ], "members": { "CacheSecurityGroupName": {} } } }, "DeleteCacheSubnetGroup": { "input": { "type": "structure", "required": [ "CacheSubnetGroupName" ], "members": { "CacheSubnetGroupName": {} } } }, "DeleteReplicationGroup": { "input": { "type": "structure", "required": [ "ReplicationGroupId" ], "members": { "ReplicationGroupId": {}, "RetainPrimaryCluster": { "type": "boolean" }, "FinalSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteReplicationGroupResult", "type": "structure", "members": { "ReplicationGroup": { "shape": "S1m" } } } }, "DeleteSnapshot": { "input": { "type": "structure", "required": [ "SnapshotName" ], "members": { "SnapshotName": {} } }, "output": { "resultWrapper": "DeleteSnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "DescribeCacheClusters": { "input": { "type": "structure", "members": { "CacheClusterId": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "ShowCacheNodeInfo": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeCacheClustersResult", "type": "structure", "members": { "Marker": {}, "CacheClusters": { "type": "list", "member": { "shape": "Su", "locationName": "CacheCluster" } } } } }, "DescribeCacheEngineVersions": { "input": { "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "CacheParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "DefaultOnly": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeCacheEngineVersionsResult", "type": "structure", "members": { "Marker": {}, "CacheEngineVersions": { "type": "list", "member": { "locationName": "CacheEngineVersion", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "CacheParameterGroupFamily": {}, "CacheEngineDescription": {}, "CacheEngineVersionDescription": {} } } } } } }, "DescribeCacheParameterGroups": { "input": { "type": "structure", "members": { "CacheParameterGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeCacheParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "CacheParameterGroups": { "type": "list", "member": { "shape": "S19", "locationName": "CacheParameterGroup" } } } } }, "DescribeCacheParameters": { "input": { "type": "structure", "required": [ "CacheParameterGroupName" ], "members": { "CacheParameterGroupName": {}, "Source": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeCacheParametersResult", "type": "structure", "members": { "Marker": {}, "Parameters": { "shape": "S2h" }, "CacheNodeTypeSpecificParameters": { "shape": "S2k" } } } }, "DescribeCacheSecurityGroups": { "input": { "type": "structure", "members": { "CacheSecurityGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeCacheSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "CacheSecurityGroups": { "type": "list", "member": { "shape": "S8", "locationName": "CacheSecurityGroup" } } } } }, "DescribeCacheSubnetGroups": { "input": { "type": "structure", "members": { "CacheSubnetGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeCacheSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "CacheSubnetGroups": { "type": "list", "member": { "shape": "S1f", "locationName": "CacheSubnetGroup" } } } } }, "DescribeEngineDefaultParameters": { "input": { "type": "structure", "required": [ "CacheParameterGroupFamily" ], "members": { "CacheParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultParametersResult", "type": "structure", "members": { "EngineDefaults": { "type": "structure", "members": { "CacheParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S2h" }, "CacheNodeTypeSpecificParameters": { "shape": "S2k" } }, "wrapper": true } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "Date": { "type": "timestamp" } } } } } } }, "DescribeReplicationGroups": { "input": { "type": "structure", "members": { "ReplicationGroupId": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReplicationGroupsResult", "type": "structure", "members": { "Marker": {}, "ReplicationGroups": { "type": "list", "member": { "shape": "S1m", "locationName": "ReplicationGroup" } } } } }, "DescribeReservedCacheNodes": { "input": { "type": "structure", "members": { "ReservedCacheNodeId": {}, "ReservedCacheNodesOfferingId": {}, "CacheNodeType": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedCacheNodesResult", "type": "structure", "members": { "Marker": {}, "ReservedCacheNodes": { "type": "list", "member": { "shape": "S38", "locationName": "ReservedCacheNode" } } } } }, "DescribeReservedCacheNodesOfferings": { "input": { "type": "structure", "members": { "ReservedCacheNodesOfferingId": {}, "CacheNodeType": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedCacheNodesOfferings": { "type": "list", "member": { "locationName": "ReservedCacheNodesOffering", "type": "structure", "members": { "ReservedCacheNodesOfferingId": {}, "CacheNodeType": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "ProductDescription": {}, "OfferingType": {}, "RecurringCharges": { "shape": "S3a" } }, "wrapper": true } } } } }, "DescribeSnapshots": { "input": { "type": "structure", "members": { "ReplicationGroupId": {}, "CacheClusterId": {}, "SnapshotName": {}, "SnapshotSource": {}, "Marker": {}, "MaxRecords": { "type": "integer" }, "ShowNodeGroupConfig": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeSnapshotsResult", "type": "structure", "members": { "Marker": {}, "Snapshots": { "type": "list", "member": { "shape": "Sd", "locationName": "Snapshot" } } } } }, "ListAllowedNodeTypeModifications": { "input": { "type": "structure", "members": { "CacheClusterId": {}, "ReplicationGroupId": {} } }, "output": { "resultWrapper": "ListAllowedNodeTypeModificationsResult", "type": "structure", "members": { "ScaleUpModifications": { "type": "list", "member": {} } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceName" ], "members": { "ResourceName": {} } }, "output": { "shape": "S5", "resultWrapper": "ListTagsForResourceResult" } }, "ModifyCacheCluster": { "input": { "type": "structure", "required": [ "CacheClusterId" ], "members": { "CacheClusterId": {}, "NumCacheNodes": { "type": "integer" }, "CacheNodeIdsToRemove": { "shape": "Sy" }, "AZMode": {}, "NewAvailabilityZones": { "shape": "So" }, "CacheSecurityGroupNames": { "shape": "Sp" }, "SecurityGroupIds": { "shape": "Sq" }, "PreferredMaintenanceWindow": {}, "NotificationTopicArn": {}, "CacheParameterGroupName": {}, "NotificationTopicStatus": {}, "ApplyImmediately": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {}, "CacheNodeType": {} } }, "output": { "resultWrapper": "ModifyCacheClusterResult", "type": "structure", "members": { "CacheCluster": { "shape": "Su" } } } }, "ModifyCacheParameterGroup": { "input": { "type": "structure", "required": [ "CacheParameterGroupName", "ParameterNameValues" ], "members": { "CacheParameterGroupName": {}, "ParameterNameValues": { "shape": "S3q" } } }, "output": { "shape": "S3s", "resultWrapper": "ModifyCacheParameterGroupResult" } }, "ModifyCacheSubnetGroup": { "input": { "type": "structure", "required": [ "CacheSubnetGroupName" ], "members": { "CacheSubnetGroupName": {}, "CacheSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1d" } } }, "output": { "resultWrapper": "ModifyCacheSubnetGroupResult", "type": "structure", "members": { "CacheSubnetGroup": { "shape": "S1f" } } } }, "ModifyReplicationGroup": { "input": { "type": "structure", "required": [ "ReplicationGroupId" ], "members": { "ReplicationGroupId": {}, "ReplicationGroupDescription": {}, "PrimaryClusterId": {}, "SnapshottingClusterId": {}, "AutomaticFailoverEnabled": { "type": "boolean" }, "CacheSecurityGroupNames": { "shape": "Sp" }, "SecurityGroupIds": { "shape": "Sq" }, "PreferredMaintenanceWindow": {}, "NotificationTopicArn": {}, "CacheParameterGroupName": {}, "NotificationTopicStatus": {}, "ApplyImmediately": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {}, "CacheNodeType": {} } }, "output": { "resultWrapper": "ModifyReplicationGroupResult", "type": "structure", "members": { "ReplicationGroup": { "shape": "S1m" } } } }, "PurchaseReservedCacheNodesOffering": { "input": { "type": "structure", "required": [ "ReservedCacheNodesOfferingId" ], "members": { "ReservedCacheNodesOfferingId": {}, "ReservedCacheNodeId": {}, "CacheNodeCount": { "type": "integer" } } }, "output": { "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", "type": "structure", "members": { "ReservedCacheNode": { "shape": "S38" } } } }, "RebootCacheCluster": { "input": { "type": "structure", "required": [ "CacheClusterId", "CacheNodeIdsToReboot" ], "members": { "CacheClusterId": {}, "CacheNodeIdsToReboot": { "shape": "Sy" } } }, "output": { "resultWrapper": "RebootCacheClusterResult", "type": "structure", "members": { "CacheCluster": { "shape": "Su" } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "type": "list", "member": {} } } }, "output": { "shape": "S5", "resultWrapper": "RemoveTagsFromResourceResult" } }, "ResetCacheParameterGroup": { "input": { "type": "structure", "required": [ "CacheParameterGroupName" ], "members": { "CacheParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "ParameterNameValues": { "shape": "S3q" } } }, "output": { "shape": "S3s", "resultWrapper": "ResetCacheParameterGroupResult" } }, "RevokeCacheSecurityGroupIngress": { "input": { "type": "structure", "required": [ "CacheSecurityGroupName", "EC2SecurityGroupName", "EC2SecurityGroupOwnerId" ], "members": { "CacheSecurityGroupName": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeCacheSecurityGroupIngressResult", "type": "structure", "members": { "CacheSecurityGroup": { "shape": "S8" } } } } }, "shapes": { "S3": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "S5": { "type": "structure", "members": { "TagList": { "shape": "S3" } } }, "S8": { "type": "structure", "members": { "OwnerId": {}, "CacheSecurityGroupName": {}, "Description": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {} } } } }, "wrapper": true }, "Sd": { "type": "structure", "members": { "SnapshotName": {}, "ReplicationGroupId": {}, "ReplicationGroupDescription": {}, "CacheClusterId": {}, "SnapshotStatus": {}, "SnapshotSource": {}, "CacheNodeType": {}, "Engine": {}, "EngineVersion": {}, "NumCacheNodes": { "type": "integer" }, "PreferredAvailabilityZone": {}, "CacheClusterCreateTime": { "type": "timestamp" }, "PreferredMaintenanceWindow": {}, "TopicArn": {}, "Port": { "type": "integer" }, "CacheParameterGroupName": {}, "CacheSubnetGroupName": {}, "VpcId": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {}, "NumNodeGroups": { "type": "integer" }, "AutomaticFailover": {}, "NodeSnapshots": { "type": "list", "member": { "locationName": "NodeSnapshot", "type": "structure", "members": { "CacheClusterId": {}, "NodeGroupId": {}, "CacheNodeId": {}, "NodeGroupConfiguration": { "shape": "Sk" }, "CacheSize": {}, "CacheNodeCreateTime": { "type": "timestamp" }, "SnapshotCreateTime": { "type": "timestamp" } }, "wrapper": true } } }, "wrapper": true }, "Sk": { "type": "structure", "members": { "Slots": {}, "ReplicaCount": { "type": "integer" }, "PrimaryAvailabilityZone": {}, "ReplicaAvailabilityZones": { "shape": "Sl" } } }, "Sl": { "type": "list", "member": { "locationName": "AvailabilityZone" } }, "So": { "type": "list", "member": { "locationName": "PreferredAvailabilityZone" } }, "Sp": { "type": "list", "member": { "locationName": "CacheSecurityGroupName" } }, "Sq": { "type": "list", "member": { "locationName": "SecurityGroupId" } }, "Sr": { "type": "list", "member": { "locationName": "SnapshotArn" } }, "Su": { "type": "structure", "members": { "CacheClusterId": {}, "ConfigurationEndpoint": { "shape": "Sv" }, "ClientDownloadLandingPage": {}, "CacheNodeType": {}, "Engine": {}, "EngineVersion": {}, "CacheClusterStatus": {}, "NumCacheNodes": { "type": "integer" }, "PreferredAvailabilityZone": {}, "CacheClusterCreateTime": { "type": "timestamp" }, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "NumCacheNodes": { "type": "integer" }, "CacheNodeIdsToRemove": { "shape": "Sy" }, "EngineVersion": {}, "CacheNodeType": {} } }, "NotificationConfiguration": { "type": "structure", "members": { "TopicArn": {}, "TopicStatus": {} } }, "CacheSecurityGroups": { "type": "list", "member": { "locationName": "CacheSecurityGroup", "type": "structure", "members": { "CacheSecurityGroupName": {}, "Status": {} } } }, "CacheParameterGroup": { "type": "structure", "members": { "CacheParameterGroupName": {}, "ParameterApplyStatus": {}, "CacheNodeIdsToReboot": { "shape": "Sy" } } }, "CacheSubnetGroupName": {}, "CacheNodes": { "type": "list", "member": { "locationName": "CacheNode", "type": "structure", "members": { "CacheNodeId": {}, "CacheNodeStatus": {}, "CacheNodeCreateTime": { "type": "timestamp" }, "Endpoint": { "shape": "Sv" }, "ParameterGroupStatus": {}, "SourceCacheNodeId": {}, "CustomerAvailabilityZone": {} } } }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "SecurityGroups": { "type": "list", "member": { "type": "structure", "members": { "SecurityGroupId": {}, "Status": {} } } }, "ReplicationGroupId": {}, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {} }, "wrapper": true }, "Sv": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" } } }, "Sy": { "type": "list", "member": { "locationName": "CacheNodeId" } }, "S19": { "type": "structure", "members": { "CacheParameterGroupName": {}, "CacheParameterGroupFamily": {}, "Description": {} }, "wrapper": true }, "S1d": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S1f": { "type": "structure", "members": { "CacheSubnetGroupName": {}, "CacheSubnetGroupDescription": {}, "VpcId": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "type": "structure", "members": { "Name": {} }, "wrapper": true } } } } }, "wrapper": true }, "S1m": { "type": "structure", "members": { "ReplicationGroupId": {}, "Description": {}, "Status": {}, "PendingModifiedValues": { "type": "structure", "members": { "PrimaryClusterId": {}, "AutomaticFailoverStatus": {} } }, "MemberClusters": { "type": "list", "member": { "locationName": "ClusterId" } }, "NodeGroups": { "type": "list", "member": { "locationName": "NodeGroup", "type": "structure", "members": { "NodeGroupId": {}, "Status": {}, "PrimaryEndpoint": { "shape": "Sv" }, "Slots": {}, "NodeGroupMembers": { "type": "list", "member": { "locationName": "NodeGroupMember", "type": "structure", "members": { "CacheClusterId": {}, "CacheNodeId": {}, "ReadEndpoint": { "shape": "Sv" }, "PreferredAvailabilityZone": {}, "CurrentRole": {} } } } } } }, "SnapshottingClusterId": {}, "AutomaticFailover": {}, "ConfigurationEndpoint": { "shape": "Sv" }, "SnapshotRetentionLimit": { "type": "integer" }, "SnapshotWindow": {} }, "wrapper": true }, "S2h": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "ChangeType": {} } } }, "S2k": { "type": "list", "member": { "locationName": "CacheNodeTypeSpecificParameter", "type": "structure", "members": { "ParameterName": {}, "Description": {}, "Source": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "CacheNodeTypeSpecificValues": { "type": "list", "member": { "locationName": "CacheNodeTypeSpecificValue", "type": "structure", "members": { "CacheNodeType": {}, "Value": {} } } }, "ChangeType": {} } } }, "S38": { "type": "structure", "members": { "ReservedCacheNodeId": {}, "ReservedCacheNodesOfferingId": {}, "CacheNodeType": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CacheNodeCount": { "type": "integer" }, "ProductDescription": {}, "OfferingType": {}, "State": {}, "RecurringCharges": { "shape": "S3a" } }, "wrapper": true }, "S3a": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S3q": { "type": "list", "member": { "locationName": "ParameterNameValue", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {} } } }, "S3s": { "type": "structure", "members": { "CacheParameterGroupName": {} } } } } },{}],51:[function(require,module,exports){ module.exports={ "pagination": { "DescribeCacheClusters": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "CacheClusters" }, "DescribeCacheEngineVersions": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "CacheEngineVersions" }, "DescribeCacheParameterGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "CacheParameterGroups" }, "DescribeCacheParameters": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Parameters" }, "DescribeCacheSecurityGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "CacheSecurityGroups" }, "DescribeCacheSubnetGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "CacheSubnetGroups" }, "DescribeEngineDefaultParameters": { "input_token": "Marker", "output_token": "EngineDefaults.Marker", "limit_key": "MaxRecords", "result_key": "EngineDefaults.Parameters" }, "DescribeEvents": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Events" }, "DescribeReservedCacheNodes": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ReservedCacheNodes" }, "DescribeReservedCacheNodesOfferings": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ReservedCacheNodesOfferings" }, "DescribeReplicationGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ReplicationGroups" }, "DescribeSnapshots": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Snapshots" } } } },{}],52:[function(require,module,exports){ module.exports={ "version":2, "waiters":{ "CacheClusterAvailable":{ "acceptors":[ { "argument":"CacheClusters[].CacheClusterStatus", "expected":"available", "matcher":"pathAll", "state":"success" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"deleted", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"deleting", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"incompatible-network", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"restore-failed", "matcher":"pathAny", "state":"failure" } ], "delay":15, "description":"Wait until ElastiCache cluster is available.", "maxAttempts":40, "operation":"DescribeCacheClusters" }, "CacheClusterDeleted":{ "acceptors":[ { "argument":"CacheClusters[].CacheClusterStatus", "expected":"deleted", "matcher":"pathAll", "state":"success" }, { "expected":"CacheClusterNotFound", "matcher":"error", "state":"success" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"available", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"creating", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"incompatible-network", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"modifying", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"restore-failed", "matcher":"pathAny", "state":"failure" }, { "argument":"CacheClusters[].CacheClusterStatus", "expected":"snapshotting", "matcher":"pathAny", "state":"failure" } ], "delay":15, "description":"Wait until ElastiCache cluster is deleted.", "maxAttempts":40, "operation":"DescribeCacheClusters" }, "ReplicationGroupAvailable":{ "acceptors":[ { "argument":"ReplicationGroups[].Status", "expected":"available", "matcher":"pathAll", "state":"success" }, { "argument":"ReplicationGroups[].Status", "expected":"deleted", "matcher":"pathAny", "state":"failure" } ], "delay":15, "description":"Wait until ElastiCache replication group is available.", "maxAttempts":40, "operation":"DescribeReplicationGroups" }, "ReplicationGroupDeleted":{ "acceptors":[ { "argument":"ReplicationGroups[].Status", "expected":"deleted", "matcher":"pathAll", "state":"success" }, { "argument":"ReplicationGroups[].Status", "expected":"available", "matcher":"pathAny", "state":"failure" }, { "expected":"ReplicationGroupNotFoundFault", "matcher":"error", "state":"success" } ], "delay":15, "description":"Wait until ElastiCache replication group is deleted.", "maxAttempts":40, "operation":"DescribeReplicationGroups" } } } },{}],53:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2010-12-01", "endpointPrefix": "elasticbeanstalk", "protocol": "query", "serviceAbbreviation": "Elastic Beanstalk", "serviceFullName": "AWS Elastic Beanstalk", "signatureVersion": "v4", "uid": "elasticbeanstalk-2010-12-01", "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" }, "operations": { "AbortEnvironmentUpdate": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {} } } }, "ApplyEnvironmentManagedAction": { "input": { "type": "structure", "required": [ "ActionId" ], "members": { "EnvironmentName": {}, "EnvironmentId": {}, "ActionId": {} } }, "output": { "resultWrapper": "ApplyEnvironmentManagedActionResult", "type": "structure", "members": { "ActionId": {}, "ActionDescription": {}, "ActionType": {}, "Status": {} } } }, "CheckDNSAvailability": { "input": { "type": "structure", "required": [ "CNAMEPrefix" ], "members": { "CNAMEPrefix": {} } }, "output": { "resultWrapper": "CheckDNSAvailabilityResult", "type": "structure", "members": { "Available": { "type": "boolean" }, "FullyQualifiedCNAME": {} } } }, "ComposeEnvironments": { "input": { "type": "structure", "members": { "ApplicationName": {}, "GroupName": {}, "VersionLabels": { "type": "list", "member": {} } } }, "output": { "shape": "Si", "resultWrapper": "ComposeEnvironmentsResult" } }, "CreateApplication": { "input": { "type": "structure", "required": [ "ApplicationName" ], "members": { "ApplicationName": {}, "Description": {}, "ResourceLifecycleConfig": { "shape": "S14" } } }, "output": { "shape": "S1a", "resultWrapper": "CreateApplicationResult" } }, "CreateApplicationVersion": { "input": { "type": "structure", "required": [ "ApplicationName", "VersionLabel" ], "members": { "ApplicationName": {}, "VersionLabel": {}, "Description": {}, "SourceBuildInformation": { "shape": "S1f" }, "SourceBundle": { "shape": "S1j" }, "BuildConfiguration": { "type": "structure", "required": [ "CodeBuildServiceRole", "Image" ], "members": { "ArtifactName": {}, "CodeBuildServiceRole": {}, "ComputeType": {}, "Image": {}, "TimeoutInMinutes": { "type": "integer" } } }, "AutoCreateApplication": { "type": "boolean" }, "Process": { "type": "boolean" } } }, "output": { "shape": "S1r", "resultWrapper": "CreateApplicationVersionResult" } }, "CreateConfigurationTemplate": { "input": { "type": "structure", "required": [ "ApplicationName", "TemplateName" ], "members": { "ApplicationName": {}, "TemplateName": {}, "SolutionStackName": {}, "SourceConfiguration": { "type": "structure", "members": { "ApplicationName": {}, "TemplateName": {} } }, "EnvironmentId": {}, "Description": {}, "OptionSettings": { "shape": "S1w" } } }, "output": { "shape": "S22", "resultWrapper": "CreateConfigurationTemplateResult" } }, "CreateEnvironment": { "input": { "type": "structure", "required": [ "ApplicationName" ], "members": { "ApplicationName": {}, "EnvironmentName": {}, "GroupName": {}, "Description": {}, "CNAMEPrefix": {}, "Tier": { "shape": "S10" }, "Tags": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "VersionLabel": {}, "TemplateName": {}, "SolutionStackName": {}, "OptionSettings": { "shape": "S1w" }, "OptionsToRemove": { "shape": "S29" } } }, "output": { "shape": "Sk", "resultWrapper": "CreateEnvironmentResult" } }, "CreateStorageLocation": { "output": { "resultWrapper": "CreateStorageLocationResult", "type": "structure", "members": { "S3Bucket": {} } } }, "DeleteApplication": { "input": { "type": "structure", "required": [ "ApplicationName" ], "members": { "ApplicationName": {}, "TerminateEnvByForce": { "type": "boolean" } } } }, "DeleteApplicationVersion": { "input": { "type": "structure", "required": [ "ApplicationName", "VersionLabel" ], "members": { "ApplicationName": {}, "VersionLabel": {}, "DeleteSourceBundle": { "type": "boolean" } } } }, "DeleteConfigurationTemplate": { "input": { "type": "structure", "required": [ "ApplicationName", "TemplateName" ], "members": { "ApplicationName": {}, "TemplateName": {} } } }, "DeleteEnvironmentConfiguration": { "input": { "type": "structure", "required": [ "ApplicationName", "EnvironmentName" ], "members": { "ApplicationName": {}, "EnvironmentName": {} } } }, "DescribeApplicationVersions": { "input": { "type": "structure", "members": { "ApplicationName": {}, "VersionLabels": { "shape": "S1c" }, "MaxRecords": { "type": "integer" }, "NextToken": {} } }, "output": { "resultWrapper": "DescribeApplicationVersionsResult", "type": "structure", "members": { "ApplicationVersions": { "type": "list", "member": { "shape": "S1s" } }, "NextToken": {} } } }, "DescribeApplications": { "input": { "type": "structure", "members": { "ApplicationNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeApplicationsResult", "type": "structure", "members": { "Applications": { "type": "list", "member": { "shape": "S1b" } } } } }, "DescribeConfigurationOptions": { "input": { "type": "structure", "members": { "ApplicationName": {}, "TemplateName": {}, "EnvironmentName": {}, "SolutionStackName": {}, "Options": { "shape": "S29" } } }, "output": { "resultWrapper": "DescribeConfigurationOptionsResult", "type": "structure", "members": { "SolutionStackName": {}, "Options": { "type": "list", "member": { "type": "structure", "members": { "Namespace": {}, "Name": {}, "DefaultValue": {}, "ChangeSeverity": {}, "UserDefined": { "type": "boolean" }, "ValueType": {}, "ValueOptions": { "type": "list", "member": {} }, "MinValue": { "type": "integer" }, "MaxValue": { "type": "integer" }, "MaxLength": { "type": "integer" }, "Regex": { "type": "structure", "members": { "Pattern": {}, "Label": {} } } } } } } } }, "DescribeConfigurationSettings": { "input": { "type": "structure", "required": [ "ApplicationName" ], "members": { "ApplicationName": {}, "TemplateName": {}, "EnvironmentName": {} } }, "output": { "resultWrapper": "DescribeConfigurationSettingsResult", "type": "structure", "members": { "ConfigurationSettings": { "type": "list", "member": { "shape": "S22" } } } } }, "DescribeEnvironmentHealth": { "input": { "type": "structure", "members": { "EnvironmentName": {}, "EnvironmentId": {}, "AttributeNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeEnvironmentHealthResult", "type": "structure", "members": { "EnvironmentName": {}, "HealthStatus": {}, "Status": {}, "Color": {}, "Causes": { "shape": "S3e" }, "ApplicationMetrics": { "shape": "S3g" }, "InstancesHealth": { "type": "structure", "members": { "NoData": { "type": "integer" }, "Unknown": { "type": "integer" }, "Pending": { "type": "integer" }, "Ok": { "type": "integer" }, "Info": { "type": "integer" }, "Warning": { "type": "integer" }, "Degraded": { "type": "integer" }, "Severe": { "type": "integer" } } }, "RefreshedAt": { "type": "timestamp" } } } }, "DescribeEnvironmentManagedActionHistory": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {}, "NextToken": {}, "MaxItems": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", "type": "structure", "members": { "ManagedActionHistoryItems": { "type": "list", "member": { "type": "structure", "members": { "ActionId": {}, "ActionType": {}, "ActionDescription": {}, "FailureType": {}, "Status": {}, "FailureDescription": {}, "ExecutedTime": { "type": "timestamp" }, "FinishedTime": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeEnvironmentManagedActions": { "input": { "type": "structure", "members": { "EnvironmentName": {}, "EnvironmentId": {}, "Status": {} } }, "output": { "resultWrapper": "DescribeEnvironmentManagedActionsResult", "type": "structure", "members": { "ManagedActions": { "type": "list", "member": { "type": "structure", "members": { "ActionId": {}, "ActionDescription": {}, "ActionType": {}, "Status": {}, "WindowStartTime": { "type": "timestamp" } } } } } } }, "DescribeEnvironmentResources": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {} } }, "output": { "resultWrapper": "DescribeEnvironmentResourcesResult", "type": "structure", "members": { "EnvironmentResources": { "type": "structure", "members": { "EnvironmentName": {}, "AutoScalingGroups": { "type": "list", "member": { "type": "structure", "members": { "Name": {} } } }, "Instances": { "type": "list", "member": { "type": "structure", "members": { "Id": {} } } }, "LaunchConfigurations": { "type": "list", "member": { "type": "structure", "members": { "Name": {} } } }, "LoadBalancers": { "type": "list", "member": { "type": "structure", "members": { "Name": {} } } }, "Triggers": { "type": "list", "member": { "type": "structure", "members": { "Name": {} } } }, "Queues": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "URL": {} } } } } } } } }, "DescribeEnvironments": { "input": { "type": "structure", "members": { "ApplicationName": {}, "VersionLabel": {}, "EnvironmentIds": { "type": "list", "member": {} }, "EnvironmentNames": { "type": "list", "member": {} }, "IncludeDeleted": { "type": "boolean" }, "IncludedDeletedBackTo": { "type": "timestamp" } } }, "output": { "shape": "Si", "resultWrapper": "DescribeEnvironmentsResult" } }, "DescribeEvents": { "input": { "type": "structure", "members": { "ApplicationName": {}, "VersionLabel": {}, "TemplateName": {}, "EnvironmentId": {}, "EnvironmentName": {}, "RequestId": {}, "Severity": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "MaxRecords": { "type": "integer" }, "NextToken": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Events": { "type": "list", "member": { "type": "structure", "members": { "EventDate": { "type": "timestamp" }, "Message": {}, "ApplicationName": {}, "VersionLabel": {}, "TemplateName": {}, "EnvironmentName": {}, "RequestId": {}, "Severity": {} } } }, "NextToken": {} } } }, "DescribeInstancesHealth": { "input": { "type": "structure", "members": { "EnvironmentName": {}, "EnvironmentId": {}, "AttributeNames": { "type": "list", "member": {} }, "NextToken": {} } }, "output": { "resultWrapper": "DescribeInstancesHealthResult", "type": "structure", "members": { "InstanceHealthList": { "type": "list", "member": { "type": "structure", "members": { "InstanceId": {}, "HealthStatus": {}, "Color": {}, "Causes": { "shape": "S3e" }, "LaunchedAt": { "type": "timestamp" }, "ApplicationMetrics": { "shape": "S3g" }, "System": { "type": "structure", "members": { "CPUUtilization": { "type": "structure", "members": { "User": { "type": "double" }, "Nice": { "type": "double" }, "System": { "type": "double" }, "Idle": { "type": "double" }, "IOWait": { "type": "double" }, "IRQ": { "type": "double" }, "SoftIRQ": { "type": "double" } } }, "LoadAverage": { "type": "list", "member": { "type": "double" } } } }, "Deployment": { "type": "structure", "members": { "VersionLabel": {}, "DeploymentId": { "type": "long" }, "Status": {}, "DeploymentTime": { "type": "timestamp" } } }, "AvailabilityZone": {}, "InstanceType": {} } } }, "RefreshedAt": { "type": "timestamp" }, "NextToken": {} } } }, "ListAvailableSolutionStacks": { "output": { "resultWrapper": "ListAvailableSolutionStacksResult", "type": "structure", "members": { "SolutionStacks": { "type": "list", "member": {} }, "SolutionStackDetails": { "type": "list", "member": { "type": "structure", "members": { "SolutionStackName": {}, "PermittedFileTypes": { "type": "list", "member": {} } } } } } } }, "RebuildEnvironment": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {} } } }, "RequestEnvironmentInfo": { "input": { "type": "structure", "required": [ "InfoType" ], "members": { "EnvironmentId": {}, "EnvironmentName": {}, "InfoType": {} } } }, "RestartAppServer": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {} } } }, "RetrieveEnvironmentInfo": { "input": { "type": "structure", "required": [ "InfoType" ], "members": { "EnvironmentId": {}, "EnvironmentName": {}, "InfoType": {} } }, "output": { "resultWrapper": "RetrieveEnvironmentInfoResult", "type": "structure", "members": { "EnvironmentInfo": { "type": "list", "member": { "type": "structure", "members": { "InfoType": {}, "Ec2InstanceId": {}, "SampleTimestamp": { "type": "timestamp" }, "Message": {} } } } } } }, "SwapEnvironmentCNAMEs": { "input": { "type": "structure", "members": { "SourceEnvironmentId": {}, "SourceEnvironmentName": {}, "DestinationEnvironmentId": {}, "DestinationEnvironmentName": {} } } }, "TerminateEnvironment": { "input": { "type": "structure", "members": { "EnvironmentId": {}, "EnvironmentName": {}, "TerminateResources": { "type": "boolean" }, "ForceTerminate": { "type": "boolean" } } }, "output": { "shape": "Sk", "resultWrapper": "TerminateEnvironmentResult" } }, "UpdateApplication": { "input": { "type": "structure", "required": [ "ApplicationName" ], "members": { "ApplicationName": {}, "Description": {} } }, "output": { "shape": "S1a", "resultWrapper": "UpdateApplicationResult" } }, "UpdateApplicationResourceLifecycle": { "input": { "type": "structure", "required": [ "ApplicationName", "ResourceLifecycleConfig" ], "members": { "ApplicationName": {}, "ResourceLifecycleConfig": { "shape": "S14" } } }, "output": { "resultWrapper": "UpdateApplicationResourceLifecycleResult", "type": "structure", "members": { "ApplicationName": {}, "ResourceLifecycleConfig": { "shape": "S14" } } } }, "UpdateApplicationVersion": { "input": { "type": "structure", "required": [ "ApplicationName", "VersionLabel" ], "members": { "ApplicationName": {}, "VersionLabel": {}, "Description": {} } }, "output": { "shape": "S1r", "resultWrapper": "UpdateApplicationVersionResult" } }, "UpdateConfigurationTemplate": { "input": { "type": "structure", "required": [ "ApplicationName", "TemplateName" ], "members": { "ApplicationName": {}, "TemplateName": {}, "Description": {}, "OptionSettings": { "shape": "S1w" }, "OptionsToRemove": { "shape": "S29" } } }, "output": { "shape": "S22", "resultWrapper": "UpdateConfigurationTemplateResult" } }, "UpdateEnvironment": { "input": { "type": "structure", "members": { "ApplicationName": {}, "EnvironmentId": {}, "EnvironmentName": {}, "GroupName": {}, "Description": {}, "Tier": { "shape": "S10" }, "VersionLabel": {}, "TemplateName": {}, "SolutionStackName": {}, "OptionSettings": { "shape": "S1w" }, "OptionsToRemove": { "shape": "S29" } } }, "output": { "shape": "Sk", "resultWrapper": "UpdateEnvironmentResult" } }, "ValidateConfigurationSettings": { "input": { "type": "structure", "required": [ "ApplicationName", "OptionSettings" ], "members": { "ApplicationName": {}, "TemplateName": {}, "EnvironmentName": {}, "OptionSettings": { "shape": "S1w" } } }, "output": { "resultWrapper": "ValidateConfigurationSettingsResult", "type": "structure", "members": { "Messages": { "type": "list", "member": { "type": "structure", "members": { "Message": {}, "Severity": {}, "Namespace": {}, "OptionName": {} } } } } } } }, "shapes": { "Si": { "type": "structure", "members": { "Environments": { "type": "list", "member": { "shape": "Sk" } } } }, "Sk": { "type": "structure", "members": { "EnvironmentName": {}, "EnvironmentId": {}, "ApplicationName": {}, "VersionLabel": {}, "SolutionStackName": {}, "TemplateName": {}, "Description": {}, "EndpointURL": {}, "CNAME": {}, "DateCreated": { "type": "timestamp" }, "DateUpdated": { "type": "timestamp" }, "Status": {}, "AbortableOperationInProgress": { "type": "boolean" }, "Health": {}, "HealthStatus": {}, "Resources": { "type": "structure", "members": { "LoadBalancer": { "type": "structure", "members": { "LoadBalancerName": {}, "Domain": {}, "Listeners": { "type": "list", "member": { "type": "structure", "members": { "Protocol": {}, "Port": { "type": "integer" } } } } } } } }, "Tier": { "shape": "S10" }, "EnvironmentLinks": { "type": "list", "member": { "type": "structure", "members": { "LinkName": {}, "EnvironmentName": {} } } } } }, "S10": { "type": "structure", "members": { "Name": {}, "Type": {}, "Version": {} } }, "S14": { "type": "structure", "members": { "ServiceRole": {}, "VersionLifecycleConfig": { "type": "structure", "members": { "MaxCountRule": { "type": "structure", "required": [ "Enabled" ], "members": { "Enabled": { "type": "boolean" }, "MaxCount": { "type": "integer" }, "DeleteSourceFromS3": { "type": "boolean" } } }, "MaxAgeRule": { "type": "structure", "required": [ "Enabled" ], "members": { "Enabled": { "type": "boolean" }, "MaxAgeInDays": { "type": "integer" }, "DeleteSourceFromS3": { "type": "boolean" } } } } } } }, "S1a": { "type": "structure", "members": { "Application": { "shape": "S1b" } } }, "S1b": { "type": "structure", "members": { "ApplicationName": {}, "Description": {}, "DateCreated": { "type": "timestamp" }, "DateUpdated": { "type": "timestamp" }, "Versions": { "shape": "S1c" }, "ConfigurationTemplates": { "type": "list", "member": {} }, "ResourceLifecycleConfig": { "shape": "S14" } } }, "S1c": { "type": "list", "member": {} }, "S1f": { "type": "structure", "required": [ "SourceType", "SourceRepository", "SourceLocation" ], "members": { "SourceType": {}, "SourceRepository": {}, "SourceLocation": {} } }, "S1j": { "type": "structure", "members": { "S3Bucket": {}, "S3Key": {} } }, "S1r": { "type": "structure", "members": { "ApplicationVersion": { "shape": "S1s" } } }, "S1s": { "type": "structure", "members": { "ApplicationName": {}, "Description": {}, "VersionLabel": {}, "SourceBuildInformation": { "shape": "S1f" }, "BuildArn": {}, "SourceBundle": { "shape": "S1j" }, "DateCreated": { "type": "timestamp" }, "DateUpdated": { "type": "timestamp" }, "Status": {} } }, "S1w": { "type": "list", "member": { "type": "structure", "members": { "ResourceName": {}, "Namespace": {}, "OptionName": {}, "Value": {} } } }, "S22": { "type": "structure", "members": { "SolutionStackName": {}, "ApplicationName": {}, "TemplateName": {}, "Description": {}, "EnvironmentName": {}, "DeploymentStatus": {}, "DateCreated": { "type": "timestamp" }, "DateUpdated": { "type": "timestamp" }, "OptionSettings": { "shape": "S1w" } } }, "S29": { "type": "list", "member": { "type": "structure", "members": { "ResourceName": {}, "Namespace": {}, "OptionName": {} } } }, "S3e": { "type": "list", "member": {} }, "S3g": { "type": "structure", "members": { "Duration": { "type": "integer" }, "RequestCount": { "type": "integer" }, "StatusCodes": { "type": "structure", "members": { "Status2xx": { "type": "integer" }, "Status3xx": { "type": "integer" }, "Status4xx": { "type": "integer" }, "Status5xx": { "type": "integer" } } }, "Latency": { "type": "structure", "members": { "P999": { "type": "double" }, "P99": { "type": "double" }, "P95": { "type": "double" }, "P90": { "type": "double" }, "P85": { "type": "double" }, "P75": { "type": "double" }, "P50": { "type": "double" }, "P10": { "type": "double" } } } } } } } },{}],54:[function(require,module,exports){ module.exports={ "pagination": { "DescribeApplicationVersions": { "result_key": "ApplicationVersions" }, "DescribeApplications": { "result_key": "Applications" }, "DescribeConfigurationOptions": { "result_key": "Options" }, "DescribeEnvironments": { "result_key": "Environments" }, "DescribeEvents": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxRecords", "result_key": "Events" }, "ListAvailableSolutionStacks": { "result_key": "SolutionStacks" } } } },{}],55:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "elasticloadbalancing-2012-06-01", "apiVersion": "2012-06-01", "endpointPrefix": "elasticloadbalancing", "protocol": "query", "serviceFullName": "Elastic Load Balancing", "signatureVersion": "v4", "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" }, "operations": { "AddTags": { "input": { "type": "structure", "required": [ "LoadBalancerNames", "Tags" ], "members": { "LoadBalancerNames": { "shape": "S2" }, "Tags": { "shape": "S4" } } }, "output": { "resultWrapper": "AddTagsResult", "type": "structure", "members": {} } }, "ApplySecurityGroupsToLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "SecurityGroups" ], "members": { "LoadBalancerName": {}, "SecurityGroups": { "shape": "Sa" } } }, "output": { "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", "type": "structure", "members": { "SecurityGroups": { "shape": "Sa" } } } }, "AttachLoadBalancerToSubnets": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Subnets" ], "members": { "LoadBalancerName": {}, "Subnets": { "shape": "Se" } } }, "output": { "resultWrapper": "AttachLoadBalancerToSubnetsResult", "type": "structure", "members": { "Subnets": { "shape": "Se" } } } }, "ConfigureHealthCheck": { "input": { "type": "structure", "required": [ "LoadBalancerName", "HealthCheck" ], "members": { "LoadBalancerName": {}, "HealthCheck": { "shape": "Si" } } }, "output": { "resultWrapper": "ConfigureHealthCheckResult", "type": "structure", "members": { "HealthCheck": { "shape": "Si" } } } }, "CreateAppCookieStickinessPolicy": { "input": { "type": "structure", "required": [ "LoadBalancerName", "PolicyName", "CookieName" ], "members": { "LoadBalancerName": {}, "PolicyName": {}, "CookieName": {} } }, "output": { "resultWrapper": "CreateAppCookieStickinessPolicyResult", "type": "structure", "members": {} } }, "CreateLBCookieStickinessPolicy": { "input": { "type": "structure", "required": [ "LoadBalancerName", "PolicyName" ], "members": { "LoadBalancerName": {}, "PolicyName": {}, "CookieExpirationPeriod": { "type": "long" } } }, "output": { "resultWrapper": "CreateLBCookieStickinessPolicyResult", "type": "structure", "members": {} } }, "CreateLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Listeners" ], "members": { "LoadBalancerName": {}, "Listeners": { "shape": "Sx" }, "AvailabilityZones": { "shape": "S13" }, "Subnets": { "shape": "Se" }, "SecurityGroups": { "shape": "Sa" }, "Scheme": {}, "Tags": { "shape": "S4" } } }, "output": { "resultWrapper": "CreateLoadBalancerResult", "type": "structure", "members": { "DNSName": {} } } }, "CreateLoadBalancerListeners": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Listeners" ], "members": { "LoadBalancerName": {}, "Listeners": { "shape": "Sx" } } }, "output": { "resultWrapper": "CreateLoadBalancerListenersResult", "type": "structure", "members": {} } }, "CreateLoadBalancerPolicy": { "input": { "type": "structure", "required": [ "LoadBalancerName", "PolicyName", "PolicyTypeName" ], "members": { "LoadBalancerName": {}, "PolicyName": {}, "PolicyTypeName": {}, "PolicyAttributes": { "type": "list", "member": { "type": "structure", "members": { "AttributeName": {}, "AttributeValue": {} } } } } }, "output": { "resultWrapper": "CreateLoadBalancerPolicyResult", "type": "structure", "members": {} } }, "DeleteLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName" ], "members": { "LoadBalancerName": {} } }, "output": { "resultWrapper": "DeleteLoadBalancerResult", "type": "structure", "members": {} } }, "DeleteLoadBalancerListeners": { "input": { "type": "structure", "required": [ "LoadBalancerName", "LoadBalancerPorts" ], "members": { "LoadBalancerName": {}, "LoadBalancerPorts": { "type": "list", "member": { "type": "integer" } } } }, "output": { "resultWrapper": "DeleteLoadBalancerListenersResult", "type": "structure", "members": {} } }, "DeleteLoadBalancerPolicy": { "input": { "type": "structure", "required": [ "LoadBalancerName", "PolicyName" ], "members": { "LoadBalancerName": {}, "PolicyName": {} } }, "output": { "resultWrapper": "DeleteLoadBalancerPolicyResult", "type": "structure", "members": {} } }, "DeregisterInstancesFromLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Instances" ], "members": { "LoadBalancerName": {}, "Instances": { "shape": "S1p" } } }, "output": { "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", "type": "structure", "members": { "Instances": { "shape": "S1p" } } } }, "DescribeInstanceHealth": { "input": { "type": "structure", "required": [ "LoadBalancerName" ], "members": { "LoadBalancerName": {}, "Instances": { "shape": "S1p" } } }, "output": { "resultWrapper": "DescribeInstanceHealthResult", "type": "structure", "members": { "InstanceStates": { "type": "list", "member": { "type": "structure", "members": { "InstanceId": {}, "State": {}, "ReasonCode": {}, "Description": {} } } } } } }, "DescribeLoadBalancerAttributes": { "input": { "type": "structure", "required": [ "LoadBalancerName" ], "members": { "LoadBalancerName": {} } }, "output": { "resultWrapper": "DescribeLoadBalancerAttributesResult", "type": "structure", "members": { "LoadBalancerAttributes": { "shape": "S22" } } } }, "DescribeLoadBalancerPolicies": { "input": { "type": "structure", "members": { "LoadBalancerName": {}, "PolicyNames": { "shape": "S2k" } } }, "output": { "resultWrapper": "DescribeLoadBalancerPoliciesResult", "type": "structure", "members": { "PolicyDescriptions": { "type": "list", "member": { "type": "structure", "members": { "PolicyName": {}, "PolicyTypeName": {}, "PolicyAttributeDescriptions": { "type": "list", "member": { "type": "structure", "members": { "AttributeName": {}, "AttributeValue": {} } } } } } } } } }, "DescribeLoadBalancerPolicyTypes": { "input": { "type": "structure", "members": { "PolicyTypeNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", "type": "structure", "members": { "PolicyTypeDescriptions": { "type": "list", "member": { "type": "structure", "members": { "PolicyTypeName": {}, "Description": {}, "PolicyAttributeTypeDescriptions": { "type": "list", "member": { "type": "structure", "members": { "AttributeName": {}, "AttributeType": {}, "Description": {}, "DefaultValue": {}, "Cardinality": {} } } } } } } } } }, "DescribeLoadBalancers": { "input": { "type": "structure", "members": { "LoadBalancerNames": { "shape": "S2" }, "Marker": {}, "PageSize": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeLoadBalancersResult", "type": "structure", "members": { "LoadBalancerDescriptions": { "type": "list", "member": { "type": "structure", "members": { "LoadBalancerName": {}, "DNSName": {}, "CanonicalHostedZoneName": {}, "CanonicalHostedZoneNameID": {}, "ListenerDescriptions": { "type": "list", "member": { "type": "structure", "members": { "Listener": { "shape": "Sy" }, "PolicyNames": { "shape": "S2k" } } } }, "Policies": { "type": "structure", "members": { "AppCookieStickinessPolicies": { "type": "list", "member": { "type": "structure", "members": { "PolicyName": {}, "CookieName": {} } } }, "LBCookieStickinessPolicies": { "type": "list", "member": { "type": "structure", "members": { "PolicyName": {}, "CookieExpirationPeriod": { "type": "long" } } } }, "OtherPolicies": { "shape": "S2k" } } }, "BackendServerDescriptions": { "type": "list", "member": { "type": "structure", "members": { "InstancePort": { "type": "integer" }, "PolicyNames": { "shape": "S2k" } } } }, "AvailabilityZones": { "shape": "S13" }, "Subnets": { "shape": "Se" }, "VPCId": {}, "Instances": { "shape": "S1p" }, "HealthCheck": { "shape": "Si" }, "SourceSecurityGroup": { "type": "structure", "members": { "OwnerAlias": {}, "GroupName": {} } }, "SecurityGroups": { "shape": "Sa" }, "CreatedTime": { "type": "timestamp" }, "Scheme": {} } } }, "NextMarker": {} } } }, "DescribeTags": { "input": { "type": "structure", "required": [ "LoadBalancerNames" ], "members": { "LoadBalancerNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeTagsResult", "type": "structure", "members": { "TagDescriptions": { "type": "list", "member": { "type": "structure", "members": { "LoadBalancerName": {}, "Tags": { "shape": "S4" } } } } } } }, "DetachLoadBalancerFromSubnets": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Subnets" ], "members": { "LoadBalancerName": {}, "Subnets": { "shape": "Se" } } }, "output": { "resultWrapper": "DetachLoadBalancerFromSubnetsResult", "type": "structure", "members": { "Subnets": { "shape": "Se" } } } }, "DisableAvailabilityZonesForLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "AvailabilityZones" ], "members": { "LoadBalancerName": {}, "AvailabilityZones": { "shape": "S13" } } }, "output": { "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", "type": "structure", "members": { "AvailabilityZones": { "shape": "S13" } } } }, "EnableAvailabilityZonesForLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "AvailabilityZones" ], "members": { "LoadBalancerName": {}, "AvailabilityZones": { "shape": "S13" } } }, "output": { "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", "type": "structure", "members": { "AvailabilityZones": { "shape": "S13" } } } }, "ModifyLoadBalancerAttributes": { "input": { "type": "structure", "required": [ "LoadBalancerName", "LoadBalancerAttributes" ], "members": { "LoadBalancerName": {}, "LoadBalancerAttributes": { "shape": "S22" } } }, "output": { "resultWrapper": "ModifyLoadBalancerAttributesResult", "type": "structure", "members": { "LoadBalancerName": {}, "LoadBalancerAttributes": { "shape": "S22" } } } }, "RegisterInstancesWithLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "Instances" ], "members": { "LoadBalancerName": {}, "Instances": { "shape": "S1p" } } }, "output": { "resultWrapper": "RegisterInstancesWithLoadBalancerResult", "type": "structure", "members": { "Instances": { "shape": "S1p" } } } }, "RemoveTags": { "input": { "type": "structure", "required": [ "LoadBalancerNames", "Tags" ], "members": { "LoadBalancerNames": { "shape": "S2" }, "Tags": { "type": "list", "member": { "type": "structure", "members": { "Key": {} } } } } }, "output": { "resultWrapper": "RemoveTagsResult", "type": "structure", "members": {} } }, "SetLoadBalancerListenerSSLCertificate": { "input": { "type": "structure", "required": [ "LoadBalancerName", "LoadBalancerPort", "SSLCertificateId" ], "members": { "LoadBalancerName": {}, "LoadBalancerPort": { "type": "integer" }, "SSLCertificateId": {} } }, "output": { "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", "type": "structure", "members": {} } }, "SetLoadBalancerPoliciesForBackendServer": { "input": { "type": "structure", "required": [ "LoadBalancerName", "InstancePort", "PolicyNames" ], "members": { "LoadBalancerName": {}, "InstancePort": { "type": "integer" }, "PolicyNames": { "shape": "S2k" } } }, "output": { "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", "type": "structure", "members": {} } }, "SetLoadBalancerPoliciesOfListener": { "input": { "type": "structure", "required": [ "LoadBalancerName", "LoadBalancerPort", "PolicyNames" ], "members": { "LoadBalancerName": {}, "LoadBalancerPort": { "type": "integer" }, "PolicyNames": { "shape": "S2k" } } }, "output": { "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", "type": "structure", "members": {} } } }, "shapes": { "S2": { "type": "list", "member": {} }, "S4": { "type": "list", "member": { "type": "structure", "required": [ "Key" ], "members": { "Key": {}, "Value": {} } } }, "Sa": { "type": "list", "member": {} }, "Se": { "type": "list", "member": {} }, "Si": { "type": "structure", "required": [ "Target", "Interval", "Timeout", "UnhealthyThreshold", "HealthyThreshold" ], "members": { "Target": {}, "Interval": { "type": "integer" }, "Timeout": { "type": "integer" }, "UnhealthyThreshold": { "type": "integer" }, "HealthyThreshold": { "type": "integer" } } }, "Sx": { "type": "list", "member": { "shape": "Sy" } }, "Sy": { "type": "structure", "required": [ "Protocol", "LoadBalancerPort", "InstancePort" ], "members": { "Protocol": {}, "LoadBalancerPort": { "type": "integer" }, "InstanceProtocol": {}, "InstancePort": { "type": "integer" }, "SSLCertificateId": {} } }, "S13": { "type": "list", "member": {} }, "S1p": { "type": "list", "member": { "type": "structure", "members": { "InstanceId": {} } } }, "S22": { "type": "structure", "members": { "CrossZoneLoadBalancing": { "type": "structure", "required": [ "Enabled" ], "members": { "Enabled": { "type": "boolean" } } }, "AccessLog": { "type": "structure", "required": [ "Enabled" ], "members": { "Enabled": { "type": "boolean" }, "S3BucketName": {}, "EmitInterval": { "type": "integer" }, "S3BucketPrefix": {} } }, "ConnectionDraining": { "type": "structure", "required": [ "Enabled" ], "members": { "Enabled": { "type": "boolean" }, "Timeout": { "type": "integer" } } }, "ConnectionSettings": { "type": "structure", "required": [ "IdleTimeout" ], "members": { "IdleTimeout": { "type": "integer" } } }, "AdditionalAttributes": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } } } }, "S2k": { "type": "list", "member": {} } } } },{}],56:[function(require,module,exports){ module.exports={ "pagination": { "DescribeInstanceHealth": { "result_key": "InstanceStates" }, "DescribeLoadBalancerPolicies": { "result_key": "PolicyDescriptions" }, "DescribeLoadBalancerPolicyTypes": { "result_key": "PolicyTypeDescriptions" }, "DescribeLoadBalancers": { "input_token": "Marker", "output_token": "NextMarker", "result_key": "LoadBalancerDescriptions" } } } },{}],57:[function(require,module,exports){ module.exports={ "version":2, "waiters":{ "InstanceDeregistered": { "delay": 15, "operation": "DescribeInstanceHealth", "maxAttempts": 40, "acceptors": [ { "expected": "OutOfService", "matcher": "pathAll", "state": "success", "argument": "InstanceStates[].State" }, { "matcher": "error", "expected": "InvalidInstance", "state": "success" } ] }, "AnyInstanceInService":{ "acceptors":[ { "argument":"InstanceStates[].State", "expected":"InService", "matcher":"pathAny", "state":"success" } ], "delay":15, "maxAttempts":40, "operation":"DescribeInstanceHealth" }, "InstanceInService":{ "acceptors":[ { "argument":"InstanceStates[].State", "expected":"InService", "matcher":"pathAll", "state":"success" } ], "delay":15, "maxAttempts":40, "operation":"DescribeInstanceHealth" } } } },{}],58:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2015-12-01", "endpointPrefix": "elasticloadbalancing", "protocol": "query", "serviceAbbreviation": "Elastic Load Balancing v2", "serviceFullName": "Elastic Load Balancing", "signatureVersion": "v4", "uid": "elasticloadbalancingv2-2015-12-01", "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" }, "operations": { "AddTags": { "input": { "type": "structure", "required": [ "ResourceArns", "Tags" ], "members": { "ResourceArns": { "shape": "S2" }, "Tags": { "shape": "S4" } } }, "output": { "resultWrapper": "AddTagsResult", "type": "structure", "members": {} } }, "CreateListener": { "input": { "type": "structure", "required": [ "LoadBalancerArn", "Protocol", "Port", "DefaultActions" ], "members": { "LoadBalancerArn": {}, "Protocol": {}, "Port": { "type": "integer" }, "SslPolicy": {}, "Certificates": { "shape": "Se" }, "DefaultActions": { "shape": "Sh" } } }, "output": { "resultWrapper": "CreateListenerResult", "type": "structure", "members": { "Listeners": { "shape": "Sm" } } } }, "CreateLoadBalancer": { "input": { "type": "structure", "required": [ "Name", "Subnets" ], "members": { "Name": {}, "Subnets": { "shape": "Sr" }, "SecurityGroups": { "shape": "St" }, "Scheme": {}, "Tags": { "shape": "S4" }, "IpAddressType": {} } }, "output": { "resultWrapper": "CreateLoadBalancerResult", "type": "structure", "members": { "LoadBalancers": { "shape": "Sy" } } } }, "CreateRule": { "input": { "type": "structure", "required": [ "ListenerArn", "Conditions", "Priority", "Actions" ], "members": { "ListenerArn": {}, "Conditions": { "shape": "S1c" }, "Priority": { "type": "integer" }, "Actions": { "shape": "Sh" } } }, "output": { "resultWrapper": "CreateRuleResult", "type": "structure", "members": { "Rules": { "shape": "S1j" } } } }, "CreateTargetGroup": { "input": { "type": "structure", "required": [ "Name", "Protocol", "Port", "VpcId" ], "members": { "Name": {}, "Protocol": {}, "Port": { "type": "integer" }, "VpcId": {}, "HealthCheckProtocol": {}, "HealthCheckPort": {}, "HealthCheckPath": {}, "HealthCheckIntervalSeconds": { "type": "integer" }, "HealthCheckTimeoutSeconds": { "type": "integer" }, "HealthyThresholdCount": { "type": "integer" }, "UnhealthyThresholdCount": { "type": "integer" }, "Matcher": { "shape": "S1v" } } }, "output": { "resultWrapper": "CreateTargetGroupResult", "type": "structure", "members": { "TargetGroups": { "shape": "S1y" } } } }, "DeleteListener": { "input": { "type": "structure", "required": [ "ListenerArn" ], "members": { "ListenerArn": {} } }, "output": { "resultWrapper": "DeleteListenerResult", "type": "structure", "members": {} } }, "DeleteLoadBalancer": { "input": { "type": "structure", "required": [ "LoadBalancerArn" ], "members": { "LoadBalancerArn": {} } }, "output": { "resultWrapper": "DeleteLoadBalancerResult", "type": "structure", "members": {} } }, "DeleteRule": { "input": { "type": "structure", "required": [ "RuleArn" ], "members": { "RuleArn": {} } }, "output": { "resultWrapper": "DeleteRuleResult", "type": "structure", "members": {} } }, "DeleteTargetGroup": { "input": { "type": "structure", "required": [ "TargetGroupArn" ], "members": { "TargetGroupArn": {} } }, "output": { "resultWrapper": "DeleteTargetGroupResult", "type": "structure", "members": {} } }, "DeregisterTargets": { "input": { "type": "structure", "required": [ "TargetGroupArn", "Targets" ], "members": { "TargetGroupArn": {}, "Targets": { "shape": "S2a" } } }, "output": { "resultWrapper": "DeregisterTargetsResult", "type": "structure", "members": {} } }, "DescribeListeners": { "input": { "type": "structure", "members": { "LoadBalancerArn": {}, "ListenerArns": { "type": "list", "member": {} }, "Marker": {}, "PageSize": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeListenersResult", "type": "structure", "members": { "Listeners": { "shape": "Sm" }, "NextMarker": {} } } }, "DescribeLoadBalancerAttributes": { "input": { "type": "structure", "required": [ "LoadBalancerArn" ], "members": { "LoadBalancerArn": {} } }, "output": { "resultWrapper": "DescribeLoadBalancerAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "S2l" } } } }, "DescribeLoadBalancers": { "input": { "type": "structure", "members": { "LoadBalancerArns": { "shape": "S20" }, "Names": { "type": "list", "member": {} }, "Marker": {}, "PageSize": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeLoadBalancersResult", "type": "structure", "members": { "LoadBalancers": { "shape": "Sy" }, "NextMarker": {} } } }, "DescribeRules": { "input": { "type": "structure", "members": { "ListenerArn": {}, "RuleArns": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeRulesResult", "type": "structure", "members": { "Rules": { "shape": "S1j" } } } }, "DescribeSSLPolicies": { "input": { "type": "structure", "members": { "Names": { "type": "list", "member": {} }, "Marker": {}, "PageSize": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeSSLPoliciesResult", "type": "structure", "members": { "SslPolicies": { "type": "list", "member": { "type": "structure", "members": { "SslProtocols": { "type": "list", "member": {} }, "Ciphers": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Priority": { "type": "integer" } } } }, "Name": {} } } }, "NextMarker": {} } } }, "DescribeTags": { "input": { "type": "structure", "required": [ "ResourceArns" ], "members": { "ResourceArns": { "shape": "S2" } } }, "output": { "resultWrapper": "DescribeTagsResult", "type": "structure", "members": { "TagDescriptions": { "type": "list", "member": { "type": "structure", "members": { "ResourceArn": {}, "Tags": { "shape": "S4" } } } } } } }, "DescribeTargetGroupAttributes": { "input": { "type": "structure", "required": [ "TargetGroupArn" ], "members": { "TargetGroupArn": {} } }, "output": { "resultWrapper": "DescribeTargetGroupAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "S3c" } } } }, "DescribeTargetGroups": { "input": { "type": "structure", "members": { "LoadBalancerArn": {}, "TargetGroupArns": { "type": "list", "member": {} }, "Names": { "type": "list", "member": {} }, "Marker": {}, "PageSize": { "type": "integer" } } }, "output": { "resultWrapper": "DescribeTargetGroupsResult", "type": "structure", "members": { "TargetGroups": { "shape": "S1y" }, "NextMarker": {} } } }, "DescribeTargetHealth": { "input": { "type": "structure", "required": [ "TargetGroupArn" ], "members": { "TargetGroupArn": {}, "Targets": { "shape": "S2a" } } }, "output": { "resultWrapper": "DescribeTargetHealthResult", "type": "structure", "members": { "TargetHealthDescriptions": { "type": "list", "member": { "type": "structure", "members": { "Target": { "shape": "S2b" }, "HealthCheckPort": {}, "TargetHealth": { "type": "structure", "members": { "State": {}, "Reason": {}, "Description": {} } } } } } } } }, "ModifyListener": { "input": { "type": "structure", "required": [ "ListenerArn" ], "members": { "ListenerArn": {}, "Port": { "type": "integer" }, "Protocol": {}, "SslPolicy": {}, "Certificates": { "shape": "Se" }, "DefaultActions": { "shape": "Sh" } } }, "output": { "resultWrapper": "ModifyListenerResult", "type": "structure", "members": { "Listeners": { "shape": "Sm" } } } }, "ModifyLoadBalancerAttributes": { "input": { "type": "structure", "required": [ "LoadBalancerArn", "Attributes" ], "members": { "LoadBalancerArn": {}, "Attributes": { "shape": "S2l" } } }, "output": { "resultWrapper": "ModifyLoadBalancerAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "S2l" } } } }, "ModifyRule": { "input": { "type": "structure", "required": [ "RuleArn" ], "members": { "RuleArn": {}, "Conditions": { "shape": "S1c" }, "Actions": { "shape": "Sh" } } }, "output": { "resultWrapper": "ModifyRuleResult", "type": "structure", "members": { "Rules": { "shape": "S1j" } } } }, "ModifyTargetGroup": { "input": { "type": "structure", "required": [ "TargetGroupArn" ], "members": { "TargetGroupArn": {}, "HealthCheckProtocol": {}, "HealthCheckPort": {}, "HealthCheckPath": {}, "HealthCheckIntervalSeconds": { "type": "integer" }, "HealthCheckTimeoutSeconds": { "type": "integer" }, "HealthyThresholdCount": { "type": "integer" }, "UnhealthyThresholdCount": { "type": "integer" }, "Matcher": { "shape": "S1v" } } }, "output": { "resultWrapper": "ModifyTargetGroupResult", "type": "structure", "members": { "TargetGroups": { "shape": "S1y" } } } }, "ModifyTargetGroupAttributes": { "input": { "type": "structure", "required": [ "TargetGroupArn", "Attributes" ], "members": { "TargetGroupArn": {}, "Attributes": { "shape": "S3c" } } }, "output": { "resultWrapper": "ModifyTargetGroupAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "S3c" } } } }, "RegisterTargets": { "input": { "type": "structure", "required": [ "TargetGroupArn", "Targets" ], "members": { "TargetGroupArn": {}, "Targets": { "shape": "S2a" } } }, "output": { "resultWrapper": "RegisterTargetsResult", "type": "structure", "members": {} } }, "RemoveTags": { "input": { "type": "structure", "required": [ "ResourceArns", "TagKeys" ], "members": { "ResourceArns": { "shape": "S2" }, "TagKeys": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "RemoveTagsResult", "type": "structure", "members": {} } }, "SetIpAddressType": { "input": { "type": "structure", "required": [ "LoadBalancerArn", "IpAddressType" ], "members": { "LoadBalancerArn": {}, "IpAddressType": {} } }, "output": { "resultWrapper": "SetIpAddressTypeResult", "type": "structure", "members": { "IpAddressType": {} } } }, "SetRulePriorities": { "input": { "type": "structure", "required": [ "RulePriorities" ], "members": { "RulePriorities": { "type": "list", "member": { "type": "structure", "members": { "RuleArn": {}, "Priority": { "type": "integer" } } } } } }, "output": { "resultWrapper": "SetRulePrioritiesResult", "type": "structure", "members": { "Rules": { "shape": "S1j" } } } }, "SetSecurityGroups": { "input": { "type": "structure", "required": [ "LoadBalancerArn", "SecurityGroups" ], "members": { "LoadBalancerArn": {}, "SecurityGroups": { "shape": "St" } } }, "output": { "resultWrapper": "SetSecurityGroupsResult", "type": "structure", "members": { "SecurityGroupIds": { "shape": "St" } } } }, "SetSubnets": { "input": { "type": "structure", "required": [ "LoadBalancerArn", "Subnets" ], "members": { "LoadBalancerArn": {}, "Subnets": { "shape": "Sr" } } }, "output": { "resultWrapper": "SetSubnetsResult", "type": "structure", "members": { "AvailabilityZones": { "shape": "S18" } } } } }, "shapes": { "S2": { "type": "list", "member": {} }, "S4": { "type": "list", "member": { "type": "structure", "required": [ "Key" ], "members": { "Key": {}, "Value": {} } } }, "Se": { "type": "list", "member": { "type": "structure", "members": { "CertificateArn": {} } } }, "Sh": { "type": "list", "member": { "type": "structure", "required": [ "Type", "TargetGroupArn" ], "members": { "Type": {}, "TargetGroupArn": {} } } }, "Sm": { "type": "list", "member": { "type": "structure", "members": { "ListenerArn": {}, "LoadBalancerArn": {}, "Port": { "type": "integer" }, "Protocol": {}, "Certificates": { "shape": "Se" }, "SslPolicy": {}, "DefaultActions": { "shape": "Sh" } } } }, "Sr": { "type": "list", "member": {} }, "St": { "type": "list", "member": {} }, "Sy": { "type": "list", "member": { "type": "structure", "members": { "LoadBalancerArn": {}, "DNSName": {}, "CanonicalHostedZoneId": {}, "CreatedTime": { "type": "timestamp" }, "LoadBalancerName": {}, "Scheme": {}, "VpcId": {}, "State": { "type": "structure", "members": { "Code": {}, "Reason": {} } }, "Type": {}, "AvailabilityZones": { "shape": "S18" }, "SecurityGroups": { "shape": "St" }, "IpAddressType": {} } } }, "S18": { "type": "list", "member": { "type": "structure", "members": { "ZoneName": {}, "SubnetId": {} } } }, "S1c": { "type": "list", "member": { "type": "structure", "members": { "Field": {}, "Values": { "type": "list", "member": {} } } } }, "S1j": { "type": "list", "member": { "type": "structure", "members": { "RuleArn": {}, "Priority": {}, "Conditions": { "shape": "S1c" }, "Actions": { "shape": "Sh" }, "IsDefault": { "type": "boolean" } } } }, "S1v": { "type": "structure", "required": [ "HttpCode" ], "members": { "HttpCode": {} } }, "S1y": { "type": "list", "member": { "type": "structure", "members": { "TargetGroupArn": {}, "TargetGroupName": {}, "Protocol": {}, "Port": { "type": "integer" }, "VpcId": {}, "HealthCheckProtocol": {}, "HealthCheckPort": {}, "HealthCheckIntervalSeconds": { "type": "integer" }, "HealthCheckTimeoutSeconds": { "type": "integer" }, "HealthyThresholdCount": { "type": "integer" }, "UnhealthyThresholdCount": { "type": "integer" }, "HealthCheckPath": {}, "Matcher": { "shape": "S1v" }, "LoadBalancerArns": { "shape": "S20" } } } }, "S20": { "type": "list", "member": {} }, "S2a": { "type": "list", "member": { "shape": "S2b" } }, "S2b": { "type": "structure", "required": [ "Id" ], "members": { "Id": {}, "Port": { "type": "integer" } } }, "S2l": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "S3c": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } } } } },{}],59:[function(require,module,exports){ module.exports={ "pagination": { "DescribeListeners": { "input_token": "Marker", "output_token": "NextMarker", "result_key": "Listeners" }, "DescribeLoadBalancers": { "input_token": "Marker", "output_token": "NextMarker", "result_key": "LoadBalancers" }, "DescribeTargetGroups": { "input_token": "Marker", "output_token": "NextMarker", "result_key": "TargetGroups" } } } },{}],60:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "elasticmapreduce-2009-03-31", "apiVersion": "2009-03-31", "endpointPrefix": "elasticmapreduce", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Amazon EMR", "serviceFullName": "Amazon Elastic MapReduce", "signatureVersion": "v4", "targetPrefix": "ElasticMapReduce", "timestampFormat": "unixTimestamp" }, "operations": { "AddInstanceGroups": { "input": { "type": "structure", "required": [ "InstanceGroups", "JobFlowId" ], "members": { "InstanceGroups": { "shape": "S2" }, "JobFlowId": {} } }, "output": { "type": "structure", "members": { "JobFlowId": {}, "InstanceGroupIds": { "type": "list", "member": {} } } } }, "AddJobFlowSteps": { "input": { "type": "structure", "required": [ "JobFlowId", "Steps" ], "members": { "JobFlowId": {}, "Steps": { "shape": "S10" } } }, "output": { "type": "structure", "members": { "StepIds": { "shape": "S19" } } } }, "AddTags": { "input": { "type": "structure", "required": [ "ResourceId", "Tags" ], "members": { "ResourceId": {}, "Tags": { "shape": "S1c" } } }, "output": { "type": "structure", "members": {} } }, "CancelSteps": { "input": { "type": "structure", "members": { "ClusterId": {}, "StepIds": { "shape": "S19" } } }, "output": { "type": "structure", "members": { "CancelStepsInfoList": { "type": "list", "member": { "type": "structure", "members": { "StepId": {}, "Status": {}, "Reason": {} } } } } } }, "CreateSecurityConfiguration": { "input": { "type": "structure", "required": [ "Name", "SecurityConfiguration" ], "members": { "Name": {}, "SecurityConfiguration": {} } }, "output": { "type": "structure", "required": [ "Name", "CreationDateTime" ], "members": { "Name": {}, "CreationDateTime": { "type": "timestamp" } } } }, "DeleteSecurityConfiguration": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "type": "structure", "members": {} } }, "DescribeCluster": { "input": { "type": "structure", "required": [ "ClusterId" ], "members": { "ClusterId": {} } }, "output": { "type": "structure", "members": { "Cluster": { "type": "structure", "members": { "Id": {}, "Name": {}, "Status": { "shape": "S1u" }, "Ec2InstanceAttributes": { "type": "structure", "members": { "Ec2KeyName": {}, "Ec2SubnetId": {}, "Ec2AvailabilityZone": {}, "IamInstanceProfile": {}, "EmrManagedMasterSecurityGroup": {}, "EmrManagedSlaveSecurityGroup": {}, "ServiceAccessSecurityGroup": {}, "AdditionalMasterSecurityGroups": { "shape": "S20" }, "AdditionalSlaveSecurityGroups": { "shape": "S20" } } }, "LogUri": {}, "RequestedAmiVersion": {}, "RunningAmiVersion": {}, "ReleaseLabel": {}, "AutoTerminate": { "type": "boolean" }, "TerminationProtected": { "type": "boolean" }, "VisibleToAllUsers": { "type": "boolean" }, "Applications": { "shape": "S22" }, "Tags": { "shape": "S1c" }, "ServiceRole": {}, "NormalizedInstanceHours": { "type": "integer" }, "MasterPublicDnsName": {}, "Configurations": { "shape": "S9" }, "SecurityConfiguration": {}, "AutoScalingRole": {}, "ScaleDownBehavior": {} } } } } }, "DescribeJobFlows": { "input": { "type": "structure", "members": { "CreatedAfter": { "type": "timestamp" }, "CreatedBefore": { "type": "timestamp" }, "JobFlowIds": { "shape": "S17" }, "JobFlowStates": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "JobFlows": { "type": "list", "member": { "type": "structure", "required": [ "JobFlowId", "Name", "ExecutionStatusDetail", "Instances" ], "members": { "JobFlowId": {}, "Name": {}, "LogUri": {}, "AmiVersion": {}, "ExecutionStatusDetail": { "type": "structure", "required": [ "State", "CreationDateTime" ], "members": { "State": {}, "CreationDateTime": { "type": "timestamp" }, "StartDateTime": { "type": "timestamp" }, "ReadyDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" }, "LastStateChangeReason": {} } }, "Instances": { "type": "structure", "required": [ "MasterInstanceType", "SlaveInstanceType", "InstanceCount" ], "members": { "MasterInstanceType": {}, "MasterPublicDnsName": {}, "MasterInstanceId": {}, "SlaveInstanceType": {}, "InstanceCount": { "type": "integer" }, "InstanceGroups": { "type": "list", "member": { "type": "structure", "required": [ "Market", "InstanceRole", "InstanceType", "InstanceRequestCount", "InstanceRunningCount", "State", "CreationDateTime" ], "members": { "InstanceGroupId": {}, "Name": {}, "Market": {}, "InstanceRole": {}, "BidPrice": {}, "InstanceType": {}, "InstanceRequestCount": { "type": "integer" }, "InstanceRunningCount": { "type": "integer" }, "State": {}, "LastStateChangeReason": {}, "CreationDateTime": { "type": "timestamp" }, "StartDateTime": { "type": "timestamp" }, "ReadyDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" } } } }, "NormalizedInstanceHours": { "type": "integer" }, "Ec2KeyName": {}, "Ec2SubnetId": {}, "Placement": { "shape": "S2g" }, "KeepJobFlowAliveWhenNoSteps": { "type": "boolean" }, "TerminationProtected": { "type": "boolean" }, "HadoopVersion": {} } }, "Steps": { "type": "list", "member": { "type": "structure", "required": [ "StepConfig", "ExecutionStatusDetail" ], "members": { "StepConfig": { "shape": "S11" }, "ExecutionStatusDetail": { "type": "structure", "required": [ "State", "CreationDateTime" ], "members": { "State": {}, "CreationDateTime": { "type": "timestamp" }, "StartDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" }, "LastStateChangeReason": {} } } } } }, "BootstrapActions": { "type": "list", "member": { "type": "structure", "members": { "BootstrapActionConfig": { "shape": "S2n" } } } }, "SupportedProducts": { "shape": "S2p" }, "VisibleToAllUsers": { "type": "boolean" }, "JobFlowRole": {}, "ServiceRole": {}, "AutoScalingRole": {}, "ScaleDownBehavior": {} } } } } }, "deprecated": true }, "DescribeSecurityConfiguration": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "type": "structure", "members": { "Name": {}, "SecurityConfiguration": {}, "CreationDateTime": { "type": "timestamp" } } } }, "DescribeStep": { "input": { "type": "structure", "required": [ "ClusterId", "StepId" ], "members": { "ClusterId": {}, "StepId": {} } }, "output": { "type": "structure", "members": { "Step": { "type": "structure", "members": { "Id": {}, "Name": {}, "Config": { "shape": "S2v" }, "ActionOnFailure": {}, "Status": { "shape": "S2w" } } } } } }, "ListBootstrapActions": { "input": { "type": "structure", "required": [ "ClusterId" ], "members": { "ClusterId": {}, "Marker": {} } }, "output": { "type": "structure", "members": { "BootstrapActions": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "ScriptPath": {}, "Args": { "shape": "S20" } } } }, "Marker": {} } } }, "ListClusters": { "input": { "type": "structure", "members": { "CreatedAfter": { "type": "timestamp" }, "CreatedBefore": { "type": "timestamp" }, "ClusterStates": { "type": "list", "member": {} }, "Marker": {} } }, "output": { "type": "structure", "members": { "Clusters": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "Name": {}, "Status": { "shape": "S1u" }, "NormalizedInstanceHours": { "type": "integer" } } } }, "Marker": {} } } }, "ListInstanceGroups": { "input": { "type": "structure", "required": [ "ClusterId" ], "members": { "ClusterId": {}, "Marker": {} } }, "output": { "type": "structure", "members": { "InstanceGroups": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "Name": {}, "Market": {}, "InstanceGroupType": {}, "BidPrice": {}, "InstanceType": {}, "RequestedInstanceCount": { "type": "integer" }, "RunningInstanceCount": { "type": "integer" }, "Status": { "type": "structure", "members": { "State": {}, "StateChangeReason": { "type": "structure", "members": { "Code": {}, "Message": {} } }, "Timeline": { "type": "structure", "members": { "CreationDateTime": { "type": "timestamp" }, "ReadyDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" } } } } }, "Configurations": { "shape": "S9" }, "EbsBlockDevices": { "type": "list", "member": { "type": "structure", "members": { "VolumeSpecification": { "shape": "Sg" }, "Device": {} } } }, "EbsOptimized": { "type": "boolean" }, "ShrinkPolicy": { "shape": "S3o" }, "AutoScalingPolicy": { "shape": "S3s" } } } }, "Marker": {} } } }, "ListInstances": { "input": { "type": "structure", "required": [ "ClusterId" ], "members": { "ClusterId": {}, "InstanceGroupId": {}, "InstanceGroupTypes": { "type": "list", "member": {} }, "InstanceStates": { "type": "list", "member": {} }, "Marker": {} } }, "output": { "type": "structure", "members": { "Instances": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "Ec2InstanceId": {}, "PublicDnsName": {}, "PublicIpAddress": {}, "PrivateDnsName": {}, "PrivateIpAddress": {}, "Status": { "type": "structure", "members": { "State": {}, "StateChangeReason": { "type": "structure", "members": { "Code": {}, "Message": {} } }, "Timeline": { "type": "structure", "members": { "CreationDateTime": { "type": "timestamp" }, "ReadyDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" } } } } }, "InstanceGroupId": {}, "EbsVolumes": { "type": "list", "member": { "type": "structure", "members": { "Device": {}, "VolumeId": {} } } } } } }, "Marker": {} } } }, "ListSecurityConfigurations": { "input": { "type": "structure", "members": { "Marker": {} } }, "output": { "type": "structure", "members": { "SecurityConfigurations": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "CreationDateTime": { "type": "timestamp" } } } }, "Marker": {} } } }, "ListSteps": { "input": { "type": "structure", "required": [ "ClusterId" ], "members": { "ClusterId": {}, "StepStates": { "type": "list", "member": {} }, "StepIds": { "shape": "S17" }, "Marker": {} } }, "output": { "type": "structure", "members": { "Steps": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "Name": {}, "Config": { "shape": "S2v" }, "ActionOnFailure": {}, "Status": { "shape": "S2w" } } } }, "Marker": {} } } }, "ModifyInstanceGroups": { "input": { "type": "structure", "members": { "ClusterId": {}, "InstanceGroups": { "type": "list", "member": { "type": "structure", "required": [ "InstanceGroupId" ], "members": { "InstanceGroupId": {}, "InstanceCount": { "type": "integer" }, "EC2InstanceIdsToTerminate": { "type": "list", "member": {} }, "ShrinkPolicy": { "shape": "S3o" } } } } } } }, "PutAutoScalingPolicy": { "input": { "type": "structure", "required": [ "ClusterId", "InstanceGroupId", "AutoScalingPolicy" ], "members": { "ClusterId": {}, "InstanceGroupId": {}, "AutoScalingPolicy": { "shape": "Si" } } }, "output": { "type": "structure", "members": { "ClusterId": {}, "InstanceGroupId": {}, "AutoScalingPolicy": { "shape": "S3s" } } } }, "RemoveAutoScalingPolicy": { "input": { "type": "structure", "required": [ "ClusterId", "InstanceGroupId" ], "members": { "ClusterId": {}, "InstanceGroupId": {} } }, "output": { "type": "structure", "members": {} } }, "RemoveTags": { "input": { "type": "structure", "required": [ "ResourceId", "TagKeys" ], "members": { "ResourceId": {}, "TagKeys": { "shape": "S20" } } }, "output": { "type": "structure", "members": {} } }, "RunJobFlow": { "input": { "type": "structure", "required": [ "Name", "Instances" ], "members": { "Name": {}, "LogUri": {}, "AdditionalInfo": {}, "AmiVersion": {}, "ReleaseLabel": {}, "Instances": { "type": "structure", "members": { "MasterInstanceType": {}, "SlaveInstanceType": {}, "InstanceCount": { "type": "integer" }, "InstanceGroups": { "shape": "S2" }, "Ec2KeyName": {}, "Placement": { "shape": "S2g" }, "KeepJobFlowAliveWhenNoSteps": { "type": "boolean" }, "TerminationProtected": { "type": "boolean" }, "HadoopVersion": {}, "Ec2SubnetId": {}, "EmrManagedMasterSecurityGroup": {}, "EmrManagedSlaveSecurityGroup": {}, "ServiceAccessSecurityGroup": {}, "AdditionalMasterSecurityGroups": { "shape": "S4v" }, "AdditionalSlaveSecurityGroups": { "shape": "S4v" } } }, "Steps": { "shape": "S10" }, "BootstrapActions": { "type": "list", "member": { "shape": "S2n" } }, "SupportedProducts": { "shape": "S2p" }, "NewSupportedProducts": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Args": { "shape": "S17" } } } }, "Applications": { "shape": "S22" }, "Configurations": { "shape": "S9" }, "VisibleToAllUsers": { "type": "boolean" }, "JobFlowRole": {}, "ServiceRole": {}, "Tags": { "shape": "S1c" }, "SecurityConfiguration": {}, "AutoScalingRole": {}, "ScaleDownBehavior": {} } }, "output": { "type": "structure", "members": { "JobFlowId": {} } } }, "SetTerminationProtection": { "input": { "type": "structure", "required": [ "JobFlowIds", "TerminationProtected" ], "members": { "JobFlowIds": { "shape": "S17" }, "TerminationProtected": { "type": "boolean" } } } }, "SetVisibleToAllUsers": { "input": { "type": "structure", "required": [ "JobFlowIds", "VisibleToAllUsers" ], "members": { "JobFlowIds": { "shape": "S17" }, "VisibleToAllUsers": { "type": "boolean" } } } }, "TerminateJobFlows": { "input": { "type": "structure", "required": [ "JobFlowIds" ], "members": { "JobFlowIds": { "shape": "S17" } } } } }, "shapes": { "S2": { "type": "list", "member": { "type": "structure", "required": [ "InstanceRole", "InstanceType", "InstanceCount" ], "members": { "Name": {}, "Market": {}, "InstanceRole": {}, "BidPrice": {}, "InstanceType": {}, "InstanceCount": { "type": "integer" }, "Configurations": { "shape": "S9" }, "EbsConfiguration": { "type": "structure", "members": { "EbsBlockDeviceConfigs": { "type": "list", "member": { "type": "structure", "required": [ "VolumeSpecification" ], "members": { "VolumeSpecification": { "shape": "Sg" }, "VolumesPerInstance": { "type": "integer" } } } }, "EbsOptimized": { "type": "boolean" } } }, "AutoScalingPolicy": { "shape": "Si" } } } }, "S9": { "type": "list", "member": { "type": "structure", "members": { "Classification": {}, "Configurations": { "shape": "S9" }, "Properties": { "shape": "Sc" } } } }, "Sc": { "type": "map", "key": {}, "value": {} }, "Sg": { "type": "structure", "required": [ "VolumeType", "SizeInGB" ], "members": { "VolumeType": {}, "Iops": { "type": "integer" }, "SizeInGB": { "type": "integer" } } }, "Si": { "type": "structure", "required": [ "Constraints", "Rules" ], "members": { "Constraints": { "shape": "Sj" }, "Rules": { "shape": "Sk" } } }, "Sj": { "type": "structure", "required": [ "MinCapacity", "MaxCapacity" ], "members": { "MinCapacity": { "type": "integer" }, "MaxCapacity": { "type": "integer" } } }, "Sk": { "type": "list", "member": { "type": "structure", "required": [ "Name", "Action", "Trigger" ], "members": { "Name": {}, "Description": {}, "Action": { "type": "structure", "required": [ "SimpleScalingPolicyConfiguration" ], "members": { "Market": {}, "SimpleScalingPolicyConfiguration": { "type": "structure", "required": [ "ScalingAdjustment" ], "members": { "AdjustmentType": {}, "ScalingAdjustment": { "type": "integer" }, "CoolDown": { "type": "integer" } } } } }, "Trigger": { "type": "structure", "required": [ "CloudWatchAlarmDefinition" ], "members": { "CloudWatchAlarmDefinition": { "type": "structure", "required": [ "ComparisonOperator", "MetricName", "Period", "Threshold" ], "members": { "ComparisonOperator": {}, "EvaluationPeriods": { "type": "integer" }, "MetricName": {}, "Namespace": {}, "Period": { "type": "integer" }, "Statistic": {}, "Threshold": { "type": "double" }, "Unit": {}, "Dimensions": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } } } } } } } } }, "S10": { "type": "list", "member": { "shape": "S11" } }, "S11": { "type": "structure", "required": [ "Name", "HadoopJarStep" ], "members": { "Name": {}, "ActionOnFailure": {}, "HadoopJarStep": { "type": "structure", "required": [ "Jar" ], "members": { "Properties": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Jar": {}, "MainClass": {}, "Args": { "shape": "S17" } } } } }, "S17": { "type": "list", "member": {} }, "S19": { "type": "list", "member": {} }, "S1c": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "S1u": { "type": "structure", "members": { "State": {}, "StateChangeReason": { "type": "structure", "members": { "Code": {}, "Message": {} } }, "Timeline": { "type": "structure", "members": { "CreationDateTime": { "type": "timestamp" }, "ReadyDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" } } } } }, "S20": { "type": "list", "member": {} }, "S22": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Version": {}, "Args": { "shape": "S20" }, "AdditionalInfo": { "shape": "Sc" } } } }, "S2g": { "type": "structure", "required": [ "AvailabilityZone" ], "members": { "AvailabilityZone": {} } }, "S2n": { "type": "structure", "required": [ "Name", "ScriptBootstrapAction" ], "members": { "Name": {}, "ScriptBootstrapAction": { "type": "structure", "required": [ "Path" ], "members": { "Path": {}, "Args": { "shape": "S17" } } } } }, "S2p": { "type": "list", "member": {} }, "S2v": { "type": "structure", "members": { "Jar": {}, "Properties": { "shape": "Sc" }, "MainClass": {}, "Args": { "shape": "S20" } } }, "S2w": { "type": "structure", "members": { "State": {}, "StateChangeReason": { "type": "structure", "members": { "Code": {}, "Message": {} } }, "FailureDetails": { "type": "structure", "members": { "Reason": {}, "Message": {}, "LogFile": {} } }, "Timeline": { "type": "structure", "members": { "CreationDateTime": { "type": "timestamp" }, "StartDateTime": { "type": "timestamp" }, "EndDateTime": { "type": "timestamp" } } } } }, "S3o": { "type": "structure", "members": { "DecommissionTimeout": { "type": "integer" }, "InstanceResizePolicy": { "type": "structure", "members": { "InstancesToTerminate": { "shape": "S3q" }, "InstancesToProtect": { "shape": "S3q" }, "InstanceTerminationTimeout": { "type": "integer" } } } } }, "S3q": { "type": "list", "member": {} }, "S3s": { "type": "structure", "members": { "Status": { "type": "structure", "members": { "State": {}, "StateChangeReason": { "type": "structure", "members": { "Code": {}, "Message": {} } } } }, "Constraints": { "shape": "Sj" }, "Rules": { "shape": "Sk" } } }, "S4v": { "type": "list", "member": {} } } } },{}],61:[function(require,module,exports){ module.exports={ "pagination": { "DescribeJobFlows": { "result_key": "JobFlows" }, "ListBootstrapActions": { "input_token": "Marker", "output_token": "Marker", "result_key": "BootstrapActions" }, "ListClusters": { "input_token": "Marker", "output_token": "Marker", "result_key": "Clusters" }, "ListInstanceGroups": { "input_token": "Marker", "output_token": "Marker", "result_key": "InstanceGroups" }, "ListInstances": { "input_token": "Marker", "output_token": "Marker", "result_key": "Instances" }, "ListSteps": { "input_token": "Marker", "output_token": "Marker", "result_key": "Steps" } } } },{}],62:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "ClusterRunning": { "delay": 30, "operation": "DescribeCluster", "maxAttempts": 60, "acceptors": [ { "state": "success", "matcher": "path", "argument": "Cluster.Status.State", "expected": "RUNNING" }, { "state": "success", "matcher": "path", "argument": "Cluster.Status.State", "expected": "WAITING" }, { "state": "failure", "matcher": "path", "argument": "Cluster.Status.State", "expected": "TERMINATING" }, { "state": "failure", "matcher": "path", "argument": "Cluster.Status.State", "expected": "TERMINATED" }, { "state": "failure", "matcher": "path", "argument": "Cluster.Status.State", "expected": "TERMINATED_WITH_ERRORS" } ] }, "StepComplete": { "delay": 30, "operation": "DescribeStep", "maxAttempts": 60, "acceptors": [ { "state": "success", "matcher": "path", "argument": "Step.Status.State", "expected": "COMPLETED" }, { "state": "failure", "matcher": "path", "argument": "Step.Status.State", "expected": "FAILED" }, { "state": "failure", "matcher": "path", "argument": "Step.Status.State", "expected": "CANCELLED" } ] } } } },{}],63:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "elastictranscoder-2012-09-25", "apiVersion": "2012-09-25", "endpointPrefix": "elastictranscoder", "protocol": "rest-json", "serviceFullName": "Amazon Elastic Transcoder", "signatureVersion": "v4" }, "operations": { "CancelJob": { "http": { "method": "DELETE", "requestUri": "/2012-09-25/jobs/{Id}", "responseCode": 202 }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": {} } }, "CreateJob": { "http": { "requestUri": "/2012-09-25/jobs", "responseCode": 201 }, "input": { "type": "structure", "required": [ "PipelineId" ], "members": { "PipelineId": {}, "Input": { "shape": "S5" }, "Inputs": { "shape": "St" }, "Output": { "shape": "Su" }, "Outputs": { "type": "list", "member": { "shape": "Su" } }, "OutputKeyPrefix": {}, "Playlists": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Format": {}, "OutputKeys": { "shape": "S1l" }, "HlsContentProtection": { "shape": "S1m" }, "PlayReadyDrm": { "shape": "S1q" } } } }, "UserMetadata": { "shape": "S1v" } } }, "output": { "type": "structure", "members": { "Job": { "shape": "S1y" } } } }, "CreatePipeline": { "http": { "requestUri": "/2012-09-25/pipelines", "responseCode": 201 }, "input": { "type": "structure", "required": [ "Name", "InputBucket", "Role" ], "members": { "Name": {}, "InputBucket": {}, "OutputBucket": {}, "Role": {}, "AwsKmsKeyArn": {}, "Notifications": { "shape": "S2a" }, "ContentConfig": { "shape": "S2c" }, "ThumbnailConfig": { "shape": "S2c" } } }, "output": { "type": "structure", "members": { "Pipeline": { "shape": "S2l" }, "Warnings": { "shape": "S2n" } } } }, "CreatePreset": { "http": { "requestUri": "/2012-09-25/presets", "responseCode": 201 }, "input": { "type": "structure", "required": [ "Name", "Container" ], "members": { "Name": {}, "Description": {}, "Container": {}, "Video": { "shape": "S2r" }, "Audio": { "shape": "S37" }, "Thumbnails": { "shape": "S3i" } } }, "output": { "type": "structure", "members": { "Preset": { "shape": "S3m" }, "Warning": {} } } }, "DeletePipeline": { "http": { "method": "DELETE", "requestUri": "/2012-09-25/pipelines/{Id}", "responseCode": 202 }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": {} } }, "DeletePreset": { "http": { "method": "DELETE", "requestUri": "/2012-09-25/presets/{Id}", "responseCode": 202 }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": {} } }, "ListJobsByPipeline": { "http": { "method": "GET", "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" }, "input": { "type": "structure", "required": [ "PipelineId" ], "members": { "PipelineId": { "location": "uri", "locationName": "PipelineId" }, "Ascending": { "location": "querystring", "locationName": "Ascending" }, "PageToken": { "location": "querystring", "locationName": "PageToken" } } }, "output": { "type": "structure", "members": { "Jobs": { "shape": "S3v" }, "NextPageToken": {} } } }, "ListJobsByStatus": { "http": { "method": "GET", "requestUri": "/2012-09-25/jobsByStatus/{Status}" }, "input": { "type": "structure", "required": [ "Status" ], "members": { "Status": { "location": "uri", "locationName": "Status" }, "Ascending": { "location": "querystring", "locationName": "Ascending" }, "PageToken": { "location": "querystring", "locationName": "PageToken" } } }, "output": { "type": "structure", "members": { "Jobs": { "shape": "S3v" }, "NextPageToken": {} } } }, "ListPipelines": { "http": { "method": "GET", "requestUri": "/2012-09-25/pipelines" }, "input": { "type": "structure", "members": { "Ascending": { "location": "querystring", "locationName": "Ascending" }, "PageToken": { "location": "querystring", "locationName": "PageToken" } } }, "output": { "type": "structure", "members": { "Pipelines": { "type": "list", "member": { "shape": "S2l" } }, "NextPageToken": {} } } }, "ListPresets": { "http": { "method": "GET", "requestUri": "/2012-09-25/presets" }, "input": { "type": "structure", "members": { "Ascending": { "location": "querystring", "locationName": "Ascending" }, "PageToken": { "location": "querystring", "locationName": "PageToken" } } }, "output": { "type": "structure", "members": { "Presets": { "type": "list", "member": { "shape": "S3m" } }, "NextPageToken": {} } } }, "ReadJob": { "http": { "method": "GET", "requestUri": "/2012-09-25/jobs/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": { "Job": { "shape": "S1y" } } } }, "ReadPipeline": { "http": { "method": "GET", "requestUri": "/2012-09-25/pipelines/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": { "Pipeline": { "shape": "S2l" }, "Warnings": { "shape": "S2n" } } } }, "ReadPreset": { "http": { "method": "GET", "requestUri": "/2012-09-25/presets/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": { "Preset": { "shape": "S3m" } } } }, "TestRole": { "http": { "requestUri": "/2012-09-25/roleTests", "responseCode": 200 }, "input": { "type": "structure", "required": [ "Role", "InputBucket", "OutputBucket", "Topics" ], "members": { "Role": {}, "InputBucket": {}, "OutputBucket": {}, "Topics": { "type": "list", "member": {} } }, "deprecated": true }, "output": { "type": "structure", "members": { "Success": {}, "Messages": { "type": "list", "member": {} } }, "deprecated": true }, "deprecated": true }, "UpdatePipeline": { "http": { "method": "PUT", "requestUri": "/2012-09-25/pipelines/{Id}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Name": {}, "InputBucket": {}, "Role": {}, "AwsKmsKeyArn": {}, "Notifications": { "shape": "S2a" }, "ContentConfig": { "shape": "S2c" }, "ThumbnailConfig": { "shape": "S2c" } } }, "output": { "type": "structure", "members": { "Pipeline": { "shape": "S2l" }, "Warnings": { "shape": "S2n" } } } }, "UpdatePipelineNotifications": { "http": { "requestUri": "/2012-09-25/pipelines/{Id}/notifications" }, "input": { "type": "structure", "required": [ "Id", "Notifications" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Notifications": { "shape": "S2a" } } }, "output": { "type": "structure", "members": { "Pipeline": { "shape": "S2l" } } } }, "UpdatePipelineStatus": { "http": { "requestUri": "/2012-09-25/pipelines/{Id}/status" }, "input": { "type": "structure", "required": [ "Id", "Status" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Status": {} } }, "output": { "type": "structure", "members": { "Pipeline": { "shape": "S2l" } } } } }, "shapes": { "S5": { "type": "structure", "members": { "Key": {}, "FrameRate": {}, "Resolution": {}, "AspectRatio": {}, "Interlaced": {}, "Container": {}, "Encryption": { "shape": "Sc" }, "TimeSpan": { "shape": "Sg" }, "InputCaptions": { "type": "structure", "members": { "MergePolicy": {}, "CaptionSources": { "shape": "Sk" } } }, "DetectedProperties": { "type": "structure", "members": { "Width": { "type": "integer" }, "Height": { "type": "integer" }, "FrameRate": {}, "FileSize": { "type": "long" }, "DurationMillis": { "type": "long" } } } } }, "Sc": { "type": "structure", "members": { "Mode": {}, "Key": {}, "KeyMd5": {}, "InitializationVector": {} } }, "Sg": { "type": "structure", "members": { "StartTime": {}, "Duration": {} } }, "Sk": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Language": {}, "TimeOffset": {}, "Label": {}, "Encryption": { "shape": "Sc" } } } }, "St": { "type": "list", "member": { "shape": "S5" } }, "Su": { "type": "structure", "members": { "Key": {}, "ThumbnailPattern": {}, "ThumbnailEncryption": { "shape": "Sc" }, "Rotate": {}, "PresetId": {}, "SegmentDuration": {}, "Watermarks": { "shape": "Sx" }, "AlbumArt": { "shape": "S11" }, "Composition": { "shape": "S19", "deprecated": true }, "Captions": { "shape": "S1b" }, "Encryption": { "shape": "Sc" } } }, "Sx": { "type": "list", "member": { "type": "structure", "members": { "PresetWatermarkId": {}, "InputKey": {}, "Encryption": { "shape": "Sc" } } } }, "S11": { "type": "structure", "members": { "MergePolicy": {}, "Artwork": { "type": "list", "member": { "type": "structure", "members": { "InputKey": {}, "MaxWidth": {}, "MaxHeight": {}, "SizingPolicy": {}, "PaddingPolicy": {}, "AlbumArtFormat": {}, "Encryption": { "shape": "Sc" } } } } } }, "S19": { "type": "list", "member": { "type": "structure", "members": { "TimeSpan": { "shape": "Sg" } }, "deprecated": true }, "deprecated": true }, "S1b": { "type": "structure", "members": { "MergePolicy": { "deprecated": true }, "CaptionSources": { "shape": "Sk", "deprecated": true }, "CaptionFormats": { "type": "list", "member": { "type": "structure", "members": { "Format": {}, "Pattern": {}, "Encryption": { "shape": "Sc" } } } } } }, "S1l": { "type": "list", "member": {} }, "S1m": { "type": "structure", "members": { "Method": {}, "Key": {}, "KeyMd5": {}, "InitializationVector": {}, "LicenseAcquisitionUrl": {}, "KeyStoragePolicy": {} } }, "S1q": { "type": "structure", "members": { "Format": {}, "Key": {}, "KeyMd5": {}, "KeyId": {}, "InitializationVector": {}, "LicenseAcquisitionUrl": {} } }, "S1v": { "type": "map", "key": {}, "value": {} }, "S1y": { "type": "structure", "members": { "Id": {}, "Arn": {}, "PipelineId": {}, "Input": { "shape": "S5" }, "Inputs": { "shape": "St" }, "Output": { "shape": "S1z" }, "Outputs": { "type": "list", "member": { "shape": "S1z" } }, "OutputKeyPrefix": {}, "Playlists": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Format": {}, "OutputKeys": { "shape": "S1l" }, "HlsContentProtection": { "shape": "S1m" }, "PlayReadyDrm": { "shape": "S1q" }, "Status": {}, "StatusDetail": {} } } }, "Status": {}, "UserMetadata": { "shape": "S1v" }, "Timing": { "type": "structure", "members": { "SubmitTimeMillis": { "type": "long" }, "StartTimeMillis": { "type": "long" }, "FinishTimeMillis": { "type": "long" } } } } }, "S1z": { "type": "structure", "members": { "Id": {}, "Key": {}, "ThumbnailPattern": {}, "ThumbnailEncryption": { "shape": "Sc" }, "Rotate": {}, "PresetId": {}, "SegmentDuration": {}, "Status": {}, "StatusDetail": {}, "Duration": { "type": "long" }, "Width": { "type": "integer" }, "Height": { "type": "integer" }, "FrameRate": {}, "FileSize": { "type": "long" }, "DurationMillis": { "type": "long" }, "Watermarks": { "shape": "Sx" }, "AlbumArt": { "shape": "S11" }, "Composition": { "shape": "S19", "deprecated": true }, "Captions": { "shape": "S1b" }, "Encryption": { "shape": "Sc" }, "AppliedColorSpaceConversion": {} } }, "S2a": { "type": "structure", "members": { "Progressing": {}, "Completed": {}, "Warning": {}, "Error": {} } }, "S2c": { "type": "structure", "members": { "Bucket": {}, "StorageClass": {}, "Permissions": { "type": "list", "member": { "type": "structure", "members": { "GranteeType": {}, "Grantee": {}, "Access": { "type": "list", "member": {} } } } } } }, "S2l": { "type": "structure", "members": { "Id": {}, "Arn": {}, "Name": {}, "Status": {}, "InputBucket": {}, "OutputBucket": {}, "Role": {}, "AwsKmsKeyArn": {}, "Notifications": { "shape": "S2a" }, "ContentConfig": { "shape": "S2c" }, "ThumbnailConfig": { "shape": "S2c" } } }, "S2n": { "type": "list", "member": { "type": "structure", "members": { "Code": {}, "Message": {} } } }, "S2r": { "type": "structure", "members": { "Codec": {}, "CodecOptions": { "type": "map", "key": {}, "value": {} }, "KeyframesMaxDist": {}, "FixedGOP": {}, "BitRate": {}, "FrameRate": {}, "MaxFrameRate": {}, "Resolution": {}, "AspectRatio": {}, "MaxWidth": {}, "MaxHeight": {}, "DisplayAspectRatio": {}, "SizingPolicy": {}, "PaddingPolicy": {}, "Watermarks": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "MaxWidth": {}, "MaxHeight": {}, "SizingPolicy": {}, "HorizontalAlign": {}, "HorizontalOffset": {}, "VerticalAlign": {}, "VerticalOffset": {}, "Opacity": {}, "Target": {} } } } } }, "S37": { "type": "structure", "members": { "Codec": {}, "SampleRate": {}, "BitRate": {}, "Channels": {}, "AudioPackingMode": {}, "CodecOptions": { "type": "structure", "members": { "Profile": {}, "BitDepth": {}, "BitOrder": {}, "Signed": {} } } } }, "S3i": { "type": "structure", "members": { "Format": {}, "Interval": {}, "Resolution": {}, "AspectRatio": {}, "MaxWidth": {}, "MaxHeight": {}, "SizingPolicy": {}, "PaddingPolicy": {} } }, "S3m": { "type": "structure", "members": { "Id": {}, "Arn": {}, "Name": {}, "Description": {}, "Container": {}, "Audio": { "shape": "S37" }, "Video": { "shape": "S2r" }, "Thumbnails": { "shape": "S3i" }, "Type": {} } }, "S3v": { "type": "list", "member": { "shape": "S1y" } } } } },{}],64:[function(require,module,exports){ module.exports={ "pagination": { "ListJobsByPipeline": { "input_token": "PageToken", "output_token": "NextPageToken", "result_key": "Jobs" }, "ListJobsByStatus": { "input_token": "PageToken", "output_token": "NextPageToken", "result_key": "Jobs" }, "ListPipelines": { "input_token": "PageToken", "output_token": "NextPageToken", "result_key": "Pipelines" }, "ListPresets": { "input_token": "PageToken", "output_token": "NextPageToken", "result_key": "Presets" } } } },{}],65:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "JobComplete": { "delay": 30, "operation": "ReadJob", "maxAttempts": 120, "acceptors": [ { "expected": "Complete", "matcher": "path", "state": "success", "argument": "Job.Status" }, { "expected": "Canceled", "matcher": "path", "state": "failure", "argument": "Job.Status" }, { "expected": "Error", "matcher": "path", "state": "failure", "argument": "Job.Status" } ] } } } },{}],66:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "email-2010-12-01", "apiVersion": "2010-12-01", "endpointPrefix": "email", "protocol": "query", "serviceAbbreviation": "Amazon SES", "serviceFullName": "Amazon Simple Email Service", "signatureVersion": "v4", "signingName": "ses", "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" }, "operations": { "CloneReceiptRuleSet": { "input": { "type": "structure", "required": [ "RuleSetName", "OriginalRuleSetName" ], "members": { "RuleSetName": {}, "OriginalRuleSetName": {} } }, "output": { "resultWrapper": "CloneReceiptRuleSetResult", "type": "structure", "members": {} } }, "CreateConfigurationSet": { "input": { "type": "structure", "required": [ "ConfigurationSet" ], "members": { "ConfigurationSet": { "shape": "S5" } } }, "output": { "resultWrapper": "CreateConfigurationSetResult", "type": "structure", "members": {} } }, "CreateConfigurationSetEventDestination": { "input": { "type": "structure", "required": [ "ConfigurationSetName", "EventDestination" ], "members": { "ConfigurationSetName": {}, "EventDestination": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateConfigurationSetEventDestinationResult", "type": "structure", "members": {} } }, "CreateReceiptFilter": { "input": { "type": "structure", "required": [ "Filter" ], "members": { "Filter": { "shape": "So" } } }, "output": { "resultWrapper": "CreateReceiptFilterResult", "type": "structure", "members": {} } }, "CreateReceiptRule": { "input": { "type": "structure", "required": [ "RuleSetName", "Rule" ], "members": { "RuleSetName": {}, "After": {}, "Rule": { "shape": "Sw" } } }, "output": { "resultWrapper": "CreateReceiptRuleResult", "type": "structure", "members": {} } }, "CreateReceiptRuleSet": { "input": { "type": "structure", "required": [ "RuleSetName" ], "members": { "RuleSetName": {} } }, "output": { "resultWrapper": "CreateReceiptRuleSetResult", "type": "structure", "members": {} } }, "DeleteConfigurationSet": { "input": { "type": "structure", "required": [ "ConfigurationSetName" ], "members": { "ConfigurationSetName": {} } }, "output": { "resultWrapper": "DeleteConfigurationSetResult", "type": "structure", "members": {} } }, "DeleteConfigurationSetEventDestination": { "input": { "type": "structure", "required": [ "ConfigurationSetName", "EventDestinationName" ], "members": { "ConfigurationSetName": {}, "EventDestinationName": {} } }, "output": { "resultWrapper": "DeleteConfigurationSetEventDestinationResult", "type": "structure", "members": {} } }, "DeleteIdentity": { "input": { "type": "structure", "required": [ "Identity" ], "members": { "Identity": {} } }, "output": { "resultWrapper": "DeleteIdentityResult", "type": "structure", "members": {} } }, "DeleteIdentityPolicy": { "input": { "type": "structure", "required": [ "Identity", "PolicyName" ], "members": { "Identity": {}, "PolicyName": {} } }, "output": { "resultWrapper": "DeleteIdentityPolicyResult", "type": "structure", "members": {} } }, "DeleteReceiptFilter": { "input": { "type": "structure", "required": [ "FilterName" ], "members": { "FilterName": {} } }, "output": { "resultWrapper": "DeleteReceiptFilterResult", "type": "structure", "members": {} } }, "DeleteReceiptRule": { "input": { "type": "structure", "required": [ "RuleSetName", "RuleName" ], "members": { "RuleSetName": {}, "RuleName": {} } }, "output": { "resultWrapper": "DeleteReceiptRuleResult", "type": "structure", "members": {} } }, "DeleteReceiptRuleSet": { "input": { "type": "structure", "required": [ "RuleSetName" ], "members": { "RuleSetName": {} } }, "output": { "resultWrapper": "DeleteReceiptRuleSetResult", "type": "structure", "members": {} } }, "DeleteVerifiedEmailAddress": { "input": { "type": "structure", "required": [ "EmailAddress" ], "members": { "EmailAddress": {} } } }, "DescribeActiveReceiptRuleSet": { "input": { "type": "structure", "members": {} }, "output": { "resultWrapper": "DescribeActiveReceiptRuleSetResult", "type": "structure", "members": { "Metadata": { "shape": "S26" }, "Rules": { "shape": "S28" } } } }, "DescribeConfigurationSet": { "input": { "type": "structure", "required": [ "ConfigurationSetName" ], "members": { "ConfigurationSetName": {}, "ConfigurationSetAttributeNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "DescribeConfigurationSetResult", "type": "structure", "members": { "ConfigurationSet": { "shape": "S5" }, "EventDestinations": { "type": "list", "member": { "shape": "S9" } } } } }, "DescribeReceiptRule": { "input": { "type": "structure", "required": [ "RuleSetName", "RuleName" ], "members": { "RuleSetName": {}, "RuleName": {} } }, "output": { "resultWrapper": "DescribeReceiptRuleResult", "type": "structure", "members": { "Rule": { "shape": "Sw" } } } }, "DescribeReceiptRuleSet": { "input": { "type": "structure", "required": [ "RuleSetName" ], "members": { "RuleSetName": {} } }, "output": { "resultWrapper": "DescribeReceiptRuleSetResult", "type": "structure", "members": { "Metadata": { "shape": "S26" }, "Rules": { "shape": "S28" } } } }, "GetIdentityDkimAttributes": { "input": { "type": "structure", "required": [ "Identities" ], "members": { "Identities": { "shape": "S2j" } } }, "output": { "resultWrapper": "GetIdentityDkimAttributesResult", "type": "structure", "required": [ "DkimAttributes" ], "members": { "DkimAttributes": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "DkimEnabled", "DkimVerificationStatus" ], "members": { "DkimEnabled": { "type": "boolean" }, "DkimVerificationStatus": {}, "DkimTokens": { "shape": "S2o" } } } } } } }, "GetIdentityMailFromDomainAttributes": { "input": { "type": "structure", "required": [ "Identities" ], "members": { "Identities": { "shape": "S2j" } } }, "output": { "resultWrapper": "GetIdentityMailFromDomainAttributesResult", "type": "structure", "required": [ "MailFromDomainAttributes" ], "members": { "MailFromDomainAttributes": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "MailFromDomain", "MailFromDomainStatus", "BehaviorOnMXFailure" ], "members": { "MailFromDomain": {}, "MailFromDomainStatus": {}, "BehaviorOnMXFailure": {} } } } } } }, "GetIdentityNotificationAttributes": { "input": { "type": "structure", "required": [ "Identities" ], "members": { "Identities": { "shape": "S2j" } } }, "output": { "resultWrapper": "GetIdentityNotificationAttributesResult", "type": "structure", "required": [ "NotificationAttributes" ], "members": { "NotificationAttributes": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "BounceTopic", "ComplaintTopic", "DeliveryTopic", "ForwardingEnabled" ], "members": { "BounceTopic": {}, "ComplaintTopic": {}, "DeliveryTopic": {}, "ForwardingEnabled": { "type": "boolean" }, "HeadersInBounceNotificationsEnabled": { "type": "boolean" }, "HeadersInComplaintNotificationsEnabled": { "type": "boolean" }, "HeadersInDeliveryNotificationsEnabled": { "type": "boolean" } } } } } } }, "GetIdentityPolicies": { "input": { "type": "structure", "required": [ "Identity", "PolicyNames" ], "members": { "Identity": {}, "PolicyNames": { "shape": "S33" } } }, "output": { "resultWrapper": "GetIdentityPoliciesResult", "type": "structure", "required": [ "Policies" ], "members": { "Policies": { "type": "map", "key": {}, "value": {} } } } }, "GetIdentityVerificationAttributes": { "input": { "type": "structure", "required": [ "Identities" ], "members": { "Identities": { "shape": "S2j" } } }, "output": { "resultWrapper": "GetIdentityVerificationAttributesResult", "type": "structure", "required": [ "VerificationAttributes" ], "members": { "VerificationAttributes": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "VerificationStatus" ], "members": { "VerificationStatus": {}, "VerificationToken": {} } } } } } }, "GetSendQuota": { "output": { "resultWrapper": "GetSendQuotaResult", "type": "structure", "members": { "Max24HourSend": { "type": "double" }, "MaxSendRate": { "type": "double" }, "SentLast24Hours": { "type": "double" } } } }, "GetSendStatistics": { "output": { "resultWrapper": "GetSendStatisticsResult", "type": "structure", "members": { "SendDataPoints": { "type": "list", "member": { "type": "structure", "members": { "Timestamp": { "type": "timestamp" }, "DeliveryAttempts": { "type": "long" }, "Bounces": { "type": "long" }, "Complaints": { "type": "long" }, "Rejects": { "type": "long" } } } } } } }, "ListConfigurationSets": { "input": { "type": "structure", "members": { "NextToken": {}, "MaxItems": { "type": "integer" } } }, "output": { "resultWrapper": "ListConfigurationSetsResult", "type": "structure", "members": { "ConfigurationSets": { "type": "list", "member": { "shape": "S5" } }, "NextToken": {} } } }, "ListIdentities": { "input": { "type": "structure", "members": { "IdentityType": {}, "NextToken": {}, "MaxItems": { "type": "integer" } } }, "output": { "resultWrapper": "ListIdentitiesResult", "type": "structure", "required": [ "Identities" ], "members": { "Identities": { "shape": "S2j" }, "NextToken": {} } } }, "ListIdentityPolicies": { "input": { "type": "structure", "required": [ "Identity" ], "members": { "Identity": {} } }, "output": { "resultWrapper": "ListIdentityPoliciesResult", "type": "structure", "required": [ "PolicyNames" ], "members": { "PolicyNames": { "shape": "S33" } } } }, "ListReceiptFilters": { "input": { "type": "structure", "members": {} }, "output": { "resultWrapper": "ListReceiptFiltersResult", "type": "structure", "members": { "Filters": { "type": "list", "member": { "shape": "So" } } } } }, "ListReceiptRuleSets": { "input": { "type": "structure", "members": { "NextToken": {} } }, "output": { "resultWrapper": "ListReceiptRuleSetsResult", "type": "structure", "members": { "RuleSets": { "type": "list", "member": { "shape": "S26" } }, "NextToken": {} } } }, "ListVerifiedEmailAddresses": { "output": { "resultWrapper": "ListVerifiedEmailAddressesResult", "type": "structure", "members": { "VerifiedEmailAddresses": { "shape": "S40" } } } }, "PutIdentityPolicy": { "input": { "type": "structure", "required": [ "Identity", "PolicyName", "Policy" ], "members": { "Identity": {}, "PolicyName": {}, "Policy": {} } }, "output": { "resultWrapper": "PutIdentityPolicyResult", "type": "structure", "members": {} } }, "ReorderReceiptRuleSet": { "input": { "type": "structure", "required": [ "RuleSetName", "RuleNames" ], "members": { "RuleSetName": {}, "RuleNames": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "ReorderReceiptRuleSetResult", "type": "structure", "members": {} } }, "SendBounce": { "input": { "type": "structure", "required": [ "OriginalMessageId", "BounceSender", "BouncedRecipientInfoList" ], "members": { "OriginalMessageId": {}, "BounceSender": {}, "Explanation": {}, "MessageDsn": { "type": "structure", "required": [ "ReportingMta" ], "members": { "ReportingMta": {}, "ArrivalDate": { "type": "timestamp" }, "ExtensionFields": { "shape": "S4c" } } }, "BouncedRecipientInfoList": { "type": "list", "member": { "type": "structure", "required": [ "Recipient" ], "members": { "Recipient": {}, "RecipientArn": {}, "BounceType": {}, "RecipientDsnFields": { "type": "structure", "required": [ "Action", "Status" ], "members": { "FinalRecipient": {}, "Action": {}, "RemoteMta": {}, "Status": {}, "DiagnosticCode": {}, "LastAttemptDate": { "type": "timestamp" }, "ExtensionFields": { "shape": "S4c" } } } } } }, "BounceSenderArn": {} } }, "output": { "resultWrapper": "SendBounceResult", "type": "structure", "members": { "MessageId": {} } } }, "SendEmail": { "input": { "type": "structure", "required": [ "Source", "Destination", "Message" ], "members": { "Source": {}, "Destination": { "type": "structure", "members": { "ToAddresses": { "shape": "S40" }, "CcAddresses": { "shape": "S40" }, "BccAddresses": { "shape": "S40" } } }, "Message": { "type": "structure", "required": [ "Subject", "Body" ], "members": { "Subject": { "shape": "S4t" }, "Body": { "type": "structure", "members": { "Text": { "shape": "S4t" }, "Html": { "shape": "S4t" } } } } }, "ReplyToAddresses": { "shape": "S40" }, "ReturnPath": {}, "SourceArn": {}, "ReturnPathArn": {}, "Tags": { "shape": "S4x" }, "ConfigurationSetName": {} } }, "output": { "resultWrapper": "SendEmailResult", "type": "structure", "required": [ "MessageId" ], "members": { "MessageId": {} } } }, "SendRawEmail": { "input": { "type": "structure", "required": [ "RawMessage" ], "members": { "Source": {}, "Destinations": { "shape": "S40" }, "RawMessage": { "type": "structure", "required": [ "Data" ], "members": { "Data": { "type": "blob" } } }, "FromArn": {}, "SourceArn": {}, "ReturnPathArn": {}, "Tags": { "shape": "S4x" }, "ConfigurationSetName": {} } }, "output": { "resultWrapper": "SendRawEmailResult", "type": "structure", "required": [ "MessageId" ], "members": { "MessageId": {} } } }, "SetActiveReceiptRuleSet": { "input": { "type": "structure", "members": { "RuleSetName": {} } }, "output": { "resultWrapper": "SetActiveReceiptRuleSetResult", "type": "structure", "members": {} } }, "SetIdentityDkimEnabled": { "input": { "type": "structure", "required": [ "Identity", "DkimEnabled" ], "members": { "Identity": {}, "DkimEnabled": { "type": "boolean" } } }, "output": { "resultWrapper": "SetIdentityDkimEnabledResult", "type": "structure", "members": {} } }, "SetIdentityFeedbackForwardingEnabled": { "input": { "type": "structure", "required": [ "Identity", "ForwardingEnabled" ], "members": { "Identity": {}, "ForwardingEnabled": { "type": "boolean" } } }, "output": { "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", "type": "structure", "members": {} } }, "SetIdentityHeadersInNotificationsEnabled": { "input": { "type": "structure", "required": [ "Identity", "NotificationType", "Enabled" ], "members": { "Identity": {}, "NotificationType": {}, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", "type": "structure", "members": {} } }, "SetIdentityMailFromDomain": { "input": { "type": "structure", "required": [ "Identity" ], "members": { "Identity": {}, "MailFromDomain": {}, "BehaviorOnMXFailure": {} } }, "output": { "resultWrapper": "SetIdentityMailFromDomainResult", "type": "structure", "members": {} } }, "SetIdentityNotificationTopic": { "input": { "type": "structure", "required": [ "Identity", "NotificationType" ], "members": { "Identity": {}, "NotificationType": {}, "SnsTopic": {} } }, "output": { "resultWrapper": "SetIdentityNotificationTopicResult", "type": "structure", "members": {} } }, "SetReceiptRulePosition": { "input": { "type": "structure", "required": [ "RuleSetName", "RuleName" ], "members": { "RuleSetName": {}, "RuleName": {}, "After": {} } }, "output": { "resultWrapper": "SetReceiptRulePositionResult", "type": "structure", "members": {} } }, "UpdateConfigurationSetEventDestination": { "input": { "type": "structure", "required": [ "ConfigurationSetName", "EventDestination" ], "members": { "ConfigurationSetName": {}, "EventDestination": { "shape": "S9" } } }, "output": { "resultWrapper": "UpdateConfigurationSetEventDestinationResult", "type": "structure", "members": {} } }, "UpdateReceiptRule": { "input": { "type": "structure", "required": [ "RuleSetName", "Rule" ], "members": { "RuleSetName": {}, "Rule": { "shape": "Sw" } } }, "output": { "resultWrapper": "UpdateReceiptRuleResult", "type": "structure", "members": {} } }, "VerifyDomainDkim": { "input": { "type": "structure", "required": [ "Domain" ], "members": { "Domain": {} } }, "output": { "resultWrapper": "VerifyDomainDkimResult", "type": "structure", "required": [ "DkimTokens" ], "members": { "DkimTokens": { "shape": "S2o" } } } }, "VerifyDomainIdentity": { "input": { "type": "structure", "required": [ "Domain" ], "members": { "Domain": {} } }, "output": { "resultWrapper": "VerifyDomainIdentityResult", "type": "structure", "required": [ "VerificationToken" ], "members": { "VerificationToken": {} } } }, "VerifyEmailAddress": { "input": { "type": "structure", "required": [ "EmailAddress" ], "members": { "EmailAddress": {} } } }, "VerifyEmailIdentity": { "input": { "type": "structure", "required": [ "EmailAddress" ], "members": { "EmailAddress": {} } }, "output": { "resultWrapper": "VerifyEmailIdentityResult", "type": "structure", "members": {} } } }, "shapes": { "S5": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "S9": { "type": "structure", "required": [ "Name", "MatchingEventTypes" ], "members": { "Name": {}, "Enabled": { "type": "boolean" }, "MatchingEventTypes": { "type": "list", "member": {} }, "KinesisFirehoseDestination": { "type": "structure", "required": [ "IAMRoleARN", "DeliveryStreamARN" ], "members": { "IAMRoleARN": {}, "DeliveryStreamARN": {} } }, "CloudWatchDestination": { "type": "structure", "required": [ "DimensionConfigurations" ], "members": { "DimensionConfigurations": { "type": "list", "member": { "type": "structure", "required": [ "DimensionName", "DimensionValueSource", "DefaultDimensionValue" ], "members": { "DimensionName": {}, "DimensionValueSource": {}, "DefaultDimensionValue": {} } } } } } } }, "So": { "type": "structure", "required": [ "Name", "IpFilter" ], "members": { "Name": {}, "IpFilter": { "type": "structure", "required": [ "Policy", "Cidr" ], "members": { "Policy": {}, "Cidr": {} } } } }, "Sw": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "Enabled": { "type": "boolean" }, "TlsPolicy": {}, "Recipients": { "type": "list", "member": {} }, "Actions": { "type": "list", "member": { "type": "structure", "members": { "S3Action": { "type": "structure", "required": [ "BucketName" ], "members": { "TopicArn": {}, "BucketName": {}, "ObjectKeyPrefix": {}, "KmsKeyArn": {} } }, "BounceAction": { "type": "structure", "required": [ "SmtpReplyCode", "Message", "Sender" ], "members": { "TopicArn": {}, "SmtpReplyCode": {}, "StatusCode": {}, "Message": {}, "Sender": {} } }, "WorkmailAction": { "type": "structure", "required": [ "OrganizationArn" ], "members": { "TopicArn": {}, "OrganizationArn": {} } }, "LambdaAction": { "type": "structure", "required": [ "FunctionArn" ], "members": { "TopicArn": {}, "FunctionArn": {}, "InvocationType": {} } }, "StopAction": { "type": "structure", "required": [ "Scope" ], "members": { "Scope": {}, "TopicArn": {} } }, "AddHeaderAction": { "type": "structure", "required": [ "HeaderName", "HeaderValue" ], "members": { "HeaderName": {}, "HeaderValue": {} } }, "SNSAction": { "type": "structure", "required": [ "TopicArn" ], "members": { "TopicArn": {}, "Encoding": {} } } } } }, "ScanEnabled": { "type": "boolean" } } }, "S26": { "type": "structure", "members": { "Name": {}, "CreatedTimestamp": { "type": "timestamp" } } }, "S28": { "type": "list", "member": { "shape": "Sw" } }, "S2j": { "type": "list", "member": {} }, "S2o": { "type": "list", "member": {} }, "S33": { "type": "list", "member": {} }, "S40": { "type": "list", "member": {} }, "S4c": { "type": "list", "member": { "type": "structure", "required": [ "Name", "Value" ], "members": { "Name": {}, "Value": {} } } }, "S4t": { "type": "structure", "required": [ "Data" ], "members": { "Data": {}, "Charset": {} } }, "S4x": { "type": "list", "member": { "type": "structure", "required": [ "Name", "Value" ], "members": { "Name": {}, "Value": {} } } } } } },{}],67:[function(require,module,exports){ module.exports={ "pagination": { "ListIdentities": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxItems", "result_key": "Identities" }, "ListVerifiedEmailAddresses": { "result_key": "VerifiedEmailAddresses" } } } },{}],68:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "IdentityExists": { "delay": 3, "operation": "GetIdentityVerificationAttributes", "maxAttempts": 20, "acceptors": [ { "expected": "Success", "matcher": "pathAll", "state": "success", "argument": "VerificationAttributes.*.VerificationStatus" } ] } } } },{}],69:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "events-2015-10-07", "apiVersion": "2015-10-07", "endpointPrefix": "events", "jsonVersion": "1.1", "serviceFullName": "Amazon CloudWatch Events", "signatureVersion": "v4", "targetPrefix": "AWSEvents", "protocol": "json" }, "operations": { "DeleteRule": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } } }, "DescribeRule": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "type": "structure", "members": { "Name": {}, "Arn": {}, "EventPattern": {}, "ScheduleExpression": {}, "State": {}, "Description": {}, "RoleArn": {} } } }, "DisableRule": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } } }, "EnableRule": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } } }, "ListRuleNamesByTarget": { "input": { "type": "structure", "required": [ "TargetArn" ], "members": { "TargetArn": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "RuleNames": { "type": "list", "member": {} }, "NextToken": {} } } }, "ListRules": { "input": { "type": "structure", "members": { "NamePrefix": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Rules": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Arn": {}, "EventPattern": {}, "State": {}, "Description": {}, "ScheduleExpression": {}, "RoleArn": {} } } }, "NextToken": {} } } }, "ListTargetsByRule": { "input": { "type": "structure", "required": [ "Rule" ], "members": { "Rule": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Targets": { "shape": "Sp" }, "NextToken": {} } } }, "PutEvents": { "input": { "type": "structure", "required": [ "Entries" ], "members": { "Entries": { "type": "list", "member": { "type": "structure", "members": { "Time": { "type": "timestamp" }, "Source": {}, "Resources": { "type": "list", "member": {} }, "DetailType": {}, "Detail": {} } } } } }, "output": { "type": "structure", "members": { "FailedEntryCount": { "type": "integer" }, "Entries": { "type": "list", "member": { "type": "structure", "members": { "EventId": {}, "ErrorCode": {}, "ErrorMessage": {} } } } } } }, "PutRule": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "ScheduleExpression": {}, "EventPattern": {}, "State": {}, "Description": {}, "RoleArn": {} } }, "output": { "type": "structure", "members": { "RuleArn": {} } } }, "PutTargets": { "input": { "type": "structure", "required": [ "Rule", "Targets" ], "members": { "Rule": {}, "Targets": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "FailedEntryCount": { "type": "integer" }, "FailedEntries": { "type": "list", "member": { "type": "structure", "members": { "TargetId": {}, "ErrorCode": {}, "ErrorMessage": {} } } } } } }, "RemoveTargets": { "input": { "type": "structure", "required": [ "Rule", "Ids" ], "members": { "Rule": {}, "Ids": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "FailedEntryCount": { "type": "integer" }, "FailedEntries": { "type": "list", "member": { "type": "structure", "members": { "TargetId": {}, "ErrorCode": {}, "ErrorMessage": {} } } } } } }, "TestEventPattern": { "input": { "type": "structure", "required": [ "EventPattern", "Event" ], "members": { "EventPattern": {}, "Event": {} } }, "output": { "type": "structure", "members": { "Result": { "type": "boolean" } } } } }, "shapes": { "Sp": { "type": "list", "member": { "type": "structure", "required": [ "Id", "Arn" ], "members": { "Id": {}, "Arn": {}, "Input": {}, "InputPath": {} } } } }, "examples": {} } },{}],70:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2015-08-04", "endpointPrefix": "firehose", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Firehose", "serviceFullName": "Amazon Kinesis Firehose", "signatureVersion": "v4", "targetPrefix": "Firehose_20150804", "uid": "firehose-2015-08-04" }, "operations": { "CreateDeliveryStream": { "input": { "type": "structure", "required": [ "DeliveryStreamName" ], "members": { "DeliveryStreamName": {}, "S3DestinationConfiguration": { "shape": "S3", "deprecated": true }, "ExtendedS3DestinationConfiguration": { "type": "structure", "required": [ "RoleARN", "BucketARN" ], "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupConfiguration": { "shape": "S3" } } }, "RedshiftDestinationConfiguration": { "type": "structure", "required": [ "RoleARN", "ClusterJDBCURL", "CopyCommand", "Username", "Password", "S3Configuration" ], "members": { "RoleARN": {}, "ClusterJDBCURL": {}, "CopyCommand": { "shape": "Sv" }, "Username": { "shape": "Sz" }, "Password": { "shape": "S10" }, "RetryOptions": { "shape": "S11" }, "S3Configuration": { "shape": "S3" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupConfiguration": { "shape": "S3" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } }, "ElasticsearchDestinationConfiguration": { "type": "structure", "required": [ "RoleARN", "DomainARN", "IndexName", "TypeName", "S3Configuration" ], "members": { "RoleARN": {}, "DomainARN": {}, "IndexName": {}, "TypeName": {}, "IndexRotationPeriod": {}, "BufferingHints": { "shape": "S19" }, "RetryOptions": { "shape": "S1c" }, "S3BackupMode": {}, "S3Configuration": { "shape": "S3" }, "ProcessingConfiguration": { "shape": "Sk" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } } } }, "output": { "type": "structure", "members": { "DeliveryStreamARN": {} } } }, "DeleteDeliveryStream": { "input": { "type": "structure", "required": [ "DeliveryStreamName" ], "members": { "DeliveryStreamName": {} } }, "output": { "type": "structure", "members": {} } }, "DescribeDeliveryStream": { "input": { "type": "structure", "required": [ "DeliveryStreamName" ], "members": { "DeliveryStreamName": {}, "Limit": { "type": "integer" }, "ExclusiveStartDestinationId": {} } }, "output": { "type": "structure", "required": [ "DeliveryStreamDescription" ], "members": { "DeliveryStreamDescription": { "type": "structure", "required": [ "DeliveryStreamName", "DeliveryStreamARN", "DeliveryStreamStatus", "VersionId", "Destinations", "HasMoreDestinations" ], "members": { "DeliveryStreamName": {}, "DeliveryStreamARN": {}, "DeliveryStreamStatus": {}, "VersionId": {}, "CreateTimestamp": { "type": "timestamp" }, "LastUpdateTimestamp": { "type": "timestamp" }, "Destinations": { "type": "list", "member": { "type": "structure", "required": [ "DestinationId" ], "members": { "DestinationId": {}, "S3DestinationDescription": { "shape": "S1t" }, "ExtendedS3DestinationDescription": { "type": "structure", "required": [ "RoleARN", "BucketARN", "BufferingHints", "CompressionFormat", "EncryptionConfiguration" ], "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupDescription": { "shape": "S1t" } } }, "RedshiftDestinationDescription": { "type": "structure", "required": [ "RoleARN", "ClusterJDBCURL", "CopyCommand", "Username", "S3DestinationDescription" ], "members": { "RoleARN": {}, "ClusterJDBCURL": {}, "CopyCommand": { "shape": "Sv" }, "Username": { "shape": "Sz" }, "RetryOptions": { "shape": "S11" }, "S3DestinationDescription": { "shape": "S1t" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupDescription": { "shape": "S1t" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } }, "ElasticsearchDestinationDescription": { "type": "structure", "members": { "RoleARN": {}, "DomainARN": {}, "IndexName": {}, "TypeName": {}, "IndexRotationPeriod": {}, "BufferingHints": { "shape": "S19" }, "RetryOptions": { "shape": "S1c" }, "S3BackupMode": {}, "S3DestinationDescription": { "shape": "S1t" }, "ProcessingConfiguration": { "shape": "Sk" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } } } } }, "HasMoreDestinations": { "type": "boolean" } } } } } }, "ListDeliveryStreams": { "input": { "type": "structure", "members": { "Limit": { "type": "integer" }, "ExclusiveStartDeliveryStreamName": {} } }, "output": { "type": "structure", "required": [ "DeliveryStreamNames", "HasMoreDeliveryStreams" ], "members": { "DeliveryStreamNames": { "type": "list", "member": {} }, "HasMoreDeliveryStreams": { "type": "boolean" } } } }, "PutRecord": { "input": { "type": "structure", "required": [ "DeliveryStreamName", "Record" ], "members": { "DeliveryStreamName": {}, "Record": { "shape": "S22" } } }, "output": { "type": "structure", "required": [ "RecordId" ], "members": { "RecordId": {} } } }, "PutRecordBatch": { "input": { "type": "structure", "required": [ "DeliveryStreamName", "Records" ], "members": { "DeliveryStreamName": {}, "Records": { "type": "list", "member": { "shape": "S22" } } } }, "output": { "type": "structure", "required": [ "FailedPutCount", "RequestResponses" ], "members": { "FailedPutCount": { "type": "integer" }, "RequestResponses": { "type": "list", "member": { "type": "structure", "members": { "RecordId": {}, "ErrorCode": {}, "ErrorMessage": {} } } } } } }, "UpdateDestination": { "input": { "type": "structure", "required": [ "DeliveryStreamName", "CurrentDeliveryStreamVersionId", "DestinationId" ], "members": { "DeliveryStreamName": {}, "CurrentDeliveryStreamVersionId": {}, "DestinationId": {}, "S3DestinationUpdate": { "shape": "S2f", "deprecated": true }, "ExtendedS3DestinationUpdate": { "type": "structure", "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupUpdate": { "shape": "S2f" } } }, "RedshiftDestinationUpdate": { "type": "structure", "members": { "RoleARN": {}, "ClusterJDBCURL": {}, "CopyCommand": { "shape": "Sv" }, "Username": { "shape": "Sz" }, "Password": { "shape": "S10" }, "RetryOptions": { "shape": "S11" }, "S3Update": { "shape": "S2f" }, "ProcessingConfiguration": { "shape": "Sk" }, "S3BackupMode": {}, "S3BackupUpdate": { "shape": "S2f" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } }, "ElasticsearchDestinationUpdate": { "type": "structure", "members": { "RoleARN": {}, "DomainARN": {}, "IndexName": {}, "TypeName": {}, "IndexRotationPeriod": {}, "BufferingHints": { "shape": "S19" }, "RetryOptions": { "shape": "S1c" }, "S3Update": { "shape": "S2f" }, "ProcessingConfiguration": { "shape": "Sk" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } } } }, "output": { "type": "structure", "members": {} } } }, "shapes": { "S3": { "type": "structure", "required": [ "RoleARN", "BucketARN" ], "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } }, "S7": { "type": "structure", "members": { "SizeInMBs": { "type": "integer" }, "IntervalInSeconds": { "type": "integer" } } }, "Sb": { "type": "structure", "members": { "NoEncryptionConfig": {}, "KMSEncryptionConfig": { "type": "structure", "required": [ "AWSKMSKeyARN" ], "members": { "AWSKMSKeyARN": {} } } } }, "Sf": { "type": "structure", "members": { "Enabled": { "type": "boolean" }, "LogGroupName": {}, "LogStreamName": {} } }, "Sk": { "type": "structure", "members": { "Enabled": { "type": "boolean" }, "Processors": { "type": "list", "member": { "type": "structure", "required": [ "Type" ], "members": { "Type": {}, "Parameters": { "type": "list", "member": { "type": "structure", "required": [ "ParameterName", "ParameterValue" ], "members": { "ParameterName": {}, "ParameterValue": {} } } } } } } } }, "Sv": { "type": "structure", "required": [ "DataTableName" ], "members": { "DataTableName": {}, "DataTableColumns": {}, "CopyOptions": {} } }, "Sz": { "type": "string", "sensitive": true }, "S10": { "type": "string", "sensitive": true }, "S11": { "type": "structure", "members": { "DurationInSeconds": { "type": "integer" } } }, "S19": { "type": "structure", "members": { "IntervalInSeconds": { "type": "integer" }, "SizeInMBs": { "type": "integer" } } }, "S1c": { "type": "structure", "members": { "DurationInSeconds": { "type": "integer" } } }, "S1t": { "type": "structure", "required": [ "RoleARN", "BucketARN", "BufferingHints", "CompressionFormat", "EncryptionConfiguration" ], "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } }, "S22": { "type": "structure", "required": [ "Data" ], "members": { "Data": { "type": "blob" } } }, "S2f": { "type": "structure", "members": { "RoleARN": {}, "BucketARN": {}, "Prefix": {}, "BufferingHints": { "shape": "S7" }, "CompressionFormat": {}, "EncryptionConfiguration": { "shape": "Sb" }, "CloudWatchLoggingOptions": { "shape": "Sf" } } } } } },{}],71:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "gamelift-2015-10-01", "apiVersion": "2015-10-01", "endpointPrefix": "gamelift", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "Amazon GameLift", "signatureVersion": "v4", "targetPrefix": "GameLift" }, "operations": { "CreateAlias": { "input": { "type": "structure", "required": [ "Name", "RoutingStrategy" ], "members": { "Name": {}, "Description": {}, "RoutingStrategy": { "shape": "S4" } } }, "output": { "type": "structure", "members": { "Alias": { "shape": "S9" } } } }, "CreateBuild": { "input": { "type": "structure", "members": { "Name": {}, "Version": {}, "StorageLocation": { "shape": "Sd" }, "OperatingSystem": {} } }, "output": { "type": "structure", "members": { "Build": { "shape": "Sh" }, "UploadCredentials": { "shape": "Sl" }, "StorageLocation": { "shape": "Sd" } } } }, "CreateFleet": { "input": { "type": "structure", "required": [ "Name", "BuildId", "EC2InstanceType" ], "members": { "Name": {}, "Description": {}, "BuildId": {}, "ServerLaunchPath": {}, "ServerLaunchParameters": {}, "LogPaths": { "shape": "Sn" }, "EC2InstanceType": {}, "EC2InboundPermissions": { "shape": "Sp" }, "NewGameSessionProtectionPolicy": {}, "RuntimeConfiguration": { "shape": "Sv" }, "ResourceCreationLimitPolicy": { "shape": "Sz" } } }, "output": { "type": "structure", "members": { "FleetAttributes": { "shape": "S12" } } } }, "CreateGameSession": { "input": { "type": "structure", "required": [ "MaximumPlayerSessionCount" ], "members": { "FleetId": {}, "AliasId": {}, "MaximumPlayerSessionCount": { "type": "integer" }, "Name": {}, "GameProperties": { "shape": "S15" }, "CreatorId": {}, "GameSessionId": {} } }, "output": { "type": "structure", "members": { "GameSession": { "shape": "S1b" } } } }, "CreatePlayerSession": { "input": { "type": "structure", "required": [ "GameSessionId", "PlayerId" ], "members": { "GameSessionId": {}, "PlayerId": {} } }, "output": { "type": "structure", "members": { "PlayerSession": { "shape": "S1i" } } } }, "CreatePlayerSessions": { "input": { "type": "structure", "required": [ "GameSessionId", "PlayerIds" ], "members": { "GameSessionId": {}, "PlayerIds": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "PlayerSessions": { "shape": "S1o" } } } }, "DeleteAlias": { "input": { "type": "structure", "required": [ "AliasId" ], "members": { "AliasId": {} } } }, "DeleteBuild": { "input": { "type": "structure", "required": [ "BuildId" ], "members": { "BuildId": {} } } }, "DeleteFleet": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {} } } }, "DeleteScalingPolicy": { "input": { "type": "structure", "required": [ "Name", "FleetId" ], "members": { "Name": {}, "FleetId": {} } } }, "DescribeAlias": { "input": { "type": "structure", "required": [ "AliasId" ], "members": { "AliasId": {} } }, "output": { "type": "structure", "members": { "Alias": { "shape": "S9" } } } }, "DescribeBuild": { "input": { "type": "structure", "required": [ "BuildId" ], "members": { "BuildId": {} } }, "output": { "type": "structure", "members": { "Build": { "shape": "Sh" } } } }, "DescribeEC2InstanceLimits": { "input": { "type": "structure", "members": { "EC2InstanceType": {} } }, "output": { "type": "structure", "members": { "EC2InstanceLimits": { "type": "list", "member": { "type": "structure", "members": { "EC2InstanceType": {}, "CurrentInstances": { "type": "integer" }, "InstanceLimit": { "type": "integer" } } } } } } }, "DescribeFleetAttributes": { "input": { "type": "structure", "members": { "FleetIds": { "shape": "S22" }, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "FleetAttributes": { "type": "list", "member": { "shape": "S12" } }, "NextToken": {} } } }, "DescribeFleetCapacity": { "input": { "type": "structure", "members": { "FleetIds": { "shape": "S22" }, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "FleetCapacity": { "type": "list", "member": { "type": "structure", "members": { "FleetId": {}, "InstanceType": {}, "InstanceCounts": { "type": "structure", "members": { "DESIRED": { "type": "integer" }, "MINIMUM": { "type": "integer" }, "MAXIMUM": { "type": "integer" }, "PENDING": { "type": "integer" }, "ACTIVE": { "type": "integer" }, "IDLE": { "type": "integer" }, "TERMINATING": { "type": "integer" } } } } } }, "NextToken": {} } } }, "DescribeFleetEvents": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Events": { "type": "list", "member": { "type": "structure", "members": { "EventId": {}, "ResourceId": {}, "EventCode": {}, "Message": {}, "EventTime": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeFleetPortSettings": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {} } }, "output": { "type": "structure", "members": { "InboundPermissions": { "shape": "Sp" } } } }, "DescribeFleetUtilization": { "input": { "type": "structure", "members": { "FleetIds": { "shape": "S22" }, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "FleetUtilization": { "type": "list", "member": { "type": "structure", "members": { "FleetId": {}, "ActiveServerProcessCount": { "type": "integer" }, "ActiveGameSessionCount": { "type": "integer" }, "CurrentPlayerSessionCount": { "type": "integer" }, "MaximumPlayerSessionCount": { "type": "integer" } } } }, "NextToken": {} } } }, "DescribeGameSessionDetails": { "input": { "type": "structure", "members": { "FleetId": {}, "GameSessionId": {}, "AliasId": {}, "StatusFilter": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "GameSessionDetails": { "type": "list", "member": { "type": "structure", "members": { "GameSession": { "shape": "S1b" }, "ProtectionPolicy": {} } } }, "NextToken": {} } } }, "DescribeGameSessions": { "input": { "type": "structure", "members": { "FleetId": {}, "GameSessionId": {}, "AliasId": {}, "StatusFilter": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "GameSessions": { "shape": "S2r" }, "NextToken": {} } } }, "DescribeInstances": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "InstanceId": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Instances": { "type": "list", "member": { "type": "structure", "members": { "FleetId": {}, "InstanceId": {}, "IpAddress": {}, "OperatingSystem": {}, "Type": {}, "Status": {}, "CreationTime": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribePlayerSessions": { "input": { "type": "structure", "members": { "GameSessionId": {}, "PlayerId": {}, "PlayerSessionId": {}, "PlayerSessionStatusFilter": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "PlayerSessions": { "shape": "S1o" }, "NextToken": {} } } }, "DescribeRuntimeConfiguration": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {} } }, "output": { "type": "structure", "members": { "RuntimeConfiguration": { "shape": "Sv" } } } }, "DescribeScalingPolicies": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "StatusFilter": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "ScalingPolicies": { "type": "list", "member": { "type": "structure", "members": { "FleetId": {}, "Name": {}, "Status": {}, "ScalingAdjustment": { "type": "integer" }, "ScalingAdjustmentType": {}, "ComparisonOperator": {}, "Threshold": { "type": "double" }, "EvaluationPeriods": { "type": "integer" }, "MetricName": {} } } }, "NextToken": {} } } }, "GetGameSessionLogUrl": { "input": { "type": "structure", "required": [ "GameSessionId" ], "members": { "GameSessionId": {} } }, "output": { "type": "structure", "members": { "PreSignedUrl": {} } } }, "GetInstanceAccess": { "input": { "type": "structure", "required": [ "FleetId", "InstanceId" ], "members": { "FleetId": {}, "InstanceId": {} } }, "output": { "type": "structure", "members": { "InstanceAccess": { "type": "structure", "members": { "FleetId": {}, "InstanceId": {}, "IpAddress": {}, "OperatingSystem": {}, "Credentials": { "type": "structure", "members": { "UserName": {}, "Secret": {} }, "sensitive": true } } } } } }, "ListAliases": { "input": { "type": "structure", "members": { "RoutingStrategyType": {}, "Name": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Aliases": { "type": "list", "member": { "shape": "S9" } }, "NextToken": {} } } }, "ListBuilds": { "input": { "type": "structure", "members": { "Status": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Builds": { "type": "list", "member": { "shape": "Sh" } }, "NextToken": {} } } }, "ListFleets": { "input": { "type": "structure", "members": { "BuildId": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "FleetIds": { "shape": "S22" }, "NextToken": {} } } }, "PutScalingPolicy": { "input": { "type": "structure", "required": [ "Name", "FleetId", "ScalingAdjustment", "ScalingAdjustmentType", "Threshold", "ComparisonOperator", "EvaluationPeriods", "MetricName" ], "members": { "Name": {}, "FleetId": {}, "ScalingAdjustment": { "type": "integer" }, "ScalingAdjustmentType": {}, "Threshold": { "type": "double" }, "ComparisonOperator": {}, "EvaluationPeriods": { "type": "integer" }, "MetricName": {} } }, "output": { "type": "structure", "members": { "Name": {} } } }, "RequestUploadCredentials": { "input": { "type": "structure", "required": [ "BuildId" ], "members": { "BuildId": {} } }, "output": { "type": "structure", "members": { "UploadCredentials": { "shape": "Sl" }, "StorageLocation": { "shape": "Sd" } } } }, "ResolveAlias": { "input": { "type": "structure", "required": [ "AliasId" ], "members": { "AliasId": {} } }, "output": { "type": "structure", "members": { "FleetId": {} } } }, "SearchGameSessions": { "input": { "type": "structure", "members": { "FleetId": {}, "AliasId": {}, "FilterExpression": {}, "SortExpression": {}, "Limit": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "GameSessions": { "shape": "S2r" }, "NextToken": {} } } }, "UpdateAlias": { "input": { "type": "structure", "required": [ "AliasId" ], "members": { "AliasId": {}, "Name": {}, "Description": {}, "RoutingStrategy": { "shape": "S4" } } }, "output": { "type": "structure", "members": { "Alias": { "shape": "S9" } } } }, "UpdateBuild": { "input": { "type": "structure", "required": [ "BuildId" ], "members": { "BuildId": {}, "Name": {}, "Version": {} } }, "output": { "type": "structure", "members": { "Build": { "shape": "Sh" } } } }, "UpdateFleetAttributes": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "Name": {}, "Description": {}, "NewGameSessionProtectionPolicy": {}, "ResourceCreationLimitPolicy": { "shape": "Sz" } } }, "output": { "type": "structure", "members": { "FleetId": {} } } }, "UpdateFleetCapacity": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "DesiredInstances": { "type": "integer" }, "MinSize": { "type": "integer" }, "MaxSize": { "type": "integer" } } }, "output": { "type": "structure", "members": { "FleetId": {} } } }, "UpdateFleetPortSettings": { "input": { "type": "structure", "required": [ "FleetId" ], "members": { "FleetId": {}, "InboundPermissionAuthorizations": { "shape": "Sp" }, "InboundPermissionRevocations": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "FleetId": {} } } }, "UpdateGameSession": { "input": { "type": "structure", "required": [ "GameSessionId" ], "members": { "GameSessionId": {}, "MaximumPlayerSessionCount": { "type": "integer" }, "Name": {}, "PlayerSessionCreationPolicy": {}, "ProtectionPolicy": {} } }, "output": { "type": "structure", "members": { "GameSession": { "shape": "S1b" } } } }, "UpdateRuntimeConfiguration": { "input": { "type": "structure", "required": [ "FleetId", "RuntimeConfiguration" ], "members": { "FleetId": {}, "RuntimeConfiguration": { "shape": "Sv" } } }, "output": { "type": "structure", "members": { "RuntimeConfiguration": { "shape": "Sv" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "Type": {}, "FleetId": {}, "Message": {} } }, "S9": { "type": "structure", "members": { "AliasId": {}, "Name": {}, "Description": {}, "RoutingStrategy": { "shape": "S4" }, "CreationTime": { "type": "timestamp" }, "LastUpdatedTime": { "type": "timestamp" } } }, "Sd": { "type": "structure", "members": { "Bucket": {}, "Key": {}, "RoleArn": {} } }, "Sh": { "type": "structure", "members": { "BuildId": {}, "Name": {}, "Version": {}, "Status": {}, "SizeOnDisk": { "type": "long" }, "OperatingSystem": {}, "CreationTime": { "type": "timestamp" } } }, "Sl": { "type": "structure", "members": { "AccessKeyId": {}, "SecretAccessKey": {}, "SessionToken": {} }, "sensitive": true }, "Sn": { "type": "list", "member": {} }, "Sp": { "type": "list", "member": { "type": "structure", "required": [ "FromPort", "ToPort", "IpRange", "Protocol" ], "members": { "FromPort": { "type": "integer" }, "ToPort": { "type": "integer" }, "IpRange": {}, "Protocol": {} } } }, "Sv": { "type": "structure", "members": { "ServerProcesses": { "type": "list", "member": { "type": "structure", "required": [ "LaunchPath", "ConcurrentExecutions" ], "members": { "LaunchPath": {}, "Parameters": {}, "ConcurrentExecutions": { "type": "integer" } } } } } }, "Sz": { "type": "structure", "members": { "NewGameSessionsPerCreator": { "type": "integer" }, "PolicyPeriodInMinutes": { "type": "integer" } } }, "S12": { "type": "structure", "members": { "FleetId": {}, "Description": {}, "Name": {}, "CreationTime": { "type": "timestamp" }, "TerminationTime": { "type": "timestamp" }, "Status": {}, "BuildId": {}, "ServerLaunchPath": {}, "ServerLaunchParameters": {}, "LogPaths": { "shape": "Sn" }, "NewGameSessionProtectionPolicy": {}, "OperatingSystem": {}, "ResourceCreationLimitPolicy": { "shape": "Sz" } } }, "S15": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {} } } }, "S1b": { "type": "structure", "members": { "GameSessionId": {}, "Name": {}, "FleetId": {}, "CreationTime": { "type": "timestamp" }, "TerminationTime": { "type": "timestamp" }, "CurrentPlayerSessionCount": { "type": "integer" }, "MaximumPlayerSessionCount": { "type": "integer" }, "Status": {}, "GameProperties": { "shape": "S15" }, "IpAddress": {}, "Port": { "type": "integer" }, "PlayerSessionCreationPolicy": {}, "CreatorId": {} } }, "S1i": { "type": "structure", "members": { "PlayerSessionId": {}, "PlayerId": {}, "GameSessionId": {}, "FleetId": {}, "CreationTime": { "type": "timestamp" }, "TerminationTime": { "type": "timestamp" }, "Status": {}, "IpAddress": {}, "Port": { "type": "integer" } } }, "S1o": { "type": "list", "member": { "shape": "S1i" } }, "S22": { "type": "list", "member": {} }, "S2r": { "type": "list", "member": { "shape": "S1b" } } } } },{}],72:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2016-02-16", "endpointPrefix": "inspector", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "Amazon Inspector", "signatureVersion": "v4", "targetPrefix": "InspectorService", "uid": "inspector-2016-02-16" }, "operations": { "AddAttributesToFindings": { "input": { "type": "structure", "required": [ "findingArns", "attributes" ], "members": { "findingArns": { "shape": "S2" }, "attributes": { "shape": "S4" } } }, "output": { "type": "structure", "required": [ "failedItems" ], "members": { "failedItems": { "shape": "S9" } } } }, "CreateAssessmentTarget": { "input": { "type": "structure", "required": [ "assessmentTargetName", "resourceGroupArn" ], "members": { "assessmentTargetName": {}, "resourceGroupArn": {} } }, "output": { "type": "structure", "required": [ "assessmentTargetArn" ], "members": { "assessmentTargetArn": {} } } }, "CreateAssessmentTemplate": { "input": { "type": "structure", "required": [ "assessmentTargetArn", "assessmentTemplateName", "durationInSeconds", "rulesPackageArns" ], "members": { "assessmentTargetArn": {}, "assessmentTemplateName": {}, "durationInSeconds": { "type": "integer" }, "rulesPackageArns": { "shape": "Sj" }, "userAttributesForFindings": { "shape": "S4" } } }, "output": { "type": "structure", "required": [ "assessmentTemplateArn" ], "members": { "assessmentTemplateArn": {} } } }, "CreateResourceGroup": { "input": { "type": "structure", "required": [ "resourceGroupTags" ], "members": { "resourceGroupTags": { "shape": "Sm" } } }, "output": { "type": "structure", "required": [ "resourceGroupArn" ], "members": { "resourceGroupArn": {} } } }, "DeleteAssessmentRun": { "input": { "type": "structure", "required": [ "assessmentRunArn" ], "members": { "assessmentRunArn": {} } } }, "DeleteAssessmentTarget": { "input": { "type": "structure", "required": [ "assessmentTargetArn" ], "members": { "assessmentTargetArn": {} } } }, "DeleteAssessmentTemplate": { "input": { "type": "structure", "required": [ "assessmentTemplateArn" ], "members": { "assessmentTemplateArn": {} } } }, "DescribeAssessmentRuns": { "input": { "type": "structure", "required": [ "assessmentRunArns" ], "members": { "assessmentRunArns": { "shape": "Sv" } } }, "output": { "type": "structure", "required": [ "assessmentRuns", "failedItems" ], "members": { "assessmentRuns": { "type": "list", "member": { "type": "structure", "required": [ "arn", "name", "assessmentTemplateArn", "state", "durationInSeconds", "rulesPackageArns", "userAttributesForFindings", "createdAt", "stateChangedAt", "dataCollected", "stateChanges", "notifications" ], "members": { "arn": {}, "name": {}, "assessmentTemplateArn": {}, "state": {}, "durationInSeconds": { "type": "integer" }, "rulesPackageArns": { "type": "list", "member": {} }, "userAttributesForFindings": { "shape": "S4" }, "createdAt": { "type": "timestamp" }, "startedAt": { "type": "timestamp" }, "completedAt": { "type": "timestamp" }, "stateChangedAt": { "type": "timestamp" }, "dataCollected": { "type": "boolean" }, "stateChanges": { "type": "list", "member": { "type": "structure", "required": [ "stateChangedAt", "state" ], "members": { "stateChangedAt": { "type": "timestamp" }, "state": {} } } }, "notifications": { "type": "list", "member": { "type": "structure", "required": [ "date", "event", "error" ], "members": { "date": { "type": "timestamp" }, "event": {}, "message": {}, "error": { "type": "boolean" }, "snsTopicArn": {}, "snsPublishStatusCode": {} } } } } } }, "failedItems": { "shape": "S9" } } } }, "DescribeAssessmentTargets": { "input": { "type": "structure", "required": [ "assessmentTargetArns" ], "members": { "assessmentTargetArns": { "shape": "Sv" } } }, "output": { "type": "structure", "required": [ "assessmentTargets", "failedItems" ], "members": { "assessmentTargets": { "type": "list", "member": { "type": "structure", "required": [ "arn", "name", "resourceGroupArn", "createdAt", "updatedAt" ], "members": { "arn": {}, "name": {}, "resourceGroupArn": {}, "createdAt": { "type": "timestamp" }, "updatedAt": { "type": "timestamp" } } } }, "failedItems": { "shape": "S9" } } } }, "DescribeAssessmentTemplates": { "input": { "type": "structure", "required": [ "assessmentTemplateArns" ], "members": { "assessmentTemplateArns": { "shape": "Sv" } } }, "output": { "type": "structure", "required": [ "assessmentTemplates", "failedItems" ], "members": { "assessmentTemplates": { "type": "list", "member": { "type": "structure", "required": [ "arn", "name", "assessmentTargetArn", "durationInSeconds", "rulesPackageArns", "userAttributesForFindings", "createdAt" ], "members": { "arn": {}, "name": {}, "assessmentTargetArn": {}, "durationInSeconds": { "type": "integer" }, "rulesPackageArns": { "shape": "Sj" }, "userAttributesForFindings": { "shape": "S4" }, "createdAt": { "type": "timestamp" } } } }, "failedItems": { "shape": "S9" } } } }, "DescribeCrossAccountAccessRole": { "output": { "type": "structure", "required": [ "roleArn", "valid", "registeredAt" ], "members": { "roleArn": {}, "valid": { "type": "boolean" }, "registeredAt": { "type": "timestamp" } } } }, "DescribeFindings": { "input": { "type": "structure", "required": [ "findingArns" ], "members": { "findingArns": { "shape": "Sv" }, "locale": {} } }, "output": { "type": "structure", "required": [ "findings", "failedItems" ], "members": { "findings": { "type": "list", "member": { "type": "structure", "required": [ "arn", "attributes", "userAttributes", "createdAt", "updatedAt" ], "members": { "arn": {}, "schemaVersion": { "type": "integer" }, "service": {}, "serviceAttributes": { "type": "structure", "required": [ "schemaVersion" ], "members": { "schemaVersion": { "type": "integer" }, "assessmentRunArn": {}, "rulesPackageArn": {} } }, "assetType": {}, "assetAttributes": { "type": "structure", "required": [ "schemaVersion" ], "members": { "schemaVersion": { "type": "integer" }, "agentId": {}, "autoScalingGroup": {}, "amiId": {}, "hostname": {}, "ipv4Addresses": { "type": "list", "member": {} } } }, "id": {}, "title": {}, "description": {}, "recommendation": {}, "severity": {}, "numericSeverity": { "type": "double" }, "confidence": { "type": "integer" }, "indicatorOfCompromise": { "type": "boolean" }, "attributes": { "shape": "S24" }, "userAttributes": { "shape": "S4" }, "createdAt": { "type": "timestamp" }, "updatedAt": { "type": "timestamp" } } } }, "failedItems": { "shape": "S9" } } } }, "DescribeResourceGroups": { "input": { "type": "structure", "required": [ "resourceGroupArns" ], "members": { "resourceGroupArns": { "shape": "Sv" } } }, "output": { "type": "structure", "required": [ "resourceGroups", "failedItems" ], "members": { "resourceGroups": { "type": "list", "member": { "type": "structure", "required": [ "arn", "tags", "createdAt" ], "members": { "arn": {}, "tags": { "shape": "Sm" }, "createdAt": { "type": "timestamp" } } } }, "failedItems": { "shape": "S9" } } } }, "DescribeRulesPackages": { "input": { "type": "structure", "required": [ "rulesPackageArns" ], "members": { "rulesPackageArns": { "shape": "Sv" }, "locale": {} } }, "output": { "type": "structure", "required": [ "rulesPackages", "failedItems" ], "members": { "rulesPackages": { "type": "list", "member": { "type": "structure", "required": [ "arn", "name", "version", "provider" ], "members": { "arn": {}, "name": {}, "version": {}, "provider": {}, "description": {} } } }, "failedItems": { "shape": "S9" } } } }, "GetTelemetryMetadata": { "input": { "type": "structure", "required": [ "assessmentRunArn" ], "members": { "assessmentRunArn": {} } }, "output": { "type": "structure", "required": [ "telemetryMetadata" ], "members": { "telemetryMetadata": { "shape": "S2i" } } } }, "ListAssessmentRunAgents": { "input": { "type": "structure", "required": [ "assessmentRunArn" ], "members": { "assessmentRunArn": {}, "filter": { "type": "structure", "required": [ "agentHealths", "agentHealthCodes" ], "members": { "agentHealths": { "type": "list", "member": {} }, "agentHealthCodes": { "type": "list", "member": {} } } }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "assessmentRunAgents" ], "members": { "assessmentRunAgents": { "type": "list", "member": { "type": "structure", "required": [ "agentId", "assessmentRunArn", "agentHealth", "agentHealthCode", "telemetryMetadata" ], "members": { "agentId": {}, "assessmentRunArn": {}, "agentHealth": {}, "agentHealthCode": {}, "agentHealthDetails": {}, "autoScalingGroup": {}, "telemetryMetadata": { "shape": "S2i" } } } }, "nextToken": {} } } }, "ListAssessmentRuns": { "input": { "type": "structure", "members": { "assessmentTemplateArns": { "shape": "S2y" }, "filter": { "type": "structure", "members": { "namePattern": {}, "states": { "type": "list", "member": {} }, "durationRange": { "shape": "S32" }, "rulesPackageArns": { "shape": "S33" }, "startTimeRange": { "shape": "S34" }, "completionTimeRange": { "shape": "S34" }, "stateChangeTimeRange": { "shape": "S34" } } }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "assessmentRunArns" ], "members": { "assessmentRunArns": { "shape": "S36" }, "nextToken": {} } } }, "ListAssessmentTargets": { "input": { "type": "structure", "members": { "filter": { "type": "structure", "members": { "assessmentTargetNamePattern": {} } }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "assessmentTargetArns" ], "members": { "assessmentTargetArns": { "shape": "S36" }, "nextToken": {} } } }, "ListAssessmentTemplates": { "input": { "type": "structure", "members": { "assessmentTargetArns": { "shape": "S2y" }, "filter": { "type": "structure", "members": { "namePattern": {}, "durationRange": { "shape": "S32" }, "rulesPackageArns": { "shape": "S33" } } }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "assessmentTemplateArns" ], "members": { "assessmentTemplateArns": { "shape": "S36" }, "nextToken": {} } } }, "ListEventSubscriptions": { "input": { "type": "structure", "members": { "resourceArn": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "subscriptions" ], "members": { "subscriptions": { "type": "list", "member": { "type": "structure", "required": [ "resourceArn", "topicArn", "eventSubscriptions" ], "members": { "resourceArn": {}, "topicArn": {}, "eventSubscriptions": { "type": "list", "member": { "type": "structure", "required": [ "event", "subscribedAt" ], "members": { "event": {}, "subscribedAt": { "type": "timestamp" } } } } } } }, "nextToken": {} } } }, "ListFindings": { "input": { "type": "structure", "members": { "assessmentRunArns": { "shape": "S2y" }, "filter": { "type": "structure", "members": { "agentIds": { "type": "list", "member": {} }, "autoScalingGroups": { "type": "list", "member": {} }, "ruleNames": { "type": "list", "member": {} }, "severities": { "type": "list", "member": {} }, "rulesPackageArns": { "shape": "S33" }, "attributes": { "shape": "S24" }, "userAttributes": { "shape": "S24" }, "creationTimeRange": { "shape": "S34" } } }, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "findingArns" ], "members": { "findingArns": { "shape": "S36" }, "nextToken": {} } } }, "ListRulesPackages": { "input": { "type": "structure", "members": { "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "rulesPackageArns" ], "members": { "rulesPackageArns": { "shape": "S36" }, "nextToken": {} } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "resourceArn" ], "members": { "resourceArn": {} } }, "output": { "type": "structure", "required": [ "tags" ], "members": { "tags": { "shape": "S3w" } } } }, "PreviewAgents": { "input": { "type": "structure", "required": [ "previewAgentsArn" ], "members": { "previewAgentsArn": {}, "nextToken": {}, "maxResults": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "agentPreviews" ], "members": { "agentPreviews": { "type": "list", "member": { "type": "structure", "required": [ "agentId" ], "members": { "agentId": {}, "autoScalingGroup": {} } } }, "nextToken": {} } } }, "RegisterCrossAccountAccessRole": { "input": { "type": "structure", "required": [ "roleArn" ], "members": { "roleArn": {} } } }, "RemoveAttributesFromFindings": { "input": { "type": "structure", "required": [ "findingArns", "attributeKeys" ], "members": { "findingArns": { "shape": "S2" }, "attributeKeys": { "type": "list", "member": {} } } }, "output": { "type": "structure", "required": [ "failedItems" ], "members": { "failedItems": { "shape": "S9" } } } }, "SetTagsForResource": { "input": { "type": "structure", "required": [ "resourceArn" ], "members": { "resourceArn": {}, "tags": { "shape": "S3w" } } } }, "StartAssessmentRun": { "input": { "type": "structure", "required": [ "assessmentTemplateArn" ], "members": { "assessmentTemplateArn": {}, "assessmentRunName": {} } }, "output": { "type": "structure", "required": [ "assessmentRunArn" ], "members": { "assessmentRunArn": {} } } }, "StopAssessmentRun": { "input": { "type": "structure", "required": [ "assessmentRunArn" ], "members": { "assessmentRunArn": {} } } }, "SubscribeToEvent": { "input": { "type": "structure", "required": [ "resourceArn", "event", "topicArn" ], "members": { "resourceArn": {}, "event": {}, "topicArn": {} } } }, "UnsubscribeFromEvent": { "input": { "type": "structure", "required": [ "resourceArn", "event", "topicArn" ], "members": { "resourceArn": {}, "event": {}, "topicArn": {} } } }, "UpdateAssessmentTarget": { "input": { "type": "structure", "required": [ "assessmentTargetArn", "assessmentTargetName", "resourceGroupArn" ], "members": { "assessmentTargetArn": {}, "assessmentTargetName": {}, "resourceGroupArn": {} } } } }, "shapes": { "S2": { "type": "list", "member": {} }, "S4": { "type": "list", "member": { "shape": "S5" } }, "S5": { "type": "structure", "required": [ "key" ], "members": { "key": {}, "value": {} } }, "S9": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "failureCode", "retryable" ], "members": { "failureCode": {}, "retryable": { "type": "boolean" } } } }, "Sj": { "type": "list", "member": {} }, "Sm": { "type": "list", "member": { "type": "structure", "required": [ "key" ], "members": { "key": {}, "value": {} } } }, "Sv": { "type": "list", "member": {} }, "S24": { "type": "list", "member": { "shape": "S5" } }, "S2i": { "type": "list", "member": { "type": "structure", "required": [ "messageType", "count" ], "members": { "messageType": {}, "count": { "type": "long" }, "dataSize": { "type": "long" } } } }, "S2y": { "type": "list", "member": {} }, "S32": { "type": "structure", "members": { "minSeconds": { "type": "integer" }, "maxSeconds": { "type": "integer" } } }, "S33": { "type": "list", "member": {} }, "S34": { "type": "structure", "members": { "beginDate": { "type": "timestamp" }, "endDate": { "type": "timestamp" } } }, "S36": { "type": "list", "member": {} }, "S3w": { "type": "list", "member": { "type": "structure", "required": [ "key" ], "members": { "key": {}, "value": {} } } } } } },{}],73:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "iot-2015-05-28", "apiVersion": "2015-05-28", "endpointPrefix": "iot", "serviceFullName": "AWS IoT", "signatureVersion": "v4", "signingName": "execute-api", "protocol": "rest-json" }, "operations": { "AcceptCertificateTransfer": { "http": { "method": "PATCH", "requestUri": "/accept-certificate-transfer/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" }, "setAsActive": { "location": "querystring", "locationName": "setAsActive", "type": "boolean" } } } }, "AttachPrincipalPolicy": { "http": { "method": "PUT", "requestUri": "/principal-policies/{policyName}" }, "input": { "type": "structure", "required": [ "policyName", "principal" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "principal": { "location": "header", "locationName": "x-amzn-iot-principal" } } } }, "AttachThingPrincipal": { "http": { "method": "PUT", "requestUri": "/things/{thingName}/principals" }, "input": { "type": "structure", "required": [ "thingName", "principal" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "principal": { "location": "header", "locationName": "x-amzn-principal" } } }, "output": { "type": "structure", "members": {} } }, "CancelCertificateTransfer": { "http": { "method": "PATCH", "requestUri": "/cancel-certificate-transfer/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" } } } }, "CreateCertificateFromCsr": { "http": { "requestUri": "/certificates" }, "input": { "type": "structure", "required": [ "certificateSigningRequest" ], "members": { "certificateSigningRequest": {}, "setAsActive": { "location": "querystring", "locationName": "setAsActive", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "certificatePem": {} } } }, "CreateKeysAndCertificate": { "http": { "requestUri": "/keys-and-certificate" }, "input": { "type": "structure", "members": { "setAsActive": { "location": "querystring", "locationName": "setAsActive", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "certificatePem": {}, "keyPair": { "type": "structure", "members": { "PublicKey": {}, "PrivateKey": { "type": "string", "sensitive": true } } } } } }, "CreatePolicy": { "http": { "requestUri": "/policies/{policyName}" }, "input": { "type": "structure", "required": [ "policyName", "policyDocument" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "policyDocument": {} } }, "output": { "type": "structure", "members": { "policyName": {}, "policyArn": {}, "policyDocument": {}, "policyVersionId": {} } } }, "CreatePolicyVersion": { "http": { "requestUri": "/policies/{policyName}/version" }, "input": { "type": "structure", "required": [ "policyName", "policyDocument" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "policyDocument": {}, "setAsDefault": { "location": "querystring", "locationName": "setAsDefault", "type": "boolean" } } }, "output": { "type": "structure", "members": { "policyArn": {}, "policyDocument": {}, "policyVersionId": {}, "isDefaultVersion": { "type": "boolean" } } } }, "CreateThing": { "http": { "requestUri": "/things/{thingName}" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "thingTypeName": {}, "attributePayload": { "shape": "Sw" } } }, "output": { "type": "structure", "members": { "thingName": {}, "thingArn": {} } } }, "CreateThingType": { "http": { "requestUri": "/thing-types/{thingTypeName}" }, "input": { "type": "structure", "required": [ "thingTypeName" ], "members": { "thingTypeName": { "location": "uri", "locationName": "thingTypeName" }, "thingTypeProperties": { "shape": "S14" } } }, "output": { "type": "structure", "members": { "thingTypeName": {}, "thingTypeArn": {} } } }, "CreateTopicRule": { "http": { "requestUri": "/rules/{ruleName}" }, "input": { "type": "structure", "required": [ "ruleName", "topicRulePayload" ], "members": { "ruleName": { "location": "uri", "locationName": "ruleName" }, "topicRulePayload": { "shape": "S1b" } }, "payload": "topicRulePayload" } }, "DeleteCACertificate": { "http": { "method": "DELETE", "requestUri": "/cacertificate/{caCertificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "caCertificateId" } } }, "output": { "type": "structure", "members": {} } }, "DeleteCertificate": { "http": { "method": "DELETE", "requestUri": "/certificates/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" } } } }, "DeletePolicy": { "http": { "method": "DELETE", "requestUri": "/policies/{policyName}" }, "input": { "type": "structure", "required": [ "policyName" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" } } } }, "DeletePolicyVersion": { "http": { "method": "DELETE", "requestUri": "/policies/{policyName}/version/{policyVersionId}" }, "input": { "type": "structure", "required": [ "policyName", "policyVersionId" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "policyVersionId": { "location": "uri", "locationName": "policyVersionId" } } } }, "DeleteRegistrationCode": { "http": { "method": "DELETE", "requestUri": "/registrationcode" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": {} } }, "DeleteThing": { "http": { "method": "DELETE", "requestUri": "/things/{thingName}" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "expectedVersion": { "location": "querystring", "locationName": "expectedVersion", "type": "long" } } }, "output": { "type": "structure", "members": {} } }, "DeleteThingType": { "http": { "method": "DELETE", "requestUri": "/thing-types/{thingTypeName}" }, "input": { "type": "structure", "required": [ "thingTypeName" ], "members": { "thingTypeName": { "location": "uri", "locationName": "thingTypeName" } } }, "output": { "type": "structure", "members": {} } }, "DeleteTopicRule": { "http": { "method": "DELETE", "requestUri": "/rules/{ruleName}" }, "input": { "type": "structure", "members": { "ruleName": { "location": "uri", "locationName": "ruleName" } }, "required": [ "ruleName" ] } }, "DeprecateThingType": { "http": { "requestUri": "/thing-types/{thingTypeName}/deprecate" }, "input": { "type": "structure", "required": [ "thingTypeName" ], "members": { "thingTypeName": { "location": "uri", "locationName": "thingTypeName" }, "undoDeprecate": { "type": "boolean" } } }, "output": { "type": "structure", "members": {} } }, "DescribeCACertificate": { "http": { "method": "GET", "requestUri": "/cacertificate/{caCertificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "caCertificateId" } } }, "output": { "type": "structure", "members": { "certificateDescription": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "status": {}, "certificatePem": {}, "ownedBy": {}, "creationDate": { "type": "timestamp" }, "autoRegistrationStatus": {} } } } } }, "DescribeCertificate": { "http": { "method": "GET", "requestUri": "/certificates/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" } } }, "output": { "type": "structure", "members": { "certificateDescription": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "caCertificateId": {}, "status": {}, "certificatePem": {}, "ownedBy": {}, "previousOwnedBy": {}, "creationDate": { "type": "timestamp" }, "lastModifiedDate": { "type": "timestamp" }, "transferData": { "type": "structure", "members": { "transferMessage": {}, "rejectReason": {}, "transferDate": { "type": "timestamp" }, "acceptDate": { "type": "timestamp" }, "rejectDate": { "type": "timestamp" } } } } } } } }, "DescribeEndpoint": { "http": { "method": "GET", "requestUri": "/endpoint" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "endpointAddress": {} } } }, "DescribeThing": { "http": { "method": "GET", "requestUri": "/things/{thingName}" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" } } }, "output": { "type": "structure", "members": { "defaultClientId": {}, "thingName": {}, "thingTypeName": {}, "attributes": { "shape": "Sx" }, "version": { "type": "long" } } } }, "DescribeThingType": { "http": { "method": "GET", "requestUri": "/thing-types/{thingTypeName}" }, "input": { "type": "structure", "required": [ "thingTypeName" ], "members": { "thingTypeName": { "location": "uri", "locationName": "thingTypeName" } } }, "output": { "type": "structure", "members": { "thingTypeName": {}, "thingTypeProperties": { "shape": "S14" }, "thingTypeMetadata": { "shape": "S3u" } } } }, "DetachPrincipalPolicy": { "http": { "method": "DELETE", "requestUri": "/principal-policies/{policyName}" }, "input": { "type": "structure", "required": [ "policyName", "principal" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "principal": { "location": "header", "locationName": "x-amzn-iot-principal" } } } }, "DetachThingPrincipal": { "http": { "method": "DELETE", "requestUri": "/things/{thingName}/principals" }, "input": { "type": "structure", "required": [ "thingName", "principal" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "principal": { "location": "header", "locationName": "x-amzn-principal" } } }, "output": { "type": "structure", "members": {} } }, "DisableTopicRule": { "http": { "requestUri": "/rules/{ruleName}/disable" }, "input": { "type": "structure", "required": [ "ruleName" ], "members": { "ruleName": { "location": "uri", "locationName": "ruleName" } } } }, "EnableTopicRule": { "http": { "requestUri": "/rules/{ruleName}/enable" }, "input": { "type": "structure", "required": [ "ruleName" ], "members": { "ruleName": { "location": "uri", "locationName": "ruleName" } } } }, "GetLoggingOptions": { "http": { "method": "GET", "requestUri": "/loggingOptions" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "roleArn": {}, "logLevel": {} } } }, "GetPolicy": { "http": { "method": "GET", "requestUri": "/policies/{policyName}" }, "input": { "type": "structure", "required": [ "policyName" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" } } }, "output": { "type": "structure", "members": { "policyName": {}, "policyArn": {}, "policyDocument": {}, "defaultVersionId": {} } } }, "GetPolicyVersion": { "http": { "method": "GET", "requestUri": "/policies/{policyName}/version/{policyVersionId}" }, "input": { "type": "structure", "required": [ "policyName", "policyVersionId" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "policyVersionId": { "location": "uri", "locationName": "policyVersionId" } } }, "output": { "type": "structure", "members": { "policyArn": {}, "policyName": {}, "policyDocument": {}, "policyVersionId": {}, "isDefaultVersion": { "type": "boolean" } } } }, "GetRegistrationCode": { "http": { "method": "GET", "requestUri": "/registrationcode" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "registrationCode": {} } } }, "GetTopicRule": { "http": { "method": "GET", "requestUri": "/rules/{ruleName}" }, "input": { "type": "structure", "required": [ "ruleName" ], "members": { "ruleName": { "location": "uri", "locationName": "ruleName" } } }, "output": { "type": "structure", "members": { "ruleArn": {}, "rule": { "type": "structure", "members": { "ruleName": {}, "sql": {}, "description": {}, "createdAt": { "type": "timestamp" }, "actions": { "shape": "S1e" }, "ruleDisabled": { "type": "boolean" }, "awsIotSqlVersion": {} } } } } }, "ListCACertificates": { "http": { "method": "GET", "requestUri": "/cacertificates" }, "input": { "type": "structure", "members": { "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "marker": { "location": "querystring", "locationName": "marker" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificates": { "type": "list", "member": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "status": {}, "creationDate": { "type": "timestamp" } } } }, "nextMarker": {} } } }, "ListCertificates": { "http": { "method": "GET", "requestUri": "/certificates" }, "input": { "type": "structure", "members": { "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "marker": { "location": "querystring", "locationName": "marker" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificates": { "shape": "S4r" }, "nextMarker": {} } } }, "ListCertificatesByCA": { "http": { "method": "GET", "requestUri": "/certificates-by-ca/{caCertificateId}" }, "input": { "type": "structure", "required": [ "caCertificateId" ], "members": { "caCertificateId": { "location": "uri", "locationName": "caCertificateId" }, "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "marker": { "location": "querystring", "locationName": "marker" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificates": { "shape": "S4r" }, "nextMarker": {} } } }, "ListOutgoingCertificates": { "http": { "method": "GET", "requestUri": "/certificates-out-going" }, "input": { "type": "structure", "members": { "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "marker": { "location": "querystring", "locationName": "marker" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "outgoingCertificates": { "type": "list", "member": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "transferredTo": {}, "transferDate": { "type": "timestamp" }, "transferMessage": {}, "creationDate": { "type": "timestamp" } } } }, "nextMarker": {} } } }, "ListPolicies": { "http": { "method": "GET", "requestUri": "/policies" }, "input": { "type": "structure", "members": { "marker": { "location": "querystring", "locationName": "marker" }, "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "policies": { "shape": "S51" }, "nextMarker": {} } } }, "ListPolicyPrincipals": { "http": { "method": "GET", "requestUri": "/policy-principals" }, "input": { "type": "structure", "required": [ "policyName" ], "members": { "policyName": { "location": "header", "locationName": "x-amzn-iot-policy" }, "marker": { "location": "querystring", "locationName": "marker" }, "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "principals": { "shape": "S55" }, "nextMarker": {} } } }, "ListPolicyVersions": { "http": { "method": "GET", "requestUri": "/policies/{policyName}/version" }, "input": { "type": "structure", "required": [ "policyName" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" } } }, "output": { "type": "structure", "members": { "policyVersions": { "type": "list", "member": { "type": "structure", "members": { "versionId": {}, "isDefaultVersion": { "type": "boolean" }, "createDate": { "type": "timestamp" } } } } } } }, "ListPrincipalPolicies": { "http": { "method": "GET", "requestUri": "/principal-policies" }, "input": { "type": "structure", "required": [ "principal" ], "members": { "principal": { "location": "header", "locationName": "x-amzn-iot-principal" }, "marker": { "location": "querystring", "locationName": "marker" }, "pageSize": { "location": "querystring", "locationName": "pageSize", "type": "integer" }, "ascendingOrder": { "location": "querystring", "locationName": "isAscendingOrder", "type": "boolean" } } }, "output": { "type": "structure", "members": { "policies": { "shape": "S51" }, "nextMarker": {} } } }, "ListPrincipalThings": { "http": { "method": "GET", "requestUri": "/principals/things" }, "input": { "type": "structure", "required": [ "principal" ], "members": { "nextToken": { "location": "querystring", "locationName": "nextToken" }, "maxResults": { "location": "querystring", "locationName": "maxResults", "type": "integer" }, "principal": { "location": "header", "locationName": "x-amzn-principal" } } }, "output": { "type": "structure", "members": { "things": { "type": "list", "member": {} }, "nextToken": {} } } }, "ListThingPrincipals": { "http": { "method": "GET", "requestUri": "/things/{thingName}/principals" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" } } }, "output": { "type": "structure", "members": { "principals": { "shape": "S55" } } } }, "ListThingTypes": { "http": { "method": "GET", "requestUri": "/thing-types" }, "input": { "type": "structure", "members": { "nextToken": { "location": "querystring", "locationName": "nextToken" }, "maxResults": { "location": "querystring", "locationName": "maxResults", "type": "integer" }, "thingTypeName": { "location": "querystring", "locationName": "thingTypeName" } } }, "output": { "type": "structure", "members": { "thingTypes": { "type": "list", "member": { "type": "structure", "members": { "thingTypeName": {}, "thingTypeProperties": { "shape": "S14" }, "thingTypeMetadata": { "shape": "S3u" } } } }, "nextToken": {} } } }, "ListThings": { "http": { "method": "GET", "requestUri": "/things" }, "input": { "type": "structure", "members": { "nextToken": { "location": "querystring", "locationName": "nextToken" }, "maxResults": { "location": "querystring", "locationName": "maxResults", "type": "integer" }, "attributeName": { "location": "querystring", "locationName": "attributeName" }, "attributeValue": { "location": "querystring", "locationName": "attributeValue" }, "thingTypeName": { "location": "querystring", "locationName": "thingTypeName" } } }, "output": { "type": "structure", "members": { "things": { "type": "list", "member": { "type": "structure", "members": { "thingName": {}, "thingTypeName": {}, "attributes": { "shape": "Sx" }, "version": { "type": "long" } } } }, "nextToken": {} } } }, "ListTopicRules": { "http": { "method": "GET", "requestUri": "/rules" }, "input": { "type": "structure", "members": { "topic": { "location": "querystring", "locationName": "topic" }, "maxResults": { "location": "querystring", "locationName": "maxResults", "type": "integer" }, "nextToken": { "location": "querystring", "locationName": "nextToken" }, "ruleDisabled": { "location": "querystring", "locationName": "ruleDisabled", "type": "boolean" } } }, "output": { "type": "structure", "members": { "rules": { "type": "list", "member": { "type": "structure", "members": { "ruleArn": {}, "ruleName": {}, "topicPattern": {}, "createdAt": { "type": "timestamp" }, "ruleDisabled": { "type": "boolean" } } } }, "nextToken": {} } } }, "RegisterCACertificate": { "http": { "requestUri": "/cacertificate" }, "input": { "type": "structure", "required": [ "caCertificate", "verificationCertificate" ], "members": { "caCertificate": {}, "verificationCertificate": {}, "setAsActive": { "location": "querystring", "locationName": "setAsActive", "type": "boolean" }, "allowAutoRegistration": { "location": "querystring", "locationName": "allowAutoRegistration", "type": "boolean" } } }, "output": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {} } } }, "RegisterCertificate": { "http": { "requestUri": "/certificate/register" }, "input": { "type": "structure", "required": [ "certificatePem" ], "members": { "certificatePem": {}, "caCertificatePem": {}, "setAsActive": { "deprecated": true, "location": "querystring", "locationName": "setAsActive", "type": "boolean" }, "status": {} } }, "output": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {} } } }, "RejectCertificateTransfer": { "http": { "method": "PATCH", "requestUri": "/reject-certificate-transfer/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" }, "rejectReason": {} } } }, "ReplaceTopicRule": { "http": { "method": "PATCH", "requestUri": "/rules/{ruleName}" }, "input": { "type": "structure", "required": [ "ruleName", "topicRulePayload" ], "members": { "ruleName": { "location": "uri", "locationName": "ruleName" }, "topicRulePayload": { "shape": "S1b" } }, "payload": "topicRulePayload" } }, "SetDefaultPolicyVersion": { "http": { "method": "PATCH", "requestUri": "/policies/{policyName}/version/{policyVersionId}" }, "input": { "type": "structure", "required": [ "policyName", "policyVersionId" ], "members": { "policyName": { "location": "uri", "locationName": "policyName" }, "policyVersionId": { "location": "uri", "locationName": "policyVersionId" } } } }, "SetLoggingOptions": { "http": { "requestUri": "/loggingOptions" }, "input": { "type": "structure", "required": [ "loggingOptionsPayload" ], "members": { "loggingOptionsPayload": { "type": "structure", "required": [ "roleArn" ], "members": { "roleArn": {}, "logLevel": {} } } }, "payload": "loggingOptionsPayload" } }, "TransferCertificate": { "http": { "method": "PATCH", "requestUri": "/transfer-certificate/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId", "targetAwsAccount" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" }, "targetAwsAccount": { "location": "querystring", "locationName": "targetAwsAccount" }, "transferMessage": {} } }, "output": { "type": "structure", "members": { "transferredCertificateArn": {} } } }, "UpdateCACertificate": { "http": { "method": "PUT", "requestUri": "/cacertificate/{caCertificateId}" }, "input": { "type": "structure", "required": [ "certificateId" ], "members": { "certificateId": { "location": "uri", "locationName": "caCertificateId" }, "newStatus": { "location": "querystring", "locationName": "newStatus" }, "newAutoRegistrationStatus": { "location": "querystring", "locationName": "newAutoRegistrationStatus" } } } }, "UpdateCertificate": { "http": { "method": "PUT", "requestUri": "/certificates/{certificateId}" }, "input": { "type": "structure", "required": [ "certificateId", "newStatus" ], "members": { "certificateId": { "location": "uri", "locationName": "certificateId" }, "newStatus": { "location": "querystring", "locationName": "newStatus" } } } }, "UpdateThing": { "http": { "method": "PATCH", "requestUri": "/things/{thingName}" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "thingTypeName": {}, "attributePayload": { "shape": "Sw" }, "expectedVersion": { "type": "long" }, "removeThingType": { "type": "boolean" } } }, "output": { "type": "structure", "members": {} } } }, "shapes": { "Sw": { "type": "structure", "members": { "attributes": { "shape": "Sx" }, "merge": { "type": "boolean" } } }, "Sx": { "type": "map", "key": {}, "value": {} }, "S14": { "type": "structure", "members": { "thingTypeDescription": {}, "searchableAttributes": { "type": "list", "member": {} } } }, "S1b": { "type": "structure", "required": [ "sql", "actions" ], "members": { "sql": {}, "description": {}, "actions": { "shape": "S1e" }, "ruleDisabled": { "type": "boolean" }, "awsIotSqlVersion": {} } }, "S1e": { "type": "list", "member": { "type": "structure", "members": { "dynamoDB": { "type": "structure", "required": [ "tableName", "roleArn", "hashKeyField", "hashKeyValue" ], "members": { "tableName": {}, "roleArn": {}, "operation": {}, "hashKeyField": {}, "hashKeyValue": {}, "hashKeyType": {}, "rangeKeyField": {}, "rangeKeyValue": {}, "rangeKeyType": {}, "payloadField": {} } }, "dynamoDBv2": { "type": "structure", "members": { "roleArn": {}, "putItem": { "type": "structure", "required": [ "tableName" ], "members": { "tableName": {} } } } }, "lambda": { "type": "structure", "required": [ "functionArn" ], "members": { "functionArn": {} } }, "sns": { "type": "structure", "required": [ "targetArn", "roleArn" ], "members": { "targetArn": {}, "roleArn": {}, "messageFormat": {} } }, "sqs": { "type": "structure", "required": [ "roleArn", "queueUrl" ], "members": { "roleArn": {}, "queueUrl": {}, "useBase64": { "type": "boolean" } } }, "kinesis": { "type": "structure", "required": [ "roleArn", "streamName" ], "members": { "roleArn": {}, "streamName": {}, "partitionKey": {} } }, "republish": { "type": "structure", "required": [ "roleArn", "topic" ], "members": { "roleArn": {}, "topic": {} } }, "s3": { "type": "structure", "required": [ "roleArn", "bucketName", "key" ], "members": { "roleArn": {}, "bucketName": {}, "key": {}, "cannedAcl": {} } }, "firehose": { "type": "structure", "required": [ "roleArn", "deliveryStreamName" ], "members": { "roleArn": {}, "deliveryStreamName": {}, "separator": {} } }, "cloudwatchMetric": { "type": "structure", "required": [ "roleArn", "metricNamespace", "metricName", "metricValue", "metricUnit" ], "members": { "roleArn": {}, "metricNamespace": {}, "metricName": {}, "metricValue": {}, "metricUnit": {}, "metricTimestamp": {} } }, "cloudwatchAlarm": { "type": "structure", "required": [ "roleArn", "alarmName", "stateReason", "stateValue" ], "members": { "roleArn": {}, "alarmName": {}, "stateReason": {}, "stateValue": {} } }, "elasticsearch": { "type": "structure", "required": [ "roleArn", "endpoint", "index", "type", "id" ], "members": { "roleArn": {}, "endpoint": {}, "index": {}, "type": {}, "id": {} } } } } }, "S3u": { "type": "structure", "members": { "deprecated": { "type": "boolean" }, "deprecationDate": { "type": "timestamp" }, "creationDate": { "type": "timestamp" } } }, "S4r": { "type": "list", "member": { "type": "structure", "members": { "certificateArn": {}, "certificateId": {}, "status": {}, "creationDate": { "type": "timestamp" } } } }, "S51": { "type": "list", "member": { "type": "structure", "members": { "policyName": {}, "policyArn": {} } } }, "S55": { "type": "list", "member": {} } }, "examples": {} } },{}],74:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "iot-data-2015-05-28", "apiVersion": "2015-05-28", "endpointPrefix": "data.iot", "protocol": "rest-json", "serviceFullName": "AWS IoT Data Plane", "signatureVersion": "v4", "signingName": "iotdata" }, "operations": { "DeleteThingShadow": { "http": { "method": "DELETE", "requestUri": "/things/{thingName}/shadow" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" } } }, "output": { "type": "structure", "required": [ "payload" ], "members": { "payload": { "type": "blob" } }, "payload": "payload" } }, "GetThingShadow": { "http": { "method": "GET", "requestUri": "/things/{thingName}/shadow" }, "input": { "type": "structure", "required": [ "thingName" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" } } }, "output": { "type": "structure", "members": { "payload": { "type": "blob" } }, "payload": "payload" } }, "Publish": { "http": { "requestUri": "/topics/{topic}" }, "input": { "type": "structure", "required": [ "topic" ], "members": { "topic": { "location": "uri", "locationName": "topic" }, "qos": { "location": "querystring", "locationName": "qos", "type": "integer" }, "payload": { "type": "blob" } }, "payload": "payload" } }, "UpdateThingShadow": { "http": { "requestUri": "/things/{thingName}/shadow" }, "input": { "type": "structure", "required": [ "thingName", "payload" ], "members": { "thingName": { "location": "uri", "locationName": "thingName" }, "payload": { "type": "blob" } }, "payload": "payload" }, "output": { "type": "structure", "members": { "payload": { "type": "blob" } }, "payload": "payload" } } }, "shapes": {} } },{}],75:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "kinesis-2013-12-02", "apiVersion": "2013-12-02", "endpointPrefix": "kinesis", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Kinesis", "serviceFullName": "Amazon Kinesis", "signatureVersion": "v4", "targetPrefix": "Kinesis_20131202" }, "operations": { "AddTagsToStream": { "input": { "type": "structure", "required": [ "StreamName", "Tags" ], "members": { "StreamName": {}, "Tags": { "type": "map", "key": {}, "value": {} } } } }, "CreateStream": { "input": { "type": "structure", "required": [ "StreamName", "ShardCount" ], "members": { "StreamName": {}, "ShardCount": { "type": "integer" } } } }, "DecreaseStreamRetentionPeriod": { "input": { "type": "structure", "required": [ "StreamName", "RetentionPeriodHours" ], "members": { "StreamName": {}, "RetentionPeriodHours": { "type": "integer" } } } }, "DeleteStream": { "input": { "type": "structure", "required": [ "StreamName" ], "members": { "StreamName": {} } } }, "DescribeLimits": { "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "required": [ "ShardLimit", "OpenShardCount" ], "members": { "ShardLimit": { "type": "integer" }, "OpenShardCount": { "type": "integer" } } } }, "DescribeStream": { "input": { "type": "structure", "required": [ "StreamName" ], "members": { "StreamName": {}, "Limit": { "type": "integer" }, "ExclusiveStartShardId": {} } }, "output": { "type": "structure", "required": [ "StreamDescription" ], "members": { "StreamDescription": { "type": "structure", "required": [ "StreamName", "StreamARN", "StreamStatus", "Shards", "HasMoreShards", "RetentionPeriodHours", "StreamCreationTimestamp", "EnhancedMonitoring" ], "members": { "StreamName": {}, "StreamARN": {}, "StreamStatus": {}, "Shards": { "type": "list", "member": { "type": "structure", "required": [ "ShardId", "HashKeyRange", "SequenceNumberRange" ], "members": { "ShardId": {}, "ParentShardId": {}, "AdjacentParentShardId": {}, "HashKeyRange": { "type": "structure", "required": [ "StartingHashKey", "EndingHashKey" ], "members": { "StartingHashKey": {}, "EndingHashKey": {} } }, "SequenceNumberRange": { "type": "structure", "required": [ "StartingSequenceNumber" ], "members": { "StartingSequenceNumber": {}, "EndingSequenceNumber": {} } } } } }, "HasMoreShards": { "type": "boolean" }, "RetentionPeriodHours": { "type": "integer" }, "StreamCreationTimestamp": { "type": "timestamp" }, "EnhancedMonitoring": { "type": "list", "member": { "type": "structure", "members": { "ShardLevelMetrics": { "shape": "Su" } } } } } } } } }, "DisableEnhancedMonitoring": { "input": { "type": "structure", "required": [ "StreamName", "ShardLevelMetrics" ], "members": { "StreamName": {}, "ShardLevelMetrics": { "shape": "Su" } } }, "output": { "shape": "Sx" } }, "EnableEnhancedMonitoring": { "input": { "type": "structure", "required": [ "StreamName", "ShardLevelMetrics" ], "members": { "StreamName": {}, "ShardLevelMetrics": { "shape": "Su" } } }, "output": { "shape": "Sx" } }, "GetRecords": { "input": { "type": "structure", "required": [ "ShardIterator" ], "members": { "ShardIterator": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "Records" ], "members": { "Records": { "type": "list", "member": { "type": "structure", "required": [ "SequenceNumber", "Data", "PartitionKey" ], "members": { "SequenceNumber": {}, "ApproximateArrivalTimestamp": { "type": "timestamp" }, "Data": { "type": "blob" }, "PartitionKey": {} } } }, "NextShardIterator": {}, "MillisBehindLatest": { "type": "long" } } } }, "GetShardIterator": { "input": { "type": "structure", "required": [ "StreamName", "ShardId", "ShardIteratorType" ], "members": { "StreamName": {}, "ShardId": {}, "ShardIteratorType": {}, "StartingSequenceNumber": {}, "Timestamp": { "type": "timestamp" } } }, "output": { "type": "structure", "members": { "ShardIterator": {} } } }, "IncreaseStreamRetentionPeriod": { "input": { "type": "structure", "required": [ "StreamName", "RetentionPeriodHours" ], "members": { "StreamName": {}, "RetentionPeriodHours": { "type": "integer" } } } }, "ListStreams": { "input": { "type": "structure", "members": { "Limit": { "type": "integer" }, "ExclusiveStartStreamName": {} } }, "output": { "type": "structure", "required": [ "StreamNames", "HasMoreStreams" ], "members": { "StreamNames": { "type": "list", "member": {} }, "HasMoreStreams": { "type": "boolean" } } } }, "ListTagsForStream": { "input": { "type": "structure", "required": [ "StreamName" ], "members": { "StreamName": {}, "ExclusiveStartTagKey": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "Tags", "HasMoreTags" ], "members": { "Tags": { "type": "list", "member": { "type": "structure", "required": [ "Key" ], "members": { "Key": {}, "Value": {} } } }, "HasMoreTags": { "type": "boolean" } } } }, "MergeShards": { "input": { "type": "structure", "required": [ "StreamName", "ShardToMerge", "AdjacentShardToMerge" ], "members": { "StreamName": {}, "ShardToMerge": {}, "AdjacentShardToMerge": {} } } }, "PutRecord": { "input": { "type": "structure", "required": [ "StreamName", "Data", "PartitionKey" ], "members": { "StreamName": {}, "Data": { "type": "blob" }, "PartitionKey": {}, "ExplicitHashKey": {}, "SequenceNumberForOrdering": {} } }, "output": { "type": "structure", "required": [ "ShardId", "SequenceNumber" ], "members": { "ShardId": {}, "SequenceNumber": {} } } }, "PutRecords": { "input": { "type": "structure", "required": [ "Records", "StreamName" ], "members": { "Records": { "type": "list", "member": { "type": "structure", "required": [ "Data", "PartitionKey" ], "members": { "Data": { "type": "blob" }, "ExplicitHashKey": {}, "PartitionKey": {} } } }, "StreamName": {} } }, "output": { "type": "structure", "required": [ "Records" ], "members": { "FailedRecordCount": { "type": "integer" }, "Records": { "type": "list", "member": { "type": "structure", "members": { "SequenceNumber": {}, "ShardId": {}, "ErrorCode": {}, "ErrorMessage": {} } } } } } }, "RemoveTagsFromStream": { "input": { "type": "structure", "required": [ "StreamName", "TagKeys" ], "members": { "StreamName": {}, "TagKeys": { "type": "list", "member": {} } } } }, "SplitShard": { "input": { "type": "structure", "required": [ "StreamName", "ShardToSplit", "NewStartingHashKey" ], "members": { "StreamName": {}, "ShardToSplit": {}, "NewStartingHashKey": {} } } }, "UpdateShardCount": { "input": { "type": "structure", "required": [ "StreamName", "TargetShardCount", "ScalingType" ], "members": { "StreamName": {}, "TargetShardCount": { "type": "integer" }, "ScalingType": {} } }, "output": { "type": "structure", "members": { "StreamName": {}, "CurrentShardCount": { "type": "integer" }, "TargetShardCount": { "type": "integer" } } } } }, "shapes": { "Su": { "type": "list", "member": {} }, "Sx": { "type": "structure", "members": { "StreamName": {}, "CurrentShardLevelMetrics": { "shape": "Su" }, "DesiredShardLevelMetrics": { "shape": "Su" } } } } } },{}],76:[function(require,module,exports){ module.exports={ "pagination": { "DescribeStream": { "input_token": "ExclusiveStartShardId", "limit_key": "Limit", "more_results": "StreamDescription.HasMoreShards", "output_token": "StreamDescription.Shards[-1].ShardId", "result_key": "StreamDescription.Shards" }, "ListStreams": { "input_token": "ExclusiveStartStreamName", "limit_key": "Limit", "more_results": "HasMoreStreams", "output_token": "StreamNames[-1]", "result_key": "StreamNames" } } } },{}],77:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "StreamExists": { "delay": 10, "operation": "DescribeStream", "maxAttempts": 18, "acceptors": [ { "expected": "ACTIVE", "matcher": "path", "state": "success", "argument": "StreamDescription.StreamStatus" } ] } } } },{}],78:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-11-01", "endpointPrefix": "kms", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "KMS", "serviceFullName": "AWS Key Management Service", "signatureVersion": "v4", "targetPrefix": "TrentService", "uid": "kms-2014-11-01" }, "operations": { "CancelKeyDeletion": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } }, "output": { "type": "structure", "members": { "KeyId": {} } } }, "CreateAlias": { "input": { "type": "structure", "required": [ "AliasName", "TargetKeyId" ], "members": { "AliasName": {}, "TargetKeyId": {} } } }, "CreateGrant": { "input": { "type": "structure", "required": [ "KeyId", "GranteePrincipal" ], "members": { "KeyId": {}, "GranteePrincipal": {}, "RetiringPrincipal": {}, "Operations": { "shape": "S8" }, "Constraints": { "shape": "Sa" }, "GrantTokens": { "shape": "Se" }, "Name": {} } }, "output": { "type": "structure", "members": { "GrantToken": {}, "GrantId": {} } } }, "CreateKey": { "input": { "type": "structure", "members": { "Policy": {}, "Description": {}, "KeyUsage": {}, "Origin": {}, "BypassPolicyLockoutSafetyCheck": { "type": "boolean" }, "Tags": { "shape": "Sp" } } }, "output": { "type": "structure", "members": { "KeyMetadata": { "shape": "Su" } } } }, "Decrypt": { "input": { "type": "structure", "required": [ "CiphertextBlob" ], "members": { "CiphertextBlob": { "type": "blob" }, "EncryptionContext": { "shape": "Sb" }, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "KeyId": {}, "Plaintext": { "shape": "S13" } } } }, "DeleteAlias": { "input": { "type": "structure", "required": [ "AliasName" ], "members": { "AliasName": {} } } }, "DeleteImportedKeyMaterial": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } } }, "DescribeKey": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "KeyMetadata": { "shape": "Su" } } } }, "DisableKey": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } } }, "DisableKeyRotation": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } } }, "EnableKey": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } } }, "EnableKeyRotation": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } } }, "Encrypt": { "input": { "type": "structure", "required": [ "KeyId", "Plaintext" ], "members": { "KeyId": {}, "Plaintext": { "shape": "S13" }, "EncryptionContext": { "shape": "Sb" }, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "CiphertextBlob": { "type": "blob" }, "KeyId": {} } } }, "GenerateDataKey": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "EncryptionContext": { "shape": "Sb" }, "NumberOfBytes": { "type": "integer" }, "KeySpec": {}, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "CiphertextBlob": { "type": "blob" }, "Plaintext": { "shape": "S13" }, "KeyId": {} } } }, "GenerateDataKeyWithoutPlaintext": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "EncryptionContext": { "shape": "Sb" }, "KeySpec": {}, "NumberOfBytes": { "type": "integer" }, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "CiphertextBlob": { "type": "blob" }, "KeyId": {} } } }, "GenerateRandom": { "input": { "type": "structure", "members": { "NumberOfBytes": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Plaintext": { "shape": "S13" } } } }, "GetKeyPolicy": { "input": { "type": "structure", "required": [ "KeyId", "PolicyName" ], "members": { "KeyId": {}, "PolicyName": {} } }, "output": { "type": "structure", "members": { "Policy": {} } } }, "GetKeyRotationStatus": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {} } }, "output": { "type": "structure", "members": { "KeyRotationEnabled": { "type": "boolean" } } } }, "GetParametersForImport": { "input": { "type": "structure", "required": [ "KeyId", "WrappingAlgorithm", "WrappingKeySpec" ], "members": { "KeyId": {}, "WrappingAlgorithm": {}, "WrappingKeySpec": {} } }, "output": { "type": "structure", "members": { "KeyId": {}, "ImportToken": { "type": "blob" }, "PublicKey": { "shape": "S13" }, "ParametersValidTo": { "type": "timestamp" } } } }, "ImportKeyMaterial": { "input": { "type": "structure", "required": [ "KeyId", "ImportToken", "EncryptedKeyMaterial" ], "members": { "KeyId": {}, "ImportToken": { "type": "blob" }, "EncryptedKeyMaterial": { "type": "blob" }, "ValidTo": { "type": "timestamp" }, "ExpirationModel": {} } }, "output": { "type": "structure", "members": {} } }, "ListAliases": { "input": { "type": "structure", "members": { "Limit": { "type": "integer" }, "Marker": {} } }, "output": { "type": "structure", "members": { "Aliases": { "type": "list", "member": { "type": "structure", "members": { "AliasName": {}, "AliasArn": {}, "TargetKeyId": {} } } }, "NextMarker": {}, "Truncated": { "type": "boolean" } } } }, "ListGrants": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "Limit": { "type": "integer" }, "Marker": {}, "KeyId": {} } }, "output": { "shape": "S24" } }, "ListKeyPolicies": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "Limit": { "type": "integer" }, "Marker": {} } }, "output": { "type": "structure", "members": { "PolicyNames": { "type": "list", "member": {} }, "NextMarker": {}, "Truncated": { "type": "boolean" } } } }, "ListKeys": { "input": { "type": "structure", "members": { "Limit": { "type": "integer" }, "Marker": {} } }, "output": { "type": "structure", "members": { "Keys": { "type": "list", "member": { "type": "structure", "members": { "KeyId": {}, "KeyArn": {} } } }, "NextMarker": {}, "Truncated": { "type": "boolean" } } } }, "ListResourceTags": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "Limit": { "type": "integer" }, "Marker": {} } }, "output": { "type": "structure", "members": { "Tags": { "shape": "Sp" }, "NextMarker": {}, "Truncated": { "type": "boolean" } } } }, "ListRetirableGrants": { "input": { "type": "structure", "required": [ "RetiringPrincipal" ], "members": { "Limit": { "type": "integer" }, "Marker": {}, "RetiringPrincipal": {} } }, "output": { "shape": "S24" } }, "PutKeyPolicy": { "input": { "type": "structure", "required": [ "KeyId", "PolicyName", "Policy" ], "members": { "KeyId": {}, "PolicyName": {}, "Policy": {}, "BypassPolicyLockoutSafetyCheck": { "type": "boolean" } } } }, "ReEncrypt": { "input": { "type": "structure", "required": [ "CiphertextBlob", "DestinationKeyId" ], "members": { "CiphertextBlob": { "type": "blob" }, "SourceEncryptionContext": { "shape": "Sb" }, "DestinationKeyId": {}, "DestinationEncryptionContext": { "shape": "Sb" }, "GrantTokens": { "shape": "Se" } } }, "output": { "type": "structure", "members": { "CiphertextBlob": { "type": "blob" }, "SourceKeyId": {}, "KeyId": {} } } }, "RetireGrant": { "input": { "type": "structure", "members": { "GrantToken": {}, "KeyId": {}, "GrantId": {} } } }, "RevokeGrant": { "input": { "type": "structure", "required": [ "KeyId", "GrantId" ], "members": { "KeyId": {}, "GrantId": {} } } }, "ScheduleKeyDeletion": { "input": { "type": "structure", "required": [ "KeyId" ], "members": { "KeyId": {}, "PendingWindowInDays": { "type": "integer" } } }, "output": { "type": "structure", "members": { "KeyId": {}, "DeletionDate": { "type": "timestamp" } } } }, "TagResource": { "input": { "type": "structure", "required": [ "KeyId", "Tags" ], "members": { "KeyId": {}, "Tags": { "shape": "Sp" } } } }, "UntagResource": { "input": { "type": "structure", "required": [ "KeyId", "TagKeys" ], "members": { "KeyId": {}, "TagKeys": { "type": "list", "member": {} } } } }, "UpdateAlias": { "input": { "type": "structure", "required": [ "AliasName", "TargetKeyId" ], "members": { "AliasName": {}, "TargetKeyId": {} } } }, "UpdateKeyDescription": { "input": { "type": "structure", "required": [ "KeyId", "Description" ], "members": { "KeyId": {}, "Description": {} } } } }, "shapes": { "S8": { "type": "list", "member": {} }, "Sa": { "type": "structure", "members": { "EncryptionContextSubset": { "shape": "Sb" }, "EncryptionContextEquals": { "shape": "Sb" } } }, "Sb": { "type": "map", "key": {}, "value": {} }, "Se": { "type": "list", "member": {} }, "Sp": { "type": "list", "member": { "type": "structure", "required": [ "TagKey", "TagValue" ], "members": { "TagKey": {}, "TagValue": {} } } }, "Su": { "type": "structure", "required": [ "KeyId" ], "members": { "AWSAccountId": {}, "KeyId": {}, "Arn": {}, "CreationDate": { "type": "timestamp" }, "Enabled": { "type": "boolean" }, "Description": {}, "KeyUsage": {}, "KeyState": {}, "DeletionDate": { "type": "timestamp" }, "ValidTo": { "type": "timestamp" }, "Origin": {}, "ExpirationModel": {} } }, "S13": { "type": "blob", "sensitive": true }, "S24": { "type": "structure", "members": { "Grants": { "type": "list", "member": { "type": "structure", "members": { "KeyId": {}, "GrantId": {}, "Name": {}, "CreationDate": { "type": "timestamp" }, "GranteePrincipal": {}, "RetiringPrincipal": {}, "IssuingAccount": {}, "Operations": { "shape": "S8" }, "Constraints": { "shape": "Sa" } } } }, "NextMarker": {}, "Truncated": { "type": "boolean" } } } } } },{}],79:[function(require,module,exports){ module.exports={ "pagination": { "ListAliases": { "input_token": "Marker", "limit_key": "Limit", "more_results": "Truncated", "output_token": "NextMarker", "result_key": "Aliases" }, "ListGrants": { "input_token": "Marker", "limit_key": "Limit", "more_results": "Truncated", "output_token": "NextMarker", "result_key": "Grants" }, "ListKeyPolicies": { "input_token": "Marker", "limit_key": "Limit", "more_results": "Truncated", "output_token": "NextMarker", "result_key": "PolicyNames" }, "ListKeys": { "input_token": "Marker", "limit_key": "Limit", "more_results": "Truncated", "output_token": "NextMarker", "result_key": "Keys" } } } },{}],80:[function(require,module,exports){ module.exports={ "metadata": { "apiVersion": "2014-11-11", "endpointPrefix": "lambda", "serviceFullName": "AWS Lambda", "signatureVersion": "v4", "protocol": "rest-json" }, "operations": { "AddEventSource": { "http": { "requestUri": "/2014-11-13/event-source-mappings/" }, "input": { "type": "structure", "required": [ "EventSource", "FunctionName", "Role" ], "members": { "EventSource": {}, "FunctionName": {}, "Role": {}, "BatchSize": { "type": "integer" }, "Parameters": { "shape": "S6" } } }, "output": { "shape": "S7" } }, "DeleteFunction": { "http": { "method": "DELETE", "requestUri": "/2014-11-13/functions/{FunctionName}", "responseCode": 204 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" } } } }, "GetEventSource": { "http": { "method": "GET", "requestUri": "/2014-11-13/event-source-mappings/{UUID}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "UUID" ], "members": { "UUID": { "location": "uri", "locationName": "UUID" } } }, "output": { "shape": "S7" } }, "GetFunction": { "http": { "method": "GET", "requestUri": "/2014-11-13/functions/{FunctionName}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" } } }, "output": { "type": "structure", "members": { "Configuration": { "shape": "Se" }, "Code": { "type": "structure", "members": { "RepositoryType": {}, "Location": {} } } } } }, "GetFunctionConfiguration": { "http": { "method": "GET", "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" } } }, "output": { "shape": "Se" } }, "InvokeAsync": { "http": { "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", "responseCode": 202 }, "input": { "type": "structure", "required": [ "FunctionName", "InvokeArgs" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "InvokeArgs": { "shape": "Sq" } }, "payload": "InvokeArgs" }, "output": { "type": "structure", "members": { "Status": { "location": "statusCode", "type": "integer" } } } }, "ListEventSources": { "http": { "method": "GET", "requestUri": "/2014-11-13/event-source-mappings/", "responseCode": 200 }, "input": { "type": "structure", "members": { "EventSourceArn": { "location": "querystring", "locationName": "EventSource" }, "FunctionName": { "location": "querystring", "locationName": "FunctionName" }, "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "EventSources": { "type": "list", "member": { "shape": "S7" } } } } }, "ListFunctions": { "http": { "method": "GET", "requestUri": "/2014-11-13/functions/", "responseCode": 200 }, "input": { "type": "structure", "members": { "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "Functions": { "type": "list", "member": { "shape": "Se" } } } } }, "RemoveEventSource": { "http": { "method": "DELETE", "requestUri": "/2014-11-13/event-source-mappings/{UUID}", "responseCode": 204 }, "input": { "type": "structure", "required": [ "UUID" ], "members": { "UUID": { "location": "uri", "locationName": "UUID" } } } }, "UpdateFunctionConfiguration": { "http": { "method": "PUT", "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Role": { "location": "querystring", "locationName": "Role" }, "Handler": { "location": "querystring", "locationName": "Handler" }, "Description": { "location": "querystring", "locationName": "Description" }, "Timeout": { "location": "querystring", "locationName": "Timeout", "type": "integer" }, "MemorySize": { "location": "querystring", "locationName": "MemorySize", "type": "integer" } } }, "output": { "shape": "Se" } }, "UploadFunction": { "http": { "method": "PUT", "requestUri": "/2014-11-13/functions/{FunctionName}", "responseCode": 201 }, "input": { "type": "structure", "required": [ "FunctionName", "FunctionZip", "Runtime", "Role", "Handler", "Mode" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "FunctionZip": { "shape": "Sq" }, "Runtime": { "location": "querystring", "locationName": "Runtime" }, "Role": { "location": "querystring", "locationName": "Role" }, "Handler": { "location": "querystring", "locationName": "Handler" }, "Mode": { "location": "querystring", "locationName": "Mode" }, "Description": { "location": "querystring", "locationName": "Description" }, "Timeout": { "location": "querystring", "locationName": "Timeout", "type": "integer" }, "MemorySize": { "location": "querystring", "locationName": "MemorySize", "type": "integer" } }, "payload": "FunctionZip" }, "output": { "shape": "Se" } } }, "shapes": { "S6": { "type": "map", "key": {}, "value": {} }, "S7": { "type": "structure", "members": { "UUID": {}, "BatchSize": { "type": "integer" }, "EventSource": {}, "FunctionName": {}, "Parameters": { "shape": "S6" }, "Role": {}, "LastModified": { "type": "timestamp" }, "IsActive": { "type": "boolean" }, "Status": {} } }, "Se": { "type": "structure", "members": { "FunctionName": {}, "FunctionARN": {}, "ConfigurationId": {}, "Runtime": {}, "Role": {}, "Handler": {}, "Mode": {}, "CodeSize": { "type": "long" }, "Description": {}, "Timeout": { "type": "integer" }, "MemorySize": { "type": "integer" }, "LastModified": { "type": "timestamp" } } }, "Sq": { "type": "blob", "streaming": true } } } },{}],81:[function(require,module,exports){ module.exports={ "pagination": { "ListEventSources": { "input_token": "Marker", "output_token": "NextMarker", "limit_key": "MaxItems", "result_key": "EventSources" }, "ListFunctions": { "input_token": "Marker", "output_token": "NextMarker", "limit_key": "MaxItems", "result_key": "Functions" } } } },{}],82:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2015-03-31", "endpointPrefix": "lambda", "protocol": "rest-json", "serviceFullName": "AWS Lambda", "signatureVersion": "v4", "uid": "lambda-2015-03-31" }, "operations": { "AddPermission": { "http": { "requestUri": "/2015-03-31/functions/{FunctionName}/policy", "responseCode": 201 }, "input": { "type": "structure", "required": [ "FunctionName", "StatementId", "Action", "Principal" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "StatementId": {}, "Action": {}, "Principal": {}, "SourceArn": {}, "SourceAccount": {}, "EventSourceToken": {}, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } }, "output": { "type": "structure", "members": { "Statement": {} } } }, "CreateAlias": { "http": { "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", "responseCode": 201 }, "input": { "type": "structure", "required": [ "FunctionName", "Name", "FunctionVersion" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Name": {}, "FunctionVersion": {}, "Description": {} } }, "output": { "shape": "Sg" } }, "CreateEventSourceMapping": { "http": { "requestUri": "/2015-03-31/event-source-mappings/", "responseCode": 202 }, "input": { "type": "structure", "required": [ "EventSourceArn", "FunctionName", "StartingPosition" ], "members": { "EventSourceArn": {}, "FunctionName": {}, "Enabled": { "type": "boolean" }, "BatchSize": { "type": "integer" }, "StartingPosition": {}, "StartingPositionTimestamp": { "type": "timestamp" } } }, "output": { "shape": "Sn" } }, "CreateFunction": { "http": { "requestUri": "/2015-03-31/functions", "responseCode": 201 }, "input": { "type": "structure", "required": [ "FunctionName", "Runtime", "Role", "Handler", "Code" ], "members": { "FunctionName": {}, "Runtime": {}, "Role": {}, "Handler": {}, "Code": { "type": "structure", "members": { "ZipFile": { "shape": "St" }, "S3Bucket": {}, "S3Key": {}, "S3ObjectVersion": {} } }, "Description": {}, "Timeout": { "type": "integer" }, "MemorySize": { "type": "integer" }, "Publish": { "type": "boolean" }, "VpcConfig": { "shape": "S10" }, "DeadLetterConfig": { "shape": "S15" }, "Environment": { "shape": "S17" }, "KMSKeyArn": {} } }, "output": { "shape": "S1c" } }, "DeleteAlias": { "http": { "method": "DELETE", "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", "responseCode": 204 }, "input": { "type": "structure", "required": [ "FunctionName", "Name" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Name": { "location": "uri", "locationName": "Name" } } } }, "DeleteEventSourceMapping": { "http": { "method": "DELETE", "requestUri": "/2015-03-31/event-source-mappings/{UUID}", "responseCode": 202 }, "input": { "type": "structure", "required": [ "UUID" ], "members": { "UUID": { "location": "uri", "locationName": "UUID" } } }, "output": { "shape": "Sn" } }, "DeleteFunction": { "http": { "method": "DELETE", "requestUri": "/2015-03-31/functions/{FunctionName}", "responseCode": 204 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } } }, "GetAccountSettings": { "http": { "method": "GET", "requestUri": "/2016-08-19/account-settings/", "responseCode": 200 }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "AccountLimit": { "type": "structure", "members": { "TotalCodeSize": { "type": "long" }, "CodeSizeUnzipped": { "type": "long" }, "CodeSizeZipped": { "type": "long" }, "ConcurrentExecutions": { "type": "integer" } } }, "AccountUsage": { "type": "structure", "members": { "TotalCodeSize": { "type": "long" }, "FunctionCount": { "type": "long" } } } } } }, "GetAlias": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName", "Name" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Name": { "location": "uri", "locationName": "Name" } } }, "output": { "shape": "Sg" } }, "GetEventSourceMapping": { "http": { "method": "GET", "requestUri": "/2015-03-31/event-source-mappings/{UUID}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "UUID" ], "members": { "UUID": { "location": "uri", "locationName": "UUID" } } }, "output": { "shape": "Sn" } }, "GetFunction": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } }, "output": { "type": "structure", "members": { "Configuration": { "shape": "S1c" }, "Code": { "type": "structure", "members": { "RepositoryType": {}, "Location": {} } } } } }, "GetFunctionConfiguration": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } }, "output": { "shape": "S1c" } }, "GetPolicy": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}/policy", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } }, "output": { "type": "structure", "members": { "Policy": {} } } }, "Invoke": { "http": { "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "InvocationType": { "location": "header", "locationName": "X-Amz-Invocation-Type" }, "LogType": { "location": "header", "locationName": "X-Amz-Log-Type" }, "ClientContext": { "location": "header", "locationName": "X-Amz-Client-Context" }, "Payload": { "shape": "St" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } }, "payload": "Payload" }, "output": { "type": "structure", "members": { "StatusCode": { "location": "statusCode", "type": "integer" }, "FunctionError": { "location": "header", "locationName": "X-Amz-Function-Error" }, "LogResult": { "location": "header", "locationName": "X-Amz-Log-Result" }, "Payload": { "shape": "St" } }, "payload": "Payload" } }, "InvokeAsync": { "http": { "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", "responseCode": 202 }, "input": { "type": "structure", "required": [ "FunctionName", "InvokeArgs" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "InvokeArgs": { "type": "blob", "streaming": true } }, "deprecated": true, "payload": "InvokeArgs" }, "output": { "type": "structure", "members": { "Status": { "location": "statusCode", "type": "integer" } }, "deprecated": true }, "deprecated": true }, "ListAliases": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "FunctionVersion": { "location": "querystring", "locationName": "FunctionVersion" }, "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "Aliases": { "type": "list", "member": { "shape": "Sg" } } } } }, "ListEventSourceMappings": { "http": { "method": "GET", "requestUri": "/2015-03-31/event-source-mappings/", "responseCode": 200 }, "input": { "type": "structure", "members": { "EventSourceArn": { "location": "querystring", "locationName": "EventSourceArn" }, "FunctionName": { "location": "querystring", "locationName": "FunctionName" }, "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "EventSourceMappings": { "type": "list", "member": { "shape": "Sn" } } } } }, "ListFunctions": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/", "responseCode": 200 }, "input": { "type": "structure", "members": { "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "Functions": { "shape": "S2h" } } } }, "ListVersionsByFunction": { "http": { "method": "GET", "requestUri": "/2015-03-31/functions/{FunctionName}/versions", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Marker": { "location": "querystring", "locationName": "Marker" }, "MaxItems": { "location": "querystring", "locationName": "MaxItems", "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "Versions": { "shape": "S2h" } } } }, "PublishVersion": { "http": { "requestUri": "/2015-03-31/functions/{FunctionName}/versions", "responseCode": 201 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "CodeSha256": {}, "Description": {} } }, "output": { "shape": "S1c" } }, "RemovePermission": { "http": { "method": "DELETE", "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", "responseCode": 204 }, "input": { "type": "structure", "required": [ "FunctionName", "StatementId" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "StatementId": { "location": "uri", "locationName": "StatementId" }, "Qualifier": { "location": "querystring", "locationName": "Qualifier" } } } }, "UpdateAlias": { "http": { "method": "PUT", "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName", "Name" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Name": { "location": "uri", "locationName": "Name" }, "FunctionVersion": {}, "Description": {} } }, "output": { "shape": "Sg" } }, "UpdateEventSourceMapping": { "http": { "method": "PUT", "requestUri": "/2015-03-31/event-source-mappings/{UUID}", "responseCode": 202 }, "input": { "type": "structure", "required": [ "UUID" ], "members": { "UUID": { "location": "uri", "locationName": "UUID" }, "FunctionName": {}, "Enabled": { "type": "boolean" }, "BatchSize": { "type": "integer" } } }, "output": { "shape": "Sn" } }, "UpdateFunctionCode": { "http": { "method": "PUT", "requestUri": "/2015-03-31/functions/{FunctionName}/code", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "ZipFile": { "shape": "St" }, "S3Bucket": {}, "S3Key": {}, "S3ObjectVersion": {}, "Publish": { "type": "boolean" } } }, "output": { "shape": "S1c" } }, "UpdateFunctionConfiguration": { "http": { "method": "PUT", "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", "responseCode": 200 }, "input": { "type": "structure", "required": [ "FunctionName" ], "members": { "FunctionName": { "location": "uri", "locationName": "FunctionName" }, "Role": {}, "Handler": {}, "Description": {}, "Timeout": { "type": "integer" }, "MemorySize": { "type": "integer" }, "VpcConfig": { "shape": "S10" }, "Environment": { "shape": "S17" }, "Runtime": {}, "DeadLetterConfig": { "shape": "S15" }, "KMSKeyArn": {} } }, "output": { "shape": "S1c" } } }, "shapes": { "Sg": { "type": "structure", "members": { "AliasArn": {}, "Name": {}, "FunctionVersion": {}, "Description": {} } }, "Sn": { "type": "structure", "members": { "UUID": {}, "BatchSize": { "type": "integer" }, "EventSourceArn": {}, "FunctionArn": {}, "LastModified": { "type": "timestamp" }, "LastProcessingResult": {}, "State": {}, "StateTransitionReason": {} } }, "St": { "type": "blob", "sensitive": true }, "S10": { "type": "structure", "members": { "SubnetIds": { "shape": "S11" }, "SecurityGroupIds": { "shape": "S13" } } }, "S11": { "type": "list", "member": {} }, "S13": { "type": "list", "member": {} }, "S15": { "type": "structure", "members": { "TargetArn": {} } }, "S17": { "type": "structure", "members": { "Variables": { "shape": "S18" } } }, "S18": { "type": "map", "key": { "type": "string", "sensitive": true }, "value": { "type": "string", "sensitive": true }, "sensitive": true }, "S1c": { "type": "structure", "members": { "FunctionName": {}, "FunctionArn": {}, "Runtime": {}, "Role": {}, "Handler": {}, "CodeSize": { "type": "long" }, "Description": {}, "Timeout": { "type": "integer" }, "MemorySize": { "type": "integer" }, "LastModified": {}, "CodeSha256": {}, "Version": {}, "VpcConfig": { "type": "structure", "members": { "SubnetIds": { "shape": "S11" }, "SecurityGroupIds": { "shape": "S13" }, "VpcId": {} } }, "DeadLetterConfig": { "shape": "S15" }, "Environment": { "type": "structure", "members": { "Variables": { "shape": "S18" }, "Error": { "type": "structure", "members": { "ErrorCode": {}, "Message": { "type": "string", "sensitive": true } } } } }, "KMSKeyArn": {} } }, "S2h": { "type": "list", "member": { "shape": "S1c" } } } } },{}],83:[function(require,module,exports){ module.exports={ "pagination": { "ListEventSourceMappings": { "input_token": "Marker", "output_token": "NextMarker", "limit_key": "MaxItems", "result_key": "EventSourceMappings" }, "ListFunctions": { "input_token": "Marker", "output_token": "NextMarker", "limit_key": "MaxItems", "result_key": "Functions" } } } },{}],84:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-03-28", "endpointPrefix": "logs", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "Amazon CloudWatch Logs", "signatureVersion": "v4", "targetPrefix": "Logs_20140328", "uid": "logs-2014-03-28" }, "operations": { "CancelExportTask": { "input": { "type": "structure", "required": [ "taskId" ], "members": { "taskId": {} } } }, "CreateExportTask": { "input": { "type": "structure", "required": [ "logGroupName", "from", "to", "destination" ], "members": { "taskName": {}, "logGroupName": {}, "logStreamNamePrefix": {}, "from": { "type": "long" }, "to": { "type": "long" }, "destination": {}, "destinationPrefix": {} } }, "output": { "type": "structure", "members": { "taskId": {} } } }, "CreateLogGroup": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {}, "tags": { "shape": "Sc" } } } }, "CreateLogStream": { "input": { "type": "structure", "required": [ "logGroupName", "logStreamName" ], "members": { "logGroupName": {}, "logStreamName": {} } } }, "DeleteDestination": { "input": { "type": "structure", "required": [ "destinationName" ], "members": { "destinationName": {} } } }, "DeleteLogGroup": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {} } } }, "DeleteLogStream": { "input": { "type": "structure", "required": [ "logGroupName", "logStreamName" ], "members": { "logGroupName": {}, "logStreamName": {} } } }, "DeleteMetricFilter": { "input": { "type": "structure", "required": [ "logGroupName", "filterName" ], "members": { "logGroupName": {}, "filterName": {} } } }, "DeleteRetentionPolicy": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {} } } }, "DeleteSubscriptionFilter": { "input": { "type": "structure", "required": [ "logGroupName", "filterName" ], "members": { "logGroupName": {}, "filterName": {} } } }, "DescribeDestinations": { "input": { "type": "structure", "members": { "DestinationNamePrefix": {}, "nextToken": {}, "limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "destinations": { "type": "list", "member": { "shape": "St" } }, "nextToken": {} } } }, "DescribeExportTasks": { "input": { "type": "structure", "members": { "taskId": {}, "statusCode": {}, "nextToken": {}, "limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "exportTasks": { "type": "list", "member": { "type": "structure", "members": { "taskId": {}, "taskName": {}, "logGroupName": {}, "from": { "type": "long" }, "to": { "type": "long" }, "destination": {}, "destinationPrefix": {}, "status": { "type": "structure", "members": { "code": {}, "message": {} } }, "executionInfo": { "type": "structure", "members": { "creationTime": { "type": "long" }, "completionTime": { "type": "long" } } } } } }, "nextToken": {} } } }, "DescribeLogGroups": { "input": { "type": "structure", "members": { "logGroupNamePrefix": {}, "nextToken": {}, "limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "logGroups": { "type": "list", "member": { "type": "structure", "members": { "logGroupName": {}, "creationTime": { "type": "long" }, "retentionInDays": { "type": "integer" }, "metricFilterCount": { "type": "integer" }, "arn": {}, "storedBytes": { "type": "long" } } } }, "nextToken": {} } } }, "DescribeLogStreams": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {}, "logStreamNamePrefix": {}, "orderBy": {}, "descending": { "type": "boolean" }, "nextToken": {}, "limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "logStreams": { "type": "list", "member": { "type": "structure", "members": { "logStreamName": {}, "creationTime": { "type": "long" }, "firstEventTimestamp": { "type": "long" }, "lastEventTimestamp": { "type": "long" }, "lastIngestionTime": { "type": "long" }, "uploadSequenceToken": {}, "arn": {}, "storedBytes": { "type": "long" } } } }, "nextToken": {} } } }, "DescribeMetricFilters": { "input": { "type": "structure", "members": { "logGroupName": {}, "filterNamePrefix": {}, "nextToken": {}, "limit": { "type": "integer" }, "metricName": {}, "metricNamespace": {} } }, "output": { "type": "structure", "members": { "metricFilters": { "type": "list", "member": { "type": "structure", "members": { "filterName": {}, "filterPattern": {}, "metricTransformations": { "shape": "S1r" }, "creationTime": { "type": "long" }, "logGroupName": {} } } }, "nextToken": {} } } }, "DescribeSubscriptionFilters": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {}, "filterNamePrefix": {}, "nextToken": {}, "limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "subscriptionFilters": { "type": "list", "member": { "type": "structure", "members": { "filterName": {}, "logGroupName": {}, "filterPattern": {}, "destinationArn": {}, "roleArn": {}, "distribution": {}, "creationTime": { "type": "long" } } } }, "nextToken": {} } } }, "FilterLogEvents": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {}, "logStreamNames": { "type": "list", "member": {} }, "startTime": { "type": "long" }, "endTime": { "type": "long" }, "filterPattern": {}, "nextToken": {}, "limit": { "type": "integer" }, "interleaved": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "events": { "type": "list", "member": { "type": "structure", "members": { "logStreamName": {}, "timestamp": { "type": "long" }, "message": {}, "ingestionTime": { "type": "long" }, "eventId": {} } } }, "searchedLogStreams": { "type": "list", "member": { "type": "structure", "members": { "logStreamName": {}, "searchedCompletely": { "type": "boolean" } } } }, "nextToken": {} } } }, "GetLogEvents": { "input": { "type": "structure", "required": [ "logGroupName", "logStreamName" ], "members": { "logGroupName": {}, "logStreamName": {}, "startTime": { "type": "long" }, "endTime": { "type": "long" }, "nextToken": {}, "limit": { "type": "integer" }, "startFromHead": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "events": { "type": "list", "member": { "type": "structure", "members": { "timestamp": { "type": "long" }, "message": {}, "ingestionTime": { "type": "long" } } } }, "nextForwardToken": {}, "nextBackwardToken": {} } } }, "ListTagsLogGroup": { "input": { "type": "structure", "required": [ "logGroupName" ], "members": { "logGroupName": {} } }, "output": { "type": "structure", "members": { "tags": { "shape": "Sc" } } } }, "PutDestination": { "input": { "type": "structure", "required": [ "destinationName", "targetArn", "roleArn" ], "members": { "destinationName": {}, "targetArn": {}, "roleArn": {} } }, "output": { "type": "structure", "members": { "destination": { "shape": "St" } } } }, "PutDestinationPolicy": { "input": { "type": "structure", "required": [ "destinationName", "accessPolicy" ], "members": { "destinationName": {}, "accessPolicy": {} } } }, "PutLogEvents": { "input": { "type": "structure", "required": [ "logGroupName", "logStreamName", "logEvents" ], "members": { "logGroupName": {}, "logStreamName": {}, "logEvents": { "type": "list", "member": { "type": "structure", "required": [ "timestamp", "message" ], "members": { "timestamp": { "type": "long" }, "message": {} } } }, "sequenceToken": {} } }, "output": { "type": "structure", "members": { "nextSequenceToken": {}, "rejectedLogEventsInfo": { "type": "structure", "members": { "tooNewLogEventStartIndex": { "type": "integer" }, "tooOldLogEventEndIndex": { "type": "integer" }, "expiredLogEventEndIndex": { "type": "integer" } } } } } }, "PutMetricFilter": { "input": { "type": "structure", "required": [ "logGroupName", "filterName", "filterPattern", "metricTransformations" ], "members": { "logGroupName": {}, "filterName": {}, "filterPattern": {}, "metricTransformations": { "shape": "S1r" } } } }, "PutRetentionPolicy": { "input": { "type": "structure", "required": [ "logGroupName", "retentionInDays" ], "members": { "logGroupName": {}, "retentionInDays": { "type": "integer" } } } }, "PutSubscriptionFilter": { "input": { "type": "structure", "required": [ "logGroupName", "filterName", "filterPattern", "destinationArn" ], "members": { "logGroupName": {}, "filterName": {}, "filterPattern": {}, "destinationArn": {}, "roleArn": {}, "distribution": {} } } }, "TagLogGroup": { "input": { "type": "structure", "required": [ "logGroupName", "tags" ], "members": { "logGroupName": {}, "tags": { "shape": "Sc" } } } }, "TestMetricFilter": { "input": { "type": "structure", "required": [ "filterPattern", "logEventMessages" ], "members": { "filterPattern": {}, "logEventMessages": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "matches": { "type": "list", "member": { "type": "structure", "members": { "eventNumber": { "type": "long" }, "eventMessage": {}, "extractedValues": { "type": "map", "key": {}, "value": {} } } } } } } }, "UntagLogGroup": { "input": { "type": "structure", "required": [ "logGroupName", "tags" ], "members": { "logGroupName": {}, "tags": { "type": "list", "member": {} } } } } }, "shapes": { "Sc": { "type": "map", "key": {}, "value": {} }, "St": { "type": "structure", "members": { "destinationName": {}, "targetArn": {}, "roleArn": {}, "accessPolicy": {}, "arn": {}, "creationTime": { "type": "long" } } }, "S1r": { "type": "list", "member": { "type": "structure", "required": [ "metricName", "metricNamespace", "metricValue" ], "members": { "metricName": {}, "metricNamespace": {}, "metricValue": {}, "defaultValue": { "type": "double" } } } } } } },{}],85:[function(require,module,exports){ module.exports={ "pagination": { "DescribeDestinations": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": "destinations" }, "DescribeLogGroups": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": "logGroups" }, "DescribeLogStreams": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": "logStreams" }, "DescribeMetricFilters": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": "metricFilters" }, "DescribeSubscriptionFilters": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": "subscriptionFilters" }, "FilterLogEvents": { "input_token": "nextToken", "output_token": "nextToken", "limit_key": "limit", "result_key": [ "events", "searchedLogStreams" ] }, "GetLogEvents": { "input_token": "nextToken", "output_token": "nextForwardToken", "limit_key": "limit", "result_key": "events" } } } },{}],86:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "machinelearning-2014-12-12", "apiVersion": "2014-12-12", "endpointPrefix": "machinelearning", "jsonVersion": "1.1", "serviceFullName": "Amazon Machine Learning", "signatureVersion": "v4", "targetPrefix": "AmazonML_20141212", "protocol": "json" }, "operations": { "AddTags": { "input": { "type": "structure", "required": [ "Tags", "ResourceId", "ResourceType" ], "members": { "Tags": { "shape": "S2" }, "ResourceId": {}, "ResourceType": {} } }, "output": { "type": "structure", "members": { "ResourceId": {}, "ResourceType": {} } } }, "CreateBatchPrediction": { "input": { "type": "structure", "required": [ "BatchPredictionId", "MLModelId", "BatchPredictionDataSourceId", "OutputUri" ], "members": { "BatchPredictionId": {}, "BatchPredictionName": {}, "MLModelId": {}, "BatchPredictionDataSourceId": {}, "OutputUri": {} } }, "output": { "type": "structure", "members": { "BatchPredictionId": {} } } }, "CreateDataSourceFromRDS": { "input": { "type": "structure", "required": [ "DataSourceId", "RDSData", "RoleARN" ], "members": { "DataSourceId": {}, "DataSourceName": {}, "RDSData": { "type": "structure", "required": [ "DatabaseInformation", "SelectSqlQuery", "DatabaseCredentials", "S3StagingLocation", "ResourceRole", "ServiceRole", "SubnetId", "SecurityGroupIds" ], "members": { "DatabaseInformation": { "shape": "Sf" }, "SelectSqlQuery": {}, "DatabaseCredentials": { "type": "structure", "required": [ "Username", "Password" ], "members": { "Username": {}, "Password": {} } }, "S3StagingLocation": {}, "DataRearrangement": {}, "DataSchema": {}, "DataSchemaUri": {}, "ResourceRole": {}, "ServiceRole": {}, "SubnetId": {}, "SecurityGroupIds": { "type": "list", "member": {} } } }, "RoleARN": {}, "ComputeStatistics": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "DataSourceId": {} } } }, "CreateDataSourceFromRedshift": { "input": { "type": "structure", "required": [ "DataSourceId", "DataSpec", "RoleARN" ], "members": { "DataSourceId": {}, "DataSourceName": {}, "DataSpec": { "type": "structure", "required": [ "DatabaseInformation", "SelectSqlQuery", "DatabaseCredentials", "S3StagingLocation" ], "members": { "DatabaseInformation": { "shape": "Sy" }, "SelectSqlQuery": {}, "DatabaseCredentials": { "type": "structure", "required": [ "Username", "Password" ], "members": { "Username": {}, "Password": {} } }, "S3StagingLocation": {}, "DataRearrangement": {}, "DataSchema": {}, "DataSchemaUri": {} } }, "RoleARN": {}, "ComputeStatistics": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "DataSourceId": {} } } }, "CreateDataSourceFromS3": { "input": { "type": "structure", "required": [ "DataSourceId", "DataSpec" ], "members": { "DataSourceId": {}, "DataSourceName": {}, "DataSpec": { "type": "structure", "required": [ "DataLocationS3" ], "members": { "DataLocationS3": {}, "DataRearrangement": {}, "DataSchema": {}, "DataSchemaLocationS3": {} } }, "ComputeStatistics": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "DataSourceId": {} } } }, "CreateEvaluation": { "input": { "type": "structure", "required": [ "EvaluationId", "MLModelId", "EvaluationDataSourceId" ], "members": { "EvaluationId": {}, "EvaluationName": {}, "MLModelId": {}, "EvaluationDataSourceId": {} } }, "output": { "type": "structure", "members": { "EvaluationId": {} } } }, "CreateMLModel": { "input": { "type": "structure", "required": [ "MLModelId", "MLModelType", "TrainingDataSourceId" ], "members": { "MLModelId": {}, "MLModelName": {}, "MLModelType": {}, "Parameters": { "shape": "S1d" }, "TrainingDataSourceId": {}, "Recipe": {}, "RecipeUri": {} } }, "output": { "type": "structure", "members": { "MLModelId": {} } } }, "CreateRealtimeEndpoint": { "input": { "type": "structure", "required": [ "MLModelId" ], "members": { "MLModelId": {} } }, "output": { "type": "structure", "members": { "MLModelId": {}, "RealtimeEndpointInfo": { "shape": "S1j" } } } }, "DeleteBatchPrediction": { "input": { "type": "structure", "required": [ "BatchPredictionId" ], "members": { "BatchPredictionId": {} } }, "output": { "type": "structure", "members": { "BatchPredictionId": {} } } }, "DeleteDataSource": { "input": { "type": "structure", "required": [ "DataSourceId" ], "members": { "DataSourceId": {} } }, "output": { "type": "structure", "members": { "DataSourceId": {} } } }, "DeleteEvaluation": { "input": { "type": "structure", "required": [ "EvaluationId" ], "members": { "EvaluationId": {} } }, "output": { "type": "structure", "members": { "EvaluationId": {} } } }, "DeleteMLModel": { "input": { "type": "structure", "required": [ "MLModelId" ], "members": { "MLModelId": {} } }, "output": { "type": "structure", "members": { "MLModelId": {} } } }, "DeleteRealtimeEndpoint": { "input": { "type": "structure", "required": [ "MLModelId" ], "members": { "MLModelId": {} } }, "output": { "type": "structure", "members": { "MLModelId": {}, "RealtimeEndpointInfo": { "shape": "S1j" } } } }, "DeleteTags": { "input": { "type": "structure", "required": [ "TagKeys", "ResourceId", "ResourceType" ], "members": { "TagKeys": { "type": "list", "member": {} }, "ResourceId": {}, "ResourceType": {} } }, "output": { "type": "structure", "members": { "ResourceId": {}, "ResourceType": {} } } }, "DescribeBatchPredictions": { "input": { "type": "structure", "members": { "FilterVariable": {}, "EQ": {}, "GT": {}, "LT": {}, "GE": {}, "LE": {}, "NE": {}, "Prefix": {}, "SortOrder": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Results": { "type": "list", "member": { "type": "structure", "members": { "BatchPredictionId": {}, "MLModelId": {}, "BatchPredictionDataSourceId": {}, "InputDataLocationS3": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "OutputUri": {}, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" }, "TotalRecordCount": { "type": "long" }, "InvalidRecordCount": { "type": "long" } } } }, "NextToken": {} } } }, "DescribeDataSources": { "input": { "type": "structure", "members": { "FilterVariable": {}, "EQ": {}, "GT": {}, "LT": {}, "GE": {}, "LE": {}, "NE": {}, "Prefix": {}, "SortOrder": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Results": { "type": "list", "member": { "type": "structure", "members": { "DataSourceId": {}, "DataLocationS3": {}, "DataRearrangement": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "DataSizeInBytes": { "type": "long" }, "NumberOfFiles": { "type": "long" }, "Name": {}, "Status": {}, "Message": {}, "RedshiftMetadata": { "shape": "S2i" }, "RDSMetadata": { "shape": "S2j" }, "RoleARN": {}, "ComputeStatistics": { "type": "boolean" }, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeEvaluations": { "input": { "type": "structure", "members": { "FilterVariable": {}, "EQ": {}, "GT": {}, "LT": {}, "GE": {}, "LE": {}, "NE": {}, "Prefix": {}, "SortOrder": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Results": { "type": "list", "member": { "type": "structure", "members": { "EvaluationId": {}, "MLModelId": {}, "EvaluationDataSourceId": {}, "InputDataLocationS3": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "PerformanceMetrics": { "shape": "S2q" }, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeMLModels": { "input": { "type": "structure", "members": { "FilterVariable": {}, "EQ": {}, "GT": {}, "LT": {}, "GE": {}, "LE": {}, "NE": {}, "Prefix": {}, "SortOrder": {}, "NextToken": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Results": { "type": "list", "member": { "type": "structure", "members": { "MLModelId": {}, "TrainingDataSourceId": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "SizeInBytes": { "type": "long" }, "EndpointInfo": { "shape": "S1j" }, "TrainingParameters": { "shape": "S1d" }, "InputDataLocationS3": {}, "Algorithm": {}, "MLModelType": {}, "ScoreThreshold": { "type": "float" }, "ScoreThresholdLastUpdatedAt": { "type": "timestamp" }, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeTags": { "input": { "type": "structure", "required": [ "ResourceId", "ResourceType" ], "members": { "ResourceId": {}, "ResourceType": {} } }, "output": { "type": "structure", "members": { "ResourceId": {}, "ResourceType": {}, "Tags": { "shape": "S2" } } } }, "GetBatchPrediction": { "input": { "type": "structure", "required": [ "BatchPredictionId" ], "members": { "BatchPredictionId": {} } }, "output": { "type": "structure", "members": { "BatchPredictionId": {}, "MLModelId": {}, "BatchPredictionDataSourceId": {}, "InputDataLocationS3": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "OutputUri": {}, "LogUri": {}, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" }, "TotalRecordCount": { "type": "long" }, "InvalidRecordCount": { "type": "long" } } } }, "GetDataSource": { "input": { "type": "structure", "required": [ "DataSourceId" ], "members": { "DataSourceId": {}, "Verbose": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "DataSourceId": {}, "DataLocationS3": {}, "DataRearrangement": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "DataSizeInBytes": { "type": "long" }, "NumberOfFiles": { "type": "long" }, "Name": {}, "Status": {}, "LogUri": {}, "Message": {}, "RedshiftMetadata": { "shape": "S2i" }, "RDSMetadata": { "shape": "S2j" }, "RoleARN": {}, "ComputeStatistics": { "type": "boolean" }, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" }, "DataSourceSchema": {} } } }, "GetEvaluation": { "input": { "type": "structure", "required": [ "EvaluationId" ], "members": { "EvaluationId": {} } }, "output": { "type": "structure", "members": { "EvaluationId": {}, "MLModelId": {}, "EvaluationDataSourceId": {}, "InputDataLocationS3": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "PerformanceMetrics": { "shape": "S2q" }, "LogUri": {}, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" } } } }, "GetMLModel": { "input": { "type": "structure", "required": [ "MLModelId" ], "members": { "MLModelId": {}, "Verbose": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "MLModelId": {}, "TrainingDataSourceId": {}, "CreatedByIamUser": {}, "CreatedAt": { "type": "timestamp" }, "LastUpdatedAt": { "type": "timestamp" }, "Name": {}, "Status": {}, "SizeInBytes": { "type": "long" }, "EndpointInfo": { "shape": "S1j" }, "TrainingParameters": { "shape": "S1d" }, "InputDataLocationS3": {}, "MLModelType": {}, "ScoreThreshold": { "type": "float" }, "ScoreThresholdLastUpdatedAt": { "type": "timestamp" }, "LogUri": {}, "Message": {}, "ComputeTime": { "type": "long" }, "FinishedAt": { "type": "timestamp" }, "StartedAt": { "type": "timestamp" }, "Recipe": {}, "Schema": {} } } }, "Predict": { "input": { "type": "structure", "required": [ "MLModelId", "Record", "PredictEndpoint" ], "members": { "MLModelId": {}, "Record": { "type": "map", "key": {}, "value": {} }, "PredictEndpoint": {} } }, "output": { "type": "structure", "members": { "Prediction": { "type": "structure", "members": { "predictedLabel": {}, "predictedValue": { "type": "float" }, "predictedScores": { "type": "map", "key": {}, "value": { "type": "float" } }, "details": { "type": "map", "key": {}, "value": {} } } } } } }, "UpdateBatchPrediction": { "input": { "type": "structure", "required": [ "BatchPredictionId", "BatchPredictionName" ], "members": { "BatchPredictionId": {}, "BatchPredictionName": {} } }, "output": { "type": "structure", "members": { "BatchPredictionId": {} } } }, "UpdateDataSource": { "input": { "type": "structure", "required": [ "DataSourceId", "DataSourceName" ], "members": { "DataSourceId": {}, "DataSourceName": {} } }, "output": { "type": "structure", "members": { "DataSourceId": {} } } }, "UpdateEvaluation": { "input": { "type": "structure", "required": [ "EvaluationId", "EvaluationName" ], "members": { "EvaluationId": {}, "EvaluationName": {} } }, "output": { "type": "structure", "members": { "EvaluationId": {} } } }, "UpdateMLModel": { "input": { "type": "structure", "required": [ "MLModelId" ], "members": { "MLModelId": {}, "MLModelName": {}, "ScoreThreshold": { "type": "float" } } }, "output": { "type": "structure", "members": { "MLModelId": {} } } } }, "shapes": { "S2": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Sf": { "type": "structure", "required": [ "InstanceIdentifier", "DatabaseName" ], "members": { "InstanceIdentifier": {}, "DatabaseName": {} } }, "Sy": { "type": "structure", "required": [ "DatabaseName", "ClusterIdentifier" ], "members": { "DatabaseName": {}, "ClusterIdentifier": {} } }, "S1d": { "type": "map", "key": {}, "value": {} }, "S1j": { "type": "structure", "members": { "PeakRequestsPerSecond": { "type": "integer" }, "CreatedAt": { "type": "timestamp" }, "EndpointUrl": {}, "EndpointStatus": {} } }, "S2i": { "type": "structure", "members": { "RedshiftDatabase": { "shape": "Sy" }, "DatabaseUserName": {}, "SelectSqlQuery": {} } }, "S2j": { "type": "structure", "members": { "Database": { "shape": "Sf" }, "DatabaseUserName": {}, "SelectSqlQuery": {}, "ResourceRole": {}, "ServiceRole": {}, "DataPipelineId": {} } }, "S2q": { "type": "structure", "members": { "Properties": { "type": "map", "key": {}, "value": {} } } } }, "examples": {} } },{}],87:[function(require,module,exports){ module.exports={ "pagination": { "DescribeBatchPredictions": { "limit_key": "Limit", "output_token": "NextToken", "input_token": "NextToken", "result_key": "Results" }, "DescribeDataSources": { "limit_key": "Limit", "output_token": "NextToken", "input_token": "NextToken", "result_key": "Results" }, "DescribeEvaluations": { "limit_key": "Limit", "output_token": "NextToken", "input_token": "NextToken", "result_key": "Results" }, "DescribeMLModels": { "limit_key": "Limit", "output_token": "NextToken", "input_token": "NextToken", "result_key": "Results" } } } },{}],88:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "DataSourceAvailable": { "delay": 30, "operation": "DescribeDataSources", "maxAttempts": 60, "acceptors": [ { "expected": "COMPLETED", "matcher": "pathAll", "state": "success", "argument": "Results[].Status" }, { "expected": "FAILED", "matcher": "pathAny", "state": "failure", "argument": "Results[].Status" } ] }, "MLModelAvailable": { "delay": 30, "operation": "DescribeMLModels", "maxAttempts": 60, "acceptors": [ { "expected": "COMPLETED", "matcher": "pathAll", "state": "success", "argument": "Results[].Status" }, { "expected": "FAILED", "matcher": "pathAny", "state": "failure", "argument": "Results[].Status" } ] }, "EvaluationAvailable": { "delay": 30, "operation": "DescribeEvaluations", "maxAttempts": 60, "acceptors": [ { "expected": "COMPLETED", "matcher": "pathAll", "state": "success", "argument": "Results[].Status" }, { "expected": "FAILED", "matcher": "pathAny", "state": "failure", "argument": "Results[].Status" } ] }, "BatchPredictionAvailable": { "delay": 30, "operation": "DescribeBatchPredictions", "maxAttempts": 60, "acceptors": [ { "expected": "COMPLETED", "matcher": "pathAll", "state": "success", "argument": "Results[].Status" }, { "expected": "FAILED", "matcher": "pathAny", "state": "failure", "argument": "Results[].Status" } ] } } } },{}],89:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2015-07-01", "endpointPrefix": "marketplacecommerceanalytics", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "AWS Marketplace Commerce Analytics", "signatureVersion": "v4", "signingName": "marketplacecommerceanalytics", "targetPrefix": "MarketplaceCommerceAnalytics20150701", "uid": "marketplacecommerceanalytics-2015-07-01" }, "operations": { "GenerateDataSet": { "input": { "type": "structure", "required": [ "dataSetType", "dataSetPublicationDate", "roleNameArn", "destinationS3BucketName", "snsTopicArn" ], "members": { "dataSetType": {}, "dataSetPublicationDate": { "type": "timestamp" }, "roleNameArn": {}, "destinationS3BucketName": {}, "destinationS3Prefix": {}, "snsTopicArn": {}, "customerDefinedValues": { "shape": "S8" } } }, "output": { "type": "structure", "members": { "dataSetRequestId": {} } } }, "StartSupportDataExport": { "input": { "type": "structure", "required": [ "dataSetType", "fromDate", "roleNameArn", "destinationS3BucketName", "snsTopicArn" ], "members": { "dataSetType": {}, "fromDate": { "type": "timestamp" }, "roleNameArn": {}, "destinationS3BucketName": {}, "destinationS3Prefix": {}, "snsTopicArn": {}, "customerDefinedValues": { "shape": "S8" } } }, "output": { "type": "structure", "members": { "dataSetRequestId": {} } } } }, "shapes": { "S8": { "type": "map", "key": {}, "value": {} } } } },{}],90:[function(require,module,exports){ module.exports={ "acm": { "name": "ACM", "cors": true }, "apigateway": { "name": "APIGateway", "cors": true }, "applicationautoscaling": { "prefix": "application-autoscaling", "name": "ApplicationAutoScaling", "cors": true }, "appstream": { "name": "AppStream" }, "autoscaling": { "name": "AutoScaling", "cors": true }, "batch": { "name": "Batch" }, "budgets": { "name": "Budgets" }, "clouddirectory": { "name": "CloudDirectory" }, "cloudformation": { "name": "CloudFormation", "cors": true }, "cloudfront": { "name": "CloudFront", "versions": [ "2013-05-12*", "2013-11-11*", "2014-05-31*", "2014-10-21*", "2014-11-06*", "2015-04-17*", "2015-07-27*", "2015-09-17*", "2016-01-13*", "2016-01-28*", "2016-08-01*", "2016-08-20*", "2016-09-07*", "2016-09-29*" ], "cors": true }, "cloudhsm": { "name": "CloudHSM", "cors": true }, "cloudsearch": { "name": "CloudSearch" }, "cloudsearchdomain": { "name": "CloudSearchDomain" }, "cloudtrail": { "name": "CloudTrail", "cors": true }, "cloudwatch": { "prefix": "monitoring", "name": "CloudWatch", "cors": true }, "cloudwatchevents": { "prefix": "events", "name": "CloudWatchEvents", "versions": [ "2014-02-03*" ], "cors": true }, "cloudwatchlogs": { "prefix": "logs", "name": "CloudWatchLogs", "cors": true }, "codebuild": { "name": "CodeBuild" }, "codecommit": { "name": "CodeCommit", "cors": true }, "codedeploy": { "name": "CodeDeploy", "cors": true }, "codepipeline": { "name": "CodePipeline", "cors": true }, "cognitoidentity": { "prefix": "cognito-identity", "name": "CognitoIdentity", "cors": true }, "cognitoidentityserviceprovider": { "prefix": "cognito-idp", "name": "CognitoIdentityServiceProvider", "cors": true }, "cognitosync": { "prefix": "cognito-sync", "name": "CognitoSync", "cors": true }, "configservice": { "prefix": "config", "name": "ConfigService", "cors": true }, "cur": { "name": "CUR", "cors": true }, "datapipeline": { "name": "DataPipeline" }, "devicefarm": { "name": "DeviceFarm", "cors": true }, "directconnect": { "name": "DirectConnect", "cors": true }, "directoryservice": { "prefix": "ds", "name": "DirectoryService" }, "discovery": { "name": "Discovery" }, "dms": { "name": "DMS" }, "dynamodb": { "name": "DynamoDB", "cors": true }, "dynamodbstreams": { "prefix": "streams.dynamodb", "name": "DynamoDBStreams", "cors": true }, "ec2": { "name": "EC2", "versions": [ "2013-06-15*", "2013-10-15*", "2014-02-01*", "2014-05-01*", "2014-06-15*", "2014-09-01*", "2014-10-01*", "2015-03-01*", "2015-04-15*", "2015-10-01*", "2016-04-01*", "2016-09-15*" ], "cors": true }, "ecr": { "name": "ECR", "cors": true }, "ecs": { "name": "ECS", "cors": true }, "efs": { "prefix": "elasticfilesystem", "name": "EFS" }, "elasticache": { "name": "ElastiCache", "versions": [ "2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*" ], "cors": true }, "elasticbeanstalk": { "name": "ElasticBeanstalk", "cors": true }, "elb": { "prefix": "elasticloadbalancing", "name": "ELB", "cors": true }, "elbv2": { "prefix": "elasticloadbalancingv2", "name": "ELBv2", "cors": true }, "emr": { "prefix": "elasticmapreduce", "name": "EMR", "cors": true }, "es": { "name": "ES" }, "elastictranscoder": { "name": "ElasticTranscoder", "cors": true }, "firehose": { "name": "Firehose", "cors": true }, "gamelift": { "name": "GameLift", "cors": true }, "glacier": { "name": "Glacier" }, "health": { "name": "Health" }, "iam": { "name": "IAM" }, "importexport": { "name": "ImportExport" }, "inspector": { "name": "Inspector", "versions": [ "2015-08-18*" ], "cors": true }, "iot": { "name": "Iot", "cors": true }, "iotdata": { "prefix": "iot-data", "name": "IotData", "cors": true }, "kinesis": { "name": "Kinesis", "cors": true }, "kinesisanalytics": { "name": "KinesisAnalytics" }, "kms": { "name": "KMS", "cors": true }, "lambda": { "name": "Lambda", "cors": true }, "lexruntime": { "prefix": "runtime.lex", "name": "LexRuntime", "cors": true }, "lightsail": { "name": "Lightsail" }, "machinelearning": { "name": "MachineLearning", "cors": true }, "marketplacecommerceanalytics": { "name": "MarketplaceCommerceAnalytics", "cors": true }, "marketplacemetering": { "prefix": "meteringmarketplace", "name": "MarketplaceMetering" }, "mobileanalytics": { "name": "MobileAnalytics", "cors": true }, "opsworks": { "name": "OpsWorks", "cors": true }, "opsworkscm": { "name": "OpsWorksCM" }, "pinpoint": { "name": "Pinpoint" }, "polly": { "name": "Polly", "cors": true }, "rds": { "name": "RDS", "versions": [ "2014-09-01*" ], "cors": true }, "redshift": { "name": "Redshift", "cors": true }, "rekognition": { "name": "Rekognition", "cors": true }, "route53": { "name": "Route53", "cors": true }, "route53domains": { "name": "Route53Domains", "cors": true }, "s3": { "name": "S3", "dualstackAvailable": true, "cors": true }, "servicecatalog": { "name": "ServiceCatalog", "cors": true }, "ses": { "prefix": "email", "name": "SES", "cors": true }, "shield": { "name": "Shield" }, "simpledb": { "prefix": "sdb", "name": "SimpleDB" }, "sms": { "name": "SMS" }, "snowball": { "name": "Snowball" }, "sns": { "name": "SNS", "cors": true }, "sqs": { "name": "SQS", "cors": true }, "ssm": { "name": "SSM", "cors": true }, "storagegateway": { "name": "StorageGateway", "cors": true }, "stepfunctions": { "prefix": "states", "name": "StepFunctions" }, "sts": { "name": "STS", "cors": true }, "support": { "name": "Support" }, "swf": { "name": "SWF" }, "xray": { "name": "XRay" }, "waf": { "name": "WAF", "cors": true }, "wafregional": { "prefix": "waf-regional", "name": "WAFRegional" }, "workspaces": { "name": "WorkSpaces" } } },{}],91:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-06-05", "endpointPrefix": "mobileanalytics", "serviceFullName": "Amazon Mobile Analytics", "signatureVersion": "v4", "protocol": "rest-json" }, "operations": { "PutEvents": { "http": { "requestUri": "/2014-06-05/events", "responseCode": 202 }, "input": { "type": "structure", "required": [ "events", "clientContext" ], "members": { "events": { "type": "list", "member": { "type": "structure", "required": [ "eventType", "timestamp" ], "members": { "eventType": {}, "timestamp": {}, "session": { "type": "structure", "members": { "id": {}, "duration": { "type": "long" }, "startTimestamp": {}, "stopTimestamp": {} } }, "version": {}, "attributes": { "type": "map", "key": {}, "value": {} }, "metrics": { "type": "map", "key": {}, "value": { "type": "double" } } } } }, "clientContext": { "location": "header", "locationName": "x-amz-Client-Context" }, "clientContextEncoding": { "location": "header", "locationName": "x-amz-Client-Context-Encoding" } } } } }, "shapes": {} } },{}],92:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "monitoring-2010-08-01", "apiVersion": "2010-08-01", "endpointPrefix": "monitoring", "protocol": "query", "serviceAbbreviation": "CloudWatch", "serviceFullName": "Amazon CloudWatch", "signatureVersion": "v4", "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" }, "operations": { "DeleteAlarms": { "input": { "type": "structure", "required": [ "AlarmNames" ], "members": { "AlarmNames": { "shape": "S2" } } } }, "DescribeAlarmHistory": { "input": { "type": "structure", "members": { "AlarmName": {}, "HistoryItemType": {}, "StartDate": { "type": "timestamp" }, "EndDate": { "type": "timestamp" }, "MaxRecords": { "type": "integer" }, "NextToken": {} } }, "output": { "resultWrapper": "DescribeAlarmHistoryResult", "type": "structure", "members": { "AlarmHistoryItems": { "type": "list", "member": { "type": "structure", "members": { "AlarmName": {}, "Timestamp": { "type": "timestamp" }, "HistoryItemType": {}, "HistorySummary": {}, "HistoryData": {} } } }, "NextToken": {} } } }, "DescribeAlarms": { "input": { "type": "structure", "members": { "AlarmNames": { "shape": "S2" }, "AlarmNamePrefix": {}, "StateValue": {}, "ActionPrefix": {}, "MaxRecords": { "type": "integer" }, "NextToken": {} } }, "output": { "resultWrapper": "DescribeAlarmsResult", "type": "structure", "members": { "MetricAlarms": { "shape": "Sj" }, "NextToken": {} } } }, "DescribeAlarmsForMetric": { "input": { "type": "structure", "required": [ "MetricName", "Namespace" ], "members": { "MetricName": {}, "Namespace": {}, "Statistic": {}, "ExtendedStatistic": {}, "Dimensions": { "shape": "Sw" }, "Period": { "type": "integer" }, "Unit": {} } }, "output": { "resultWrapper": "DescribeAlarmsForMetricResult", "type": "structure", "members": { "MetricAlarms": { "shape": "Sj" } } } }, "DisableAlarmActions": { "input": { "type": "structure", "required": [ "AlarmNames" ], "members": { "AlarmNames": { "shape": "S2" } } } }, "EnableAlarmActions": { "input": { "type": "structure", "required": [ "AlarmNames" ], "members": { "AlarmNames": { "shape": "S2" } } } }, "GetMetricStatistics": { "input": { "type": "structure", "required": [ "Namespace", "MetricName", "StartTime", "EndTime", "Period" ], "members": { "Namespace": {}, "MetricName": {}, "Dimensions": { "shape": "Sw" }, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Period": { "type": "integer" }, "Statistics": { "type": "list", "member": {} }, "ExtendedStatistics": { "type": "list", "member": {} }, "Unit": {} } }, "output": { "resultWrapper": "GetMetricStatisticsResult", "type": "structure", "members": { "Label": {}, "Datapoints": { "type": "list", "member": { "type": "structure", "members": { "Timestamp": { "type": "timestamp" }, "SampleCount": { "type": "double" }, "Average": { "type": "double" }, "Sum": { "type": "double" }, "Minimum": { "type": "double" }, "Maximum": { "type": "double" }, "Unit": {}, "ExtendedStatistics": { "type": "map", "key": {}, "value": { "type": "double" } } }, "xmlOrder": [ "Timestamp", "SampleCount", "Average", "Sum", "Minimum", "Maximum", "Unit", "ExtendedStatistics" ] } } } } }, "ListMetrics": { "input": { "type": "structure", "members": { "Namespace": {}, "MetricName": {}, "Dimensions": { "type": "list", "member": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "Value": {} } } }, "NextToken": {} } }, "output": { "resultWrapper": "ListMetricsResult", "type": "structure", "members": { "Metrics": { "type": "list", "member": { "type": "structure", "members": { "Namespace": {}, "MetricName": {}, "Dimensions": { "shape": "Sw" } }, "xmlOrder": [ "Namespace", "MetricName", "Dimensions" ] } }, "NextToken": {} }, "xmlOrder": [ "Metrics", "NextToken" ] } }, "PutMetricAlarm": { "input": { "type": "structure", "required": [ "AlarmName", "MetricName", "Namespace", "Period", "EvaluationPeriods", "Threshold", "ComparisonOperator" ], "members": { "AlarmName": {}, "AlarmDescription": {}, "ActionsEnabled": { "type": "boolean" }, "OKActions": { "shape": "So" }, "AlarmActions": { "shape": "So" }, "InsufficientDataActions": { "shape": "So" }, "MetricName": {}, "Namespace": {}, "Statistic": {}, "ExtendedStatistic": {}, "Dimensions": { "shape": "Sw" }, "Period": { "type": "integer" }, "Unit": {}, "EvaluationPeriods": { "type": "integer" }, "Threshold": { "type": "double" }, "ComparisonOperator": {} } } }, "PutMetricData": { "input": { "type": "structure", "required": [ "Namespace", "MetricData" ], "members": { "Namespace": {}, "MetricData": { "type": "list", "member": { "type": "structure", "required": [ "MetricName" ], "members": { "MetricName": {}, "Dimensions": { "shape": "Sw" }, "Timestamp": { "type": "timestamp" }, "Value": { "type": "double" }, "StatisticValues": { "type": "structure", "required": [ "SampleCount", "Sum", "Minimum", "Maximum" ], "members": { "SampleCount": { "type": "double" }, "Sum": { "type": "double" }, "Minimum": { "type": "double" }, "Maximum": { "type": "double" } } }, "Unit": {} } } } } } }, "SetAlarmState": { "input": { "type": "structure", "required": [ "AlarmName", "StateValue", "StateReason" ], "members": { "AlarmName": {}, "StateValue": {}, "StateReason": {}, "StateReasonData": {} } } } }, "shapes": { "S2": { "type": "list", "member": {} }, "Sj": { "type": "list", "member": { "type": "structure", "members": { "AlarmName": {}, "AlarmArn": {}, "AlarmDescription": {}, "AlarmConfigurationUpdatedTimestamp": { "type": "timestamp" }, "ActionsEnabled": { "type": "boolean" }, "OKActions": { "shape": "So" }, "AlarmActions": { "shape": "So" }, "InsufficientDataActions": { "shape": "So" }, "StateValue": {}, "StateReason": {}, "StateReasonData": {}, "StateUpdatedTimestamp": { "type": "timestamp" }, "MetricName": {}, "Namespace": {}, "Statistic": {}, "ExtendedStatistic": {}, "Dimensions": { "shape": "Sw" }, "Period": { "type": "integer" }, "Unit": {}, "EvaluationPeriods": { "type": "integer" }, "Threshold": { "type": "double" }, "ComparisonOperator": {} }, "xmlOrder": [ "AlarmName", "AlarmArn", "AlarmDescription", "AlarmConfigurationUpdatedTimestamp", "ActionsEnabled", "OKActions", "AlarmActions", "InsufficientDataActions", "StateValue", "StateReason", "StateReasonData", "StateUpdatedTimestamp", "MetricName", "Namespace", "Statistic", "Dimensions", "Period", "Unit", "EvaluationPeriods", "Threshold", "ComparisonOperator", "ExtendedStatistic" ] } }, "So": { "type": "list", "member": {} }, "Sw": { "type": "list", "member": { "type": "structure", "required": [ "Name", "Value" ], "members": { "Name": {}, "Value": {} }, "xmlOrder": [ "Name", "Value" ] } } } } },{}],93:[function(require,module,exports){ module.exports={ "pagination": { "DescribeAlarmHistory": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxRecords", "result_key": "AlarmHistoryItems" }, "DescribeAlarms": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxRecords", "result_key": "MetricAlarms" }, "DescribeAlarmsForMetric": { "result_key": "MetricAlarms" }, "ListMetrics": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "Metrics" } } } },{}],94:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "AlarmExists": { "delay": 5, "maxAttempts": 40, "operation": "DescribeAlarms", "acceptors": [ { "matcher": "path", "expected": true, "argument": "length(MetricAlarms[]) > `0`", "state": "success" } ] } } } },{}],95:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "opsworks-2013-02-18", "apiVersion": "2013-02-18", "endpointPrefix": "opsworks", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "AWS OpsWorks", "signatureVersion": "v4", "targetPrefix": "OpsWorks_20130218" }, "operations": { "AssignInstance": { "input": { "type": "structure", "required": [ "InstanceId", "LayerIds" ], "members": { "InstanceId": {}, "LayerIds": { "shape": "S3" } } } }, "AssignVolume": { "input": { "type": "structure", "required": [ "VolumeId" ], "members": { "VolumeId": {}, "InstanceId": {} } } }, "AssociateElasticIp": { "input": { "type": "structure", "required": [ "ElasticIp" ], "members": { "ElasticIp": {}, "InstanceId": {} } } }, "AttachElasticLoadBalancer": { "input": { "type": "structure", "required": [ "ElasticLoadBalancerName", "LayerId" ], "members": { "ElasticLoadBalancerName": {}, "LayerId": {} } } }, "CloneStack": { "input": { "type": "structure", "required": [ "SourceStackId", "ServiceRoleArn" ], "members": { "SourceStackId": {}, "Name": {}, "Region": {}, "VpcId": {}, "Attributes": { "shape": "S8" }, "ServiceRoleArn": {}, "DefaultInstanceProfileArn": {}, "DefaultOs": {}, "HostnameTheme": {}, "DefaultAvailabilityZone": {}, "DefaultSubnetId": {}, "CustomJson": {}, "ConfigurationManager": { "shape": "Sa" }, "ChefConfiguration": { "shape": "Sb" }, "UseCustomCookbooks": { "type": "boolean" }, "UseOpsworksSecurityGroups": { "type": "boolean" }, "CustomCookbooksSource": { "shape": "Sd" }, "DefaultSshKeyName": {}, "ClonePermissions": { "type": "boolean" }, "CloneAppIds": { "shape": "S3" }, "DefaultRootDeviceType": {}, "AgentVersion": {} } }, "output": { "type": "structure", "members": { "StackId": {} } } }, "CreateApp": { "input": { "type": "structure", "required": [ "StackId", "Name", "Type" ], "members": { "StackId": {}, "Shortname": {}, "Name": {}, "Description": {}, "DataSources": { "shape": "Si" }, "Type": {}, "AppSource": { "shape": "Sd" }, "Domains": { "shape": "S3" }, "EnableSsl": { "type": "boolean" }, "SslConfiguration": { "shape": "Sl" }, "Attributes": { "shape": "Sm" }, "Environment": { "shape": "So" } } }, "output": { "type": "structure", "members": { "AppId": {} } } }, "CreateDeployment": { "input": { "type": "structure", "required": [ "StackId", "Command" ], "members": { "StackId": {}, "AppId": {}, "InstanceIds": { "shape": "S3" }, "LayerIds": { "shape": "S3" }, "Command": { "shape": "Ss" }, "Comment": {}, "CustomJson": {} } }, "output": { "type": "structure", "members": { "DeploymentId": {} } } }, "CreateInstance": { "input": { "type": "structure", "required": [ "StackId", "LayerIds", "InstanceType" ], "members": { "StackId": {}, "LayerIds": { "shape": "S3" }, "InstanceType": {}, "AutoScalingType": {}, "Hostname": {}, "Os": {}, "AmiId": {}, "SshKeyName": {}, "AvailabilityZone": {}, "VirtualizationType": {}, "SubnetId": {}, "Architecture": {}, "RootDeviceType": {}, "BlockDeviceMappings": { "shape": "Sz" }, "InstallUpdatesOnBoot": { "type": "boolean" }, "EbsOptimized": { "type": "boolean" }, "AgentVersion": {}, "Tenancy": {} } }, "output": { "type": "structure", "members": { "InstanceId": {} } } }, "CreateLayer": { "input": { "type": "structure", "required": [ "StackId", "Type", "Name", "Shortname" ], "members": { "StackId": {}, "Type": {}, "Name": {}, "Shortname": {}, "Attributes": { "shape": "S17" }, "CustomInstanceProfileArn": {}, "CustomJson": {}, "CustomSecurityGroupIds": { "shape": "S3" }, "Packages": { "shape": "S3" }, "VolumeConfigurations": { "shape": "S19" }, "EnableAutoHealing": { "type": "boolean" }, "AutoAssignElasticIps": { "type": "boolean" }, "AutoAssignPublicIps": { "type": "boolean" }, "CustomRecipes": { "shape": "S1b" }, "InstallUpdatesOnBoot": { "type": "boolean" }, "UseEbsOptimizedInstances": { "type": "boolean" }, "LifecycleEventConfiguration": { "shape": "S1c" } } }, "output": { "type": "structure", "members": { "LayerId": {} } } }, "CreateStack": { "input": { "type": "structure", "required": [ "Name", "Region", "ServiceRoleArn", "DefaultInstanceProfileArn" ], "members": { "Name": {}, "Region": {}, "VpcId": {}, "Attributes": { "shape": "S8" }, "ServiceRoleArn": {}, "DefaultInstanceProfileArn": {}, "DefaultOs": {}, "HostnameTheme": {}, "DefaultAvailabilityZone": {}, "DefaultSubnetId": {}, "CustomJson": {}, "ConfigurationManager": { "shape": "Sa" }, "ChefConfiguration": { "shape": "Sb" }, "UseCustomCookbooks": { "type": "boolean" }, "UseOpsworksSecurityGroups": { "type": "boolean" }, "CustomCookbooksSource": { "shape": "Sd" }, "DefaultSshKeyName": {}, "DefaultRootDeviceType": {}, "AgentVersion": {} } }, "output": { "type": "structure", "members": { "StackId": {} } } }, "CreateUserProfile": { "input": { "type": "structure", "required": [ "IamUserArn" ], "members": { "IamUserArn": {}, "SshUsername": {}, "SshPublicKey": {}, "AllowSelfManagement": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "IamUserArn": {} } } }, "DeleteApp": { "input": { "type": "structure", "required": [ "AppId" ], "members": { "AppId": {} } } }, "DeleteInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "DeleteElasticIp": { "type": "boolean" }, "DeleteVolumes": { "type": "boolean" } } } }, "DeleteLayer": { "input": { "type": "structure", "required": [ "LayerId" ], "members": { "LayerId": {} } } }, "DeleteStack": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {} } } }, "DeleteUserProfile": { "input": { "type": "structure", "required": [ "IamUserArn" ], "members": { "IamUserArn": {} } } }, "DeregisterEcsCluster": { "input": { "type": "structure", "required": [ "EcsClusterArn" ], "members": { "EcsClusterArn": {} } } }, "DeregisterElasticIp": { "input": { "type": "structure", "required": [ "ElasticIp" ], "members": { "ElasticIp": {} } } }, "DeregisterInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } } }, "DeregisterRdsDbInstance": { "input": { "type": "structure", "required": [ "RdsDbInstanceArn" ], "members": { "RdsDbInstanceArn": {} } } }, "DeregisterVolume": { "input": { "type": "structure", "required": [ "VolumeId" ], "members": { "VolumeId": {} } } }, "DescribeAgentVersions": { "input": { "type": "structure", "members": { "StackId": {}, "ConfigurationManager": { "shape": "Sa" } } }, "output": { "type": "structure", "members": { "AgentVersions": { "type": "list", "member": { "type": "structure", "members": { "Version": {}, "ConfigurationManager": { "shape": "Sa" } } } } } } }, "DescribeApps": { "input": { "type": "structure", "members": { "StackId": {}, "AppIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Apps": { "type": "list", "member": { "type": "structure", "members": { "AppId": {}, "StackId": {}, "Shortname": {}, "Name": {}, "Description": {}, "DataSources": { "shape": "Si" }, "Type": {}, "AppSource": { "shape": "Sd" }, "Domains": { "shape": "S3" }, "EnableSsl": { "type": "boolean" }, "SslConfiguration": { "shape": "Sl" }, "Attributes": { "shape": "Sm" }, "CreatedAt": {}, "Environment": { "shape": "So" } } } } } } }, "DescribeCommands": { "input": { "type": "structure", "members": { "DeploymentId": {}, "InstanceId": {}, "CommandIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Commands": { "type": "list", "member": { "type": "structure", "members": { "CommandId": {}, "InstanceId": {}, "DeploymentId": {}, "CreatedAt": {}, "AcknowledgedAt": {}, "CompletedAt": {}, "Status": {}, "ExitCode": { "type": "integer" }, "LogUrl": {}, "Type": {} } } } } } }, "DescribeDeployments": { "input": { "type": "structure", "members": { "StackId": {}, "AppId": {}, "DeploymentIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Deployments": { "type": "list", "member": { "type": "structure", "members": { "DeploymentId": {}, "StackId": {}, "AppId": {}, "CreatedAt": {}, "CompletedAt": {}, "Duration": { "type": "integer" }, "IamUserArn": {}, "Comment": {}, "Command": { "shape": "Ss" }, "Status": {}, "CustomJson": {}, "InstanceIds": { "shape": "S3" } } } } } } }, "DescribeEcsClusters": { "input": { "type": "structure", "members": { "EcsClusterArns": { "shape": "S3" }, "StackId": {}, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "EcsClusters": { "type": "list", "member": { "type": "structure", "members": { "EcsClusterArn": {}, "EcsClusterName": {}, "StackId": {}, "RegisteredAt": {} } } }, "NextToken": {} } } }, "DescribeElasticIps": { "input": { "type": "structure", "members": { "InstanceId": {}, "StackId": {}, "Ips": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "ElasticIps": { "type": "list", "member": { "type": "structure", "members": { "Ip": {}, "Name": {}, "Domain": {}, "Region": {}, "InstanceId": {} } } } } } }, "DescribeElasticLoadBalancers": { "input": { "type": "structure", "members": { "StackId": {}, "LayerIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "ElasticLoadBalancers": { "type": "list", "member": { "type": "structure", "members": { "ElasticLoadBalancerName": {}, "Region": {}, "DnsName": {}, "StackId": {}, "LayerId": {}, "VpcId": {}, "AvailabilityZones": { "shape": "S3" }, "SubnetIds": { "shape": "S3" }, "Ec2InstanceIds": { "shape": "S3" } } } } } } }, "DescribeInstances": { "input": { "type": "structure", "members": { "StackId": {}, "LayerId": {}, "InstanceIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Instances": { "type": "list", "member": { "type": "structure", "members": { "AgentVersion": {}, "AmiId": {}, "Architecture": {}, "AutoScalingType": {}, "AvailabilityZone": {}, "BlockDeviceMappings": { "shape": "Sz" }, "CreatedAt": {}, "EbsOptimized": { "type": "boolean" }, "Ec2InstanceId": {}, "EcsClusterArn": {}, "EcsContainerInstanceArn": {}, "ElasticIp": {}, "Hostname": {}, "InfrastructureClass": {}, "InstallUpdatesOnBoot": { "type": "boolean" }, "InstanceId": {}, "InstanceProfileArn": {}, "InstanceType": {}, "LastServiceErrorId": {}, "LayerIds": { "shape": "S3" }, "Os": {}, "Platform": {}, "PrivateDns": {}, "PrivateIp": {}, "PublicDns": {}, "PublicIp": {}, "RegisteredBy": {}, "ReportedAgentVersion": {}, "ReportedOs": { "type": "structure", "members": { "Family": {}, "Name": {}, "Version": {} } }, "RootDeviceType": {}, "RootDeviceVolumeId": {}, "SecurityGroupIds": { "shape": "S3" }, "SshHostDsaKeyFingerprint": {}, "SshHostRsaKeyFingerprint": {}, "SshKeyName": {}, "StackId": {}, "Status": {}, "SubnetId": {}, "Tenancy": {}, "VirtualizationType": {} } } } } } }, "DescribeLayers": { "input": { "type": "structure", "members": { "StackId": {}, "LayerIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Layers": { "type": "list", "member": { "type": "structure", "members": { "StackId": {}, "LayerId": {}, "Type": {}, "Name": {}, "Shortname": {}, "Attributes": { "shape": "S17" }, "CustomInstanceProfileArn": {}, "CustomJson": {}, "CustomSecurityGroupIds": { "shape": "S3" }, "DefaultSecurityGroupNames": { "shape": "S3" }, "Packages": { "shape": "S3" }, "VolumeConfigurations": { "shape": "S19" }, "EnableAutoHealing": { "type": "boolean" }, "AutoAssignElasticIps": { "type": "boolean" }, "AutoAssignPublicIps": { "type": "boolean" }, "DefaultRecipes": { "shape": "S1b" }, "CustomRecipes": { "shape": "S1b" }, "CreatedAt": {}, "InstallUpdatesOnBoot": { "type": "boolean" }, "UseEbsOptimizedInstances": { "type": "boolean" }, "LifecycleEventConfiguration": { "shape": "S1c" } } } } } } }, "DescribeLoadBasedAutoScaling": { "input": { "type": "structure", "required": [ "LayerIds" ], "members": { "LayerIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "LoadBasedAutoScalingConfigurations": { "type": "list", "member": { "type": "structure", "members": { "LayerId": {}, "Enable": { "type": "boolean" }, "UpScaling": { "shape": "S30" }, "DownScaling": { "shape": "S30" } } } } } } }, "DescribeMyUserProfile": { "output": { "type": "structure", "members": { "UserProfile": { "type": "structure", "members": { "IamUserArn": {}, "Name": {}, "SshUsername": {}, "SshPublicKey": {} } } } } }, "DescribePermissions": { "input": { "type": "structure", "members": { "IamUserArn": {}, "StackId": {} } }, "output": { "type": "structure", "members": { "Permissions": { "type": "list", "member": { "type": "structure", "members": { "StackId": {}, "IamUserArn": {}, "AllowSsh": { "type": "boolean" }, "AllowSudo": { "type": "boolean" }, "Level": {} } } } } } }, "DescribeRaidArrays": { "input": { "type": "structure", "members": { "InstanceId": {}, "StackId": {}, "RaidArrayIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "RaidArrays": { "type": "list", "member": { "type": "structure", "members": { "RaidArrayId": {}, "InstanceId": {}, "Name": {}, "RaidLevel": { "type": "integer" }, "NumberOfDisks": { "type": "integer" }, "Size": { "type": "integer" }, "Device": {}, "MountPoint": {}, "AvailabilityZone": {}, "CreatedAt": {}, "StackId": {}, "VolumeType": {}, "Iops": { "type": "integer" } } } } } } }, "DescribeRdsDbInstances": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {}, "RdsDbInstanceArns": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "RdsDbInstances": { "type": "list", "member": { "type": "structure", "members": { "RdsDbInstanceArn": {}, "DbInstanceIdentifier": {}, "DbUser": {}, "DbPassword": {}, "Region": {}, "Address": {}, "Engine": {}, "StackId": {}, "MissingOnRds": { "type": "boolean" } } } } } } }, "DescribeServiceErrors": { "input": { "type": "structure", "members": { "StackId": {}, "InstanceId": {}, "ServiceErrorIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "ServiceErrors": { "type": "list", "member": { "type": "structure", "members": { "ServiceErrorId": {}, "StackId": {}, "InstanceId": {}, "Type": {}, "Message": {}, "CreatedAt": {} } } } } } }, "DescribeStackProvisioningParameters": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {} } }, "output": { "type": "structure", "members": { "AgentInstallerUrl": {}, "Parameters": { "type": "map", "key": {}, "value": {} } } } }, "DescribeStackSummary": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {} } }, "output": { "type": "structure", "members": { "StackSummary": { "type": "structure", "members": { "StackId": {}, "Name": {}, "Arn": {}, "LayersCount": { "type": "integer" }, "AppsCount": { "type": "integer" }, "InstancesCount": { "type": "structure", "members": { "Assigning": { "type": "integer" }, "Booting": { "type": "integer" }, "ConnectionLost": { "type": "integer" }, "Deregistering": { "type": "integer" }, "Online": { "type": "integer" }, "Pending": { "type": "integer" }, "Rebooting": { "type": "integer" }, "Registered": { "type": "integer" }, "Registering": { "type": "integer" }, "Requested": { "type": "integer" }, "RunningSetup": { "type": "integer" }, "SetupFailed": { "type": "integer" }, "ShuttingDown": { "type": "integer" }, "StartFailed": { "type": "integer" }, "Stopped": { "type": "integer" }, "Stopping": { "type": "integer" }, "Terminated": { "type": "integer" }, "Terminating": { "type": "integer" }, "Unassigning": { "type": "integer" } } } } } } } }, "DescribeStacks": { "input": { "type": "structure", "members": { "StackIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Stacks": { "type": "list", "member": { "type": "structure", "members": { "StackId": {}, "Name": {}, "Arn": {}, "Region": {}, "VpcId": {}, "Attributes": { "shape": "S8" }, "ServiceRoleArn": {}, "DefaultInstanceProfileArn": {}, "DefaultOs": {}, "HostnameTheme": {}, "DefaultAvailabilityZone": {}, "DefaultSubnetId": {}, "CustomJson": {}, "ConfigurationManager": { "shape": "Sa" }, "ChefConfiguration": { "shape": "Sb" }, "UseCustomCookbooks": { "type": "boolean" }, "UseOpsworksSecurityGroups": { "type": "boolean" }, "CustomCookbooksSource": { "shape": "Sd" }, "DefaultSshKeyName": {}, "CreatedAt": {}, "DefaultRootDeviceType": {}, "AgentVersion": {} } } } } } }, "DescribeTimeBasedAutoScaling": { "input": { "type": "structure", "required": [ "InstanceIds" ], "members": { "InstanceIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "TimeBasedAutoScalingConfigurations": { "type": "list", "member": { "type": "structure", "members": { "InstanceId": {}, "AutoScalingSchedule": { "shape": "S40" } } } } } } }, "DescribeUserProfiles": { "input": { "type": "structure", "members": { "IamUserArns": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "UserProfiles": { "type": "list", "member": { "type": "structure", "members": { "IamUserArn": {}, "Name": {}, "SshUsername": {}, "SshPublicKey": {}, "AllowSelfManagement": { "type": "boolean" } } } } } } }, "DescribeVolumes": { "input": { "type": "structure", "members": { "InstanceId": {}, "StackId": {}, "RaidArrayId": {}, "VolumeIds": { "shape": "S3" } } }, "output": { "type": "structure", "members": { "Volumes": { "type": "list", "member": { "type": "structure", "members": { "VolumeId": {}, "Ec2VolumeId": {}, "Name": {}, "RaidArrayId": {}, "InstanceId": {}, "Status": {}, "Size": { "type": "integer" }, "Device": {}, "MountPoint": {}, "Region": {}, "AvailabilityZone": {}, "VolumeType": {}, "Iops": { "type": "integer" } } } } } } }, "DetachElasticLoadBalancer": { "input": { "type": "structure", "required": [ "ElasticLoadBalancerName", "LayerId" ], "members": { "ElasticLoadBalancerName": {}, "LayerId": {} } } }, "DisassociateElasticIp": { "input": { "type": "structure", "required": [ "ElasticIp" ], "members": { "ElasticIp": {} } } }, "GetHostnameSuggestion": { "input": { "type": "structure", "required": [ "LayerId" ], "members": { "LayerId": {} } }, "output": { "type": "structure", "members": { "LayerId": {}, "Hostname": {} } } }, "GrantAccess": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "ValidForInMinutes": { "type": "integer" } } }, "output": { "type": "structure", "members": { "TemporaryCredential": { "type": "structure", "members": { "Username": {}, "Password": {}, "ValidForInMinutes": { "type": "integer" }, "InstanceId": {} } } } } }, "RebootInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } } }, "RegisterEcsCluster": { "input": { "type": "structure", "required": [ "EcsClusterArn", "StackId" ], "members": { "EcsClusterArn": {}, "StackId": {} } }, "output": { "type": "structure", "members": { "EcsClusterArn": {} } } }, "RegisterElasticIp": { "input": { "type": "structure", "required": [ "ElasticIp", "StackId" ], "members": { "ElasticIp": {}, "StackId": {} } }, "output": { "type": "structure", "members": { "ElasticIp": {} } } }, "RegisterInstance": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {}, "Hostname": {}, "PublicIp": {}, "PrivateIp": {}, "RsaPublicKey": {}, "RsaPublicKeyFingerprint": {}, "InstanceIdentity": { "type": "structure", "members": { "Document": {}, "Signature": {} } } } }, "output": { "type": "structure", "members": { "InstanceId": {} } } }, "RegisterRdsDbInstance": { "input": { "type": "structure", "required": [ "StackId", "RdsDbInstanceArn", "DbUser", "DbPassword" ], "members": { "StackId": {}, "RdsDbInstanceArn": {}, "DbUser": {}, "DbPassword": {} } } }, "RegisterVolume": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "Ec2VolumeId": {}, "StackId": {} } }, "output": { "type": "structure", "members": { "VolumeId": {} } } }, "SetLoadBasedAutoScaling": { "input": { "type": "structure", "required": [ "LayerId" ], "members": { "LayerId": {}, "Enable": { "type": "boolean" }, "UpScaling": { "shape": "S30" }, "DownScaling": { "shape": "S30" } } } }, "SetPermission": { "input": { "type": "structure", "required": [ "StackId", "IamUserArn" ], "members": { "StackId": {}, "IamUserArn": {}, "AllowSsh": { "type": "boolean" }, "AllowSudo": { "type": "boolean" }, "Level": {} } } }, "SetTimeBasedAutoScaling": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "AutoScalingSchedule": { "shape": "S40" } } } }, "StartInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } } }, "StartStack": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {} } } }, "StopInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } } }, "StopStack": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {} } } }, "UnassignInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } } }, "UnassignVolume": { "input": { "type": "structure", "required": [ "VolumeId" ], "members": { "VolumeId": {} } } }, "UpdateApp": { "input": { "type": "structure", "required": [ "AppId" ], "members": { "AppId": {}, "Name": {}, "Description": {}, "DataSources": { "shape": "Si" }, "Type": {}, "AppSource": { "shape": "Sd" }, "Domains": { "shape": "S3" }, "EnableSsl": { "type": "boolean" }, "SslConfiguration": { "shape": "Sl" }, "Attributes": { "shape": "Sm" }, "Environment": { "shape": "So" } } } }, "UpdateElasticIp": { "input": { "type": "structure", "required": [ "ElasticIp" ], "members": { "ElasticIp": {}, "Name": {} } } }, "UpdateInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "LayerIds": { "shape": "S3" }, "InstanceType": {}, "AutoScalingType": {}, "Hostname": {}, "Os": {}, "AmiId": {}, "SshKeyName": {}, "Architecture": {}, "InstallUpdatesOnBoot": { "type": "boolean" }, "EbsOptimized": { "type": "boolean" }, "AgentVersion": {} } } }, "UpdateLayer": { "input": { "type": "structure", "required": [ "LayerId" ], "members": { "LayerId": {}, "Name": {}, "Shortname": {}, "Attributes": { "shape": "S17" }, "CustomInstanceProfileArn": {}, "CustomJson": {}, "CustomSecurityGroupIds": { "shape": "S3" }, "Packages": { "shape": "S3" }, "VolumeConfigurations": { "shape": "S19" }, "EnableAutoHealing": { "type": "boolean" }, "AutoAssignElasticIps": { "type": "boolean" }, "AutoAssignPublicIps": { "type": "boolean" }, "CustomRecipes": { "shape": "S1b" }, "InstallUpdatesOnBoot": { "type": "boolean" }, "UseEbsOptimizedInstances": { "type": "boolean" }, "LifecycleEventConfiguration": { "shape": "S1c" } } } }, "UpdateMyUserProfile": { "input": { "type": "structure", "members": { "SshPublicKey": {} } } }, "UpdateRdsDbInstance": { "input": { "type": "structure", "required": [ "RdsDbInstanceArn" ], "members": { "RdsDbInstanceArn": {}, "DbUser": {}, "DbPassword": {} } } }, "UpdateStack": { "input": { "type": "structure", "required": [ "StackId" ], "members": { "StackId": {}, "Name": {}, "Attributes": { "shape": "S8" }, "ServiceRoleArn": {}, "DefaultInstanceProfileArn": {}, "DefaultOs": {}, "HostnameTheme": {}, "DefaultAvailabilityZone": {}, "DefaultSubnetId": {}, "CustomJson": {}, "ConfigurationManager": { "shape": "Sa" }, "ChefConfiguration": { "shape": "Sb" }, "UseCustomCookbooks": { "type": "boolean" }, "CustomCookbooksSource": { "shape": "Sd" }, "DefaultSshKeyName": {}, "DefaultRootDeviceType": {}, "UseOpsworksSecurityGroups": { "type": "boolean" }, "AgentVersion": {} } } }, "UpdateUserProfile": { "input": { "type": "structure", "required": [ "IamUserArn" ], "members": { "IamUserArn": {}, "SshUsername": {}, "SshPublicKey": {}, "AllowSelfManagement": { "type": "boolean" } } } }, "UpdateVolume": { "input": { "type": "structure", "required": [ "VolumeId" ], "members": { "VolumeId": {}, "Name": {}, "MountPoint": {} } } } }, "shapes": { "S3": { "type": "list", "member": {} }, "S8": { "type": "map", "key": {}, "value": {} }, "Sa": { "type": "structure", "members": { "Name": {}, "Version": {} } }, "Sb": { "type": "structure", "members": { "ManageBerkshelf": { "type": "boolean" }, "BerkshelfVersion": {} } }, "Sd": { "type": "structure", "members": { "Type": {}, "Url": {}, "Username": {}, "Password": {}, "SshKey": {}, "Revision": {} } }, "Si": { "type": "list", "member": { "type": "structure", "members": { "Type": {}, "Arn": {}, "DatabaseName": {} } } }, "Sl": { "type": "structure", "required": [ "Certificate", "PrivateKey" ], "members": { "Certificate": {}, "PrivateKey": {}, "Chain": {} } }, "Sm": { "type": "map", "key": {}, "value": {} }, "So": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {}, "Secure": { "type": "boolean" } } } }, "Ss": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "Args": { "type": "map", "key": {}, "value": { "shape": "S3" } } } }, "Sz": { "type": "list", "member": { "type": "structure", "members": { "DeviceName": {}, "NoDevice": {}, "VirtualName": {}, "Ebs": { "type": "structure", "members": { "SnapshotId": {}, "Iops": { "type": "integer" }, "VolumeSize": { "type": "integer" }, "VolumeType": {}, "DeleteOnTermination": { "type": "boolean" } } } } } }, "S17": { "type": "map", "key": {}, "value": {} }, "S19": { "type": "list", "member": { "type": "structure", "required": [ "MountPoint", "NumberOfDisks", "Size" ], "members": { "MountPoint": {}, "RaidLevel": { "type": "integer" }, "NumberOfDisks": { "type": "integer" }, "Size": { "type": "integer" }, "VolumeType": {}, "Iops": { "type": "integer" } } } }, "S1b": { "type": "structure", "members": { "Setup": { "shape": "S3" }, "Configure": { "shape": "S3" }, "Deploy": { "shape": "S3" }, "Undeploy": { "shape": "S3" }, "Shutdown": { "shape": "S3" } } }, "S1c": { "type": "structure", "members": { "Shutdown": { "type": "structure", "members": { "ExecutionTimeout": { "type": "integer" }, "DelayUntilElbConnectionsDrained": { "type": "boolean" } } } } }, "S30": { "type": "structure", "members": { "InstanceCount": { "type": "integer" }, "ThresholdsWaitTime": { "type": "integer" }, "IgnoreMetricsTime": { "type": "integer" }, "CpuThreshold": { "type": "double" }, "MemoryThreshold": { "type": "double" }, "LoadThreshold": { "type": "double" }, "Alarms": { "shape": "S3" } } }, "S40": { "type": "structure", "members": { "Monday": { "shape": "S41" }, "Tuesday": { "shape": "S41" }, "Wednesday": { "shape": "S41" }, "Thursday": { "shape": "S41" }, "Friday": { "shape": "S41" }, "Saturday": { "shape": "S41" }, "Sunday": { "shape": "S41" } } }, "S41": { "type": "map", "key": {}, "value": {} } } } },{}],96:[function(require,module,exports){ module.exports={ "pagination": { "DescribeApps": { "result_key": "Apps" }, "DescribeCommands": { "result_key": "Commands" }, "DescribeDeployments": { "result_key": "Deployments" }, "DescribeEcsClusters": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "EcsClusters" }, "DescribeElasticIps": { "result_key": "ElasticIps" }, "DescribeElasticLoadBalancers": { "result_key": "ElasticLoadBalancers" }, "DescribeInstances": { "result_key": "Instances" }, "DescribeLayers": { "result_key": "Layers" }, "DescribeLoadBasedAutoScaling": { "result_key": "LoadBasedAutoScalingConfigurations" }, "DescribePermissions": { "result_key": "Permissions" }, "DescribeRaidArrays": { "result_key": "RaidArrays" }, "DescribeServiceErrors": { "result_key": "ServiceErrors" }, "DescribeStacks": { "result_key": "Stacks" }, "DescribeTimeBasedAutoScaling": { "result_key": "TimeBasedAutoScalingConfigurations" }, "DescribeUserProfiles": { "result_key": "UserProfiles" }, "DescribeVolumes": { "result_key": "Volumes" } } } },{}],97:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "AppExists": { "delay": 1, "operation": "DescribeApps", "maxAttempts": 40, "acceptors": [ { "expected": 200, "matcher": "status", "state": "success" }, { "matcher": "status", "expected": 400, "state": "failure" } ] }, "DeploymentSuccessful": { "delay": 15, "operation": "DescribeDeployments", "maxAttempts": 40, "description": "Wait until a deployment has completed successfully", "acceptors": [ { "expected": "successful", "matcher": "pathAll", "state": "success", "argument": "Deployments[].Status" }, { "expected": "failed", "matcher": "pathAny", "state": "failure", "argument": "Deployments[].Status" } ] }, "InstanceOnline": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "description": "Wait until OpsWorks instance is online.", "acceptors": [ { "expected": "online", "matcher": "pathAll", "state": "success", "argument": "Instances[].Status" }, { "expected": "setup_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "shutting_down", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "start_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stopped", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stopping", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "terminating", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "terminated", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stop_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" } ] }, "InstanceRegistered": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "description": "Wait until OpsWorks instance is registered.", "acceptors": [ { "expected": "registered", "matcher": "pathAll", "state": "success", "argument": "Instances[].Status" }, { "expected": "setup_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "shutting_down", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stopped", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stopping", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "terminating", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "terminated", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stop_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" } ] }, "InstanceStopped": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "description": "Wait until OpsWorks instance is stopped.", "acceptors": [ { "expected": "stopped", "matcher": "pathAll", "state": "success", "argument": "Instances[].Status" }, { "expected": "booting", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "online", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "pending", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "rebooting", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "requested", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "running_setup", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "setup_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "start_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "stop_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" } ] }, "InstanceTerminated": { "delay": 15, "operation": "DescribeInstances", "maxAttempts": 40, "description": "Wait until OpsWorks instance is terminated.", "acceptors": [ { "expected": "terminated", "matcher": "pathAll", "state": "success", "argument": "Instances[].Status" }, { "expected": "ResourceNotFoundException", "matcher": "error", "state": "success" }, { "expected": "booting", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "online", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "pending", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "rebooting", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "requested", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "running_setup", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "setup_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" }, { "expected": "start_failed", "matcher": "pathAny", "state": "failure", "argument": "Instances[].Status" } ] } } } },{}],98:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2016-06-10", "endpointPrefix": "polly", "protocol": "rest-json", "serviceFullName": "Amazon Polly", "signatureVersion": "v4", "uid": "polly-2016-06-10" }, "operations": { "DeleteLexicon": { "http": { "method": "DELETE", "requestUri": "/v1/lexicons/{LexiconName}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": { "shape": "S2", "location": "uri", "locationName": "LexiconName" } } }, "output": { "type": "structure", "members": {} } }, "DescribeVoices": { "http": { "method": "GET", "requestUri": "/v1/voices", "responseCode": 200 }, "input": { "type": "structure", "members": { "LanguageCode": { "location": "querystring", "locationName": "LanguageCode" }, "NextToken": { "location": "querystring", "locationName": "NextToken" } } }, "output": { "type": "structure", "members": { "Voices": { "type": "list", "member": { "type": "structure", "members": { "Gender": {}, "Id": {}, "LanguageCode": {}, "LanguageName": {}, "Name": {} } } }, "NextToken": {} } } }, "GetLexicon": { "http": { "method": "GET", "requestUri": "/v1/lexicons/{LexiconName}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": { "shape": "S2", "location": "uri", "locationName": "LexiconName" } } }, "output": { "type": "structure", "members": { "Lexicon": { "type": "structure", "members": { "Content": {}, "Name": { "shape": "S2" } } }, "LexiconAttributes": { "shape": "Si" } } } }, "ListLexicons": { "http": { "method": "GET", "requestUri": "/v1/lexicons", "responseCode": 200 }, "input": { "type": "structure", "members": { "NextToken": { "location": "querystring", "locationName": "NextToken" } } }, "output": { "type": "structure", "members": { "Lexicons": { "type": "list", "member": { "type": "structure", "members": { "Name": { "shape": "S2" }, "Attributes": { "shape": "Si" } } } }, "NextToken": {} } } }, "PutLexicon": { "http": { "method": "PUT", "requestUri": "/v1/lexicons/{LexiconName}", "responseCode": 200 }, "input": { "type": "structure", "required": [ "Name", "Content" ], "members": { "Name": { "shape": "S2", "location": "uri", "locationName": "LexiconName" }, "Content": {} } }, "output": { "type": "structure", "members": {} } }, "SynthesizeSpeech": { "http": { "requestUri": "/v1/speech", "responseCode": 200 }, "input": { "type": "structure", "required": [ "OutputFormat", "Text", "VoiceId" ], "members": { "LexiconNames": { "type": "list", "member": { "shape": "S2" } }, "OutputFormat": {}, "SampleRate": {}, "Text": {}, "TextType": {}, "VoiceId": {} } }, "output": { "type": "structure", "members": { "AudioStream": { "type": "blob", "streaming": true }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "RequestCharacters": { "location": "header", "locationName": "x-amzn-RequestCharacters", "type": "integer" } }, "payload": "AudioStream" } } }, "shapes": { "S2": { "type": "string", "sensitive": true }, "Si": { "type": "structure", "members": { "Alphabet": {}, "LanguageCode": {}, "LastModified": { "type": "timestamp" }, "LexiconArn": {}, "LexemesCount": { "type": "integer" }, "Size": { "type": "integer" } } } } } },{}],99:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2013-01-10", "endpointPrefix": "rds", "protocol": "query", "serviceAbbreviation": "Amazon RDS", "serviceFullName": "Amazon Relational Database Service", "signatureVersion": "v4", "uid": "rds-2013-01-10", "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" }, "operations": { "AddSourceIdentifierToSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "AddSourceIdentifierToSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "S9" } } } }, "AuthorizeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CopyDBSnapshot": { "input": { "type": "structure", "required": [ "SourceDBSnapshotIdentifier", "TargetDBSnapshotIdentifier" ], "members": { "SourceDBSnapshotIdentifier": {}, "TargetDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "CopyDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "AllocatedStorage", "DBInstanceClass", "Engine", "MasterUsername", "MasterUserPassword" ], "members": { "DBName": {}, "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "Engine": {}, "MasterUsername": {}, "MasterUserPassword": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "PreferredMaintenanceWindow": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "Port": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "CharacterSetName": {}, "PubliclyAccessible": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBInstanceReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "SourceDBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SourceDBInstanceIdentifier": {}, "DBInstanceClass": {}, "AvailabilityZone": {}, "Port": { "type": "integer" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PubliclyAccessible": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateDBInstanceReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "DBParameterGroupFamily", "Description" ], "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {} } }, "output": { "resultWrapper": "CreateDBParameterGroupResult", "type": "structure", "members": { "DBParameterGroup": { "shape": "S1c" } } } }, "CreateDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName", "DBSecurityGroupDescription" ], "members": { "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {} } }, "output": { "resultWrapper": "CreateDBSecurityGroupResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CreateDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier", "DBInstanceIdentifier" ], "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {} } }, "output": { "resultWrapper": "CreateDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "DBSubnetGroupDescription", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1i" } } }, "output": { "resultWrapper": "CreateDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "CreateEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SnsTopicArn" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "SourceIds": { "shape": "S5" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "CreateOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName", "EngineName", "MajorEngineVersion", "OptionGroupDescription" ], "members": { "OptionGroupName": {}, "EngineName": {}, "MajorEngineVersion": {}, "OptionGroupDescription": {} } }, "output": { "resultWrapper": "CreateOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1o" } } } }, "DeleteDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SkipFinalSnapshot": { "type": "boolean" }, "FinalDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "DeleteDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {} } } }, "DeleteDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {} } } }, "DeleteDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "DeleteDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName" ], "members": { "DBSubnetGroupName": {} } } }, "DeleteEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {} } }, "output": { "resultWrapper": "DeleteEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "DeleteOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {} } } }, "DescribeDBEngineVersions": { "input": { "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "DefaultOnly": { "type": "boolean" }, "ListSupportedCharacterSets": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBEngineVersionsResult", "type": "structure", "members": { "Marker": {}, "DBEngineVersions": { "type": "list", "member": { "locationName": "DBEngineVersion", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "DBEngineDescription": {}, "DBEngineVersionDescription": {}, "DefaultCharacterSet": { "shape": "S25" }, "SupportedCharacterSets": { "type": "list", "member": { "shape": "S25", "locationName": "CharacterSet" } } } } } } } }, "DescribeDBInstances": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBInstancesResult", "type": "structure", "members": { "Marker": {}, "DBInstances": { "type": "list", "member": { "shape": "St", "locationName": "DBInstance" } } } } }, "DescribeDBParameterGroups": { "input": { "type": "structure", "members": { "DBParameterGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "DBParameterGroups": { "type": "list", "member": { "shape": "S1c", "locationName": "DBParameterGroup" } } } } }, "DescribeDBParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "Source": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S2f" }, "Marker": {} } } }, "DescribeDBSecurityGroups": { "input": { "type": "structure", "members": { "DBSecurityGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSecurityGroups": { "type": "list", "member": { "shape": "Sd", "locationName": "DBSecurityGroup" } } } } }, "DescribeDBSnapshots": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "SnapshotType": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSnapshotsResult", "type": "structure", "members": { "Marker": {}, "DBSnapshots": { "type": "list", "member": { "shape": "Sk", "locationName": "DBSnapshot" } } } } }, "DescribeDBSubnetGroups": { "input": { "type": "structure", "members": { "DBSubnetGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSubnetGroups": { "type": "list", "member": { "shape": "S11", "locationName": "DBSubnetGroup" } } } } }, "DescribeEngineDefaultParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupFamily" ], "members": { "DBParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultParametersResult", "type": "structure", "members": { "EngineDefaults": { "type": "structure", "members": { "DBParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S2f" } }, "wrapper": true } } } }, "DescribeEventCategories": { "input": { "type": "structure", "members": { "SourceType": {} } }, "output": { "resultWrapper": "DescribeEventCategoriesResult", "type": "structure", "members": { "EventCategoriesMapList": { "type": "list", "member": { "locationName": "EventCategoriesMap", "type": "structure", "members": { "SourceType": {}, "EventCategories": { "shape": "S6" } }, "wrapper": true } } } } }, "DescribeEventSubscriptions": { "input": { "type": "structure", "members": { "SubscriptionName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventSubscriptionsResult", "type": "structure", "members": { "Marker": {}, "EventSubscriptionsList": { "type": "list", "member": { "shape": "S4", "locationName": "EventSubscription" } } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "EventCategories": { "shape": "S6" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "EventCategories": { "shape": "S6" }, "Date": { "type": "timestamp" } } } } } } }, "DescribeOptionGroupOptions": { "input": { "type": "structure", "required": [ "EngineName" ], "members": { "EngineName": {}, "MajorEngineVersion": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOptionGroupOptionsResult", "type": "structure", "members": { "OptionGroupOptions": { "type": "list", "member": { "locationName": "OptionGroupOption", "type": "structure", "members": { "Name": {}, "Description": {}, "EngineName": {}, "MajorEngineVersion": {}, "MinimumRequiredMinorEngineVersion": {}, "PortRequired": { "type": "boolean" }, "DefaultPort": { "type": "integer" }, "OptionsDependedOn": { "type": "list", "member": { "locationName": "OptionName" } } } } }, "Marker": {} } } }, "DescribeOptionGroups": { "input": { "type": "structure", "members": { "OptionGroupName": {}, "Marker": {}, "MaxRecords": { "type": "integer" }, "EngineName": {}, "MajorEngineVersion": {} } }, "output": { "resultWrapper": "DescribeOptionGroupsResult", "type": "structure", "members": { "OptionGroupsList": { "type": "list", "member": { "shape": "S1o", "locationName": "OptionGroup" } }, "Marker": {} } } }, "DescribeOrderableDBInstanceOptions": { "input": { "type": "structure", "required": [ "Engine" ], "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "Vpc": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", "type": "structure", "members": { "OrderableDBInstanceOptions": { "type": "list", "member": { "locationName": "OrderableDBInstanceOption", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "AvailabilityZones": { "type": "list", "member": { "shape": "S14", "locationName": "AvailabilityZone" } }, "MultiAZCapable": { "type": "boolean" }, "ReadReplicaCapable": { "type": "boolean" }, "Vpc": { "type": "boolean" } }, "wrapper": true } }, "Marker": {} } } }, "DescribeReservedDBInstances": { "input": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstances": { "type": "list", "member": { "shape": "S3m", "locationName": "ReservedDBInstance" } } } } }, "DescribeReservedDBInstancesOfferings": { "input": { "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstancesOfferings": { "type": "list", "member": { "locationName": "ReservedDBInstancesOffering", "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "RecurringCharges": { "shape": "S3o" } }, "wrapper": true } } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceName" ], "members": { "ResourceName": {} } }, "output": { "resultWrapper": "ListTagsForResourceResult", "type": "structure", "members": { "TagList": { "shape": "S9" } } } }, "ModifyDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "ApplyImmediately": { "type": "boolean" }, "MasterUserPassword": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AllowMajorVersionUpgrade": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "NewDBInstanceIdentifier": {} } }, "output": { "resultWrapper": "ModifyDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "ModifyDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "Parameters" ], "members": { "DBParameterGroupName": {}, "Parameters": { "shape": "S2f" } } }, "output": { "shape": "S3z", "resultWrapper": "ModifyDBParameterGroupResult" } }, "ModifyDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1i" } } }, "output": { "resultWrapper": "ModifyDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "ModifyEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "ModifyOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {}, "OptionsToInclude": { "type": "list", "member": { "locationName": "OptionConfiguration", "type": "structure", "required": [ "OptionName" ], "members": { "OptionName": {}, "Port": { "type": "integer" }, "DBSecurityGroupMemberships": { "shape": "Sp" }, "VpcSecurityGroupMemberships": { "shape": "Sq" } } } }, "OptionsToRemove": { "type": "list", "member": {} }, "ApplyImmediately": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1o" } } } }, "PromoteReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {} } }, "output": { "resultWrapper": "PromoteReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "PurchaseReservedDBInstancesOffering": { "input": { "type": "structure", "required": [ "ReservedDBInstancesOfferingId" ], "members": { "ReservedDBInstancesOfferingId": {}, "ReservedDBInstanceId": {}, "DBInstanceCount": { "type": "integer" } } }, "output": { "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", "type": "structure", "members": { "ReservedDBInstance": { "shape": "S3m" } } } }, "RebootDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "ForceFailover": { "type": "boolean" } } }, "output": { "resultWrapper": "RebootDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RemoveSourceIdentifierFromSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "type": "list", "member": {} } } } }, "ResetDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S2f" } } }, "output": { "shape": "S3z", "resultWrapper": "ResetDBParameterGroupResult" } }, "RestoreDBInstanceFromDBSnapshot": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "DBSnapshotIdentifier" ], "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RestoreDBInstanceToPointInTime": { "input": { "type": "structure", "required": [ "SourceDBInstanceIdentifier", "TargetDBInstanceIdentifier" ], "members": { "SourceDBInstanceIdentifier": {}, "TargetDBInstanceIdentifier": {}, "RestoreTime": { "type": "timestamp" }, "UseLatestRestorableTime": { "type": "boolean" }, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceToPointInTimeResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RevokeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "Id": {}, "CustomerAwsId": {}, "CustSubscriptionId": {}, "SnsTopicArn": {}, "Status": {}, "SubscriptionCreationTime": {}, "SourceType": {}, "SourceIdsList": { "shape": "S5" }, "EventCategoriesList": { "shape": "S6" }, "Enabled": { "type": "boolean" } }, "wrapper": true }, "S5": { "type": "list", "member": { "locationName": "SourceId" } }, "S6": { "type": "list", "member": { "locationName": "EventCategory" } }, "S9": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Sd": { "type": "structure", "members": { "OwnerId": {}, "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "VpcId": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } } }, "IPRanges": { "type": "list", "member": { "locationName": "IPRange", "type": "structure", "members": { "Status": {}, "CIDRIP": {} } } } }, "wrapper": true }, "Sk": { "type": "structure", "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Engine": {}, "AllocatedStorage": { "type": "integer" }, "Status": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "VpcId": {}, "InstanceCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "EngineVersion": {}, "LicenseModel": {}, "SnapshotType": {}, "Iops": { "type": "integer" } }, "wrapper": true }, "Sp": { "type": "list", "member": { "locationName": "DBSecurityGroupName" } }, "Sq": { "type": "list", "member": { "locationName": "VpcSecurityGroupId" } }, "St": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBInstanceClass": {}, "Engine": {}, "DBInstanceStatus": {}, "MasterUsername": {}, "DBName": {}, "Endpoint": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" } } }, "AllocatedStorage": { "type": "integer" }, "InstanceCreateTime": { "type": "timestamp" }, "PreferredBackupWindow": {}, "BackupRetentionPeriod": { "type": "integer" }, "DBSecurityGroups": { "shape": "Sv" }, "VpcSecurityGroups": { "shape": "Sx" }, "DBParameterGroups": { "type": "list", "member": { "locationName": "DBParameterGroup", "type": "structure", "members": { "DBParameterGroupName": {}, "ParameterApplyStatus": {} } } }, "AvailabilityZone": {}, "DBSubnetGroup": { "shape": "S11" }, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "DBInstanceClass": {}, "AllocatedStorage": { "type": "integer" }, "MasterUserPassword": {}, "Port": { "type": "integer" }, "BackupRetentionPeriod": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "Iops": { "type": "integer" }, "DBInstanceIdentifier": {} } }, "LatestRestorableTime": { "type": "timestamp" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "ReadReplicaSourceDBInstanceIdentifier": {}, "ReadReplicaDBInstanceIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaDBInstanceIdentifier" } }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupMembership": { "type": "structure", "members": { "OptionGroupName": {}, "Status": {} } }, "CharacterSetName": {}, "SecondaryAvailabilityZone": {}, "PubliclyAccessible": { "type": "boolean" } }, "wrapper": true }, "Sv": { "type": "list", "member": { "locationName": "DBSecurityGroup", "type": "structure", "members": { "DBSecurityGroupName": {}, "Status": {} } } }, "Sx": { "type": "list", "member": { "locationName": "VpcSecurityGroupMembership", "type": "structure", "members": { "VpcSecurityGroupId": {}, "Status": {} } } }, "S11": { "type": "structure", "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "VpcId": {}, "SubnetGroupStatus": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "shape": "S14" }, "SubnetStatus": {} } } } }, "wrapper": true }, "S14": { "type": "structure", "members": { "Name": {}, "ProvisionedIopsCapable": { "type": "boolean" } }, "wrapper": true }, "S1c": { "type": "structure", "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {} }, "wrapper": true }, "S1i": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S1o": { "type": "structure", "members": { "OptionGroupName": {}, "OptionGroupDescription": {}, "EngineName": {}, "MajorEngineVersion": {}, "Options": { "type": "list", "member": { "locationName": "Option", "type": "structure", "members": { "OptionName": {}, "OptionDescription": {}, "Port": { "type": "integer" }, "DBSecurityGroupMemberships": { "shape": "Sv" }, "VpcSecurityGroupMemberships": { "shape": "Sx" } } } }, "AllowsVpcAndNonVpcInstanceMemberships": { "type": "boolean" }, "VpcId": {} }, "wrapper": true }, "S25": { "type": "structure", "members": { "CharacterSetName": {}, "CharacterSetDescription": {} } }, "S2f": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "ApplyMethod": {} } } }, "S3m": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "DBInstanceCount": { "type": "integer" }, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "State": {}, "RecurringCharges": { "shape": "S3o" } }, "wrapper": true }, "S3o": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S3z": { "type": "structure", "members": { "DBParameterGroupName": {} } } } } },{}],100:[function(require,module,exports){ module.exports={ "pagination": { "DescribeDBEngineVersions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBEngineVersions" }, "DescribeDBInstances": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBInstances" }, "DescribeDBParameterGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBParameterGroups" }, "DescribeDBParameters": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "Parameters" }, "DescribeDBSecurityGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSecurityGroups" }, "DescribeDBSnapshots": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSnapshots" }, "DescribeDBSubnetGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSubnetGroups" }, "DescribeEngineDefaultParameters": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "EngineDefaults.Marker", "result_key": "EngineDefaults.Parameters" }, "DescribeEventSubscriptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "EventSubscriptionsList" }, "DescribeEvents": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "Events" }, "DescribeOptionGroupOptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OptionGroupOptions" }, "DescribeOptionGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OptionGroupsList" }, "DescribeOrderableDBInstanceOptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OrderableDBInstanceOptions" }, "DescribeReservedDBInstances": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "ReservedDBInstances" }, "DescribeReservedDBInstancesOfferings": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "ReservedDBInstancesOfferings" }, "ListTagsForResource": { "result_key": "TagList" } } } },{}],101:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2013-02-12", "endpointPrefix": "rds", "protocol": "query", "serviceAbbreviation": "Amazon RDS", "serviceFullName": "Amazon Relational Database Service", "signatureVersion": "v4", "uid": "rds-2013-02-12", "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" }, "operations": { "AddSourceIdentifierToSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "AddSourceIdentifierToSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "S9" } } } }, "AuthorizeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CopyDBSnapshot": { "input": { "type": "structure", "required": [ "SourceDBSnapshotIdentifier", "TargetDBSnapshotIdentifier" ], "members": { "SourceDBSnapshotIdentifier": {}, "TargetDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "CopyDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "AllocatedStorage", "DBInstanceClass", "Engine", "MasterUsername", "MasterUserPassword" ], "members": { "DBName": {}, "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "Engine": {}, "MasterUsername": {}, "MasterUserPassword": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "PreferredMaintenanceWindow": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "Port": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "CharacterSetName": {}, "PubliclyAccessible": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBInstanceReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "SourceDBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SourceDBInstanceIdentifier": {}, "DBInstanceClass": {}, "AvailabilityZone": {}, "Port": { "type": "integer" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PubliclyAccessible": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateDBInstanceReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "DBParameterGroupFamily", "Description" ], "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {} } }, "output": { "resultWrapper": "CreateDBParameterGroupResult", "type": "structure", "members": { "DBParameterGroup": { "shape": "S1d" } } } }, "CreateDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName", "DBSecurityGroupDescription" ], "members": { "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {} } }, "output": { "resultWrapper": "CreateDBSecurityGroupResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CreateDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier", "DBInstanceIdentifier" ], "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {} } }, "output": { "resultWrapper": "CreateDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "DBSubnetGroupDescription", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1j" } } }, "output": { "resultWrapper": "CreateDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "CreateEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SnsTopicArn" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "SourceIds": { "shape": "S5" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "CreateEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "CreateOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName", "EngineName", "MajorEngineVersion", "OptionGroupDescription" ], "members": { "OptionGroupName": {}, "EngineName": {}, "MajorEngineVersion": {}, "OptionGroupDescription": {} } }, "output": { "resultWrapper": "CreateOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1p" } } } }, "DeleteDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SkipFinalSnapshot": { "type": "boolean" }, "FinalDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "DeleteDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {} } } }, "DeleteDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {} } } }, "DeleteDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "DeleteDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName" ], "members": { "DBSubnetGroupName": {} } } }, "DeleteEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {} } }, "output": { "resultWrapper": "DeleteEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "DeleteOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {} } } }, "DescribeDBEngineVersions": { "input": { "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "DefaultOnly": { "type": "boolean" }, "ListSupportedCharacterSets": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBEngineVersionsResult", "type": "structure", "members": { "Marker": {}, "DBEngineVersions": { "type": "list", "member": { "locationName": "DBEngineVersion", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "DBEngineDescription": {}, "DBEngineVersionDescription": {}, "DefaultCharacterSet": { "shape": "S28" }, "SupportedCharacterSets": { "type": "list", "member": { "shape": "S28", "locationName": "CharacterSet" } } } } } } } }, "DescribeDBInstances": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBInstancesResult", "type": "structure", "members": { "Marker": {}, "DBInstances": { "type": "list", "member": { "shape": "St", "locationName": "DBInstance" } } } } }, "DescribeDBLogFiles": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "FilenameContains": {}, "FileLastWritten": { "type": "long" }, "FileSize": { "type": "long" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBLogFilesResult", "type": "structure", "members": { "DescribeDBLogFiles": { "type": "list", "member": { "locationName": "DescribeDBLogFilesDetails", "type": "structure", "members": { "LogFileName": {}, "LastWritten": { "type": "long" }, "Size": { "type": "long" } } } }, "Marker": {} } } }, "DescribeDBParameterGroups": { "input": { "type": "structure", "members": { "DBParameterGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "DBParameterGroups": { "type": "list", "member": { "shape": "S1d", "locationName": "DBParameterGroup" } } } } }, "DescribeDBParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "Source": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S2n" }, "Marker": {} } } }, "DescribeDBSecurityGroups": { "input": { "type": "structure", "members": { "DBSecurityGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSecurityGroups": { "type": "list", "member": { "shape": "Sd", "locationName": "DBSecurityGroup" } } } } }, "DescribeDBSnapshots": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "SnapshotType": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSnapshotsResult", "type": "structure", "members": { "Marker": {}, "DBSnapshots": { "type": "list", "member": { "shape": "Sk", "locationName": "DBSnapshot" } } } } }, "DescribeDBSubnetGroups": { "input": { "type": "structure", "members": { "DBSubnetGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSubnetGroups": { "type": "list", "member": { "shape": "S11", "locationName": "DBSubnetGroup" } } } } }, "DescribeEngineDefaultParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupFamily" ], "members": { "DBParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultParametersResult", "type": "structure", "members": { "EngineDefaults": { "type": "structure", "members": { "DBParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S2n" } }, "wrapper": true } } } }, "DescribeEventCategories": { "input": { "type": "structure", "members": { "SourceType": {} } }, "output": { "resultWrapper": "DescribeEventCategoriesResult", "type": "structure", "members": { "EventCategoriesMapList": { "type": "list", "member": { "locationName": "EventCategoriesMap", "type": "structure", "members": { "SourceType": {}, "EventCategories": { "shape": "S6" } }, "wrapper": true } } } } }, "DescribeEventSubscriptions": { "input": { "type": "structure", "members": { "SubscriptionName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventSubscriptionsResult", "type": "structure", "members": { "Marker": {}, "EventSubscriptionsList": { "type": "list", "member": { "shape": "S4", "locationName": "EventSubscription" } } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "EventCategories": { "shape": "S6" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "EventCategories": { "shape": "S6" }, "Date": { "type": "timestamp" } } } } } } }, "DescribeOptionGroupOptions": { "input": { "type": "structure", "required": [ "EngineName" ], "members": { "EngineName": {}, "MajorEngineVersion": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOptionGroupOptionsResult", "type": "structure", "members": { "OptionGroupOptions": { "type": "list", "member": { "locationName": "OptionGroupOption", "type": "structure", "members": { "Name": {}, "Description": {}, "EngineName": {}, "MajorEngineVersion": {}, "MinimumRequiredMinorEngineVersion": {}, "PortRequired": { "type": "boolean" }, "DefaultPort": { "type": "integer" }, "OptionsDependedOn": { "type": "list", "member": { "locationName": "OptionName" } }, "Persistent": { "type": "boolean" }, "OptionGroupOptionSettings": { "type": "list", "member": { "locationName": "OptionGroupOptionSetting", "type": "structure", "members": { "SettingName": {}, "SettingDescription": {}, "DefaultValue": {}, "ApplyType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" } } } } } } }, "Marker": {} } } }, "DescribeOptionGroups": { "input": { "type": "structure", "members": { "OptionGroupName": {}, "Marker": {}, "MaxRecords": { "type": "integer" }, "EngineName": {}, "MajorEngineVersion": {} } }, "output": { "resultWrapper": "DescribeOptionGroupsResult", "type": "structure", "members": { "OptionGroupsList": { "type": "list", "member": { "shape": "S1p", "locationName": "OptionGroup" } }, "Marker": {} } } }, "DescribeOrderableDBInstanceOptions": { "input": { "type": "structure", "required": [ "Engine" ], "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "Vpc": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", "type": "structure", "members": { "OrderableDBInstanceOptions": { "type": "list", "member": { "locationName": "OrderableDBInstanceOption", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "AvailabilityZones": { "type": "list", "member": { "shape": "S14", "locationName": "AvailabilityZone" } }, "MultiAZCapable": { "type": "boolean" }, "ReadReplicaCapable": { "type": "boolean" }, "Vpc": { "type": "boolean" } }, "wrapper": true } }, "Marker": {} } } }, "DescribeReservedDBInstances": { "input": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstances": { "type": "list", "member": { "shape": "S3w", "locationName": "ReservedDBInstance" } } } } }, "DescribeReservedDBInstancesOfferings": { "input": { "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstancesOfferings": { "type": "list", "member": { "locationName": "ReservedDBInstancesOffering", "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "RecurringCharges": { "shape": "S3y" } }, "wrapper": true } } } } }, "DownloadDBLogFilePortion": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "LogFileName" ], "members": { "DBInstanceIdentifier": {}, "LogFileName": {}, "Marker": {}, "NumberOfLines": { "type": "integer" } } }, "output": { "resultWrapper": "DownloadDBLogFilePortionResult", "type": "structure", "members": { "LogFileData": {}, "Marker": {}, "AdditionalDataPending": { "type": "boolean" } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceName" ], "members": { "ResourceName": {} } }, "output": { "resultWrapper": "ListTagsForResourceResult", "type": "structure", "members": { "TagList": { "shape": "S9" } } } }, "ModifyDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "ApplyImmediately": { "type": "boolean" }, "MasterUserPassword": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AllowMajorVersionUpgrade": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "NewDBInstanceIdentifier": {} } }, "output": { "resultWrapper": "ModifyDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "ModifyDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "Parameters" ], "members": { "DBParameterGroupName": {}, "Parameters": { "shape": "S2n" } } }, "output": { "shape": "S4b", "resultWrapper": "ModifyDBParameterGroupResult" } }, "ModifyDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1j" } } }, "output": { "resultWrapper": "ModifyDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "ModifyEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "ModifyOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {}, "OptionsToInclude": { "type": "list", "member": { "locationName": "OptionConfiguration", "type": "structure", "required": [ "OptionName" ], "members": { "OptionName": {}, "Port": { "type": "integer" }, "DBSecurityGroupMemberships": { "shape": "Sp" }, "VpcSecurityGroupMemberships": { "shape": "Sq" }, "OptionSettings": { "type": "list", "member": { "shape": "S1t", "locationName": "OptionSetting" } } } } }, "OptionsToRemove": { "type": "list", "member": {} }, "ApplyImmediately": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1p" } } } }, "PromoteReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {} } }, "output": { "resultWrapper": "PromoteReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "PurchaseReservedDBInstancesOffering": { "input": { "type": "structure", "required": [ "ReservedDBInstancesOfferingId" ], "members": { "ReservedDBInstancesOfferingId": {}, "ReservedDBInstanceId": {}, "DBInstanceCount": { "type": "integer" } } }, "output": { "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", "type": "structure", "members": { "ReservedDBInstance": { "shape": "S3w" } } } }, "RebootDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "ForceFailover": { "type": "boolean" } } }, "output": { "resultWrapper": "RebootDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RemoveSourceIdentifierFromSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "type": "list", "member": {} } } } }, "ResetDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S2n" } } }, "output": { "shape": "S4b", "resultWrapper": "ResetDBParameterGroupResult" } }, "RestoreDBInstanceFromDBSnapshot": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "DBSnapshotIdentifier" ], "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RestoreDBInstanceToPointInTime": { "input": { "type": "structure", "required": [ "SourceDBInstanceIdentifier", "TargetDBInstanceIdentifier" ], "members": { "SourceDBInstanceIdentifier": {}, "TargetDBInstanceIdentifier": {}, "RestoreTime": { "type": "timestamp" }, "UseLatestRestorableTime": { "type": "boolean" }, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceToPointInTimeResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RevokeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "CustomerAwsId": {}, "CustSubscriptionId": {}, "SnsTopicArn": {}, "Status": {}, "SubscriptionCreationTime": {}, "SourceType": {}, "SourceIdsList": { "shape": "S5" }, "EventCategoriesList": { "shape": "S6" }, "Enabled": { "type": "boolean" } }, "wrapper": true }, "S5": { "type": "list", "member": { "locationName": "SourceId" } }, "S6": { "type": "list", "member": { "locationName": "EventCategory" } }, "S9": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Sd": { "type": "structure", "members": { "OwnerId": {}, "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "VpcId": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } } }, "IPRanges": { "type": "list", "member": { "locationName": "IPRange", "type": "structure", "members": { "Status": {}, "CIDRIP": {} } } } }, "wrapper": true }, "Sk": { "type": "structure", "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Engine": {}, "AllocatedStorage": { "type": "integer" }, "Status": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "VpcId": {}, "InstanceCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "EngineVersion": {}, "LicenseModel": {}, "SnapshotType": {}, "Iops": { "type": "integer" }, "OptionGroupName": {} }, "wrapper": true }, "Sp": { "type": "list", "member": { "locationName": "DBSecurityGroupName" } }, "Sq": { "type": "list", "member": { "locationName": "VpcSecurityGroupId" } }, "St": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBInstanceClass": {}, "Engine": {}, "DBInstanceStatus": {}, "MasterUsername": {}, "DBName": {}, "Endpoint": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" } } }, "AllocatedStorage": { "type": "integer" }, "InstanceCreateTime": { "type": "timestamp" }, "PreferredBackupWindow": {}, "BackupRetentionPeriod": { "type": "integer" }, "DBSecurityGroups": { "shape": "Sv" }, "VpcSecurityGroups": { "shape": "Sx" }, "DBParameterGroups": { "type": "list", "member": { "locationName": "DBParameterGroup", "type": "structure", "members": { "DBParameterGroupName": {}, "ParameterApplyStatus": {} } } }, "AvailabilityZone": {}, "DBSubnetGroup": { "shape": "S11" }, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "DBInstanceClass": {}, "AllocatedStorage": { "type": "integer" }, "MasterUserPassword": {}, "Port": { "type": "integer" }, "BackupRetentionPeriod": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "Iops": { "type": "integer" }, "DBInstanceIdentifier": {} } }, "LatestRestorableTime": { "type": "timestamp" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "ReadReplicaSourceDBInstanceIdentifier": {}, "ReadReplicaDBInstanceIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaDBInstanceIdentifier" } }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupMemberships": { "type": "list", "member": { "locationName": "OptionGroupMembership", "type": "structure", "members": { "OptionGroupName": {}, "Status": {} } } }, "CharacterSetName": {}, "SecondaryAvailabilityZone": {}, "PubliclyAccessible": { "type": "boolean" } }, "wrapper": true }, "Sv": { "type": "list", "member": { "locationName": "DBSecurityGroup", "type": "structure", "members": { "DBSecurityGroupName": {}, "Status": {} } } }, "Sx": { "type": "list", "member": { "locationName": "VpcSecurityGroupMembership", "type": "structure", "members": { "VpcSecurityGroupId": {}, "Status": {} } } }, "S11": { "type": "structure", "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "VpcId": {}, "SubnetGroupStatus": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "shape": "S14" }, "SubnetStatus": {} } } } }, "wrapper": true }, "S14": { "type": "structure", "members": { "Name": {}, "ProvisionedIopsCapable": { "type": "boolean" } }, "wrapper": true }, "S1d": { "type": "structure", "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {} }, "wrapper": true }, "S1j": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S1p": { "type": "structure", "members": { "OptionGroupName": {}, "OptionGroupDescription": {}, "EngineName": {}, "MajorEngineVersion": {}, "Options": { "type": "list", "member": { "locationName": "Option", "type": "structure", "members": { "OptionName": {}, "OptionDescription": {}, "Persistent": { "type": "boolean" }, "Port": { "type": "integer" }, "OptionSettings": { "type": "list", "member": { "shape": "S1t", "locationName": "OptionSetting" } }, "DBSecurityGroupMemberships": { "shape": "Sv" }, "VpcSecurityGroupMemberships": { "shape": "Sx" } } } }, "AllowsVpcAndNonVpcInstanceMemberships": { "type": "boolean" }, "VpcId": {} }, "wrapper": true }, "S1t": { "type": "structure", "members": { "Name": {}, "Value": {}, "DefaultValue": {}, "Description": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "IsCollection": { "type": "boolean" } } }, "S28": { "type": "structure", "members": { "CharacterSetName": {}, "CharacterSetDescription": {} } }, "S2n": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "ApplyMethod": {} } } }, "S3w": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "DBInstanceCount": { "type": "integer" }, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "State": {}, "RecurringCharges": { "shape": "S3y" } }, "wrapper": true }, "S3y": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S4b": { "type": "structure", "members": { "DBParameterGroupName": {} } } } } },{}],102:[function(require,module,exports){ module.exports={ "pagination": { "DescribeDBEngineVersions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBEngineVersions" }, "DescribeDBInstances": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBInstances" }, "DescribeDBLogFiles": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DescribeDBLogFiles" }, "DescribeDBParameterGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBParameterGroups" }, "DescribeDBParameters": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "Parameters" }, "DescribeDBSecurityGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSecurityGroups" }, "DescribeDBSnapshots": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSnapshots" }, "DescribeDBSubnetGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "DBSubnetGroups" }, "DescribeEngineDefaultParameters": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "EngineDefaults.Marker", "result_key": "EngineDefaults.Parameters" }, "DescribeEventSubscriptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "EventSubscriptionsList" }, "DescribeEvents": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "Events" }, "DescribeOptionGroupOptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OptionGroupOptions" }, "DescribeOptionGroups": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OptionGroupsList" }, "DescribeOrderableDBInstanceOptions": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "OrderableDBInstanceOptions" }, "DescribeReservedDBInstances": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "ReservedDBInstances" }, "DescribeReservedDBInstancesOfferings": { "input_token": "Marker", "limit_key": "MaxRecords", "output_token": "Marker", "result_key": "ReservedDBInstancesOfferings" }, "DownloadDBLogFilePortion": { "input_token": "Marker", "limit_key": "NumberOfLines", "more_results": "AdditionalDataPending", "output_token": "Marker", "result_key": "LogFileData" }, "ListTagsForResource": { "result_key": "TagList" } } } },{}],103:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2013-09-09", "endpointPrefix": "rds", "protocol": "query", "serviceAbbreviation": "Amazon RDS", "serviceFullName": "Amazon Relational Database Service", "signatureVersion": "v4", "uid": "rds-2013-09-09", "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" }, "operations": { "AddSourceIdentifierToSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "AddSourceIdentifierToSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "S9" } } } }, "AuthorizeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CopyDBSnapshot": { "input": { "type": "structure", "required": [ "SourceDBSnapshotIdentifier", "TargetDBSnapshotIdentifier" ], "members": { "SourceDBSnapshotIdentifier": {}, "TargetDBSnapshotIdentifier": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CopyDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "AllocatedStorage", "DBInstanceClass", "Engine", "MasterUsername", "MasterUserPassword" ], "members": { "DBName": {}, "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "Engine": {}, "MasterUsername": {}, "MasterUserPassword": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "PreferredMaintenanceWindow": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "Port": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "CharacterSetName": {}, "PubliclyAccessible": { "type": "boolean" }, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBInstanceReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "SourceDBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SourceDBInstanceIdentifier": {}, "DBInstanceClass": {}, "AvailabilityZone": {}, "Port": { "type": "integer" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PubliclyAccessible": { "type": "boolean" }, "Tags": { "shape": "S9" }, "DBSubnetGroupName": {} } }, "output": { "resultWrapper": "CreateDBInstanceReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "CreateDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "DBParameterGroupFamily", "Description" ], "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateDBParameterGroupResult", "type": "structure", "members": { "DBParameterGroup": { "shape": "S1f" } } } }, "CreateDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName", "DBSecurityGroupDescription" ], "members": { "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateDBSecurityGroupResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } }, "CreateDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier", "DBInstanceIdentifier" ], "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "CreateDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "DBSubnetGroupDescription", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1l" }, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "CreateEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SnsTopicArn" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "SourceIds": { "shape": "S5" }, "Enabled": { "type": "boolean" }, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "CreateOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName", "EngineName", "MajorEngineVersion", "OptionGroupDescription" ], "members": { "OptionGroupName": {}, "EngineName": {}, "MajorEngineVersion": {}, "OptionGroupDescription": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "CreateOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1r" } } } }, "DeleteDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SkipFinalSnapshot": { "type": "boolean" }, "FinalDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "DeleteDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {} } } }, "DeleteDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {} } } }, "DeleteDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "Sk" } } } }, "DeleteDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName" ], "members": { "DBSubnetGroupName": {} } } }, "DeleteEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {} } }, "output": { "resultWrapper": "DeleteEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "DeleteOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {} } } }, "DescribeDBEngineVersions": { "input": { "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {}, "DefaultOnly": { "type": "boolean" }, "ListSupportedCharacterSets": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBEngineVersionsResult", "type": "structure", "members": { "Marker": {}, "DBEngineVersions": { "type": "list", "member": { "locationName": "DBEngineVersion", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "DBEngineDescription": {}, "DBEngineVersionDescription": {}, "DefaultCharacterSet": { "shape": "S2d" }, "SupportedCharacterSets": { "type": "list", "member": { "shape": "S2d", "locationName": "CharacterSet" } } } } } } } }, "DescribeDBInstances": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBInstancesResult", "type": "structure", "members": { "Marker": {}, "DBInstances": { "type": "list", "member": { "shape": "St", "locationName": "DBInstance" } } } } }, "DescribeDBLogFiles": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "FilenameContains": {}, "FileLastWritten": { "type": "long" }, "FileSize": { "type": "long" }, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBLogFilesResult", "type": "structure", "members": { "DescribeDBLogFiles": { "type": "list", "member": { "locationName": "DescribeDBLogFilesDetails", "type": "structure", "members": { "LogFileName": {}, "LastWritten": { "type": "long" }, "Size": { "type": "long" } } } }, "Marker": {} } } }, "DescribeDBParameterGroups": { "input": { "type": "structure", "members": { "DBParameterGroupName": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "DBParameterGroups": { "type": "list", "member": { "shape": "S1f", "locationName": "DBParameterGroup" } } } } }, "DescribeDBParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "Source": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S2s" }, "Marker": {} } } }, "DescribeDBSecurityGroups": { "input": { "type": "structure", "members": { "DBSecurityGroupName": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSecurityGroups": { "type": "list", "member": { "shape": "Sd", "locationName": "DBSecurityGroup" } } } } }, "DescribeDBSnapshots": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "SnapshotType": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSnapshotsResult", "type": "structure", "members": { "Marker": {}, "DBSnapshots": { "type": "list", "member": { "shape": "Sk", "locationName": "DBSnapshot" } } } } }, "DescribeDBSubnetGroups": { "input": { "type": "structure", "members": { "DBSubnetGroupName": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSubnetGroups": { "type": "list", "member": { "shape": "S11", "locationName": "DBSubnetGroup" } } } } }, "DescribeEngineDefaultParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupFamily" ], "members": { "DBParameterGroupFamily": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultParametersResult", "type": "structure", "members": { "EngineDefaults": { "type": "structure", "members": { "DBParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S2s" } }, "wrapper": true } } } }, "DescribeEventCategories": { "input": { "type": "structure", "members": { "SourceType": {}, "Filters": { "shape": "S27" } } }, "output": { "resultWrapper": "DescribeEventCategoriesResult", "type": "structure", "members": { "EventCategoriesMapList": { "type": "list", "member": { "locationName": "EventCategoriesMap", "type": "structure", "members": { "SourceType": {}, "EventCategories": { "shape": "S6" } }, "wrapper": true } } } } }, "DescribeEventSubscriptions": { "input": { "type": "structure", "members": { "SubscriptionName": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventSubscriptionsResult", "type": "structure", "members": { "Marker": {}, "EventSubscriptionsList": { "type": "list", "member": { "shape": "S4", "locationName": "EventSubscription" } } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "EventCategories": { "shape": "S6" }, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "EventCategories": { "shape": "S6" }, "Date": { "type": "timestamp" } } } } } } }, "DescribeOptionGroupOptions": { "input": { "type": "structure", "required": [ "EngineName" ], "members": { "EngineName": {}, "MajorEngineVersion": {}, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOptionGroupOptionsResult", "type": "structure", "members": { "OptionGroupOptions": { "type": "list", "member": { "locationName": "OptionGroupOption", "type": "structure", "members": { "Name": {}, "Description": {}, "EngineName": {}, "MajorEngineVersion": {}, "MinimumRequiredMinorEngineVersion": {}, "PortRequired": { "type": "boolean" }, "DefaultPort": { "type": "integer" }, "OptionsDependedOn": { "type": "list", "member": { "locationName": "OptionName" } }, "Persistent": { "type": "boolean" }, "Permanent": { "type": "boolean" }, "OptionGroupOptionSettings": { "type": "list", "member": { "locationName": "OptionGroupOptionSetting", "type": "structure", "members": { "SettingName": {}, "SettingDescription": {}, "DefaultValue": {}, "ApplyType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" } } } } } } }, "Marker": {} } } }, "DescribeOptionGroups": { "input": { "type": "structure", "members": { "OptionGroupName": {}, "Filters": { "shape": "S27" }, "Marker": {}, "MaxRecords": { "type": "integer" }, "EngineName": {}, "MajorEngineVersion": {} } }, "output": { "resultWrapper": "DescribeOptionGroupsResult", "type": "structure", "members": { "OptionGroupsList": { "type": "list", "member": { "shape": "S1r", "locationName": "OptionGroup" } }, "Marker": {} } } }, "DescribeOrderableDBInstanceOptions": { "input": { "type": "structure", "required": [ "Engine" ], "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "Vpc": { "type": "boolean" }, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", "type": "structure", "members": { "OrderableDBInstanceOptions": { "type": "list", "member": { "locationName": "OrderableDBInstanceOption", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "AvailabilityZones": { "type": "list", "member": { "shape": "S14", "locationName": "AvailabilityZone" } }, "MultiAZCapable": { "type": "boolean" }, "ReadReplicaCapable": { "type": "boolean" }, "Vpc": { "type": "boolean" } }, "wrapper": true } }, "Marker": {} } } }, "DescribeReservedDBInstances": { "input": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstances": { "type": "list", "member": { "shape": "S41", "locationName": "ReservedDBInstance" } } } } }, "DescribeReservedDBInstancesOfferings": { "input": { "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "Filters": { "shape": "S27" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstancesOfferings": { "type": "list", "member": { "locationName": "ReservedDBInstancesOffering", "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "RecurringCharges": { "shape": "S43" } }, "wrapper": true } } } } }, "DownloadDBLogFilePortion": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "LogFileName" ], "members": { "DBInstanceIdentifier": {}, "LogFileName": {}, "Marker": {}, "NumberOfLines": { "type": "integer" } } }, "output": { "resultWrapper": "DownloadDBLogFilePortionResult", "type": "structure", "members": { "LogFileData": {}, "Marker": {}, "AdditionalDataPending": { "type": "boolean" } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceName" ], "members": { "ResourceName": {}, "Filters": { "shape": "S27" } } }, "output": { "resultWrapper": "ListTagsForResourceResult", "type": "structure", "members": { "TagList": { "shape": "S9" } } } }, "ModifyDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "DBSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "ApplyImmediately": { "type": "boolean" }, "MasterUserPassword": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AllowMajorVersionUpgrade": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "NewDBInstanceIdentifier": {} } }, "output": { "resultWrapper": "ModifyDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "ModifyDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "Parameters" ], "members": { "DBParameterGroupName": {}, "Parameters": { "shape": "S2s" } } }, "output": { "shape": "S4g", "resultWrapper": "ModifyDBParameterGroupResult" } }, "ModifyDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S1l" } } }, "output": { "resultWrapper": "ModifyDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S11" } } } }, "ModifyEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S6" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "ModifyOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {}, "OptionsToInclude": { "type": "list", "member": { "locationName": "OptionConfiguration", "type": "structure", "required": [ "OptionName" ], "members": { "OptionName": {}, "Port": { "type": "integer" }, "DBSecurityGroupMemberships": { "shape": "Sp" }, "VpcSecurityGroupMemberships": { "shape": "Sq" }, "OptionSettings": { "type": "list", "member": { "shape": "S1v", "locationName": "OptionSetting" } } } } }, "OptionsToRemove": { "type": "list", "member": {} }, "ApplyImmediately": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S1r" } } } }, "PromoteReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {} } }, "output": { "resultWrapper": "PromoteReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "PurchaseReservedDBInstancesOffering": { "input": { "type": "structure", "required": [ "ReservedDBInstancesOfferingId" ], "members": { "ReservedDBInstancesOfferingId": {}, "ReservedDBInstanceId": {}, "DBInstanceCount": { "type": "integer" }, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", "type": "structure", "members": { "ReservedDBInstance": { "shape": "S41" } } } }, "RebootDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "ForceFailover": { "type": "boolean" } } }, "output": { "resultWrapper": "RebootDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RemoveSourceIdentifierFromSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S4" } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "type": "list", "member": {} } } } }, "ResetDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S2s" } } }, "output": { "shape": "S4g", "resultWrapper": "ResetDBParameterGroupResult" } }, "RestoreDBInstanceFromDBSnapshot": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "DBSnapshotIdentifier" ], "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RestoreDBInstanceToPointInTime": { "input": { "type": "structure", "required": [ "SourceDBInstanceIdentifier", "TargetDBInstanceIdentifier" ], "members": { "SourceDBInstanceIdentifier": {}, "TargetDBInstanceIdentifier": {}, "RestoreTime": { "type": "timestamp" }, "UseLatestRestorableTime": { "type": "boolean" }, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "Tags": { "shape": "S9" } } }, "output": { "resultWrapper": "RestoreDBInstanceToPointInTimeResult", "type": "structure", "members": { "DBInstance": { "shape": "St" } } } }, "RevokeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sd" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "CustomerAwsId": {}, "CustSubscriptionId": {}, "SnsTopicArn": {}, "Status": {}, "SubscriptionCreationTime": {}, "SourceType": {}, "SourceIdsList": { "shape": "S5" }, "EventCategoriesList": { "shape": "S6" }, "Enabled": { "type": "boolean" } }, "wrapper": true }, "S5": { "type": "list", "member": { "locationName": "SourceId" } }, "S6": { "type": "list", "member": { "locationName": "EventCategory" } }, "S9": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Sd": { "type": "structure", "members": { "OwnerId": {}, "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "VpcId": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } } }, "IPRanges": { "type": "list", "member": { "locationName": "IPRange", "type": "structure", "members": { "Status": {}, "CIDRIP": {} } } } }, "wrapper": true }, "Sk": { "type": "structure", "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Engine": {}, "AllocatedStorage": { "type": "integer" }, "Status": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "VpcId": {}, "InstanceCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "EngineVersion": {}, "LicenseModel": {}, "SnapshotType": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PercentProgress": { "type": "integer" }, "SourceRegion": {} }, "wrapper": true }, "Sp": { "type": "list", "member": { "locationName": "DBSecurityGroupName" } }, "Sq": { "type": "list", "member": { "locationName": "VpcSecurityGroupId" } }, "St": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBInstanceClass": {}, "Engine": {}, "DBInstanceStatus": {}, "MasterUsername": {}, "DBName": {}, "Endpoint": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" } } }, "AllocatedStorage": { "type": "integer" }, "InstanceCreateTime": { "type": "timestamp" }, "PreferredBackupWindow": {}, "BackupRetentionPeriod": { "type": "integer" }, "DBSecurityGroups": { "shape": "Sv" }, "VpcSecurityGroups": { "shape": "Sx" }, "DBParameterGroups": { "type": "list", "member": { "locationName": "DBParameterGroup", "type": "structure", "members": { "DBParameterGroupName": {}, "ParameterApplyStatus": {} } } }, "AvailabilityZone": {}, "DBSubnetGroup": { "shape": "S11" }, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "DBInstanceClass": {}, "AllocatedStorage": { "type": "integer" }, "MasterUserPassword": {}, "Port": { "type": "integer" }, "BackupRetentionPeriod": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "Iops": { "type": "integer" }, "DBInstanceIdentifier": {} } }, "LatestRestorableTime": { "type": "timestamp" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "ReadReplicaSourceDBInstanceIdentifier": {}, "ReadReplicaDBInstanceIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaDBInstanceIdentifier" } }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupMemberships": { "type": "list", "member": { "locationName": "OptionGroupMembership", "type": "structure", "members": { "OptionGroupName": {}, "Status": {} } } }, "CharacterSetName": {}, "SecondaryAvailabilityZone": {}, "PubliclyAccessible": { "type": "boolean" }, "StatusInfos": { "type": "list", "member": { "locationName": "DBInstanceStatusInfo", "type": "structure", "members": { "StatusType": {}, "Normal": { "type": "boolean" }, "Status": {}, "Message": {} } } } }, "wrapper": true }, "Sv": { "type": "list", "member": { "locationName": "DBSecurityGroup", "type": "structure", "members": { "DBSecurityGroupName": {}, "Status": {} } } }, "Sx": { "type": "list", "member": { "locationName": "VpcSecurityGroupMembership", "type": "structure", "members": { "VpcSecurityGroupId": {}, "Status": {} } } }, "S11": { "type": "structure", "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "VpcId": {}, "SubnetGroupStatus": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "shape": "S14" }, "SubnetStatus": {} } } } }, "wrapper": true }, "S14": { "type": "structure", "members": { "Name": {}, "ProvisionedIopsCapable": { "type": "boolean" } }, "wrapper": true }, "S1f": { "type": "structure", "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {} }, "wrapper": true }, "S1l": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S1r": { "type": "structure", "members": { "OptionGroupName": {}, "OptionGroupDescription": {}, "EngineName": {}, "MajorEngineVersion": {}, "Options": { "type": "list", "member": { "locationName": "Option", "type": "structure", "members": { "OptionName": {}, "OptionDescription": {}, "Persistent": { "type": "boolean" }, "Permanent": { "type": "boolean" }, "Port": { "type": "integer" }, "OptionSettings": { "type": "list", "member": { "shape": "S1v", "locationName": "OptionSetting" } }, "DBSecurityGroupMemberships": { "shape": "Sv" }, "VpcSecurityGroupMemberships": { "shape": "Sx" } } } }, "AllowsVpcAndNonVpcInstanceMemberships": { "type": "boolean" }, "VpcId": {} }, "wrapper": true }, "S1v": { "type": "structure", "members": { "Name": {}, "Value": {}, "DefaultValue": {}, "Description": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "IsCollection": { "type": "boolean" } } }, "S27": { "type": "list", "member": { "locationName": "Filter", "type": "structure", "required": [ "Name", "Values" ], "members": { "Name": {}, "Values": { "type": "list", "member": { "locationName": "Value" } } } } }, "S2d": { "type": "structure", "members": { "CharacterSetName": {}, "CharacterSetDescription": {} } }, "S2s": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "ApplyMethod": {} } } }, "S41": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "DBInstanceCount": { "type": "integer" }, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "State": {}, "RecurringCharges": { "shape": "S43" } }, "wrapper": true }, "S43": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S4g": { "type": "structure", "members": { "DBParameterGroupName": {} } } } } },{}],104:[function(require,module,exports){ arguments[4][102][0].apply(exports,arguments) },{"dup":102}],105:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "DBInstanceAvailable": { "delay": 30, "operation": "DescribeDBInstances", "maxAttempts": 60, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "deleting", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "failed", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-restore", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-parameters", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-parameters", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-restore", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" } ] }, "DBInstanceDeleted": { "delay": 30, "operation": "DescribeDBInstances", "maxAttempts": 60, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "creating", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "modifying", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "rebooting", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "resetting-master-credentials", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" } ] } } } },{}],106:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-10-31", "endpointPrefix": "rds", "protocol": "query", "serviceAbbreviation": "Amazon RDS", "serviceFullName": "Amazon Relational Database Service", "signatureVersion": "v4", "uid": "rds-2014-10-31", "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" }, "operations": { "AddRoleToDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "RoleArn" ], "members": { "DBClusterIdentifier": {}, "RoleArn": {} } } }, "AddSourceIdentifierToSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "AddSourceIdentifierToSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S5" } } } }, "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "Sa" } } } }, "ApplyPendingMaintenanceAction": { "input": { "type": "structure", "required": [ "ResourceIdentifier", "ApplyAction", "OptInType" ], "members": { "ResourceIdentifier": {}, "ApplyAction": {}, "OptInType": {} } }, "output": { "resultWrapper": "ApplyPendingMaintenanceActionResult", "type": "structure", "members": { "ResourcePendingMaintenanceActions": { "shape": "Se" } } } }, "AuthorizeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sk" } } } }, "CopyDBClusterParameterGroup": { "input": { "type": "structure", "required": [ "SourceDBClusterParameterGroupIdentifier", "TargetDBClusterParameterGroupIdentifier", "TargetDBClusterParameterGroupDescription" ], "members": { "SourceDBClusterParameterGroupIdentifier": {}, "TargetDBClusterParameterGroupIdentifier": {}, "TargetDBClusterParameterGroupDescription": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CopyDBClusterParameterGroupResult", "type": "structure", "members": { "DBClusterParameterGroup": { "shape": "Sr" } } } }, "CopyDBClusterSnapshot": { "input": { "type": "structure", "required": [ "SourceDBClusterSnapshotIdentifier", "TargetDBClusterSnapshotIdentifier" ], "members": { "SourceDBClusterSnapshotIdentifier": {}, "TargetDBClusterSnapshotIdentifier": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CopyDBClusterSnapshotResult", "type": "structure", "members": { "DBClusterSnapshot": { "shape": "Su" } } } }, "CopyDBParameterGroup": { "input": { "type": "structure", "required": [ "SourceDBParameterGroupIdentifier", "TargetDBParameterGroupIdentifier", "TargetDBParameterGroupDescription" ], "members": { "SourceDBParameterGroupIdentifier": {}, "TargetDBParameterGroupIdentifier": {}, "TargetDBParameterGroupDescription": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CopyDBParameterGroupResult", "type": "structure", "members": { "DBParameterGroup": { "shape": "Sz" } } } }, "CopyDBSnapshot": { "input": { "type": "structure", "required": [ "SourceDBSnapshotIdentifier", "TargetDBSnapshotIdentifier" ], "members": { "SourceDBSnapshotIdentifier": {}, "TargetDBSnapshotIdentifier": {}, "KmsKeyId": {}, "Tags": { "shape": "Sa" }, "CopyTags": { "type": "boolean" }, "PreSignedUrl": {}, "SourceRegion": {} } }, "output": { "resultWrapper": "CopyDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "S13" } } } }, "CopyOptionGroup": { "input": { "type": "structure", "required": [ "SourceOptionGroupIdentifier", "TargetOptionGroupIdentifier", "TargetOptionGroupDescription" ], "members": { "SourceOptionGroupIdentifier": {}, "TargetOptionGroupIdentifier": {}, "TargetOptionGroupDescription": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CopyOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S17" } } } }, "CreateDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "Engine" ], "members": { "AvailabilityZones": { "shape": "Sv" }, "BackupRetentionPeriod": { "type": "integer" }, "CharacterSetName": {}, "DatabaseName": {}, "DBClusterIdentifier": {}, "DBClusterParameterGroupName": {}, "VpcSecurityGroupIds": { "shape": "S1h" }, "DBSubnetGroupName": {}, "Engine": {}, "EngineVersion": {}, "Port": { "type": "integer" }, "MasterUsername": {}, "MasterUserPassword": {}, "OptionGroupName": {}, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "ReplicationSourceIdentifier": {}, "Tags": { "shape": "Sa" }, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {} } }, "output": { "resultWrapper": "CreateDBClusterResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "CreateDBClusterParameterGroup": { "input": { "type": "structure", "required": [ "DBClusterParameterGroupName", "DBParameterGroupFamily", "Description" ], "members": { "DBClusterParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBClusterParameterGroupResult", "type": "structure", "members": { "DBClusterParameterGroup": { "shape": "Sr" } } } }, "CreateDBClusterSnapshot": { "input": { "type": "structure", "required": [ "DBClusterSnapshotIdentifier", "DBClusterIdentifier" ], "members": { "DBClusterSnapshotIdentifier": {}, "DBClusterIdentifier": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBClusterSnapshotResult", "type": "structure", "members": { "DBClusterSnapshot": { "shape": "Su" } } } }, "CreateDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "DBInstanceClass", "Engine" ], "members": { "DBName": {}, "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "Engine": {}, "MasterUsername": {}, "MasterUserPassword": {}, "DBSecurityGroups": { "shape": "S1w" }, "VpcSecurityGroupIds": { "shape": "S1h" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "PreferredMaintenanceWindow": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "Port": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "CharacterSetName": {}, "PubliclyAccessible": { "type": "boolean" }, "Tags": { "shape": "Sa" }, "DBClusterIdentifier": {}, "StorageType": {}, "TdeCredentialArn": {}, "TdeCredentialPassword": {}, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {}, "Domain": {}, "CopyTagsToSnapshot": { "type": "boolean" }, "MonitoringInterval": { "type": "integer" }, "MonitoringRoleArn": {}, "DomainIAMRoleName": {}, "PromotionTier": { "type": "integer" }, "Timezone": {} } }, "output": { "resultWrapper": "CreateDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "CreateDBInstanceReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "SourceDBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SourceDBInstanceIdentifier": {}, "DBInstanceClass": {}, "AvailabilityZone": {}, "Port": { "type": "integer" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PubliclyAccessible": { "type": "boolean" }, "Tags": { "shape": "Sa" }, "DBSubnetGroupName": {}, "StorageType": {}, "CopyTagsToSnapshot": { "type": "boolean" }, "MonitoringInterval": { "type": "integer" }, "MonitoringRoleArn": {}, "KmsKeyId": {}, "PreSignedUrl": {} } }, "output": { "resultWrapper": "CreateDBInstanceReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "CreateDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "DBParameterGroupFamily", "Description" ], "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBParameterGroupResult", "type": "structure", "members": { "DBParameterGroup": { "shape": "Sz" } } } }, "CreateDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName", "DBSecurityGroupDescription" ], "members": { "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBSecurityGroupResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sk" } } } }, "CreateDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier", "DBInstanceIdentifier" ], "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "S13" } } } }, "CreateDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "DBSubnetGroupDescription", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S2o" }, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S22" } } } }, "CreateEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SnsTopicArn" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S7" }, "SourceIds": { "shape": "S6" }, "Enabled": { "type": "boolean" }, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S5" } } } }, "CreateOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName", "EngineName", "MajorEngineVersion", "OptionGroupDescription" ], "members": { "OptionGroupName": {}, "EngineName": {}, "MajorEngineVersion": {}, "OptionGroupDescription": {}, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "CreateOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S17" } } } }, "DeleteDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier" ], "members": { "DBClusterIdentifier": {}, "SkipFinalSnapshot": { "type": "boolean" }, "FinalDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBClusterResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "DeleteDBClusterParameterGroup": { "input": { "type": "structure", "required": [ "DBClusterParameterGroupName" ], "members": { "DBClusterParameterGroupName": {} } } }, "DeleteDBClusterSnapshot": { "input": { "type": "structure", "required": [ "DBClusterSnapshotIdentifier" ], "members": { "DBClusterSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBClusterSnapshotResult", "type": "structure", "members": { "DBClusterSnapshot": { "shape": "Su" } } } }, "DeleteDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "SkipFinalSnapshot": { "type": "boolean" }, "FinalDBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "DeleteDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {} } } }, "DeleteDBSecurityGroup": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {} } } }, "DeleteDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "S13" } } } }, "DeleteDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName" ], "members": { "DBSubnetGroupName": {} } } }, "DeleteEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {} } }, "output": { "resultWrapper": "DeleteEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S5" } } } }, "DeleteOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {} } } }, "DescribeAccountAttributes": { "input": { "type": "structure", "members": {} }, "output": { "resultWrapper": "DescribeAccountAttributesResult", "type": "structure", "members": { "AccountQuotas": { "type": "list", "member": { "locationName": "AccountQuota", "type": "structure", "members": { "AccountQuotaName": {}, "Used": { "type": "long" }, "Max": { "type": "long" } }, "wrapper": true } } } } }, "DescribeCertificates": { "input": { "type": "structure", "members": { "CertificateIdentifier": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeCertificatesResult", "type": "structure", "members": { "Certificates": { "type": "list", "member": { "locationName": "Certificate", "type": "structure", "members": { "CertificateIdentifier": {}, "CertificateType": {}, "Thumbprint": {}, "ValidFrom": { "type": "timestamp" }, "ValidTill": { "type": "timestamp" }, "CertificateArn": {} }, "wrapper": true } }, "Marker": {} } } }, "DescribeDBClusterParameterGroups": { "input": { "type": "structure", "members": { "DBClusterParameterGroupName": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBClusterParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "DBClusterParameterGroups": { "type": "list", "member": { "shape": "Sr", "locationName": "DBClusterParameterGroup" } } } } }, "DescribeDBClusterParameters": { "input": { "type": "structure", "required": [ "DBClusterParameterGroupName" ], "members": { "DBClusterParameterGroupName": {}, "Source": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBClusterParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S3q" }, "Marker": {} } } }, "DescribeDBClusterSnapshotAttributes": { "input": { "type": "structure", "required": [ "DBClusterSnapshotIdentifier" ], "members": { "DBClusterSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", "type": "structure", "members": { "DBClusterSnapshotAttributesResult": { "shape": "S3v" } } } }, "DescribeDBClusterSnapshots": { "input": { "type": "structure", "members": { "DBClusterIdentifier": {}, "DBClusterSnapshotIdentifier": {}, "SnapshotType": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {}, "IncludeShared": { "type": "boolean" }, "IncludePublic": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBClusterSnapshotsResult", "type": "structure", "members": { "Marker": {}, "DBClusterSnapshots": { "type": "list", "member": { "shape": "Su", "locationName": "DBClusterSnapshot" } } } } }, "DescribeDBClusters": { "input": { "type": "structure", "members": { "DBClusterIdentifier": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBClustersResult", "type": "structure", "members": { "Marker": {}, "DBClusters": { "type": "list", "member": { "shape": "S1j", "locationName": "DBCluster" } } } } }, "DescribeDBEngineVersions": { "input": { "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {}, "DefaultOnly": { "type": "boolean" }, "ListSupportedCharacterSets": { "type": "boolean" }, "ListSupportedTimezones": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBEngineVersionsResult", "type": "structure", "members": { "Marker": {}, "DBEngineVersions": { "type": "list", "member": { "locationName": "DBEngineVersion", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBParameterGroupFamily": {}, "DBEngineDescription": {}, "DBEngineVersionDescription": {}, "DefaultCharacterSet": { "shape": "S49" }, "SupportedCharacterSets": { "type": "list", "member": { "shape": "S49", "locationName": "CharacterSet" } }, "ValidUpgradeTarget": { "type": "list", "member": { "locationName": "UpgradeTarget", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "Description": {}, "AutoUpgrade": { "type": "boolean" }, "IsMajorVersionUpgrade": { "type": "boolean" } } } }, "SupportedTimezones": { "type": "list", "member": { "locationName": "Timezone", "type": "structure", "members": { "TimezoneName": {} } } } } } } } } }, "DescribeDBInstances": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBInstancesResult", "type": "structure", "members": { "Marker": {}, "DBInstances": { "type": "list", "member": { "shape": "S1y", "locationName": "DBInstance" } } } } }, "DescribeDBLogFiles": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "FilenameContains": {}, "FileLastWritten": { "type": "long" }, "FileSize": { "type": "long" }, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBLogFilesResult", "type": "structure", "members": { "DescribeDBLogFiles": { "type": "list", "member": { "locationName": "DescribeDBLogFilesDetails", "type": "structure", "members": { "LogFileName": {}, "LastWritten": { "type": "long" }, "Size": { "type": "long" } } } }, "Marker": {} } } }, "DescribeDBParameterGroups": { "input": { "type": "structure", "members": { "DBParameterGroupName": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "DBParameterGroups": { "type": "list", "member": { "shape": "Sz", "locationName": "DBParameterGroup" } } } } }, "DescribeDBParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "Source": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S3q" }, "Marker": {} } } }, "DescribeDBSecurityGroups": { "input": { "type": "structure", "members": { "DBSecurityGroupName": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSecurityGroups": { "type": "list", "member": { "shape": "Sk", "locationName": "DBSecurityGroup" } } } } }, "DescribeDBSnapshotAttributes": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DescribeDBSnapshotAttributesResult", "type": "structure", "members": { "DBSnapshotAttributesResult": { "shape": "S4w" } } } }, "DescribeDBSnapshots": { "input": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "SnapshotType": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {}, "IncludeShared": { "type": "boolean" }, "IncludePublic": { "type": "boolean" } } }, "output": { "resultWrapper": "DescribeDBSnapshotsResult", "type": "structure", "members": { "Marker": {}, "DBSnapshots": { "type": "list", "member": { "shape": "S13", "locationName": "DBSnapshot" } } } } }, "DescribeDBSubnetGroups": { "input": { "type": "structure", "members": { "DBSubnetGroupName": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDBSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "DBSubnetGroups": { "type": "list", "member": { "shape": "S22", "locationName": "DBSubnetGroup" } } } } }, "DescribeEngineDefaultClusterParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupFamily" ], "members": { "DBParameterGroupFamily": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultClusterParametersResult", "type": "structure", "members": { "EngineDefaults": { "shape": "S57" } } } }, "DescribeEngineDefaultParameters": { "input": { "type": "structure", "required": [ "DBParameterGroupFamily" ], "members": { "DBParameterGroupFamily": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEngineDefaultParametersResult", "type": "structure", "members": { "EngineDefaults": { "shape": "S57" } } } }, "DescribeEventCategories": { "input": { "type": "structure", "members": { "SourceType": {}, "Filters": { "shape": "S3f" } } }, "output": { "resultWrapper": "DescribeEventCategoriesResult", "type": "structure", "members": { "EventCategoriesMapList": { "type": "list", "member": { "locationName": "EventCategoriesMap", "type": "structure", "members": { "SourceType": {}, "EventCategories": { "shape": "S7" } }, "wrapper": true } } } } }, "DescribeEventSubscriptions": { "input": { "type": "structure", "members": { "SubscriptionName": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventSubscriptionsResult", "type": "structure", "members": { "Marker": {}, "EventSubscriptionsList": { "type": "list", "member": { "shape": "S5", "locationName": "EventSubscription" } } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "EventCategories": { "shape": "S7" }, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "EventCategories": { "shape": "S7" }, "Date": { "type": "timestamp" }, "SourceArn": {} } } } } } }, "DescribeOptionGroupOptions": { "input": { "type": "structure", "required": [ "EngineName" ], "members": { "EngineName": {}, "MajorEngineVersion": {}, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOptionGroupOptionsResult", "type": "structure", "members": { "OptionGroupOptions": { "type": "list", "member": { "locationName": "OptionGroupOption", "type": "structure", "members": { "Name": {}, "Description": {}, "EngineName": {}, "MajorEngineVersion": {}, "MinimumRequiredMinorEngineVersion": {}, "PortRequired": { "type": "boolean" }, "DefaultPort": { "type": "integer" }, "OptionsDependedOn": { "type": "list", "member": { "locationName": "OptionName" } }, "OptionsConflictsWith": { "type": "list", "member": { "locationName": "OptionConflictName" } }, "Persistent": { "type": "boolean" }, "Permanent": { "type": "boolean" }, "OptionGroupOptionSettings": { "type": "list", "member": { "locationName": "OptionGroupOptionSetting", "type": "structure", "members": { "SettingName": {}, "SettingDescription": {}, "DefaultValue": {}, "ApplyType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" } } } }, "OptionGroupOptionVersions": { "type": "list", "member": { "locationName": "OptionVersion", "type": "structure", "members": { "Version": {}, "IsDefault": { "type": "boolean" } } } } } } }, "Marker": {} } } }, "DescribeOptionGroups": { "input": { "type": "structure", "members": { "OptionGroupName": {}, "Filters": { "shape": "S3f" }, "Marker": {}, "MaxRecords": { "type": "integer" }, "EngineName": {}, "MajorEngineVersion": {} } }, "output": { "resultWrapper": "DescribeOptionGroupsResult", "type": "structure", "members": { "OptionGroupsList": { "type": "list", "member": { "shape": "S17", "locationName": "OptionGroup" } }, "Marker": {} } } }, "DescribeOrderableDBInstanceOptions": { "input": { "type": "structure", "required": [ "Engine" ], "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "Vpc": { "type": "boolean" }, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", "type": "structure", "members": { "OrderableDBInstanceOptions": { "type": "list", "member": { "locationName": "OrderableDBInstanceOption", "type": "structure", "members": { "Engine": {}, "EngineVersion": {}, "DBInstanceClass": {}, "LicenseModel": {}, "AvailabilityZones": { "type": "list", "member": { "shape": "S25", "locationName": "AvailabilityZone" } }, "MultiAZCapable": { "type": "boolean" }, "ReadReplicaCapable": { "type": "boolean" }, "Vpc": { "type": "boolean" }, "SupportsStorageEncryption": { "type": "boolean" }, "StorageType": {}, "SupportsIops": { "type": "boolean" }, "SupportsEnhancedMonitoring": { "type": "boolean" } }, "wrapper": true } }, "Marker": {} } } }, "DescribePendingMaintenanceActions": { "input": { "type": "structure", "members": { "ResourceIdentifier": {}, "Filters": { "shape": "S3f" }, "Marker": {}, "MaxRecords": { "type": "integer" } } }, "output": { "resultWrapper": "DescribePendingMaintenanceActionsResult", "type": "structure", "members": { "PendingMaintenanceActions": { "type": "list", "member": { "shape": "Se", "locationName": "ResourcePendingMaintenanceActions" } }, "Marker": {} } } }, "DescribeReservedDBInstances": { "input": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstances": { "type": "list", "member": { "shape": "S6a", "locationName": "ReservedDBInstance" } } } } }, "DescribeReservedDBInstancesOfferings": { "input": { "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "Filters": { "shape": "S3f" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedDBInstancesOfferings": { "type": "list", "member": { "locationName": "ReservedDBInstancesOffering", "type": "structure", "members": { "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "RecurringCharges": { "shape": "S6c" } }, "wrapper": true } } } } }, "DescribeSourceRegions": { "input": { "type": "structure", "members": { "RegionName": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "Filters": { "shape": "S3f" } } }, "output": { "resultWrapper": "DescribeSourceRegionsResult", "type": "structure", "members": { "Marker": {}, "SourceRegions": { "type": "list", "member": { "locationName": "SourceRegion", "type": "structure", "members": { "RegionName": {}, "Endpoint": {}, "Status": {} } } } } } }, "DownloadDBLogFilePortion": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "LogFileName" ], "members": { "DBInstanceIdentifier": {}, "LogFileName": {}, "Marker": {}, "NumberOfLines": { "type": "integer" } } }, "output": { "resultWrapper": "DownloadDBLogFilePortionResult", "type": "structure", "members": { "LogFileData": {}, "Marker": {}, "AdditionalDataPending": { "type": "boolean" } } } }, "FailoverDBCluster": { "input": { "type": "structure", "members": { "DBClusterIdentifier": {}, "TargetDBInstanceIdentifier": {} } }, "output": { "resultWrapper": "FailoverDBClusterResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceName" ], "members": { "ResourceName": {}, "Filters": { "shape": "S3f" } } }, "output": { "resultWrapper": "ListTagsForResourceResult", "type": "structure", "members": { "TagList": { "shape": "Sa" } } } }, "ModifyDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier" ], "members": { "DBClusterIdentifier": {}, "NewDBClusterIdentifier": {}, "ApplyImmediately": { "type": "boolean" }, "BackupRetentionPeriod": { "type": "integer" }, "DBClusterParameterGroupName": {}, "VpcSecurityGroupIds": { "shape": "S1h" }, "Port": { "type": "integer" }, "MasterUserPassword": {}, "OptionGroupName": {}, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {} } }, "output": { "resultWrapper": "ModifyDBClusterResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "ModifyDBClusterParameterGroup": { "input": { "type": "structure", "required": [ "DBClusterParameterGroupName", "Parameters" ], "members": { "DBClusterParameterGroupName": {}, "Parameters": { "shape": "S3q" } } }, "output": { "shape": "S6v", "resultWrapper": "ModifyDBClusterParameterGroupResult" } }, "ModifyDBClusterSnapshotAttribute": { "input": { "type": "structure", "required": [ "DBClusterSnapshotIdentifier", "AttributeName" ], "members": { "DBClusterSnapshotIdentifier": {}, "AttributeName": {}, "ValuesToAdd": { "shape": "S3y" }, "ValuesToRemove": { "shape": "S3y" } } }, "output": { "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", "type": "structure", "members": { "DBClusterSnapshotAttributesResult": { "shape": "S3v" } } } }, "ModifyDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "AllocatedStorage": { "type": "integer" }, "DBInstanceClass": {}, "DBSubnetGroupName": {}, "DBSecurityGroups": { "shape": "S1w" }, "VpcSecurityGroupIds": { "shape": "S1h" }, "ApplyImmediately": { "type": "boolean" }, "MasterUserPassword": {}, "DBParameterGroupName": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AllowMajorVersionUpgrade": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "NewDBInstanceIdentifier": {}, "StorageType": {}, "TdeCredentialArn": {}, "TdeCredentialPassword": {}, "CACertificateIdentifier": {}, "Domain": {}, "CopyTagsToSnapshot": { "type": "boolean" }, "MonitoringInterval": { "type": "integer" }, "DBPortNumber": { "type": "integer" }, "PubliclyAccessible": { "type": "boolean" }, "MonitoringRoleArn": {}, "DomainIAMRoleName": {}, "PromotionTier": { "type": "integer" } } }, "output": { "resultWrapper": "ModifyDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "ModifyDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName", "Parameters" ], "members": { "DBParameterGroupName": {}, "Parameters": { "shape": "S3q" } } }, "output": { "shape": "S71", "resultWrapper": "ModifyDBParameterGroupResult" } }, "ModifyDBSnapshot": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier" ], "members": { "DBSnapshotIdentifier": {}, "EngineVersion": {} } }, "output": { "resultWrapper": "ModifyDBSnapshotResult", "type": "structure", "members": { "DBSnapshot": { "shape": "S13" } } } }, "ModifyDBSnapshotAttribute": { "input": { "type": "structure", "required": [ "DBSnapshotIdentifier", "AttributeName" ], "members": { "DBSnapshotIdentifier": {}, "AttributeName": {}, "ValuesToAdd": { "shape": "S3y" }, "ValuesToRemove": { "shape": "S3y" } } }, "output": { "resultWrapper": "ModifyDBSnapshotAttributeResult", "type": "structure", "members": { "DBSnapshotAttributesResult": { "shape": "S4w" } } } }, "ModifyDBSubnetGroup": { "input": { "type": "structure", "required": [ "DBSubnetGroupName", "SubnetIds" ], "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "SubnetIds": { "shape": "S2o" } } }, "output": { "resultWrapper": "ModifyDBSubnetGroupResult", "type": "structure", "members": { "DBSubnetGroup": { "shape": "S22" } } } }, "ModifyEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "EventCategories": { "shape": "S7" }, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S5" } } } }, "ModifyOptionGroup": { "input": { "type": "structure", "required": [ "OptionGroupName" ], "members": { "OptionGroupName": {}, "OptionsToInclude": { "type": "list", "member": { "locationName": "OptionConfiguration", "type": "structure", "required": [ "OptionName" ], "members": { "OptionName": {}, "Port": { "type": "integer" }, "OptionVersion": {}, "DBSecurityGroupMemberships": { "shape": "S1w" }, "VpcSecurityGroupMemberships": { "shape": "S1h" }, "OptionSettings": { "type": "list", "member": { "shape": "S1b", "locationName": "OptionSetting" } } } } }, "OptionsToRemove": { "type": "list", "member": {} }, "ApplyImmediately": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyOptionGroupResult", "type": "structure", "members": { "OptionGroup": { "shape": "S17" } } } }, "PromoteReadReplica": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "BackupRetentionPeriod": { "type": "integer" }, "PreferredBackupWindow": {} } }, "output": { "resultWrapper": "PromoteReadReplicaResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "PromoteReadReplicaDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier" ], "members": { "DBClusterIdentifier": {} } }, "output": { "resultWrapper": "PromoteReadReplicaDBClusterResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "PurchaseReservedDBInstancesOffering": { "input": { "type": "structure", "required": [ "ReservedDBInstancesOfferingId" ], "members": { "ReservedDBInstancesOfferingId": {}, "ReservedDBInstanceId": {}, "DBInstanceCount": { "type": "integer" }, "Tags": { "shape": "Sa" } } }, "output": { "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", "type": "structure", "members": { "ReservedDBInstance": { "shape": "S6a" } } } }, "RebootDBInstance": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier" ], "members": { "DBInstanceIdentifier": {}, "ForceFailover": { "type": "boolean" } } }, "output": { "resultWrapper": "RebootDBInstanceResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "RemoveRoleFromDBCluster": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "RoleArn" ], "members": { "DBClusterIdentifier": {}, "RoleArn": {} } } }, "RemoveSourceIdentifierFromSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SourceIdentifier" ], "members": { "SubscriptionName": {}, "SourceIdentifier": {} } }, "output": { "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S5" } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "type": "list", "member": {} } } } }, "ResetDBClusterParameterGroup": { "input": { "type": "structure", "required": [ "DBClusterParameterGroupName" ], "members": { "DBClusterParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S3q" } } }, "output": { "shape": "S6v", "resultWrapper": "ResetDBClusterParameterGroupResult" } }, "ResetDBParameterGroup": { "input": { "type": "structure", "required": [ "DBParameterGroupName" ], "members": { "DBParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S3q" } } }, "output": { "shape": "S71", "resultWrapper": "ResetDBParameterGroupResult" } }, "RestoreDBClusterFromS3": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "Engine", "MasterUsername", "MasterUserPassword", "SourceEngine", "SourceEngineVersion", "S3BucketName", "S3IngestionRoleArn" ], "members": { "AvailabilityZones": { "shape": "Sv" }, "BackupRetentionPeriod": { "type": "integer" }, "CharacterSetName": {}, "DatabaseName": {}, "DBClusterIdentifier": {}, "DBClusterParameterGroupName": {}, "VpcSecurityGroupIds": { "shape": "S1h" }, "DBSubnetGroupName": {}, "Engine": {}, "EngineVersion": {}, "Port": { "type": "integer" }, "MasterUsername": {}, "MasterUserPassword": {}, "OptionGroupName": {}, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "Tags": { "shape": "Sa" }, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {}, "SourceEngine": {}, "SourceEngineVersion": {}, "S3BucketName": {}, "S3Prefix": {}, "S3IngestionRoleArn": {} } }, "output": { "resultWrapper": "RestoreDBClusterFromS3Result", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "RestoreDBClusterFromSnapshot": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "SnapshotIdentifier", "Engine" ], "members": { "AvailabilityZones": { "shape": "Sv" }, "DBClusterIdentifier": {}, "SnapshotIdentifier": {}, "Engine": {}, "EngineVersion": {}, "Port": { "type": "integer" }, "DBSubnetGroupName": {}, "DatabaseName": {}, "OptionGroupName": {}, "VpcSecurityGroupIds": { "shape": "S1h" }, "Tags": { "shape": "Sa" }, "KmsKeyId": {} } }, "output": { "resultWrapper": "RestoreDBClusterFromSnapshotResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "RestoreDBClusterToPointInTime": { "input": { "type": "structure", "required": [ "DBClusterIdentifier", "SourceDBClusterIdentifier" ], "members": { "DBClusterIdentifier": {}, "SourceDBClusterIdentifier": {}, "RestoreToTime": { "type": "timestamp" }, "UseLatestRestorableTime": { "type": "boolean" }, "Port": { "type": "integer" }, "DBSubnetGroupName": {}, "OptionGroupName": {}, "VpcSecurityGroupIds": { "shape": "S1h" }, "Tags": { "shape": "Sa" }, "KmsKeyId": {} } }, "output": { "resultWrapper": "RestoreDBClusterToPointInTimeResult", "type": "structure", "members": { "DBCluster": { "shape": "S1j" } } } }, "RestoreDBInstanceFromDBSnapshot": { "input": { "type": "structure", "required": [ "DBInstanceIdentifier", "DBSnapshotIdentifier" ], "members": { "DBInstanceIdentifier": {}, "DBSnapshotIdentifier": {}, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "Tags": { "shape": "Sa" }, "StorageType": {}, "TdeCredentialArn": {}, "TdeCredentialPassword": {}, "Domain": {}, "CopyTagsToSnapshot": { "type": "boolean" }, "DomainIAMRoleName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "RestoreDBInstanceToPointInTime": { "input": { "type": "structure", "required": [ "SourceDBInstanceIdentifier", "TargetDBInstanceIdentifier" ], "members": { "SourceDBInstanceIdentifier": {}, "TargetDBInstanceIdentifier": {}, "RestoreTime": { "type": "timestamp" }, "UseLatestRestorableTime": { "type": "boolean" }, "DBInstanceClass": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "DBSubnetGroupName": {}, "MultiAZ": { "type": "boolean" }, "PubliclyAccessible": { "type": "boolean" }, "AutoMinorVersionUpgrade": { "type": "boolean" }, "LicenseModel": {}, "DBName": {}, "Engine": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "CopyTagsToSnapshot": { "type": "boolean" }, "Tags": { "shape": "Sa" }, "StorageType": {}, "TdeCredentialArn": {}, "TdeCredentialPassword": {}, "Domain": {}, "DomainIAMRoleName": {} } }, "output": { "resultWrapper": "RestoreDBInstanceToPointInTimeResult", "type": "structure", "members": { "DBInstance": { "shape": "S1y" } } } }, "RevokeDBSecurityGroupIngress": { "input": { "type": "structure", "required": [ "DBSecurityGroupName" ], "members": { "DBSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeDBSecurityGroupIngressResult", "type": "structure", "members": { "DBSecurityGroup": { "shape": "Sk" } } } } }, "shapes": { "S5": { "type": "structure", "members": { "CustomerAwsId": {}, "CustSubscriptionId": {}, "SnsTopicArn": {}, "Status": {}, "SubscriptionCreationTime": {}, "SourceType": {}, "SourceIdsList": { "shape": "S6" }, "EventCategoriesList": { "shape": "S7" }, "Enabled": { "type": "boolean" }, "EventSubscriptionArn": {} }, "wrapper": true }, "S6": { "type": "list", "member": { "locationName": "SourceId" } }, "S7": { "type": "list", "member": { "locationName": "EventCategory" } }, "Sa": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Se": { "type": "structure", "members": { "ResourceIdentifier": {}, "PendingMaintenanceActionDetails": { "type": "list", "member": { "locationName": "PendingMaintenanceAction", "type": "structure", "members": { "Action": {}, "AutoAppliedAfterDate": { "type": "timestamp" }, "ForcedApplyDate": { "type": "timestamp" }, "OptInStatus": {}, "CurrentApplyDate": { "type": "timestamp" }, "Description": {} } } } }, "wrapper": true }, "Sk": { "type": "structure", "members": { "OwnerId": {}, "DBSecurityGroupName": {}, "DBSecurityGroupDescription": {}, "VpcId": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupId": {}, "EC2SecurityGroupOwnerId": {} } } }, "IPRanges": { "type": "list", "member": { "locationName": "IPRange", "type": "structure", "members": { "Status": {}, "CIDRIP": {} } } }, "DBSecurityGroupArn": {} }, "wrapper": true }, "Sr": { "type": "structure", "members": { "DBClusterParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {}, "DBClusterParameterGroupArn": {} }, "wrapper": true }, "Su": { "type": "structure", "members": { "AvailabilityZones": { "shape": "Sv" }, "DBClusterSnapshotIdentifier": {}, "DBClusterIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Engine": {}, "AllocatedStorage": { "type": "integer" }, "Status": {}, "Port": { "type": "integer" }, "VpcId": {}, "ClusterCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "EngineVersion": {}, "LicenseModel": {}, "SnapshotType": {}, "PercentProgress": { "type": "integer" }, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {}, "DBClusterSnapshotArn": {} }, "wrapper": true }, "Sv": { "type": "list", "member": { "locationName": "AvailabilityZone" } }, "Sz": { "type": "structure", "members": { "DBParameterGroupName": {}, "DBParameterGroupFamily": {}, "Description": {}, "DBParameterGroupArn": {} }, "wrapper": true }, "S13": { "type": "structure", "members": { "DBSnapshotIdentifier": {}, "DBInstanceIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Engine": {}, "AllocatedStorage": { "type": "integer" }, "Status": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "VpcId": {}, "InstanceCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "EngineVersion": {}, "LicenseModel": {}, "SnapshotType": {}, "Iops": { "type": "integer" }, "OptionGroupName": {}, "PercentProgress": { "type": "integer" }, "SourceRegion": {}, "SourceDBSnapshotIdentifier": {}, "StorageType": {}, "TdeCredentialArn": {}, "Encrypted": { "type": "boolean" }, "KmsKeyId": {}, "DBSnapshotArn": {}, "Timezone": {} }, "wrapper": true }, "S17": { "type": "structure", "members": { "OptionGroupName": {}, "OptionGroupDescription": {}, "EngineName": {}, "MajorEngineVersion": {}, "Options": { "type": "list", "member": { "locationName": "Option", "type": "structure", "members": { "OptionName": {}, "OptionDescription": {}, "Persistent": { "type": "boolean" }, "Permanent": { "type": "boolean" }, "Port": { "type": "integer" }, "OptionVersion": {}, "OptionSettings": { "type": "list", "member": { "shape": "S1b", "locationName": "OptionSetting" } }, "DBSecurityGroupMemberships": { "shape": "S1c" }, "VpcSecurityGroupMemberships": { "shape": "S1e" } } } }, "AllowsVpcAndNonVpcInstanceMemberships": { "type": "boolean" }, "VpcId": {}, "OptionGroupArn": {} }, "wrapper": true }, "S1b": { "type": "structure", "members": { "Name": {}, "Value": {}, "DefaultValue": {}, "Description": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "IsCollection": { "type": "boolean" } } }, "S1c": { "type": "list", "member": { "locationName": "DBSecurityGroup", "type": "structure", "members": { "DBSecurityGroupName": {}, "Status": {} } } }, "S1e": { "type": "list", "member": { "locationName": "VpcSecurityGroupMembership", "type": "structure", "members": { "VpcSecurityGroupId": {}, "Status": {} } } }, "S1h": { "type": "list", "member": { "locationName": "VpcSecurityGroupId" } }, "S1j": { "type": "structure", "members": { "AllocatedStorage": { "type": "integer" }, "AvailabilityZones": { "shape": "Sv" }, "BackupRetentionPeriod": { "type": "integer" }, "CharacterSetName": {}, "DatabaseName": {}, "DBClusterIdentifier": {}, "DBClusterParameterGroup": {}, "DBSubnetGroup": {}, "Status": {}, "PercentProgress": {}, "EarliestRestorableTime": { "type": "timestamp" }, "Endpoint": {}, "ReaderEndpoint": {}, "MultiAZ": { "type": "boolean" }, "Engine": {}, "EngineVersion": {}, "LatestRestorableTime": { "type": "timestamp" }, "Port": { "type": "integer" }, "MasterUsername": {}, "DBClusterOptionGroupMemberships": { "type": "list", "member": { "locationName": "DBClusterOptionGroup", "type": "structure", "members": { "DBClusterOptionGroupName": {}, "Status": {} } } }, "PreferredBackupWindow": {}, "PreferredMaintenanceWindow": {}, "ReplicationSourceIdentifier": {}, "ReadReplicaIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaIdentifier" } }, "DBClusterMembers": { "type": "list", "member": { "locationName": "DBClusterMember", "type": "structure", "members": { "DBInstanceIdentifier": {}, "IsClusterWriter": { "type": "boolean" }, "DBClusterParameterGroupStatus": {}, "PromotionTier": { "type": "integer" } }, "wrapper": true } }, "VpcSecurityGroups": { "shape": "S1e" }, "HostedZoneId": {}, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {}, "DbClusterResourceId": {}, "DBClusterArn": {}, "AssociatedRoles": { "type": "list", "member": { "locationName": "DBClusterRole", "type": "structure", "members": { "RoleArn": {}, "Status": {} } } }, "ClusterCreateTime": { "type": "timestamp" } }, "wrapper": true }, "S1w": { "type": "list", "member": { "locationName": "DBSecurityGroupName" } }, "S1y": { "type": "structure", "members": { "DBInstanceIdentifier": {}, "DBInstanceClass": {}, "Engine": {}, "DBInstanceStatus": {}, "MasterUsername": {}, "DBName": {}, "Endpoint": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" }, "HostedZoneId": {} } }, "AllocatedStorage": { "type": "integer" }, "InstanceCreateTime": { "type": "timestamp" }, "PreferredBackupWindow": {}, "BackupRetentionPeriod": { "type": "integer" }, "DBSecurityGroups": { "shape": "S1c" }, "VpcSecurityGroups": { "shape": "S1e" }, "DBParameterGroups": { "type": "list", "member": { "locationName": "DBParameterGroup", "type": "structure", "members": { "DBParameterGroupName": {}, "ParameterApplyStatus": {} } } }, "AvailabilityZone": {}, "DBSubnetGroup": { "shape": "S22" }, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "DBInstanceClass": {}, "AllocatedStorage": { "type": "integer" }, "MasterUserPassword": {}, "Port": { "type": "integer" }, "BackupRetentionPeriod": { "type": "integer" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "LicenseModel": {}, "Iops": { "type": "integer" }, "DBInstanceIdentifier": {}, "StorageType": {}, "CACertificateIdentifier": {}, "DBSubnetGroupName": {} } }, "LatestRestorableTime": { "type": "timestamp" }, "MultiAZ": { "type": "boolean" }, "EngineVersion": {}, "AutoMinorVersionUpgrade": { "type": "boolean" }, "ReadReplicaSourceDBInstanceIdentifier": {}, "ReadReplicaDBInstanceIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaDBInstanceIdentifier" } }, "ReadReplicaDBClusterIdentifiers": { "type": "list", "member": { "locationName": "ReadReplicaDBClusterIdentifier" } }, "LicenseModel": {}, "Iops": { "type": "integer" }, "OptionGroupMemberships": { "type": "list", "member": { "locationName": "OptionGroupMembership", "type": "structure", "members": { "OptionGroupName": {}, "Status": {} } } }, "CharacterSetName": {}, "SecondaryAvailabilityZone": {}, "PubliclyAccessible": { "type": "boolean" }, "StatusInfos": { "type": "list", "member": { "locationName": "DBInstanceStatusInfo", "type": "structure", "members": { "StatusType": {}, "Normal": { "type": "boolean" }, "Status": {}, "Message": {} } } }, "StorageType": {}, "TdeCredentialArn": {}, "DbInstancePort": { "type": "integer" }, "DBClusterIdentifier": {}, "StorageEncrypted": { "type": "boolean" }, "KmsKeyId": {}, "DbiResourceId": {}, "CACertificateIdentifier": {}, "DomainMemberships": { "type": "list", "member": { "locationName": "DomainMembership", "type": "structure", "members": { "Domain": {}, "Status": {}, "FQDN": {}, "IAMRoleName": {} } } }, "CopyTagsToSnapshot": { "type": "boolean" }, "MonitoringInterval": { "type": "integer" }, "EnhancedMonitoringResourceArn": {}, "MonitoringRoleArn": {}, "PromotionTier": { "type": "integer" }, "DBInstanceArn": {}, "Timezone": {} }, "wrapper": true }, "S22": { "type": "structure", "members": { "DBSubnetGroupName": {}, "DBSubnetGroupDescription": {}, "VpcId": {}, "SubnetGroupStatus": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "shape": "S25" }, "SubnetStatus": {} } } }, "DBSubnetGroupArn": {} }, "wrapper": true }, "S25": { "type": "structure", "members": { "Name": {} }, "wrapper": true }, "S2o": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S3f": { "type": "list", "member": { "locationName": "Filter", "type": "structure", "required": [ "Name", "Values" ], "members": { "Name": {}, "Values": { "type": "list", "member": { "locationName": "Value" } } } } }, "S3q": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "ApplyType": {}, "DataType": {}, "AllowedValues": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {}, "ApplyMethod": {} } } }, "S3v": { "type": "structure", "members": { "DBClusterSnapshotIdentifier": {}, "DBClusterSnapshotAttributes": { "type": "list", "member": { "locationName": "DBClusterSnapshotAttribute", "type": "structure", "members": { "AttributeName": {}, "AttributeValues": { "shape": "S3y" } } } } }, "wrapper": true }, "S3y": { "type": "list", "member": { "locationName": "AttributeValue" } }, "S49": { "type": "structure", "members": { "CharacterSetName": {}, "CharacterSetDescription": {} } }, "S4w": { "type": "structure", "members": { "DBSnapshotIdentifier": {}, "DBSnapshotAttributes": { "type": "list", "member": { "locationName": "DBSnapshotAttribute", "type": "structure", "members": { "AttributeName": {}, "AttributeValues": { "shape": "S3y" } }, "wrapper": true } } }, "wrapper": true }, "S57": { "type": "structure", "members": { "DBParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S3q" } }, "wrapper": true }, "S6a": { "type": "structure", "members": { "ReservedDBInstanceId": {}, "ReservedDBInstancesOfferingId": {}, "DBInstanceClass": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "DBInstanceCount": { "type": "integer" }, "ProductDescription": {}, "OfferingType": {}, "MultiAZ": { "type": "boolean" }, "State": {}, "RecurringCharges": { "shape": "S6c" }, "ReservedDBInstanceArn": {} }, "wrapper": true }, "S6c": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S6v": { "type": "structure", "members": { "DBClusterParameterGroupName": {} } }, "S71": { "type": "structure", "members": { "DBParameterGroupName": {} } } } } },{}],107:[function(require,module,exports){ arguments[4][102][0].apply(exports,arguments) },{"dup":102}],108:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "DBInstanceAvailable": { "delay": 30, "operation": "DescribeDBInstances", "maxAttempts": 60, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "deleting", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "failed", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-restore", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "incompatible-parameters", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" } ] }, "DBInstanceDeleted": { "delay": 30, "operation": "DescribeDBInstances", "maxAttempts": 60, "acceptors": [ { "expected": "deleted", "matcher": "pathAll", "state": "success", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "DBInstanceNotFound", "matcher": "error", "state": "success" }, { "expected": "creating", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "modifying", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "rebooting", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" }, { "expected": "resetting-master-credentials", "matcher": "pathAny", "state": "failure", "argument": "DBInstances[].DBInstanceStatus" } ] } } } },{}],109:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "redshift-2012-12-01", "apiVersion": "2012-12-01", "endpointPrefix": "redshift", "protocol": "query", "serviceFullName": "Amazon Redshift", "signatureVersion": "v4", "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" }, "operations": { "AuthorizeClusterSecurityGroupIngress": { "input": { "type": "structure", "required": [ "ClusterSecurityGroupName" ], "members": { "ClusterSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", "type": "structure", "members": { "ClusterSecurityGroup": { "shape": "S4" } } } }, "AuthorizeSnapshotAccess": { "input": { "type": "structure", "required": [ "SnapshotIdentifier", "AccountWithRestoreAccess" ], "members": { "SnapshotIdentifier": {}, "SnapshotClusterIdentifier": {}, "AccountWithRestoreAccess": {} } }, "output": { "resultWrapper": "AuthorizeSnapshotAccessResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "CopyClusterSnapshot": { "input": { "type": "structure", "required": [ "SourceSnapshotIdentifier", "TargetSnapshotIdentifier" ], "members": { "SourceSnapshotIdentifier": {}, "SourceSnapshotClusterIdentifier": {}, "TargetSnapshotIdentifier": {} } }, "output": { "resultWrapper": "CopyClusterSnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "CreateCluster": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "NodeType", "MasterUsername", "MasterUserPassword" ], "members": { "DBName": {}, "ClusterIdentifier": {}, "ClusterType": {}, "NodeType": {}, "MasterUsername": {}, "MasterUserPassword": {}, "ClusterSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "ClusterSubnetGroupName": {}, "AvailabilityZone": {}, "PreferredMaintenanceWindow": {}, "ClusterParameterGroupName": {}, "AutomatedSnapshotRetentionPeriod": { "type": "integer" }, "Port": { "type": "integer" }, "ClusterVersion": {}, "AllowVersionUpgrade": { "type": "boolean" }, "NumberOfNodes": { "type": "integer" }, "PubliclyAccessible": { "type": "boolean" }, "Encrypted": { "type": "boolean" }, "HsmClientCertificateIdentifier": {}, "HsmConfigurationIdentifier": {}, "ElasticIp": {}, "Tags": { "shape": "S7" }, "KmsKeyId": {}, "EnhancedVpcRouting": { "type": "boolean" }, "AdditionalInfo": {}, "IamRoles": { "shape": "St" } } }, "output": { "resultWrapper": "CreateClusterResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "CreateClusterParameterGroup": { "input": { "type": "structure", "required": [ "ParameterGroupName", "ParameterGroupFamily", "Description" ], "members": { "ParameterGroupName": {}, "ParameterGroupFamily": {}, "Description": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateClusterParameterGroupResult", "type": "structure", "members": { "ClusterParameterGroup": { "shape": "S1g" } } } }, "CreateClusterSecurityGroup": { "input": { "type": "structure", "required": [ "ClusterSecurityGroupName", "Description" ], "members": { "ClusterSecurityGroupName": {}, "Description": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateClusterSecurityGroupResult", "type": "structure", "members": { "ClusterSecurityGroup": { "shape": "S4" } } } }, "CreateClusterSnapshot": { "input": { "type": "structure", "required": [ "SnapshotIdentifier", "ClusterIdentifier" ], "members": { "SnapshotIdentifier": {}, "ClusterIdentifier": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateClusterSnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "CreateClusterSubnetGroup": { "input": { "type": "structure", "required": [ "ClusterSubnetGroupName", "Description", "SubnetIds" ], "members": { "ClusterSubnetGroupName": {}, "Description": {}, "SubnetIds": { "shape": "S1m" }, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateClusterSubnetGroupResult", "type": "structure", "members": { "ClusterSubnetGroup": { "shape": "S1o" } } } }, "CreateEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName", "SnsTopicArn" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "SourceIds": { "shape": "S1t" }, "EventCategories": { "shape": "S1u" }, "Severity": {}, "Enabled": { "type": "boolean" }, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S1w" } } } }, "CreateHsmClientCertificate": { "input": { "type": "structure", "required": [ "HsmClientCertificateIdentifier" ], "members": { "HsmClientCertificateIdentifier": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateHsmClientCertificateResult", "type": "structure", "members": { "HsmClientCertificate": { "shape": "S1z" } } } }, "CreateHsmConfiguration": { "input": { "type": "structure", "required": [ "HsmConfigurationIdentifier", "Description", "HsmIpAddress", "HsmPartitionName", "HsmPartitionPassword", "HsmServerPublicCertificate" ], "members": { "HsmConfigurationIdentifier": {}, "Description": {}, "HsmIpAddress": {}, "HsmPartitionName": {}, "HsmPartitionPassword": {}, "HsmServerPublicCertificate": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateHsmConfigurationResult", "type": "structure", "members": { "HsmConfiguration": { "shape": "S22" } } } }, "CreateSnapshotCopyGrant": { "input": { "type": "structure", "required": [ "SnapshotCopyGrantName" ], "members": { "SnapshotCopyGrantName": {}, "KmsKeyId": {}, "Tags": { "shape": "S7" } } }, "output": { "resultWrapper": "CreateSnapshotCopyGrantResult", "type": "structure", "members": { "SnapshotCopyGrant": { "shape": "S25" } } } }, "CreateTags": { "input": { "type": "structure", "required": [ "ResourceName", "Tags" ], "members": { "ResourceName": {}, "Tags": { "shape": "S7" } } } }, "DeleteCluster": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {}, "SkipFinalClusterSnapshot": { "type": "boolean" }, "FinalClusterSnapshotIdentifier": {} } }, "output": { "resultWrapper": "DeleteClusterResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "DeleteClusterParameterGroup": { "input": { "type": "structure", "required": [ "ParameterGroupName" ], "members": { "ParameterGroupName": {} } } }, "DeleteClusterSecurityGroup": { "input": { "type": "structure", "required": [ "ClusterSecurityGroupName" ], "members": { "ClusterSecurityGroupName": {} } } }, "DeleteClusterSnapshot": { "input": { "type": "structure", "required": [ "SnapshotIdentifier" ], "members": { "SnapshotIdentifier": {}, "SnapshotClusterIdentifier": {} } }, "output": { "resultWrapper": "DeleteClusterSnapshotResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "DeleteClusterSubnetGroup": { "input": { "type": "structure", "required": [ "ClusterSubnetGroupName" ], "members": { "ClusterSubnetGroupName": {} } } }, "DeleteEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {} } } }, "DeleteHsmClientCertificate": { "input": { "type": "structure", "required": [ "HsmClientCertificateIdentifier" ], "members": { "HsmClientCertificateIdentifier": {} } } }, "DeleteHsmConfiguration": { "input": { "type": "structure", "required": [ "HsmConfigurationIdentifier" ], "members": { "HsmConfigurationIdentifier": {} } } }, "DeleteSnapshotCopyGrant": { "input": { "type": "structure", "required": [ "SnapshotCopyGrantName" ], "members": { "SnapshotCopyGrantName": {} } } }, "DeleteTags": { "input": { "type": "structure", "required": [ "ResourceName", "TagKeys" ], "members": { "ResourceName": {}, "TagKeys": { "shape": "S2j" } } } }, "DescribeClusterParameterGroups": { "input": { "type": "structure", "members": { "ParameterGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeClusterParameterGroupsResult", "type": "structure", "members": { "Marker": {}, "ParameterGroups": { "type": "list", "member": { "shape": "S1g", "locationName": "ClusterParameterGroup" } } } } }, "DescribeClusterParameters": { "input": { "type": "structure", "required": [ "ParameterGroupName" ], "members": { "ParameterGroupName": {}, "Source": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeClusterParametersResult", "type": "structure", "members": { "Parameters": { "shape": "S2q" }, "Marker": {} } } }, "DescribeClusterSecurityGroups": { "input": { "type": "structure", "members": { "ClusterSecurityGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeClusterSecurityGroupsResult", "type": "structure", "members": { "Marker": {}, "ClusterSecurityGroups": { "type": "list", "member": { "shape": "S4", "locationName": "ClusterSecurityGroup" } } } } }, "DescribeClusterSnapshots": { "input": { "type": "structure", "members": { "ClusterIdentifier": {}, "SnapshotIdentifier": {}, "SnapshotType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "MaxRecords": { "type": "integer" }, "Marker": {}, "OwnerAccount": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeClusterSnapshotsResult", "type": "structure", "members": { "Marker": {}, "Snapshots": { "type": "list", "member": { "shape": "Sd", "locationName": "Snapshot" } } } } }, "DescribeClusterSubnetGroups": { "input": { "type": "structure", "members": { "ClusterSubnetGroupName": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeClusterSubnetGroupsResult", "type": "structure", "members": { "Marker": {}, "ClusterSubnetGroups": { "type": "list", "member": { "shape": "S1o", "locationName": "ClusterSubnetGroup" } } } } }, "DescribeClusterVersions": { "input": { "type": "structure", "members": { "ClusterVersion": {}, "ClusterParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeClusterVersionsResult", "type": "structure", "members": { "Marker": {}, "ClusterVersions": { "type": "list", "member": { "locationName": "ClusterVersion", "type": "structure", "members": { "ClusterVersion": {}, "ClusterParameterGroupFamily": {}, "Description": {} } } } } } }, "DescribeClusters": { "input": { "type": "structure", "members": { "ClusterIdentifier": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeClustersResult", "type": "structure", "members": { "Marker": {}, "Clusters": { "type": "list", "member": { "shape": "Sv", "locationName": "Cluster" } } } } }, "DescribeDefaultClusterParameters": { "input": { "type": "structure", "required": [ "ParameterGroupFamily" ], "members": { "ParameterGroupFamily": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeDefaultClusterParametersResult", "type": "structure", "members": { "DefaultClusterParameters": { "type": "structure", "members": { "ParameterGroupFamily": {}, "Marker": {}, "Parameters": { "shape": "S2q" } }, "wrapper": true } } } }, "DescribeEventCategories": { "input": { "type": "structure", "members": { "SourceType": {} } }, "output": { "resultWrapper": "DescribeEventCategoriesResult", "type": "structure", "members": { "EventCategoriesMapList": { "type": "list", "member": { "locationName": "EventCategoriesMap", "type": "structure", "members": { "SourceType": {}, "Events": { "type": "list", "member": { "locationName": "EventInfoMap", "type": "structure", "members": { "EventId": {}, "EventCategories": { "shape": "S1u" }, "EventDescription": {}, "Severity": {} }, "wrapper": true } } }, "wrapper": true } } } } }, "DescribeEventSubscriptions": { "input": { "type": "structure", "members": { "SubscriptionName": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventSubscriptionsResult", "type": "structure", "members": { "Marker": {}, "EventSubscriptionsList": { "type": "list", "member": { "shape": "S1w", "locationName": "EventSubscription" } } } } }, "DescribeEvents": { "input": { "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeEventsResult", "type": "structure", "members": { "Marker": {}, "Events": { "type": "list", "member": { "locationName": "Event", "type": "structure", "members": { "SourceIdentifier": {}, "SourceType": {}, "Message": {}, "EventCategories": { "shape": "S1u" }, "Severity": {}, "Date": { "type": "timestamp" }, "EventId": {} } } } } } }, "DescribeHsmClientCertificates": { "input": { "type": "structure", "members": { "HsmClientCertificateIdentifier": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeHsmClientCertificatesResult", "type": "structure", "members": { "Marker": {}, "HsmClientCertificates": { "type": "list", "member": { "shape": "S1z", "locationName": "HsmClientCertificate" } } } } }, "DescribeHsmConfigurations": { "input": { "type": "structure", "members": { "HsmConfigurationIdentifier": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeHsmConfigurationsResult", "type": "structure", "members": { "Marker": {}, "HsmConfigurations": { "type": "list", "member": { "shape": "S22", "locationName": "HsmConfiguration" } } } } }, "DescribeLoggingStatus": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "shape": "S3x", "resultWrapper": "DescribeLoggingStatusResult" } }, "DescribeOrderableClusterOptions": { "input": { "type": "structure", "members": { "ClusterVersion": {}, "NodeType": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeOrderableClusterOptionsResult", "type": "structure", "members": { "OrderableClusterOptions": { "type": "list", "member": { "locationName": "OrderableClusterOption", "type": "structure", "members": { "ClusterVersion": {}, "ClusterType": {}, "NodeType": {}, "AvailabilityZones": { "type": "list", "member": { "shape": "S1r", "locationName": "AvailabilityZone" } } }, "wrapper": true } }, "Marker": {} } } }, "DescribeReservedNodeOfferings": { "input": { "type": "structure", "members": { "ReservedNodeOfferingId": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedNodeOfferingsResult", "type": "structure", "members": { "Marker": {}, "ReservedNodeOfferings": { "type": "list", "member": { "locationName": "ReservedNodeOffering", "type": "structure", "members": { "ReservedNodeOfferingId": {}, "NodeType": {}, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "OfferingType": {}, "RecurringCharges": { "shape": "S47" } }, "wrapper": true } } } } }, "DescribeReservedNodes": { "input": { "type": "structure", "members": { "ReservedNodeId": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeReservedNodesResult", "type": "structure", "members": { "Marker": {}, "ReservedNodes": { "type": "list", "member": { "shape": "S4c", "locationName": "ReservedNode" } } } } }, "DescribeResize": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "resultWrapper": "DescribeResizeResult", "type": "structure", "members": { "TargetNodeType": {}, "TargetNumberOfNodes": { "type": "integer" }, "TargetClusterType": {}, "Status": {}, "ImportTablesCompleted": { "type": "list", "member": {} }, "ImportTablesInProgress": { "type": "list", "member": {} }, "ImportTablesNotStarted": { "type": "list", "member": {} }, "AvgResizeRateInMegaBytesPerSecond": { "type": "double" }, "TotalResizeDataInMegaBytes": { "type": "long" }, "ProgressInMegaBytes": { "type": "long" }, "ElapsedTimeInSeconds": { "type": "long" }, "EstimatedTimeToCompletionInSeconds": { "type": "long" } } } }, "DescribeSnapshotCopyGrants": { "input": { "type": "structure", "members": { "SnapshotCopyGrantName": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeSnapshotCopyGrantsResult", "type": "structure", "members": { "Marker": {}, "SnapshotCopyGrants": { "type": "list", "member": { "shape": "S25", "locationName": "SnapshotCopyGrant" } } } } }, "DescribeTableRestoreStatus": { "input": { "type": "structure", "members": { "ClusterIdentifier": {}, "TableRestoreRequestId": {}, "MaxRecords": { "type": "integer" }, "Marker": {} } }, "output": { "resultWrapper": "DescribeTableRestoreStatusResult", "type": "structure", "members": { "TableRestoreStatusDetails": { "type": "list", "member": { "shape": "S4q", "locationName": "TableRestoreStatus" } }, "Marker": {} } } }, "DescribeTags": { "input": { "type": "structure", "members": { "ResourceName": {}, "ResourceType": {}, "MaxRecords": { "type": "integer" }, "Marker": {}, "TagKeys": { "shape": "S2j" }, "TagValues": { "shape": "S2l" } } }, "output": { "resultWrapper": "DescribeTagsResult", "type": "structure", "members": { "TaggedResources": { "type": "list", "member": { "locationName": "TaggedResource", "type": "structure", "members": { "Tag": { "shape": "S8" }, "ResourceName": {}, "ResourceType": {} } } }, "Marker": {} } } }, "DisableLogging": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "shape": "S3x", "resultWrapper": "DisableLoggingResult" } }, "DisableSnapshotCopy": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "resultWrapper": "DisableSnapshotCopyResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "EnableLogging": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "BucketName" ], "members": { "ClusterIdentifier": {}, "BucketName": {}, "S3KeyPrefix": {} } }, "output": { "shape": "S3x", "resultWrapper": "EnableLoggingResult" } }, "EnableSnapshotCopy": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "DestinationRegion" ], "members": { "ClusterIdentifier": {}, "DestinationRegion": {}, "RetentionPeriod": { "type": "integer" }, "SnapshotCopyGrantName": {} } }, "output": { "resultWrapper": "EnableSnapshotCopyResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "ModifyCluster": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {}, "ClusterType": {}, "NodeType": {}, "NumberOfNodes": { "type": "integer" }, "ClusterSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "MasterUserPassword": {}, "ClusterParameterGroupName": {}, "AutomatedSnapshotRetentionPeriod": { "type": "integer" }, "PreferredMaintenanceWindow": {}, "ClusterVersion": {}, "AllowVersionUpgrade": { "type": "boolean" }, "HsmClientCertificateIdentifier": {}, "HsmConfigurationIdentifier": {}, "NewClusterIdentifier": {}, "PubliclyAccessible": { "type": "boolean" }, "ElasticIp": {}, "EnhancedVpcRouting": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyClusterResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "ModifyClusterIamRoles": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {}, "AddIamRoles": { "shape": "St" }, "RemoveIamRoles": { "shape": "St" } } }, "output": { "resultWrapper": "ModifyClusterIamRolesResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "ModifyClusterParameterGroup": { "input": { "type": "structure", "required": [ "ParameterGroupName", "Parameters" ], "members": { "ParameterGroupName": {}, "Parameters": { "shape": "S2q" } } }, "output": { "shape": "S57", "resultWrapper": "ModifyClusterParameterGroupResult" } }, "ModifyClusterSubnetGroup": { "input": { "type": "structure", "required": [ "ClusterSubnetGroupName", "SubnetIds" ], "members": { "ClusterSubnetGroupName": {}, "Description": {}, "SubnetIds": { "shape": "S1m" } } }, "output": { "resultWrapper": "ModifyClusterSubnetGroupResult", "type": "structure", "members": { "ClusterSubnetGroup": { "shape": "S1o" } } } }, "ModifyEventSubscription": { "input": { "type": "structure", "required": [ "SubscriptionName" ], "members": { "SubscriptionName": {}, "SnsTopicArn": {}, "SourceType": {}, "SourceIds": { "shape": "S1t" }, "EventCategories": { "shape": "S1u" }, "Severity": {}, "Enabled": { "type": "boolean" } } }, "output": { "resultWrapper": "ModifyEventSubscriptionResult", "type": "structure", "members": { "EventSubscription": { "shape": "S1w" } } } }, "ModifySnapshotCopyRetentionPeriod": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "RetentionPeriod" ], "members": { "ClusterIdentifier": {}, "RetentionPeriod": { "type": "integer" } } }, "output": { "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "PurchaseReservedNodeOffering": { "input": { "type": "structure", "required": [ "ReservedNodeOfferingId" ], "members": { "ReservedNodeOfferingId": {}, "NodeCount": { "type": "integer" } } }, "output": { "resultWrapper": "PurchaseReservedNodeOfferingResult", "type": "structure", "members": { "ReservedNode": { "shape": "S4c" } } } }, "RebootCluster": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "resultWrapper": "RebootClusterResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "ResetClusterParameterGroup": { "input": { "type": "structure", "required": [ "ParameterGroupName" ], "members": { "ParameterGroupName": {}, "ResetAllParameters": { "type": "boolean" }, "Parameters": { "shape": "S2q" } } }, "output": { "shape": "S57", "resultWrapper": "ResetClusterParameterGroupResult" } }, "RestoreFromClusterSnapshot": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "SnapshotIdentifier" ], "members": { "ClusterIdentifier": {}, "SnapshotIdentifier": {}, "SnapshotClusterIdentifier": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "AllowVersionUpgrade": { "type": "boolean" }, "ClusterSubnetGroupName": {}, "PubliclyAccessible": { "type": "boolean" }, "OwnerAccount": {}, "HsmClientCertificateIdentifier": {}, "HsmConfigurationIdentifier": {}, "ElasticIp": {}, "ClusterParameterGroupName": {}, "ClusterSecurityGroups": { "shape": "Sp" }, "VpcSecurityGroupIds": { "shape": "Sq" }, "PreferredMaintenanceWindow": {}, "AutomatedSnapshotRetentionPeriod": { "type": "integer" }, "KmsKeyId": {}, "NodeType": {}, "EnhancedVpcRouting": { "type": "boolean" }, "AdditionalInfo": {}, "IamRoles": { "shape": "St" } } }, "output": { "resultWrapper": "RestoreFromClusterSnapshotResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } }, "RestoreTableFromClusterSnapshot": { "input": { "type": "structure", "required": [ "ClusterIdentifier", "SnapshotIdentifier", "SourceDatabaseName", "SourceTableName", "NewTableName" ], "members": { "ClusterIdentifier": {}, "SnapshotIdentifier": {}, "SourceDatabaseName": {}, "SourceSchemaName": {}, "SourceTableName": {}, "TargetDatabaseName": {}, "TargetSchemaName": {}, "NewTableName": {} } }, "output": { "resultWrapper": "RestoreTableFromClusterSnapshotResult", "type": "structure", "members": { "TableRestoreStatus": { "shape": "S4q" } } } }, "RevokeClusterSecurityGroupIngress": { "input": { "type": "structure", "required": [ "ClusterSecurityGroupName" ], "members": { "ClusterSecurityGroupName": {}, "CIDRIP": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {} } }, "output": { "resultWrapper": "RevokeClusterSecurityGroupIngressResult", "type": "structure", "members": { "ClusterSecurityGroup": { "shape": "S4" } } } }, "RevokeSnapshotAccess": { "input": { "type": "structure", "required": [ "SnapshotIdentifier", "AccountWithRestoreAccess" ], "members": { "SnapshotIdentifier": {}, "SnapshotClusterIdentifier": {}, "AccountWithRestoreAccess": {} } }, "output": { "resultWrapper": "RevokeSnapshotAccessResult", "type": "structure", "members": { "Snapshot": { "shape": "Sd" } } } }, "RotateEncryptionKey": { "input": { "type": "structure", "required": [ "ClusterIdentifier" ], "members": { "ClusterIdentifier": {} } }, "output": { "resultWrapper": "RotateEncryptionKeyResult", "type": "structure", "members": { "Cluster": { "shape": "Sv" } } } } }, "shapes": { "S4": { "type": "structure", "members": { "ClusterSecurityGroupName": {}, "Description": {}, "EC2SecurityGroups": { "type": "list", "member": { "locationName": "EC2SecurityGroup", "type": "structure", "members": { "Status": {}, "EC2SecurityGroupName": {}, "EC2SecurityGroupOwnerId": {}, "Tags": { "shape": "S7" } } } }, "IPRanges": { "type": "list", "member": { "locationName": "IPRange", "type": "structure", "members": { "Status": {}, "CIDRIP": {}, "Tags": { "shape": "S7" } } } }, "Tags": { "shape": "S7" } }, "wrapper": true }, "S7": { "type": "list", "member": { "shape": "S8", "locationName": "Tag" } }, "S8": { "type": "structure", "members": { "Key": {}, "Value": {} } }, "Sd": { "type": "structure", "members": { "SnapshotIdentifier": {}, "ClusterIdentifier": {}, "SnapshotCreateTime": { "type": "timestamp" }, "Status": {}, "Port": { "type": "integer" }, "AvailabilityZone": {}, "ClusterCreateTime": { "type": "timestamp" }, "MasterUsername": {}, "ClusterVersion": {}, "SnapshotType": {}, "NodeType": {}, "NumberOfNodes": { "type": "integer" }, "DBName": {}, "VpcId": {}, "Encrypted": { "type": "boolean" }, "KmsKeyId": {}, "EncryptedWithHSM": { "type": "boolean" }, "AccountsWithRestoreAccess": { "type": "list", "member": { "locationName": "AccountWithRestoreAccess", "type": "structure", "members": { "AccountId": {} } } }, "OwnerAccount": {}, "TotalBackupSizeInMegaBytes": { "type": "double" }, "ActualIncrementalBackupSizeInMegaBytes": { "type": "double" }, "BackupProgressInMegaBytes": { "type": "double" }, "CurrentBackupRateInMegaBytesPerSecond": { "type": "double" }, "EstimatedSecondsToCompletion": { "type": "long" }, "ElapsedTimeInSeconds": { "type": "long" }, "SourceRegion": {}, "Tags": { "shape": "S7" }, "RestorableNodeTypes": { "type": "list", "member": { "locationName": "NodeType" } }, "EnhancedVpcRouting": { "type": "boolean" } }, "wrapper": true }, "Sp": { "type": "list", "member": { "locationName": "ClusterSecurityGroupName" } }, "Sq": { "type": "list", "member": { "locationName": "VpcSecurityGroupId" } }, "St": { "type": "list", "member": { "locationName": "IamRoleArn" } }, "Sv": { "type": "structure", "members": { "ClusterIdentifier": {}, "NodeType": {}, "ClusterStatus": {}, "ModifyStatus": {}, "MasterUsername": {}, "DBName": {}, "Endpoint": { "type": "structure", "members": { "Address": {}, "Port": { "type": "integer" } } }, "ClusterCreateTime": { "type": "timestamp" }, "AutomatedSnapshotRetentionPeriod": { "type": "integer" }, "ClusterSecurityGroups": { "type": "list", "member": { "locationName": "ClusterSecurityGroup", "type": "structure", "members": { "ClusterSecurityGroupName": {}, "Status": {} } } }, "VpcSecurityGroups": { "type": "list", "member": { "locationName": "VpcSecurityGroup", "type": "structure", "members": { "VpcSecurityGroupId": {}, "Status": {} } } }, "ClusterParameterGroups": { "type": "list", "member": { "locationName": "ClusterParameterGroup", "type": "structure", "members": { "ParameterGroupName": {}, "ParameterApplyStatus": {}, "ClusterParameterStatusList": { "type": "list", "member": { "type": "structure", "members": { "ParameterName": {}, "ParameterApplyStatus": {}, "ParameterApplyErrorDescription": {} } } } } } }, "ClusterSubnetGroupName": {}, "VpcId": {}, "AvailabilityZone": {}, "PreferredMaintenanceWindow": {}, "PendingModifiedValues": { "type": "structure", "members": { "MasterUserPassword": {}, "NodeType": {}, "NumberOfNodes": { "type": "integer" }, "ClusterType": {}, "ClusterVersion": {}, "AutomatedSnapshotRetentionPeriod": { "type": "integer" }, "ClusterIdentifier": {}, "PubliclyAccessible": { "type": "boolean" }, "EnhancedVpcRouting": { "type": "boolean" } } }, "ClusterVersion": {}, "AllowVersionUpgrade": { "type": "boolean" }, "NumberOfNodes": { "type": "integer" }, "PubliclyAccessible": { "type": "boolean" }, "Encrypted": { "type": "boolean" }, "RestoreStatus": { "type": "structure", "members": { "Status": {}, "CurrentRestoreRateInMegaBytesPerSecond": { "type": "double" }, "SnapshotSizeInMegaBytes": { "type": "long" }, "ProgressInMegaBytes": { "type": "long" }, "ElapsedTimeInSeconds": { "type": "long" }, "EstimatedTimeToCompletionInSeconds": { "type": "long" } } }, "HsmStatus": { "type": "structure", "members": { "HsmClientCertificateIdentifier": {}, "HsmConfigurationIdentifier": {}, "Status": {} } }, "ClusterSnapshotCopyStatus": { "type": "structure", "members": { "DestinationRegion": {}, "RetentionPeriod": { "type": "long" }, "SnapshotCopyGrantName": {} } }, "ClusterPublicKey": {}, "ClusterNodes": { "type": "list", "member": { "type": "structure", "members": { "NodeRole": {}, "PrivateIPAddress": {}, "PublicIPAddress": {} } } }, "ElasticIpStatus": { "type": "structure", "members": { "ElasticIp": {}, "Status": {} } }, "ClusterRevisionNumber": {}, "Tags": { "shape": "S7" }, "KmsKeyId": {}, "EnhancedVpcRouting": { "type": "boolean" }, "IamRoles": { "type": "list", "member": { "locationName": "ClusterIamRole", "type": "structure", "members": { "IamRoleArn": {}, "ApplyStatus": {} } } } }, "wrapper": true }, "S1g": { "type": "structure", "members": { "ParameterGroupName": {}, "ParameterGroupFamily": {}, "Description": {}, "Tags": { "shape": "S7" } }, "wrapper": true }, "S1m": { "type": "list", "member": { "locationName": "SubnetIdentifier" } }, "S1o": { "type": "structure", "members": { "ClusterSubnetGroupName": {}, "Description": {}, "VpcId": {}, "SubnetGroupStatus": {}, "Subnets": { "type": "list", "member": { "locationName": "Subnet", "type": "structure", "members": { "SubnetIdentifier": {}, "SubnetAvailabilityZone": { "shape": "S1r" }, "SubnetStatus": {} } } }, "Tags": { "shape": "S7" } }, "wrapper": true }, "S1r": { "type": "structure", "members": { "Name": {} }, "wrapper": true }, "S1t": { "type": "list", "member": { "locationName": "SourceId" } }, "S1u": { "type": "list", "member": { "locationName": "EventCategory" } }, "S1w": { "type": "structure", "members": { "CustomerAwsId": {}, "CustSubscriptionId": {}, "SnsTopicArn": {}, "Status": {}, "SubscriptionCreationTime": { "type": "timestamp" }, "SourceType": {}, "SourceIdsList": { "shape": "S1t" }, "EventCategoriesList": { "shape": "S1u" }, "Severity": {}, "Enabled": { "type": "boolean" }, "Tags": { "shape": "S7" } }, "wrapper": true }, "S1z": { "type": "structure", "members": { "HsmClientCertificateIdentifier": {}, "HsmClientCertificatePublicKey": {}, "Tags": { "shape": "S7" } }, "wrapper": true }, "S22": { "type": "structure", "members": { "HsmConfigurationIdentifier": {}, "Description": {}, "HsmIpAddress": {}, "HsmPartitionName": {}, "Tags": { "shape": "S7" } }, "wrapper": true }, "S25": { "type": "structure", "members": { "SnapshotCopyGrantName": {}, "KmsKeyId": {}, "Tags": { "shape": "S7" } }, "wrapper": true }, "S2j": { "type": "list", "member": { "locationName": "TagKey" } }, "S2l": { "type": "list", "member": { "locationName": "TagValue" } }, "S2q": { "type": "list", "member": { "locationName": "Parameter", "type": "structure", "members": { "ParameterName": {}, "ParameterValue": {}, "Description": {}, "Source": {}, "DataType": {}, "AllowedValues": {}, "ApplyType": {}, "IsModifiable": { "type": "boolean" }, "MinimumEngineVersion": {} } } }, "S3x": { "type": "structure", "members": { "LoggingEnabled": { "type": "boolean" }, "BucketName": {}, "S3KeyPrefix": {}, "LastSuccessfulDeliveryTime": { "type": "timestamp" }, "LastFailureTime": { "type": "timestamp" }, "LastFailureMessage": {} } }, "S47": { "type": "list", "member": { "locationName": "RecurringCharge", "type": "structure", "members": { "RecurringChargeAmount": { "type": "double" }, "RecurringChargeFrequency": {} }, "wrapper": true } }, "S4c": { "type": "structure", "members": { "ReservedNodeId": {}, "ReservedNodeOfferingId": {}, "NodeType": {}, "StartTime": { "type": "timestamp" }, "Duration": { "type": "integer" }, "FixedPrice": { "type": "double" }, "UsagePrice": { "type": "double" }, "CurrencyCode": {}, "NodeCount": { "type": "integer" }, "State": {}, "OfferingType": {}, "RecurringCharges": { "shape": "S47" } }, "wrapper": true }, "S4q": { "type": "structure", "members": { "TableRestoreRequestId": {}, "Status": {}, "Message": {}, "RequestTime": { "type": "timestamp" }, "ProgressInMegaBytes": { "type": "long" }, "TotalDataInMegaBytes": { "type": "long" }, "ClusterIdentifier": {}, "SnapshotIdentifier": {}, "SourceDatabaseName": {}, "SourceSchemaName": {}, "SourceTableName": {}, "TargetDatabaseName": {}, "TargetSchemaName": {}, "NewTableName": {} }, "wrapper": true }, "S57": { "type": "structure", "members": { "ParameterGroupName": {}, "ParameterGroupStatus": {} } } } } },{}],110:[function(require,module,exports){ module.exports={ "pagination": { "DescribeClusterParameterGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ParameterGroups" }, "DescribeClusterParameters": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Parameters" }, "DescribeClusterSecurityGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ClusterSecurityGroups" }, "DescribeClusterSnapshots": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Snapshots" }, "DescribeClusterSubnetGroups": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ClusterSubnetGroups" }, "DescribeClusterVersions": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ClusterVersions" }, "DescribeClusters": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Clusters" }, "DescribeDefaultClusterParameters": { "input_token": "Marker", "output_token": "DefaultClusterParameters.Marker", "limit_key": "MaxRecords", "result_key": "DefaultClusterParameters.Parameters" }, "DescribeEventSubscriptions": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "EventSubscriptionsList" }, "DescribeEvents": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "Events" }, "DescribeHsmClientCertificates": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "HsmClientCertificates" }, "DescribeHsmConfigurations": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "HsmConfigurations" }, "DescribeOrderableClusterOptions": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "OrderableClusterOptions" }, "DescribeReservedNodeOfferings": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ReservedNodeOfferings" }, "DescribeReservedNodes": { "input_token": "Marker", "output_token": "Marker", "limit_key": "MaxRecords", "result_key": "ReservedNodes" } } } },{}],111:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "ClusterAvailable": { "delay": 60, "operation": "DescribeClusters", "maxAttempts": 30, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "Clusters[].ClusterStatus" }, { "expected": "deleting", "matcher": "pathAny", "state": "failure", "argument": "Clusters[].ClusterStatus" }, { "expected": "ClusterNotFound", "matcher": "error", "state": "retry" } ] }, "ClusterDeleted": { "delay": 60, "operation": "DescribeClusters", "maxAttempts": 30, "acceptors": [ { "expected": "ClusterNotFound", "matcher": "error", "state": "success" }, { "expected": "creating", "matcher": "pathAny", "state": "failure", "argument": "Clusters[].ClusterStatus" }, { "expected": "modifying", "matcher": "pathAny", "state": "failure", "argument": "Clusters[].ClusterStatus" } ] }, "ClusterRestored": { "operation": "DescribeClusters", "maxAttempts": 30, "delay": 60, "acceptors": [ { "state": "success", "matcher": "pathAll", "argument": "Clusters[].RestoreStatus.Status", "expected": "completed" }, { "state": "failure", "matcher": "pathAny", "argument": "Clusters[].ClusterStatus", "expected": "deleting" } ] }, "SnapshotAvailable": { "delay": 15, "operation": "DescribeClusterSnapshots", "maxAttempts": 20, "acceptors": [ { "expected": "available", "matcher": "pathAll", "state": "success", "argument": "Snapshots[].Status" }, { "expected": "failed", "matcher": "pathAny", "state": "failure", "argument": "Snapshots[].Status" }, { "expected": "deleted", "matcher": "pathAny", "state": "failure", "argument": "Snapshots[].Status" } ] } } } },{}],112:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2016-06-27", "endpointPrefix": "rekognition", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "Amazon Rekognition", "signatureVersion": "v4", "targetPrefix": "RekognitionService", "uid": "rekognition-2016-06-27" }, "operations": { "CompareFaces": { "input": { "type": "structure", "required": [ "SourceImage", "TargetImage" ], "members": { "SourceImage": { "shape": "S2" }, "TargetImage": { "shape": "S2" }, "SimilarityThreshold": { "type": "float" } } }, "output": { "type": "structure", "members": { "SourceImageFace": { "type": "structure", "members": { "BoundingBox": { "shape": "Sb" }, "Confidence": { "type": "float" } } }, "FaceMatches": { "type": "list", "member": { "type": "structure", "members": { "Similarity": { "type": "float" }, "Face": { "type": "structure", "members": { "BoundingBox": { "shape": "Sb" }, "Confidence": { "type": "float" } } } } } } } } }, "CreateCollection": { "input": { "type": "structure", "required": [ "CollectionId" ], "members": { "CollectionId": {} } }, "output": { "type": "structure", "members": { "StatusCode": { "type": "integer" }, "CollectionArn": {} } } }, "DeleteCollection": { "input": { "type": "structure", "required": [ "CollectionId" ], "members": { "CollectionId": {} } }, "output": { "type": "structure", "members": { "StatusCode": { "type": "integer" } } } }, "DeleteFaces": { "input": { "type": "structure", "required": [ "CollectionId", "FaceIds" ], "members": { "CollectionId": {}, "FaceIds": { "shape": "So" } } }, "output": { "type": "structure", "members": { "DeletedFaces": { "shape": "So" } } } }, "DetectFaces": { "input": { "type": "structure", "required": [ "Image" ], "members": { "Image": { "shape": "S2" }, "Attributes": { "shape": "Ss" } } }, "output": { "type": "structure", "members": { "FaceDetails": { "type": "list", "member": { "shape": "Sw" } }, "OrientationCorrection": {} } } }, "DetectLabels": { "input": { "type": "structure", "required": [ "Image" ], "members": { "Image": { "shape": "S2" }, "MaxLabels": { "type": "integer" }, "MinConfidence": { "type": "float" } } }, "output": { "type": "structure", "members": { "Labels": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Confidence": { "type": "float" } } } }, "OrientationCorrection": {} } } }, "IndexFaces": { "input": { "type": "structure", "required": [ "CollectionId", "Image" ], "members": { "CollectionId": {}, "Image": { "shape": "S2" }, "ExternalImageId": {}, "DetectionAttributes": { "shape": "Ss" } } }, "output": { "type": "structure", "members": { "FaceRecords": { "type": "list", "member": { "type": "structure", "members": { "Face": { "shape": "S1r" }, "FaceDetail": { "shape": "Sw" } } } }, "OrientationCorrection": {} } } }, "ListCollections": { "input": { "type": "structure", "members": { "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "CollectionIds": { "type": "list", "member": {} }, "NextToken": {} } } }, "ListFaces": { "input": { "type": "structure", "required": [ "CollectionId" ], "members": { "CollectionId": {}, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Faces": { "type": "list", "member": { "shape": "S1r" } }, "NextToken": {} } } }, "SearchFaces": { "input": { "type": "structure", "required": [ "CollectionId", "FaceId" ], "members": { "CollectionId": {}, "FaceId": {}, "MaxFaces": { "type": "integer" }, "FaceMatchThreshold": { "type": "float" } } }, "output": { "type": "structure", "members": { "SearchedFaceId": {}, "FaceMatches": { "shape": "S24" } } } }, "SearchFacesByImage": { "input": { "type": "structure", "required": [ "CollectionId", "Image" ], "members": { "CollectionId": {}, "Image": { "shape": "S2" }, "MaxFaces": { "type": "integer" }, "FaceMatchThreshold": { "type": "float" } } }, "output": { "type": "structure", "members": { "SearchedFaceBoundingBox": { "shape": "Sb" }, "SearchedFaceConfidence": { "type": "float" }, "FaceMatches": { "shape": "S24" } } } } }, "shapes": { "S2": { "type": "structure", "members": { "Bytes": { "type": "blob" }, "S3Object": { "type": "structure", "members": { "Bucket": {}, "Name": {}, "Version": {} } } } }, "Sb": { "type": "structure", "members": { "Width": { "type": "float" }, "Height": { "type": "float" }, "Left": { "type": "float" }, "Top": { "type": "float" } } }, "So": { "type": "list", "member": {} }, "Ss": { "type": "list", "member": {} }, "Sw": { "type": "structure", "members": { "BoundingBox": { "shape": "Sb" }, "AgeRange": { "type": "structure", "members": { "Low": { "type": "integer" }, "High": { "type": "integer" } } }, "Smile": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "Eyeglasses": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "Sunglasses": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "Gender": { "type": "structure", "members": { "Value": {}, "Confidence": { "type": "float" } } }, "Beard": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "Mustache": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "EyesOpen": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "MouthOpen": { "type": "structure", "members": { "Value": { "type": "boolean" }, "Confidence": { "type": "float" } } }, "Emotions": { "type": "list", "member": { "type": "structure", "members": { "Type": {}, "Confidence": { "type": "float" } } } }, "Landmarks": { "type": "list", "member": { "type": "structure", "members": { "Type": {}, "X": { "type": "float" }, "Y": { "type": "float" } } } }, "Pose": { "type": "structure", "members": { "Roll": { "type": "float" }, "Yaw": { "type": "float" }, "Pitch": { "type": "float" } } }, "Quality": { "type": "structure", "members": { "Brightness": { "type": "float" }, "Sharpness": { "type": "float" } } }, "Confidence": { "type": "float" } } }, "S1r": { "type": "structure", "members": { "FaceId": {}, "BoundingBox": { "shape": "Sb" }, "ImageId": {}, "ExternalImageId": {}, "Confidence": { "type": "float" } } }, "S24": { "type": "list", "member": { "type": "structure", "members": { "Similarity": { "type": "float" }, "Face": { "shape": "S1r" } } } } } } },{}],113:[function(require,module,exports){ module.exports={ "pagination": { "ListCollections": { "input_token": "NextToken", "limit_key": "MaxResults", "output_token": "NextToken", "result_key": "CollectionIds" }, "ListFaces": { "input_token": "NextToken", "limit_key": "MaxResults", "output_token": "NextToken", "result_key": "Faces" } } } },{}],114:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2013-04-01", "endpointPrefix": "route53", "globalEndpoint": "route53.amazonaws.com", "protocol": "rest-xml", "serviceAbbreviation": "Route 53", "serviceFullName": "Amazon Route 53", "signatureVersion": "v4", "uid": "route53-2013-04-01" }, "operations": { "AssociateVPCWithHostedZone": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" }, "input": { "locationName": "AssociateVPCWithHostedZoneRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "VPC" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "VPC": { "shape": "S3" }, "Comment": {} } }, "output": { "type": "structure", "required": [ "ChangeInfo" ], "members": { "ChangeInfo": { "shape": "S8" } } } }, "ChangeResourceRecordSets": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" }, "input": { "locationName": "ChangeResourceRecordSetsRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "ChangeBatch" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "ChangeBatch": { "type": "structure", "required": [ "Changes" ], "members": { "Comment": {}, "Changes": { "type": "list", "member": { "locationName": "Change", "type": "structure", "required": [ "Action", "ResourceRecordSet" ], "members": { "Action": {}, "ResourceRecordSet": { "shape": "Sh" } } } } } } } }, "output": { "type": "structure", "required": [ "ChangeInfo" ], "members": { "ChangeInfo": { "shape": "S8" } } } }, "ChangeTagsForResource": { "http": { "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" }, "input": { "locationName": "ChangeTagsForResourceRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "ResourceType", "ResourceId" ], "members": { "ResourceType": { "location": "uri", "locationName": "ResourceType" }, "ResourceId": { "location": "uri", "locationName": "ResourceId" }, "AddTags": { "shape": "S14" }, "RemoveTagKeys": { "type": "list", "member": { "locationName": "Key" } } } }, "output": { "type": "structure", "members": {} } }, "CreateHealthCheck": { "http": { "requestUri": "/2013-04-01/healthcheck", "responseCode": 201 }, "input": { "locationName": "CreateHealthCheckRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "CallerReference", "HealthCheckConfig" ], "members": { "CallerReference": {}, "HealthCheckConfig": { "shape": "S1c" } } }, "output": { "type": "structure", "required": [ "HealthCheck", "Location" ], "members": { "HealthCheck": { "shape": "S1x" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateHostedZone": { "http": { "requestUri": "/2013-04-01/hostedzone", "responseCode": 201 }, "input": { "locationName": "CreateHostedZoneRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Name", "CallerReference" ], "members": { "Name": {}, "VPC": { "shape": "S3" }, "CallerReference": {}, "HostedZoneConfig": { "shape": "S2d" }, "DelegationSetId": {} } }, "output": { "type": "structure", "required": [ "HostedZone", "ChangeInfo", "DelegationSet", "Location" ], "members": { "HostedZone": { "shape": "S2g" }, "ChangeInfo": { "shape": "S8" }, "DelegationSet": { "shape": "S2i" }, "VPC": { "shape": "S3" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateReusableDelegationSet": { "http": { "requestUri": "/2013-04-01/delegationset", "responseCode": 201 }, "input": { "locationName": "CreateReusableDelegationSetRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "CallerReference" ], "members": { "CallerReference": {}, "HostedZoneId": {} } }, "output": { "type": "structure", "required": [ "DelegationSet", "Location" ], "members": { "DelegationSet": { "shape": "S2i" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateTrafficPolicy": { "http": { "requestUri": "/2013-04-01/trafficpolicy", "responseCode": 201 }, "input": { "locationName": "CreateTrafficPolicyRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Name", "Document" ], "members": { "Name": {}, "Document": {}, "Comment": {} } }, "output": { "type": "structure", "required": [ "TrafficPolicy", "Location" ], "members": { "TrafficPolicy": { "shape": "S2r" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateTrafficPolicyInstance": { "http": { "requestUri": "/2013-04-01/trafficpolicyinstance", "responseCode": 201 }, "input": { "locationName": "CreateTrafficPolicyInstanceRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "Name", "TTL", "TrafficPolicyId", "TrafficPolicyVersion" ], "members": { "HostedZoneId": {}, "Name": {}, "TTL": { "type": "long" }, "TrafficPolicyId": {}, "TrafficPolicyVersion": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstance", "Location" ], "members": { "TrafficPolicyInstance": { "shape": "S2w" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateTrafficPolicyVersion": { "http": { "requestUri": "/2013-04-01/trafficpolicy/{Id}", "responseCode": 201 }, "input": { "locationName": "CreateTrafficPolicyVersionRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Id", "Document" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Document": {}, "Comment": {} } }, "output": { "type": "structure", "required": [ "TrafficPolicy", "Location" ], "members": { "TrafficPolicy": { "shape": "S2r" }, "Location": { "location": "header", "locationName": "Location" } } } }, "CreateVPCAssociationAuthorization": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation" }, "input": { "locationName": "CreateVPCAssociationAuthorizationRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "VPC" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "VPC": { "shape": "S3" } } }, "output": { "type": "structure", "required": [ "HostedZoneId", "VPC" ], "members": { "HostedZoneId": {}, "VPC": { "shape": "S3" } } } }, "DeleteHealthCheck": { "http": { "method": "DELETE", "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" }, "input": { "type": "structure", "required": [ "HealthCheckId" ], "members": { "HealthCheckId": { "location": "uri", "locationName": "HealthCheckId" } } }, "output": { "type": "structure", "members": {} } }, "DeleteHostedZone": { "http": { "method": "DELETE", "requestUri": "/2013-04-01/hostedzone/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "required": [ "ChangeInfo" ], "members": { "ChangeInfo": { "shape": "S8" } } } }, "DeleteReusableDelegationSet": { "http": { "method": "DELETE", "requestUri": "/2013-04-01/delegationset/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": {} } }, "DeleteTrafficPolicy": { "http": { "method": "DELETE", "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" }, "input": { "type": "structure", "required": [ "Id", "Version" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Version": { "location": "uri", "locationName": "Version", "type": "integer" } } }, "output": { "type": "structure", "members": {} } }, "DeleteTrafficPolicyInstance": { "http": { "method": "DELETE", "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "members": {} } }, "DeleteVPCAssociationAuthorization": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}/deauthorizevpcassociation" }, "input": { "locationName": "DeleteVPCAssociationAuthorizationRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "VPC" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "VPC": { "shape": "S3" } } }, "output": { "type": "structure", "members": {} } }, "DisassociateVPCFromHostedZone": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" }, "input": { "locationName": "DisassociateVPCFromHostedZoneRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HostedZoneId", "VPC" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "VPC": { "shape": "S3" }, "Comment": {} } }, "output": { "type": "structure", "required": [ "ChangeInfo" ], "members": { "ChangeInfo": { "shape": "S8" } } } }, "GetChange": { "http": { "method": "GET", "requestUri": "/2013-04-01/change/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "required": [ "ChangeInfo" ], "members": { "ChangeInfo": { "shape": "S8" } } } }, "GetCheckerIpRanges": { "http": { "method": "GET", "requestUri": "/2013-04-01/checkeripranges" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "required": [ "CheckerIpRanges" ], "members": { "CheckerIpRanges": { "type": "list", "member": {} } } } }, "GetGeoLocation": { "http": { "method": "GET", "requestUri": "/2013-04-01/geolocation" }, "input": { "type": "structure", "members": { "ContinentCode": { "location": "querystring", "locationName": "continentcode" }, "CountryCode": { "location": "querystring", "locationName": "countrycode" }, "SubdivisionCode": { "location": "querystring", "locationName": "subdivisioncode" } } }, "output": { "type": "structure", "required": [ "GeoLocationDetails" ], "members": { "GeoLocationDetails": { "shape": "S3q" } } } }, "GetHealthCheck": { "http": { "method": "GET", "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" }, "input": { "type": "structure", "required": [ "HealthCheckId" ], "members": { "HealthCheckId": { "location": "uri", "locationName": "HealthCheckId" } } }, "output": { "type": "structure", "required": [ "HealthCheck" ], "members": { "HealthCheck": { "shape": "S1x" } } } }, "GetHealthCheckCount": { "http": { "method": "GET", "requestUri": "/2013-04-01/healthcheckcount" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "required": [ "HealthCheckCount" ], "members": { "HealthCheckCount": { "type": "long" } } } }, "GetHealthCheckLastFailureReason": { "http": { "method": "GET", "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" }, "input": { "type": "structure", "required": [ "HealthCheckId" ], "members": { "HealthCheckId": { "location": "uri", "locationName": "HealthCheckId" } } }, "output": { "type": "structure", "required": [ "HealthCheckObservations" ], "members": { "HealthCheckObservations": { "shape": "S41" } } } }, "GetHealthCheckStatus": { "http": { "method": "GET", "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" }, "input": { "type": "structure", "required": [ "HealthCheckId" ], "members": { "HealthCheckId": { "location": "uri", "locationName": "HealthCheckId" } } }, "output": { "type": "structure", "required": [ "HealthCheckObservations" ], "members": { "HealthCheckObservations": { "shape": "S41" } } } }, "GetHostedZone": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzone/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "required": [ "HostedZone" ], "members": { "HostedZone": { "shape": "S2g" }, "DelegationSet": { "shape": "S2i" }, "VPCs": { "shape": "S49" } } } }, "GetHostedZoneCount": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzonecount" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "required": [ "HostedZoneCount" ], "members": { "HostedZoneCount": { "type": "long" } } } }, "GetReusableDelegationSet": { "http": { "method": "GET", "requestUri": "/2013-04-01/delegationset/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "required": [ "DelegationSet" ], "members": { "DelegationSet": { "shape": "S2i" } } } }, "GetTrafficPolicy": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" }, "input": { "type": "structure", "required": [ "Id", "Version" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Version": { "location": "uri", "locationName": "Version", "type": "integer" } } }, "output": { "type": "structure", "required": [ "TrafficPolicy" ], "members": { "TrafficPolicy": { "shape": "S2r" } } } }, "GetTrafficPolicyInstance": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstance" ], "members": { "TrafficPolicyInstance": { "shape": "S2w" } } } }, "GetTrafficPolicyInstanceCount": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicyinstancecount" }, "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "required": [ "TrafficPolicyInstanceCount" ], "members": { "TrafficPolicyInstanceCount": { "type": "integer" } } } }, "ListGeoLocations": { "http": { "method": "GET", "requestUri": "/2013-04-01/geolocations" }, "input": { "type": "structure", "members": { "StartContinentCode": { "location": "querystring", "locationName": "startcontinentcode" }, "StartCountryCode": { "location": "querystring", "locationName": "startcountrycode" }, "StartSubdivisionCode": { "location": "querystring", "locationName": "startsubdivisioncode" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "GeoLocationDetailsList", "IsTruncated", "MaxItems" ], "members": { "GeoLocationDetailsList": { "type": "list", "member": { "shape": "S3q", "locationName": "GeoLocationDetails" } }, "IsTruncated": { "type": "boolean" }, "NextContinentCode": {}, "NextCountryCode": {}, "NextSubdivisionCode": {}, "MaxItems": {} } } }, "ListHealthChecks": { "http": { "method": "GET", "requestUri": "/2013-04-01/healthcheck" }, "input": { "type": "structure", "members": { "Marker": { "location": "querystring", "locationName": "marker" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "HealthChecks", "Marker", "IsTruncated", "MaxItems" ], "members": { "HealthChecks": { "type": "list", "member": { "shape": "S1x", "locationName": "HealthCheck" } }, "Marker": {}, "IsTruncated": { "type": "boolean" }, "NextMarker": {}, "MaxItems": {} } } }, "ListHostedZones": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzone" }, "input": { "type": "structure", "members": { "Marker": { "location": "querystring", "locationName": "marker" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" }, "DelegationSetId": { "location": "querystring", "locationName": "delegationsetid" } } }, "output": { "type": "structure", "required": [ "HostedZones", "Marker", "IsTruncated", "MaxItems" ], "members": { "HostedZones": { "shape": "S4x" }, "Marker": {}, "IsTruncated": { "type": "boolean" }, "NextMarker": {}, "MaxItems": {} } } }, "ListHostedZonesByName": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzonesbyname" }, "input": { "type": "structure", "members": { "DNSName": { "location": "querystring", "locationName": "dnsname" }, "HostedZoneId": { "location": "querystring", "locationName": "hostedzoneid" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "HostedZones", "IsTruncated", "MaxItems" ], "members": { "HostedZones": { "shape": "S4x" }, "DNSName": {}, "HostedZoneId": {}, "IsTruncated": { "type": "boolean" }, "NextDNSName": {}, "NextHostedZoneId": {}, "MaxItems": {} } } }, "ListResourceRecordSets": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" }, "input": { "type": "structure", "required": [ "HostedZoneId" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "StartRecordName": { "location": "querystring", "locationName": "name" }, "StartRecordType": { "location": "querystring", "locationName": "type" }, "StartRecordIdentifier": { "location": "querystring", "locationName": "identifier" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "ResourceRecordSets", "IsTruncated", "MaxItems" ], "members": { "ResourceRecordSets": { "type": "list", "member": { "shape": "Sh", "locationName": "ResourceRecordSet" } }, "IsTruncated": { "type": "boolean" }, "NextRecordName": {}, "NextRecordType": {}, "NextRecordIdentifier": {}, "MaxItems": {} } } }, "ListReusableDelegationSets": { "http": { "method": "GET", "requestUri": "/2013-04-01/delegationset" }, "input": { "type": "structure", "members": { "Marker": { "location": "querystring", "locationName": "marker" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "DelegationSets", "Marker", "IsTruncated", "MaxItems" ], "members": { "DelegationSets": { "type": "list", "member": { "shape": "S2i", "locationName": "DelegationSet" } }, "Marker": {}, "IsTruncated": { "type": "boolean" }, "NextMarker": {}, "MaxItems": {} } } }, "ListTagsForResource": { "http": { "method": "GET", "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" }, "input": { "type": "structure", "required": [ "ResourceType", "ResourceId" ], "members": { "ResourceType": { "location": "uri", "locationName": "ResourceType" }, "ResourceId": { "location": "uri", "locationName": "ResourceId" } } }, "output": { "type": "structure", "required": [ "ResourceTagSet" ], "members": { "ResourceTagSet": { "shape": "S58" } } } }, "ListTagsForResources": { "http": { "requestUri": "/2013-04-01/tags/{ResourceType}" }, "input": { "locationName": "ListTagsForResourcesRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "ResourceType", "ResourceIds" ], "members": { "ResourceType": { "location": "uri", "locationName": "ResourceType" }, "ResourceIds": { "type": "list", "member": { "locationName": "ResourceId" } } } }, "output": { "type": "structure", "required": [ "ResourceTagSets" ], "members": { "ResourceTagSets": { "type": "list", "member": { "shape": "S58", "locationName": "ResourceTagSet" } } } } }, "ListTrafficPolicies": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicies" }, "input": { "type": "structure", "members": { "TrafficPolicyIdMarker": { "location": "querystring", "locationName": "trafficpolicyid" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "TrafficPolicySummaries", "IsTruncated", "TrafficPolicyIdMarker", "MaxItems" ], "members": { "TrafficPolicySummaries": { "type": "list", "member": { "locationName": "TrafficPolicySummary", "type": "structure", "required": [ "Id", "Name", "Type", "LatestVersion", "TrafficPolicyCount" ], "members": { "Id": {}, "Name": {}, "Type": {}, "LatestVersion": { "type": "integer" }, "TrafficPolicyCount": { "type": "integer" } } } }, "IsTruncated": { "type": "boolean" }, "TrafficPolicyIdMarker": {}, "MaxItems": {} } } }, "ListTrafficPolicyInstances": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicyinstances" }, "input": { "type": "structure", "members": { "HostedZoneIdMarker": { "location": "querystring", "locationName": "hostedzoneid" }, "TrafficPolicyInstanceNameMarker": { "location": "querystring", "locationName": "trafficpolicyinstancename" }, "TrafficPolicyInstanceTypeMarker": { "location": "querystring", "locationName": "trafficpolicyinstancetype" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstances", "IsTruncated", "MaxItems" ], "members": { "TrafficPolicyInstances": { "shape": "S5j" }, "HostedZoneIdMarker": {}, "TrafficPolicyInstanceNameMarker": {}, "TrafficPolicyInstanceTypeMarker": {}, "IsTruncated": { "type": "boolean" }, "MaxItems": {} } } }, "ListTrafficPolicyInstancesByHostedZone": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" }, "input": { "type": "structure", "required": [ "HostedZoneId" ], "members": { "HostedZoneId": { "location": "querystring", "locationName": "id" }, "TrafficPolicyInstanceNameMarker": { "location": "querystring", "locationName": "trafficpolicyinstancename" }, "TrafficPolicyInstanceTypeMarker": { "location": "querystring", "locationName": "trafficpolicyinstancetype" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstances", "IsTruncated", "MaxItems" ], "members": { "TrafficPolicyInstances": { "shape": "S5j" }, "TrafficPolicyInstanceNameMarker": {}, "TrafficPolicyInstanceTypeMarker": {}, "IsTruncated": { "type": "boolean" }, "MaxItems": {} } } }, "ListTrafficPolicyInstancesByPolicy": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" }, "input": { "type": "structure", "required": [ "TrafficPolicyId", "TrafficPolicyVersion" ], "members": { "TrafficPolicyId": { "location": "querystring", "locationName": "id" }, "TrafficPolicyVersion": { "location": "querystring", "locationName": "version", "type": "integer" }, "HostedZoneIdMarker": { "location": "querystring", "locationName": "hostedzoneid" }, "TrafficPolicyInstanceNameMarker": { "location": "querystring", "locationName": "trafficpolicyinstancename" }, "TrafficPolicyInstanceTypeMarker": { "location": "querystring", "locationName": "trafficpolicyinstancetype" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstances", "IsTruncated", "MaxItems" ], "members": { "TrafficPolicyInstances": { "shape": "S5j" }, "HostedZoneIdMarker": {}, "TrafficPolicyInstanceNameMarker": {}, "TrafficPolicyInstanceTypeMarker": {}, "IsTruncated": { "type": "boolean" }, "MaxItems": {} } } }, "ListTrafficPolicyVersions": { "http": { "method": "GET", "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" }, "input": { "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "TrafficPolicyVersionMarker": { "location": "querystring", "locationName": "trafficpolicyversion" }, "MaxItems": { "location": "querystring", "locationName": "maxitems" } } }, "output": { "type": "structure", "required": [ "TrafficPolicies", "IsTruncated", "TrafficPolicyVersionMarker", "MaxItems" ], "members": { "TrafficPolicies": { "type": "list", "member": { "shape": "S2r", "locationName": "TrafficPolicy" } }, "IsTruncated": { "type": "boolean" }, "TrafficPolicyVersionMarker": {}, "MaxItems": {} } } }, "ListVPCAssociationAuthorizations": { "http": { "method": "GET", "requestUri": "/2013-04-01/hostedzone/{Id}/authorizevpcassociation" }, "input": { "type": "structure", "required": [ "HostedZoneId" ], "members": { "HostedZoneId": { "location": "uri", "locationName": "Id" }, "NextToken": { "location": "querystring", "locationName": "nexttoken" }, "MaxResults": { "location": "querystring", "locationName": "maxresults" } } }, "output": { "type": "structure", "required": [ "HostedZoneId", "VPCs" ], "members": { "HostedZoneId": {}, "NextToken": {}, "VPCs": { "shape": "S49" } } } }, "TestDNSAnswer": { "http": { "method": "GET", "requestUri": "/2013-04-01/testdnsanswer" }, "input": { "type": "structure", "required": [ "HostedZoneId", "RecordName", "RecordType" ], "members": { "HostedZoneId": { "location": "querystring", "locationName": "hostedzoneid" }, "RecordName": { "location": "querystring", "locationName": "recordname" }, "RecordType": { "location": "querystring", "locationName": "recordtype" }, "ResolverIP": { "location": "querystring", "locationName": "resolverip" }, "EDNS0ClientSubnetIP": { "location": "querystring", "locationName": "edns0clientsubnetip" }, "EDNS0ClientSubnetMask": { "location": "querystring", "locationName": "edns0clientsubnetmask" } } }, "output": { "type": "structure", "required": [ "Nameserver", "RecordName", "RecordType", "RecordData", "ResponseCode", "Protocol" ], "members": { "Nameserver": {}, "RecordName": {}, "RecordType": {}, "RecordData": { "type": "list", "member": { "locationName": "RecordDataEntry" } }, "ResponseCode": {}, "Protocol": {} } } }, "UpdateHealthCheck": { "http": { "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" }, "input": { "locationName": "UpdateHealthCheckRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "HealthCheckId" ], "members": { "HealthCheckId": { "location": "uri", "locationName": "HealthCheckId" }, "HealthCheckVersion": { "type": "long" }, "IPAddress": {}, "Port": { "type": "integer" }, "ResourcePath": {}, "FullyQualifiedDomainName": {}, "SearchString": {}, "FailureThreshold": { "type": "integer" }, "Inverted": { "type": "boolean" }, "HealthThreshold": { "type": "integer" }, "ChildHealthChecks": { "shape": "S1o" }, "EnableSNI": { "type": "boolean" }, "Regions": { "shape": "S1q" }, "AlarmIdentifier": { "shape": "S1s" }, "InsufficientDataHealthStatus": {} } }, "output": { "type": "structure", "required": [ "HealthCheck" ], "members": { "HealthCheck": { "shape": "S1x" } } } }, "UpdateHostedZoneComment": { "http": { "requestUri": "/2013-04-01/hostedzone/{Id}" }, "input": { "locationName": "UpdateHostedZoneCommentRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Id" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Comment": {} } }, "output": { "type": "structure", "required": [ "HostedZone" ], "members": { "HostedZone": { "shape": "S2g" } } } }, "UpdateTrafficPolicyComment": { "http": { "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" }, "input": { "locationName": "UpdateTrafficPolicyCommentRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Id", "Version", "Comment" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "Version": { "location": "uri", "locationName": "Version", "type": "integer" }, "Comment": {} } }, "output": { "type": "structure", "required": [ "TrafficPolicy" ], "members": { "TrafficPolicy": { "shape": "S2r" } } } }, "UpdateTrafficPolicyInstance": { "http": { "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" }, "input": { "locationName": "UpdateTrafficPolicyInstanceRequest", "xmlNamespace": { "uri": "https://route53.amazonaws.com/doc/2013-04-01/" }, "type": "structure", "required": [ "Id", "TTL", "TrafficPolicyId", "TrafficPolicyVersion" ], "members": { "Id": { "location": "uri", "locationName": "Id" }, "TTL": { "type": "long" }, "TrafficPolicyId": {}, "TrafficPolicyVersion": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "TrafficPolicyInstance" ], "members": { "TrafficPolicyInstance": { "shape": "S2w" } } } } }, "shapes": { "S3": { "type": "structure", "members": { "VPCRegion": {}, "VPCId": {} } }, "S8": { "type": "structure", "required": [ "Id", "Status", "SubmittedAt" ], "members": { "Id": {}, "Status": {}, "SubmittedAt": { "type": "timestamp" }, "Comment": {} } }, "Sh": { "type": "structure", "required": [ "Name", "Type" ], "members": { "Name": {}, "Type": {}, "SetIdentifier": {}, "Weight": { "type": "long" }, "Region": {}, "GeoLocation": { "type": "structure", "members": { "ContinentCode": {}, "CountryCode": {}, "SubdivisionCode": {} } }, "Failover": {}, "TTL": { "type": "long" }, "ResourceRecords": { "type": "list", "member": { "locationName": "ResourceRecord", "type": "structure", "required": [ "Value" ], "members": { "Value": {} } } }, "AliasTarget": { "type": "structure", "required": [ "HostedZoneId", "DNSName", "EvaluateTargetHealth" ], "members": { "HostedZoneId": {}, "DNSName": {}, "EvaluateTargetHealth": { "type": "boolean" } } }, "HealthCheckId": {}, "TrafficPolicyInstanceId": {} } }, "S14": { "type": "list", "member": { "locationName": "Tag", "type": "structure", "members": { "Key": {}, "Value": {} } } }, "S1c": { "type": "structure", "required": [ "Type" ], "members": { "IPAddress": {}, "Port": { "type": "integer" }, "Type": {}, "ResourcePath": {}, "FullyQualifiedDomainName": {}, "SearchString": {}, "RequestInterval": { "type": "integer" }, "FailureThreshold": { "type": "integer" }, "MeasureLatency": { "type": "boolean" }, "Inverted": { "type": "boolean" }, "HealthThreshold": { "type": "integer" }, "ChildHealthChecks": { "shape": "S1o" }, "EnableSNI": { "type": "boolean" }, "Regions": { "shape": "S1q" }, "AlarmIdentifier": { "shape": "S1s" }, "InsufficientDataHealthStatus": {} } }, "S1o": { "type": "list", "member": { "locationName": "ChildHealthCheck" } }, "S1q": { "type": "list", "member": { "locationName": "Region" } }, "S1s": { "type": "structure", "required": [ "Region", "Name" ], "members": { "Region": {}, "Name": {} } }, "S1x": { "type": "structure", "required": [ "Id", "CallerReference", "HealthCheckConfig", "HealthCheckVersion" ], "members": { "Id": {}, "CallerReference": {}, "HealthCheckConfig": { "shape": "S1c" }, "HealthCheckVersion": { "type": "long" }, "CloudWatchAlarmConfiguration": { "type": "structure", "required": [ "EvaluationPeriods", "Threshold", "ComparisonOperator", "Period", "MetricName", "Namespace", "Statistic" ], "members": { "EvaluationPeriods": { "type": "integer" }, "Threshold": { "type": "double" }, "ComparisonOperator": {}, "Period": { "type": "integer" }, "MetricName": {}, "Namespace": {}, "Statistic": {}, "Dimensions": { "type": "list", "member": { "locationName": "Dimension", "type": "structure", "required": [ "Name", "Value" ], "members": { "Name": {}, "Value": {} } } } } } } }, "S2d": { "type": "structure", "members": { "Comment": {}, "PrivateZone": { "type": "boolean" } } }, "S2g": { "type": "structure", "required": [ "Id", "Name", "CallerReference" ], "members": { "Id": {}, "Name": {}, "CallerReference": {}, "Config": { "shape": "S2d" }, "ResourceRecordSetCount": { "type": "long" } } }, "S2i": { "type": "structure", "required": [ "NameServers" ], "members": { "Id": {}, "CallerReference": {}, "NameServers": { "type": "list", "member": { "locationName": "NameServer" } } } }, "S2r": { "type": "structure", "required": [ "Id", "Version", "Name", "Type", "Document" ], "members": { "Id": {}, "Version": { "type": "integer" }, "Name": {}, "Type": {}, "Document": {}, "Comment": {} } }, "S2w": { "type": "structure", "required": [ "Id", "HostedZoneId", "Name", "TTL", "State", "Message", "TrafficPolicyId", "TrafficPolicyVersion", "TrafficPolicyType" ], "members": { "Id": {}, "HostedZoneId": {}, "Name": {}, "TTL": { "type": "long" }, "State": {}, "Message": {}, "TrafficPolicyId": {}, "TrafficPolicyVersion": { "type": "integer" }, "TrafficPolicyType": {} } }, "S3q": { "type": "structure", "members": { "ContinentCode": {}, "ContinentName": {}, "CountryCode": {}, "CountryName": {}, "SubdivisionCode": {}, "SubdivisionName": {} } }, "S41": { "type": "list", "member": { "locationName": "HealthCheckObservation", "type": "structure", "members": { "Region": {}, "IPAddress": {}, "StatusReport": { "type": "structure", "members": { "Status": {}, "CheckedTime": { "type": "timestamp" } } } } } }, "S49": { "type": "list", "member": { "shape": "S3", "locationName": "VPC" } }, "S4x": { "type": "list", "member": { "shape": "S2g", "locationName": "HostedZone" } }, "S58": { "type": "structure", "members": { "ResourceType": {}, "ResourceId": {}, "Tags": { "shape": "S14" } } }, "S5j": { "type": "list", "member": { "shape": "S2w", "locationName": "TrafficPolicyInstance" } } } } },{}],115:[function(require,module,exports){ module.exports={ "pagination": { "ListHealthChecks": { "input_token": "Marker", "limit_key": "MaxItems", "more_results": "IsTruncated", "output_token": "NextMarker", "result_key": "HealthChecks" }, "ListHostedZones": { "input_token": "Marker", "limit_key": "MaxItems", "more_results": "IsTruncated", "output_token": "NextMarker", "result_key": "HostedZones" }, "ListResourceRecordSets": { "input_token": [ "StartRecordName", "StartRecordType", "StartRecordIdentifier" ], "limit_key": "MaxItems", "more_results": "IsTruncated", "output_token": [ "NextRecordName", "NextRecordType", "NextRecordIdentifier" ], "result_key": "ResourceRecordSets" } } } },{}],116:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "ResourceRecordSetsChanged": { "delay": 30, "maxAttempts": 60, "operation": "GetChange", "acceptors": [ { "matcher": "path", "expected": "INSYNC", "argument": "ChangeInfo.Status", "state": "success" } ] } } } },{}],117:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "route53domains-2014-05-15", "apiVersion": "2014-05-15", "endpointPrefix": "route53domains", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "Amazon Route 53 Domains", "signatureVersion": "v4", "targetPrefix": "Route53Domains_v20140515" }, "operations": { "CheckDomainAvailability": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {}, "IdnLangCode": {} } }, "output": { "type": "structure", "required": [ "Availability" ], "members": { "Availability": {} } } }, "DeleteTagsForDomain": { "input": { "type": "structure", "required": [ "DomainName", "TagsToDelete" ], "members": { "DomainName": {}, "TagsToDelete": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": {} } }, "DisableDomainAutoRenew": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "members": {} } }, "DisableDomainTransferLock": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "EnableDomainAutoRenew": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "members": {} } }, "EnableDomainTransferLock": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "GetContactReachabilityStatus": { "input": { "type": "structure", "members": { "domainName": {} } }, "output": { "type": "structure", "members": { "domainName": {}, "status": {} } } }, "GetDomainDetail": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "required": [ "DomainName", "Nameservers", "AdminContact", "RegistrantContact", "TechContact" ], "members": { "DomainName": {}, "Nameservers": { "shape": "So" }, "AutoRenew": { "type": "boolean" }, "AdminContact": { "shape": "Su" }, "RegistrantContact": { "shape": "Su" }, "TechContact": { "shape": "Su" }, "AdminPrivacy": { "type": "boolean" }, "RegistrantPrivacy": { "type": "boolean" }, "TechPrivacy": { "type": "boolean" }, "RegistrarName": {}, "WhoIsServer": {}, "RegistrarUrl": {}, "AbuseContactEmail": {}, "AbuseContactPhone": {}, "RegistryDomainId": {}, "CreationDate": { "type": "timestamp" }, "UpdatedDate": { "type": "timestamp" }, "ExpirationDate": { "type": "timestamp" }, "Reseller": {}, "DnsSec": {}, "StatusList": { "type": "list", "member": {} } } } }, "GetDomainSuggestions": { "input": { "type": "structure", "required": [ "DomainName", "SuggestionCount", "OnlyAvailable" ], "members": { "DomainName": {}, "SuggestionCount": { "type": "integer" }, "OnlyAvailable": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "SuggestionsList": { "type": "list", "member": { "type": "structure", "members": { "DomainName": {}, "Availability": {} } } } } } }, "GetOperationDetail": { "input": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } }, "output": { "type": "structure", "members": { "OperationId": {}, "Status": {}, "Message": {}, "DomainName": {}, "Type": {}, "SubmittedDate": { "type": "timestamp" } } } }, "ListDomains": { "input": { "type": "structure", "members": { "Marker": {}, "MaxItems": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "Domains" ], "members": { "Domains": { "type": "list", "member": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {}, "AutoRenew": { "type": "boolean" }, "TransferLock": { "type": "boolean" }, "Expiry": { "type": "timestamp" } } } }, "NextPageMarker": {} } } }, "ListOperations": { "input": { "type": "structure", "members": { "Marker": {}, "MaxItems": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "Operations" ], "members": { "Operations": { "type": "list", "member": { "type": "structure", "required": [ "OperationId", "Status", "Type", "SubmittedDate" ], "members": { "OperationId": {}, "Status": {}, "Type": {}, "SubmittedDate": { "type": "timestamp" } } } }, "NextPageMarker": {} } } }, "ListTagsForDomain": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "required": [ "TagList" ], "members": { "TagList": { "shape": "S24" } } } }, "RegisterDomain": { "input": { "type": "structure", "required": [ "DomainName", "DurationInYears", "AdminContact", "RegistrantContact", "TechContact" ], "members": { "DomainName": {}, "IdnLangCode": {}, "DurationInYears": { "type": "integer" }, "AutoRenew": { "type": "boolean" }, "AdminContact": { "shape": "Su" }, "RegistrantContact": { "shape": "Su" }, "TechContact": { "shape": "Su" }, "PrivacyProtectAdminContact": { "type": "boolean" }, "PrivacyProtectRegistrantContact": { "type": "boolean" }, "PrivacyProtectTechContact": { "type": "boolean" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "RenewDomain": { "input": { "type": "structure", "required": [ "DomainName", "CurrentExpiryYear" ], "members": { "DomainName": {}, "DurationInYears": { "type": "integer" }, "CurrentExpiryYear": { "type": "integer" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "ResendContactReachabilityEmail": { "input": { "type": "structure", "members": { "domainName": {} } }, "output": { "type": "structure", "members": { "domainName": {}, "emailAddress": {}, "isAlreadyVerified": { "type": "boolean" } } } }, "RetrieveDomainAuthCode": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {} } }, "output": { "type": "structure", "required": [ "AuthCode" ], "members": { "AuthCode": { "shape": "S2h" } } } }, "TransferDomain": { "input": { "type": "structure", "required": [ "DomainName", "DurationInYears", "AdminContact", "RegistrantContact", "TechContact" ], "members": { "DomainName": {}, "IdnLangCode": {}, "DurationInYears": { "type": "integer" }, "Nameservers": { "shape": "So" }, "AuthCode": { "shape": "S2h" }, "AutoRenew": { "type": "boolean" }, "AdminContact": { "shape": "Su" }, "RegistrantContact": { "shape": "Su" }, "TechContact": { "shape": "Su" }, "PrivacyProtectAdminContact": { "type": "boolean" }, "PrivacyProtectRegistrantContact": { "type": "boolean" }, "PrivacyProtectTechContact": { "type": "boolean" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "UpdateDomainContact": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {}, "AdminContact": { "shape": "Su" }, "RegistrantContact": { "shape": "Su" }, "TechContact": { "shape": "Su" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "UpdateDomainContactPrivacy": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {}, "AdminPrivacy": { "type": "boolean" }, "RegistrantPrivacy": { "type": "boolean" }, "TechPrivacy": { "type": "boolean" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "UpdateDomainNameservers": { "input": { "type": "structure", "required": [ "DomainName", "Nameservers" ], "members": { "DomainName": {}, "FIAuthKey": {}, "Nameservers": { "shape": "So" } } }, "output": { "type": "structure", "required": [ "OperationId" ], "members": { "OperationId": {} } } }, "UpdateTagsForDomain": { "input": { "type": "structure", "required": [ "DomainName" ], "members": { "DomainName": {}, "TagsToUpdate": { "shape": "S24" } } }, "output": { "type": "structure", "members": {} } }, "ViewBilling": { "input": { "type": "structure", "members": { "Start": { "type": "timestamp" }, "End": { "type": "timestamp" }, "Marker": {}, "MaxItems": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextPageMarker": {}, "BillingRecords": { "type": "list", "member": { "type": "structure", "members": { "DomainName": {}, "Operation": {}, "InvoiceId": {}, "BillDate": { "type": "timestamp" }, "Price": { "type": "double" } } } } } } } }, "shapes": { "So": { "type": "list", "member": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "GlueIps": { "type": "list", "member": {} } } } }, "Su": { "type": "structure", "members": { "FirstName": {}, "LastName": {}, "ContactType": {}, "OrganizationName": {}, "AddressLine1": {}, "AddressLine2": {}, "City": {}, "State": {}, "CountryCode": {}, "ZipCode": {}, "PhoneNumber": {}, "Email": {}, "Fax": {}, "ExtraParams": { "type": "list", "member": { "type": "structure", "required": [ "Name", "Value" ], "members": { "Name": {}, "Value": {} } } } }, "sensitive": true }, "S24": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "S2h": { "type": "string", "sensitive": true } } } },{}],118:[function(require,module,exports){ module.exports={ "version": "1.0", "pagination": { "ListDomains": { "limit_key": "MaxItems", "input_token": "Marker", "output_token": "NextPageMarker", "result_key": "Domains" }, "ListOperations": { "limit_key": "MaxItems", "input_token": "Marker", "output_token": "NextPageMarker", "result_key": "Operations" } } } },{}],119:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2016-11-28", "endpointPrefix": "runtime.lex", "jsonVersion": "1.1", "protocol": "rest-json", "serviceFullName": "Amazon Lex Runtime Service", "signatureVersion": "v4", "signingName": "lex", "uid": "runtime.lex-2016-11-28" }, "operations": { "PostText": { "http": { "requestUri": "/bot/{botName}/alias/{botAlias}/user/{userId}/text" }, "input": { "type": "structure", "required": [ "botName", "botAlias", "userId", "inputText" ], "members": { "botName": { "location": "uri", "locationName": "botName" }, "botAlias": { "location": "uri", "locationName": "botAlias" }, "userId": { "location": "uri", "locationName": "userId" }, "sessionAttributes": { "shape": "S5" }, "inputText": {} } }, "output": { "type": "structure", "members": { "intentName": {}, "slots": { "shape": "S5" }, "sessionAttributes": { "shape": "S5" }, "message": {}, "dialogState": {}, "slotToElicit": {}, "responseCard": { "type": "structure", "members": { "version": {}, "contentType": {}, "genericAttachments": { "type": "list", "member": { "type": "structure", "members": { "title": {}, "subTitle": {}, "attachmentLinkUrl": {}, "imageUrl": {}, "buttons": { "type": "list", "member": { "type": "structure", "required": [ "text", "value" ], "members": { "text": {}, "value": {} } } } } } } } } } } } }, "shapes": { "S5": { "type": "map", "key": {}, "value": {} } } } },{}],120:[function(require,module,exports){ arguments[4][21][0].apply(exports,arguments) },{"dup":21}],121:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2006-03-01", "checksumFormat": "md5", "endpointPrefix": "s3", "globalEndpoint": "s3.amazonaws.com", "protocol": "rest-xml", "serviceAbbreviation": "Amazon S3", "serviceFullName": "Amazon Simple Storage Service", "signatureVersion": "s3", "timestampFormat": "rfc822", "uid": "s3-2006-03-01" }, "operations": { "AbortMultipartUpload": { "http": { "method": "DELETE", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key", "UploadId" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "UploadId": { "location": "querystring", "locationName": "uploadId" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "CompleteMultipartUpload": { "http": { "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key", "UploadId" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "MultipartUpload": { "locationName": "CompleteMultipartUpload", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "Parts": { "locationName": "Part", "type": "list", "member": { "type": "structure", "members": { "ETag": {}, "PartNumber": { "type": "integer" } } }, "flattened": true } } }, "UploadId": { "location": "querystring", "locationName": "uploadId" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } }, "payload": "MultipartUpload" }, "output": { "type": "structure", "members": { "Location": {}, "Bucket": {}, "Key": {}, "Expiration": { "location": "header", "locationName": "x-amz-expiration" }, "ETag": {}, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "CopyObject": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "CopySource", "Key" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "CacheControl": { "location": "header", "locationName": "Cache-Control" }, "ContentDisposition": { "location": "header", "locationName": "Content-Disposition" }, "ContentEncoding": { "location": "header", "locationName": "Content-Encoding" }, "ContentLanguage": { "location": "header", "locationName": "Content-Language" }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "CopySource": { "location": "header", "locationName": "x-amz-copy-source" }, "CopySourceIfMatch": { "location": "header", "locationName": "x-amz-copy-source-if-match" }, "CopySourceIfModifiedSince": { "location": "header", "locationName": "x-amz-copy-source-if-modified-since", "type": "timestamp" }, "CopySourceIfNoneMatch": { "location": "header", "locationName": "x-amz-copy-source-if-none-match" }, "CopySourceIfUnmodifiedSince": { "location": "header", "locationName": "x-amz-copy-source-if-unmodified-since", "type": "timestamp" }, "Expires": { "location": "header", "locationName": "Expires", "type": "timestamp" }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" }, "Key": { "location": "uri", "locationName": "Key" }, "Metadata": { "shape": "S11", "location": "headers", "locationName": "x-amz-meta-" }, "MetadataDirective": { "location": "header", "locationName": "x-amz-metadata-directive" }, "TaggingDirective": { "location": "header", "locationName": "x-amz-tagging-directive" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "StorageClass": { "location": "header", "locationName": "x-amz-storage-class" }, "WebsiteRedirectLocation": { "location": "header", "locationName": "x-amz-website-redirect-location" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "CopySourceSSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" }, "CopySourceSSECustomerKey": { "shape": "S1c", "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-key" }, "CopySourceSSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" }, "Tagging": { "location": "header", "locationName": "x-amz-tagging" } } }, "output": { "type": "structure", "members": { "CopyObjectResult": { "type": "structure", "members": { "ETag": {}, "LastModified": { "type": "timestamp" } } }, "Expiration": { "location": "header", "locationName": "x-amz-expiration" }, "CopySourceVersionId": { "location": "header", "locationName": "x-amz-copy-source-version-id" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } }, "payload": "CopyObjectResult" }, "alias": "PutObjectCopy" }, "CreateBucket": { "http": { "method": "PUT", "requestUri": "/{Bucket}" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "CreateBucketConfiguration": { "locationName": "CreateBucketConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "LocationConstraint": {} } }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWrite": { "location": "header", "locationName": "x-amz-grant-write" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" } }, "payload": "CreateBucketConfiguration" }, "output": { "type": "structure", "members": { "Location": { "location": "header", "locationName": "Location" } } }, "alias": "PutBucket" }, "CreateMultipartUpload": { "http": { "requestUri": "/{Bucket}/{Key+}?uploads" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "CacheControl": { "location": "header", "locationName": "Cache-Control" }, "ContentDisposition": { "location": "header", "locationName": "Content-Disposition" }, "ContentEncoding": { "location": "header", "locationName": "Content-Encoding" }, "ContentLanguage": { "location": "header", "locationName": "Content-Language" }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "Expires": { "location": "header", "locationName": "Expires", "type": "timestamp" }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" }, "Key": { "location": "uri", "locationName": "Key" }, "Metadata": { "shape": "S11", "location": "headers", "locationName": "x-amz-meta-" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "StorageClass": { "location": "header", "locationName": "x-amz-storage-class" }, "WebsiteRedirectLocation": { "location": "header", "locationName": "x-amz-website-redirect-location" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "AbortDate": { "location": "header", "locationName": "x-amz-abort-date", "type": "timestamp" }, "AbortRuleId": { "location": "header", "locationName": "x-amz-abort-rule-id" }, "Bucket": { "locationName": "Bucket" }, "Key": {}, "UploadId": {}, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } }, "alias": "InitiateMultipartUpload" }, "DeleteBucket": { "http": { "method": "DELETE", "requestUri": "/{Bucket}" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketAnalyticsConfiguration": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?analytics" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } } }, "DeleteBucketCors": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?cors" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketInventoryConfiguration": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?inventory" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } } }, "DeleteBucketLifecycle": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?lifecycle" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketMetricsConfiguration": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?metrics" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } } }, "DeleteBucketPolicy": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?policy" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketReplication": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?replication" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketTagging": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?tagging" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteBucketWebsite": { "http": { "method": "DELETE", "requestUri": "/{Bucket}?website" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "DeleteObject": { "http": { "method": "DELETE", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "MFA": { "location": "header", "locationName": "x-amz-mfa" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "DeleteMarker": { "location": "header", "locationName": "x-amz-delete-marker", "type": "boolean" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "DeleteObjectTagging": { "http": { "method": "DELETE", "requestUri": "/{Bucket}/{Key+}?tagging" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "VersionId": { "location": "querystring", "locationName": "versionId" } } }, "output": { "type": "structure", "members": { "VersionId": { "location": "header", "locationName": "x-amz-version-id" } } } }, "DeleteObjects": { "http": { "requestUri": "/{Bucket}?delete" }, "input": { "type": "structure", "required": [ "Bucket", "Delete" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Delete": { "locationName": "Delete", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "Objects" ], "members": { "Objects": { "locationName": "Object", "type": "list", "member": { "type": "structure", "required": [ "Key" ], "members": { "Key": {}, "VersionId": {} } }, "flattened": true }, "Quiet": { "type": "boolean" } } }, "MFA": { "location": "header", "locationName": "x-amz-mfa" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } }, "payload": "Delete" }, "output": { "type": "structure", "members": { "Deleted": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "VersionId": {}, "DeleteMarker": { "type": "boolean" }, "DeleteMarkerVersionId": {} } }, "flattened": true }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" }, "Errors": { "locationName": "Error", "type": "list", "member": { "type": "structure", "members": { "Key": {}, "VersionId": {}, "Code": {}, "Message": {} } }, "flattened": true } } }, "alias": "DeleteMultipleObjects" }, "GetBucketAccelerateConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?accelerate" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Status": {} } } }, "GetBucketAcl": { "http": { "method": "GET", "requestUri": "/{Bucket}?acl" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Owner": { "shape": "S2u" }, "Grants": { "shape": "S2x", "locationName": "AccessControlList" } } } }, "GetBucketAnalyticsConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?analytics" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } }, "output": { "type": "structure", "members": { "AnalyticsConfiguration": { "shape": "S36" } }, "payload": "AnalyticsConfiguration" } }, "GetBucketCors": { "http": { "method": "GET", "requestUri": "/{Bucket}?cors" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "CORSRules": { "shape": "S3m", "locationName": "CORSRule" } } } }, "GetBucketInventoryConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?inventory" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } }, "output": { "type": "structure", "members": { "InventoryConfiguration": { "shape": "S3z" } }, "payload": "InventoryConfiguration" } }, "GetBucketLifecycle": { "http": { "method": "GET", "requestUri": "/{Bucket}?lifecycle" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Rules": { "shape": "S4c", "locationName": "Rule" } } }, "deprecated": true }, "GetBucketLifecycleConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?lifecycle" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Rules": { "shape": "S4r", "locationName": "Rule" } } } }, "GetBucketLocation": { "http": { "method": "GET", "requestUri": "/{Bucket}?location" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "LocationConstraint": {} } } }, "GetBucketLogging": { "http": { "method": "GET", "requestUri": "/{Bucket}?logging" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "LoggingEnabled": { "shape": "S51" } } } }, "GetBucketMetricsConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?metrics" }, "input": { "type": "structure", "required": [ "Bucket", "Id" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" } } }, "output": { "type": "structure", "members": { "MetricsConfiguration": { "shape": "S59" } }, "payload": "MetricsConfiguration" } }, "GetBucketNotification": { "http": { "method": "GET", "requestUri": "/{Bucket}?notification" }, "input": { "shape": "S5c" }, "output": { "shape": "S5d" }, "deprecated": true }, "GetBucketNotificationConfiguration": { "http": { "method": "GET", "requestUri": "/{Bucket}?notification" }, "input": { "shape": "S5c" }, "output": { "shape": "S5o" } }, "GetBucketPolicy": { "http": { "method": "GET", "requestUri": "/{Bucket}?policy" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Policy": {} }, "payload": "Policy" } }, "GetBucketReplication": { "http": { "method": "GET", "requestUri": "/{Bucket}?replication" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "ReplicationConfiguration": { "shape": "S67" } }, "payload": "ReplicationConfiguration" } }, "GetBucketRequestPayment": { "http": { "method": "GET", "requestUri": "/{Bucket}?requestPayment" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Payer": {} } } }, "GetBucketTagging": { "http": { "method": "GET", "requestUri": "/{Bucket}?tagging" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "required": [ "TagSet" ], "members": { "TagSet": { "shape": "S3c" } } } }, "GetBucketVersioning": { "http": { "method": "GET", "requestUri": "/{Bucket}?versioning" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "Status": {}, "MFADelete": { "locationName": "MfaDelete" } } } }, "GetBucketWebsite": { "http": { "method": "GET", "requestUri": "/{Bucket}?website" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "output": { "type": "structure", "members": { "RedirectAllRequestsTo": { "shape": "S6o" }, "IndexDocument": { "shape": "S6r" }, "ErrorDocument": { "shape": "S6t" }, "RoutingRules": { "shape": "S6u" } } } }, "GetObject": { "http": { "method": "GET", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "IfMatch": { "location": "header", "locationName": "If-Match" }, "IfModifiedSince": { "location": "header", "locationName": "If-Modified-Since", "type": "timestamp" }, "IfNoneMatch": { "location": "header", "locationName": "If-None-Match" }, "IfUnmodifiedSince": { "location": "header", "locationName": "If-Unmodified-Since", "type": "timestamp" }, "Key": { "location": "uri", "locationName": "Key" }, "Range": { "location": "header", "locationName": "Range" }, "ResponseCacheControl": { "location": "querystring", "locationName": "response-cache-control" }, "ResponseContentDisposition": { "location": "querystring", "locationName": "response-content-disposition" }, "ResponseContentEncoding": { "location": "querystring", "locationName": "response-content-encoding" }, "ResponseContentLanguage": { "location": "querystring", "locationName": "response-content-language" }, "ResponseContentType": { "location": "querystring", "locationName": "response-content-type" }, "ResponseExpires": { "location": "querystring", "locationName": "response-expires", "type": "timestamp" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" }, "PartNumber": { "location": "querystring", "locationName": "partNumber", "type": "integer" } } }, "output": { "type": "structure", "members": { "Body": { "streaming": true, "type": "blob" }, "DeleteMarker": { "location": "header", "locationName": "x-amz-delete-marker", "type": "boolean" }, "AcceptRanges": { "location": "header", "locationName": "accept-ranges" }, "Expiration": { "location": "header", "locationName": "x-amz-expiration" }, "Restore": { "location": "header", "locationName": "x-amz-restore" }, "LastModified": { "location": "header", "locationName": "Last-Modified", "type": "timestamp" }, "ContentLength": { "location": "header", "locationName": "Content-Length", "type": "long" }, "ETag": { "location": "header", "locationName": "ETag" }, "MissingMeta": { "location": "header", "locationName": "x-amz-missing-meta", "type": "integer" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "CacheControl": { "location": "header", "locationName": "Cache-Control" }, "ContentDisposition": { "location": "header", "locationName": "Content-Disposition" }, "ContentEncoding": { "location": "header", "locationName": "Content-Encoding" }, "ContentLanguage": { "location": "header", "locationName": "Content-Language" }, "ContentRange": { "location": "header", "locationName": "Content-Range" }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "Expires": { "location": "header", "locationName": "Expires", "type": "timestamp" }, "WebsiteRedirectLocation": { "location": "header", "locationName": "x-amz-website-redirect-location" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "Metadata": { "shape": "S11", "location": "headers", "locationName": "x-amz-meta-" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "StorageClass": { "location": "header", "locationName": "x-amz-storage-class" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" }, "ReplicationStatus": { "location": "header", "locationName": "x-amz-replication-status" }, "PartsCount": { "location": "header", "locationName": "x-amz-mp-parts-count", "type": "integer" }, "TagCount": { "location": "header", "locationName": "x-amz-tagging-count", "type": "integer" } }, "payload": "Body" } }, "GetObjectAcl": { "http": { "method": "GET", "requestUri": "/{Bucket}/{Key+}?acl" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "Owner": { "shape": "S2u" }, "Grants": { "shape": "S2x", "locationName": "AccessControlList" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "GetObjectTagging": { "http": { "method": "GET", "requestUri": "/{Bucket}/{Key+}?tagging" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "VersionId": { "location": "querystring", "locationName": "versionId" } } }, "output": { "type": "structure", "required": [ "TagSet" ], "members": { "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "TagSet": { "shape": "S3c" } } } }, "GetObjectTorrent": { "http": { "method": "GET", "requestUri": "/{Bucket}/{Key+}?torrent" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "Body": { "streaming": true, "type": "blob" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } }, "payload": "Body" } }, "HeadBucket": { "http": { "method": "HEAD", "requestUri": "/{Bucket}" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } } }, "HeadObject": { "http": { "method": "HEAD", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "IfMatch": { "location": "header", "locationName": "If-Match" }, "IfModifiedSince": { "location": "header", "locationName": "If-Modified-Since", "type": "timestamp" }, "IfNoneMatch": { "location": "header", "locationName": "If-None-Match" }, "IfUnmodifiedSince": { "location": "header", "locationName": "If-Unmodified-Since", "type": "timestamp" }, "Key": { "location": "uri", "locationName": "Key" }, "Range": { "location": "header", "locationName": "Range" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" }, "PartNumber": { "location": "querystring", "locationName": "partNumber", "type": "integer" } } }, "output": { "type": "structure", "members": { "DeleteMarker": { "location": "header", "locationName": "x-amz-delete-marker", "type": "boolean" }, "AcceptRanges": { "location": "header", "locationName": "accept-ranges" }, "Expiration": { "location": "header", "locationName": "x-amz-expiration" }, "Restore": { "location": "header", "locationName": "x-amz-restore" }, "LastModified": { "location": "header", "locationName": "Last-Modified", "type": "timestamp" }, "ContentLength": { "location": "header", "locationName": "Content-Length", "type": "long" }, "ETag": { "location": "header", "locationName": "ETag" }, "MissingMeta": { "location": "header", "locationName": "x-amz-missing-meta", "type": "integer" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "CacheControl": { "location": "header", "locationName": "Cache-Control" }, "ContentDisposition": { "location": "header", "locationName": "Content-Disposition" }, "ContentEncoding": { "location": "header", "locationName": "Content-Encoding" }, "ContentLanguage": { "location": "header", "locationName": "Content-Language" }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "Expires": { "location": "header", "locationName": "Expires", "type": "timestamp" }, "WebsiteRedirectLocation": { "location": "header", "locationName": "x-amz-website-redirect-location" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "Metadata": { "shape": "S11", "location": "headers", "locationName": "x-amz-meta-" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "StorageClass": { "location": "header", "locationName": "x-amz-storage-class" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" }, "ReplicationStatus": { "location": "header", "locationName": "x-amz-replication-status" }, "PartsCount": { "location": "header", "locationName": "x-amz-mp-parts-count", "type": "integer" } } } }, "ListBucketAnalyticsConfigurations": { "http": { "method": "GET", "requestUri": "/{Bucket}?analytics" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContinuationToken": { "location": "querystring", "locationName": "continuation-token" } } }, "output": { "type": "structure", "members": { "IsTruncated": { "type": "boolean" }, "ContinuationToken": {}, "NextContinuationToken": {}, "AnalyticsConfigurationList": { "locationName": "AnalyticsConfiguration", "type": "list", "member": { "shape": "S36" }, "flattened": true } } } }, "ListBucketInventoryConfigurations": { "http": { "method": "GET", "requestUri": "/{Bucket}?inventory" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContinuationToken": { "location": "querystring", "locationName": "continuation-token" } } }, "output": { "type": "structure", "members": { "ContinuationToken": {}, "InventoryConfigurationList": { "locationName": "InventoryConfiguration", "type": "list", "member": { "shape": "S3z" }, "flattened": true }, "IsTruncated": { "type": "boolean" }, "NextContinuationToken": {} } } }, "ListBucketMetricsConfigurations": { "http": { "method": "GET", "requestUri": "/{Bucket}?metrics" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContinuationToken": { "location": "querystring", "locationName": "continuation-token" } } }, "output": { "type": "structure", "members": { "IsTruncated": { "type": "boolean" }, "ContinuationToken": {}, "NextContinuationToken": {}, "MetricsConfigurationList": { "locationName": "MetricsConfiguration", "type": "list", "member": { "shape": "S59" }, "flattened": true } } } }, "ListBuckets": { "http": { "method": "GET" }, "output": { "type": "structure", "members": { "Buckets": { "type": "list", "member": { "locationName": "Bucket", "type": "structure", "members": { "Name": {}, "CreationDate": { "type": "timestamp" } } } }, "Owner": { "shape": "S2u" } } }, "alias": "GetService" }, "ListMultipartUploads": { "http": { "method": "GET", "requestUri": "/{Bucket}?uploads" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Delimiter": { "location": "querystring", "locationName": "delimiter" }, "EncodingType": { "location": "querystring", "locationName": "encoding-type" }, "KeyMarker": { "location": "querystring", "locationName": "key-marker" }, "MaxUploads": { "location": "querystring", "locationName": "max-uploads", "type": "integer" }, "Prefix": { "location": "querystring", "locationName": "prefix" }, "UploadIdMarker": { "location": "querystring", "locationName": "upload-id-marker" } } }, "output": { "type": "structure", "members": { "Bucket": {}, "KeyMarker": {}, "UploadIdMarker": {}, "NextKeyMarker": {}, "Prefix": {}, "Delimiter": {}, "NextUploadIdMarker": {}, "MaxUploads": { "type": "integer" }, "IsTruncated": { "type": "boolean" }, "Uploads": { "locationName": "Upload", "type": "list", "member": { "type": "structure", "members": { "UploadId": {}, "Key": {}, "Initiated": { "type": "timestamp" }, "StorageClass": {}, "Owner": { "shape": "S2u" }, "Initiator": { "shape": "S8q" } } }, "flattened": true }, "CommonPrefixes": { "shape": "S8r" }, "EncodingType": {} } } }, "ListObjectVersions": { "http": { "method": "GET", "requestUri": "/{Bucket}?versions" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Delimiter": { "location": "querystring", "locationName": "delimiter" }, "EncodingType": { "location": "querystring", "locationName": "encoding-type" }, "KeyMarker": { "location": "querystring", "locationName": "key-marker" }, "MaxKeys": { "location": "querystring", "locationName": "max-keys", "type": "integer" }, "Prefix": { "location": "querystring", "locationName": "prefix" }, "VersionIdMarker": { "location": "querystring", "locationName": "version-id-marker" } } }, "output": { "type": "structure", "members": { "IsTruncated": { "type": "boolean" }, "KeyMarker": {}, "VersionIdMarker": {}, "NextKeyMarker": {}, "NextVersionIdMarker": {}, "Versions": { "locationName": "Version", "type": "list", "member": { "type": "structure", "members": { "ETag": {}, "Size": { "type": "integer" }, "StorageClass": {}, "Key": {}, "VersionId": {}, "IsLatest": { "type": "boolean" }, "LastModified": { "type": "timestamp" }, "Owner": { "shape": "S2u" } } }, "flattened": true }, "DeleteMarkers": { "locationName": "DeleteMarker", "type": "list", "member": { "type": "structure", "members": { "Owner": { "shape": "S2u" }, "Key": {}, "VersionId": {}, "IsLatest": { "type": "boolean" }, "LastModified": { "type": "timestamp" } } }, "flattened": true }, "Name": {}, "Prefix": {}, "Delimiter": {}, "MaxKeys": { "type": "integer" }, "CommonPrefixes": { "shape": "S8r" }, "EncodingType": {} } }, "alias": "GetBucketObjectVersions" }, "ListObjects": { "http": { "method": "GET", "requestUri": "/{Bucket}" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Delimiter": { "location": "querystring", "locationName": "delimiter" }, "EncodingType": { "location": "querystring", "locationName": "encoding-type" }, "Marker": { "location": "querystring", "locationName": "marker" }, "MaxKeys": { "location": "querystring", "locationName": "max-keys", "type": "integer" }, "Prefix": { "location": "querystring", "locationName": "prefix" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "IsTruncated": { "type": "boolean" }, "Marker": {}, "NextMarker": {}, "Contents": { "shape": "S99" }, "Name": {}, "Prefix": {}, "Delimiter": {}, "MaxKeys": { "type": "integer" }, "CommonPrefixes": { "shape": "S8r" }, "EncodingType": {} } }, "alias": "GetBucket" }, "ListObjectsV2": { "http": { "method": "GET", "requestUri": "/{Bucket}?list-type=2" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Delimiter": { "location": "querystring", "locationName": "delimiter" }, "EncodingType": { "location": "querystring", "locationName": "encoding-type" }, "MaxKeys": { "location": "querystring", "locationName": "max-keys", "type": "integer" }, "Prefix": { "location": "querystring", "locationName": "prefix" }, "ContinuationToken": { "location": "querystring", "locationName": "continuation-token" }, "FetchOwner": { "location": "querystring", "locationName": "fetch-owner", "type": "boolean" }, "StartAfter": { "location": "querystring", "locationName": "start-after" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "IsTruncated": { "type": "boolean" }, "Contents": { "shape": "S99" }, "Name": {}, "Prefix": {}, "Delimiter": {}, "MaxKeys": { "type": "integer" }, "CommonPrefixes": { "shape": "S8r" }, "EncodingType": {}, "KeyCount": { "type": "integer" }, "ContinuationToken": {}, "NextContinuationToken": {}, "StartAfter": {} } } }, "ListParts": { "http": { "method": "GET", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key", "UploadId" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "MaxParts": { "location": "querystring", "locationName": "max-parts", "type": "integer" }, "PartNumberMarker": { "location": "querystring", "locationName": "part-number-marker", "type": "integer" }, "UploadId": { "location": "querystring", "locationName": "uploadId" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "AbortDate": { "location": "header", "locationName": "x-amz-abort-date", "type": "timestamp" }, "AbortRuleId": { "location": "header", "locationName": "x-amz-abort-rule-id" }, "Bucket": {}, "Key": {}, "UploadId": {}, "PartNumberMarker": { "type": "integer" }, "NextPartNumberMarker": { "type": "integer" }, "MaxParts": { "type": "integer" }, "IsTruncated": { "type": "boolean" }, "Parts": { "locationName": "Part", "type": "list", "member": { "type": "structure", "members": { "PartNumber": { "type": "integer" }, "LastModified": { "type": "timestamp" }, "ETag": {}, "Size": { "type": "integer" } } }, "flattened": true }, "Initiator": { "shape": "S8q" }, "Owner": { "shape": "S2u" }, "StorageClass": {}, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "PutBucketAccelerateConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?accelerate" }, "input": { "type": "structure", "required": [ "Bucket", "AccelerateConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "AccelerateConfiguration": { "locationName": "AccelerateConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "Status": {} } } }, "payload": "AccelerateConfiguration" } }, "PutBucketAcl": { "http": { "method": "PUT", "requestUri": "/{Bucket}?acl" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "AccessControlPolicy": { "shape": "S9r", "locationName": "AccessControlPolicy", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWrite": { "location": "header", "locationName": "x-amz-grant-write" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" } }, "payload": "AccessControlPolicy" } }, "PutBucketAnalyticsConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?analytics" }, "input": { "type": "structure", "required": [ "Bucket", "Id", "AnalyticsConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" }, "AnalyticsConfiguration": { "shape": "S36", "locationName": "AnalyticsConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "AnalyticsConfiguration" } }, "PutBucketCors": { "http": { "method": "PUT", "requestUri": "/{Bucket}?cors" }, "input": { "type": "structure", "required": [ "Bucket", "CORSConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "CORSConfiguration": { "locationName": "CORSConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "CORSRules" ], "members": { "CORSRules": { "shape": "S3m", "locationName": "CORSRule" } } }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" } }, "payload": "CORSConfiguration" } }, "PutBucketInventoryConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?inventory" }, "input": { "type": "structure", "required": [ "Bucket", "Id", "InventoryConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" }, "InventoryConfiguration": { "shape": "S3z", "locationName": "InventoryConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "InventoryConfiguration" } }, "PutBucketLifecycle": { "http": { "method": "PUT", "requestUri": "/{Bucket}?lifecycle" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "LifecycleConfiguration": { "locationName": "LifecycleConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "Rules" ], "members": { "Rules": { "shape": "S4c", "locationName": "Rule" } } } }, "payload": "LifecycleConfiguration" }, "deprecated": true }, "PutBucketLifecycleConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?lifecycle" }, "input": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "LifecycleConfiguration": { "locationName": "LifecycleConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "Rules" ], "members": { "Rules": { "shape": "S4r", "locationName": "Rule" } } } }, "payload": "LifecycleConfiguration" } }, "PutBucketLogging": { "http": { "method": "PUT", "requestUri": "/{Bucket}?logging" }, "input": { "type": "structure", "required": [ "Bucket", "BucketLoggingStatus" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "BucketLoggingStatus": { "locationName": "BucketLoggingStatus", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "LoggingEnabled": { "shape": "S51" } } }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" } }, "payload": "BucketLoggingStatus" } }, "PutBucketMetricsConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?metrics" }, "input": { "type": "structure", "required": [ "Bucket", "Id", "MetricsConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Id": { "location": "querystring", "locationName": "id" }, "MetricsConfiguration": { "shape": "S59", "locationName": "MetricsConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "MetricsConfiguration" } }, "PutBucketNotification": { "http": { "method": "PUT", "requestUri": "/{Bucket}?notification" }, "input": { "type": "structure", "required": [ "Bucket", "NotificationConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "NotificationConfiguration": { "shape": "S5d", "locationName": "NotificationConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "NotificationConfiguration" }, "deprecated": true }, "PutBucketNotificationConfiguration": { "http": { "method": "PUT", "requestUri": "/{Bucket}?notification" }, "input": { "type": "structure", "required": [ "Bucket", "NotificationConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "NotificationConfiguration": { "shape": "S5o", "locationName": "NotificationConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "NotificationConfiguration" } }, "PutBucketPolicy": { "http": { "method": "PUT", "requestUri": "/{Bucket}?policy" }, "input": { "type": "structure", "required": [ "Bucket", "Policy" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "Policy": {} }, "payload": "Policy" } }, "PutBucketReplication": { "http": { "method": "PUT", "requestUri": "/{Bucket}?replication" }, "input": { "type": "structure", "required": [ "Bucket", "ReplicationConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "ReplicationConfiguration": { "shape": "S67", "locationName": "ReplicationConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "ReplicationConfiguration" } }, "PutBucketRequestPayment": { "http": { "method": "PUT", "requestUri": "/{Bucket}?requestPayment" }, "input": { "type": "structure", "required": [ "Bucket", "RequestPaymentConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "RequestPaymentConfiguration": { "locationName": "RequestPaymentConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "Payer" ], "members": { "Payer": {} } } }, "payload": "RequestPaymentConfiguration" } }, "PutBucketTagging": { "http": { "method": "PUT", "requestUri": "/{Bucket}?tagging" }, "input": { "type": "structure", "required": [ "Bucket", "Tagging" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "Tagging": { "shape": "Sab", "locationName": "Tagging", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "Tagging" } }, "PutBucketVersioning": { "http": { "method": "PUT", "requestUri": "/{Bucket}?versioning" }, "input": { "type": "structure", "required": [ "Bucket", "VersioningConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "MFA": { "location": "header", "locationName": "x-amz-mfa" }, "VersioningConfiguration": { "locationName": "VersioningConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "MFADelete": { "locationName": "MfaDelete" }, "Status": {} } } }, "payload": "VersioningConfiguration" } }, "PutBucketWebsite": { "http": { "method": "PUT", "requestUri": "/{Bucket}?website" }, "input": { "type": "structure", "required": [ "Bucket", "WebsiteConfiguration" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "WebsiteConfiguration": { "locationName": "WebsiteConfiguration", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "members": { "ErrorDocument": { "shape": "S6t" }, "IndexDocument": { "shape": "S6r" }, "RedirectAllRequestsTo": { "shape": "S6o" }, "RoutingRules": { "shape": "S6u" } } } }, "payload": "WebsiteConfiguration" } }, "PutObject": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "Body": { "streaming": true, "type": "blob" }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "CacheControl": { "location": "header", "locationName": "Cache-Control" }, "ContentDisposition": { "location": "header", "locationName": "Content-Disposition" }, "ContentEncoding": { "location": "header", "locationName": "Content-Encoding" }, "ContentLanguage": { "location": "header", "locationName": "Content-Language" }, "ContentLength": { "location": "header", "locationName": "Content-Length", "type": "long" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "ContentType": { "location": "header", "locationName": "Content-Type" }, "Expires": { "location": "header", "locationName": "Expires", "type": "timestamp" }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" }, "Key": { "location": "uri", "locationName": "Key" }, "Metadata": { "shape": "S11", "location": "headers", "locationName": "x-amz-meta-" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "StorageClass": { "location": "header", "locationName": "x-amz-storage-class" }, "WebsiteRedirectLocation": { "location": "header", "locationName": "x-amz-website-redirect-location" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" }, "Tagging": { "location": "header", "locationName": "x-amz-tagging" } }, "payload": "Body" }, "output": { "type": "structure", "members": { "Expiration": { "location": "header", "locationName": "x-amz-expiration" }, "ETag": { "location": "header", "locationName": "ETag" }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "VersionId": { "location": "header", "locationName": "x-amz-version-id" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "PutObjectAcl": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}?acl" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "ACL": { "location": "header", "locationName": "x-amz-acl" }, "AccessControlPolicy": { "shape": "S9r", "locationName": "AccessControlPolicy", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "GrantFullControl": { "location": "header", "locationName": "x-amz-grant-full-control" }, "GrantRead": { "location": "header", "locationName": "x-amz-grant-read" }, "GrantReadACP": { "location": "header", "locationName": "x-amz-grant-read-acp" }, "GrantWrite": { "location": "header", "locationName": "x-amz-grant-write" }, "GrantWriteACP": { "location": "header", "locationName": "x-amz-grant-write-acp" }, "Key": { "location": "uri", "locationName": "Key" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" }, "VersionId": { "location": "querystring", "locationName": "versionId" } }, "payload": "AccessControlPolicy" }, "output": { "type": "structure", "members": { "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "PutObjectTagging": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}?tagging" }, "input": { "type": "structure", "required": [ "Bucket", "Key", "Tagging" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "Tagging": { "shape": "Sab", "locationName": "Tagging", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" } } }, "payload": "Tagging" }, "output": { "type": "structure", "members": { "VersionId": { "location": "header", "locationName": "x-amz-version-id" } } } }, "RestoreObject": { "http": { "requestUri": "/{Bucket}/{Key+}?restore" }, "input": { "type": "structure", "required": [ "Bucket", "Key" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "Key": { "location": "uri", "locationName": "Key" }, "VersionId": { "location": "querystring", "locationName": "versionId" }, "RestoreRequest": { "locationName": "RestoreRequest", "xmlNamespace": { "uri": "http://s3.amazonaws.com/doc/2006-03-01/" }, "type": "structure", "required": [ "Days" ], "members": { "Days": { "type": "integer" }, "GlacierJobParameters": { "type": "structure", "required": [ "Tier" ], "members": { "Tier": {} } } } }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } }, "payload": "RestoreRequest" }, "output": { "type": "structure", "members": { "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } }, "alias": "PostObjectRestore" }, "UploadPart": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "Key", "PartNumber", "UploadId" ], "members": { "Body": { "streaming": true, "type": "blob" }, "Bucket": { "location": "uri", "locationName": "Bucket" }, "ContentLength": { "location": "header", "locationName": "Content-Length", "type": "long" }, "ContentMD5": { "location": "header", "locationName": "Content-MD5" }, "Key": { "location": "uri", "locationName": "Key" }, "PartNumber": { "location": "querystring", "locationName": "partNumber", "type": "integer" }, "UploadId": { "location": "querystring", "locationName": "uploadId" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } }, "payload": "Body" }, "output": { "type": "structure", "members": { "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "ETag": { "location": "header", "locationName": "ETag" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } } } }, "UploadPartCopy": { "http": { "method": "PUT", "requestUri": "/{Bucket}/{Key+}" }, "input": { "type": "structure", "required": [ "Bucket", "CopySource", "Key", "PartNumber", "UploadId" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" }, "CopySource": { "location": "header", "locationName": "x-amz-copy-source" }, "CopySourceIfMatch": { "location": "header", "locationName": "x-amz-copy-source-if-match" }, "CopySourceIfModifiedSince": { "location": "header", "locationName": "x-amz-copy-source-if-modified-since", "type": "timestamp" }, "CopySourceIfNoneMatch": { "location": "header", "locationName": "x-amz-copy-source-if-none-match" }, "CopySourceIfUnmodifiedSince": { "location": "header", "locationName": "x-amz-copy-source-if-unmodified-since", "type": "timestamp" }, "CopySourceRange": { "location": "header", "locationName": "x-amz-copy-source-range" }, "Key": { "location": "uri", "locationName": "Key" }, "PartNumber": { "location": "querystring", "locationName": "partNumber", "type": "integer" }, "UploadId": { "location": "querystring", "locationName": "uploadId" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKey": { "shape": "S19", "location": "header", "locationName": "x-amz-server-side-encryption-customer-key" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "CopySourceSSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" }, "CopySourceSSECustomerKey": { "shape": "S1c", "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-key" }, "CopySourceSSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" }, "RequestPayer": { "location": "header", "locationName": "x-amz-request-payer" } } }, "output": { "type": "structure", "members": { "CopySourceVersionId": { "location": "header", "locationName": "x-amz-copy-source-version-id" }, "CopyPartResult": { "type": "structure", "members": { "ETag": {}, "LastModified": { "type": "timestamp" } } }, "ServerSideEncryption": { "location": "header", "locationName": "x-amz-server-side-encryption" }, "SSECustomerAlgorithm": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-algorithm" }, "SSECustomerKeyMD5": { "location": "header", "locationName": "x-amz-server-side-encryption-customer-key-MD5" }, "SSEKMSKeyId": { "shape": "Sj", "location": "header", "locationName": "x-amz-server-side-encryption-aws-kms-key-id" }, "RequestCharged": { "location": "header", "locationName": "x-amz-request-charged" } }, "payload": "CopyPartResult" } } }, "shapes": { "Sj": { "type": "string", "sensitive": true }, "S11": { "type": "map", "key": {}, "value": {} }, "S19": { "type": "blob", "sensitive": true }, "S1c": { "type": "blob", "sensitive": true }, "S2u": { "type": "structure", "members": { "DisplayName": {}, "ID": {} } }, "S2x": { "type": "list", "member": { "locationName": "Grant", "type": "structure", "members": { "Grantee": { "shape": "S2z" }, "Permission": {} } } }, "S2z": { "type": "structure", "required": [ "Type" ], "members": { "DisplayName": {}, "EmailAddress": {}, "ID": {}, "Type": { "locationName": "xsi:type", "xmlAttribute": true }, "URI": {} }, "xmlNamespace": { "prefix": "xsi", "uri": "http://www.w3.org/2001/XMLSchema-instance" } }, "S36": { "type": "structure", "required": [ "Id", "StorageClassAnalysis" ], "members": { "Id": {}, "Filter": { "type": "structure", "members": { "Prefix": {}, "Tag": { "shape": "S39" }, "And": { "type": "structure", "members": { "Prefix": {}, "Tags": { "shape": "S3c", "flattened": true, "locationName": "Tag" } } } } }, "StorageClassAnalysis": { "type": "structure", "members": { "DataExport": { "type": "structure", "required": [ "OutputSchemaVersion", "Destination" ], "members": { "OutputSchemaVersion": {}, "Destination": { "type": "structure", "required": [ "S3BucketDestination" ], "members": { "S3BucketDestination": { "type": "structure", "required": [ "Format", "Bucket" ], "members": { "Format": {}, "BucketAccountId": {}, "Bucket": {}, "Prefix": {} } } } } } } } } } }, "S39": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {} } }, "S3c": { "type": "list", "member": { "shape": "S39", "locationName": "Tag" } }, "S3m": { "type": "list", "member": { "type": "structure", "required": [ "AllowedMethods", "AllowedOrigins" ], "members": { "AllowedHeaders": { "locationName": "AllowedHeader", "type": "list", "member": {}, "flattened": true }, "AllowedMethods": { "locationName": "AllowedMethod", "type": "list", "member": {}, "flattened": true }, "AllowedOrigins": { "locationName": "AllowedOrigin", "type": "list", "member": {}, "flattened": true }, "ExposeHeaders": { "locationName": "ExposeHeader", "type": "list", "member": {}, "flattened": true }, "MaxAgeSeconds": { "type": "integer" } } }, "flattened": true }, "S3z": { "type": "structure", "required": [ "Destination", "IsEnabled", "Id", "IncludedObjectVersions", "Schedule" ], "members": { "Destination": { "type": "structure", "required": [ "S3BucketDestination" ], "members": { "S3BucketDestination": { "type": "structure", "required": [ "Bucket", "Format" ], "members": { "AccountId": {}, "Bucket": {}, "Format": {}, "Prefix": {} } } } }, "IsEnabled": { "type": "boolean" }, "Filter": { "type": "structure", "required": [ "Prefix" ], "members": { "Prefix": {} } }, "Id": {}, "IncludedObjectVersions": {}, "OptionalFields": { "type": "list", "member": { "locationName": "Field" } }, "Schedule": { "type": "structure", "required": [ "Frequency" ], "members": { "Frequency": {} } } } }, "S4c": { "type": "list", "member": { "type": "structure", "required": [ "Prefix", "Status" ], "members": { "Expiration": { "shape": "S4e" }, "ID": {}, "Prefix": {}, "Status": {}, "Transition": { "shape": "S4j" }, "NoncurrentVersionTransition": { "shape": "S4l" }, "NoncurrentVersionExpiration": { "shape": "S4m" }, "AbortIncompleteMultipartUpload": { "shape": "S4n" } } }, "flattened": true }, "S4e": { "type": "structure", "members": { "Date": { "shape": "S4f" }, "Days": { "type": "integer" }, "ExpiredObjectDeleteMarker": { "type": "boolean" } } }, "S4f": { "type": "timestamp", "timestampFormat": "iso8601" }, "S4j": { "type": "structure", "members": { "Date": { "shape": "S4f" }, "Days": { "type": "integer" }, "StorageClass": {} } }, "S4l": { "type": "structure", "members": { "NoncurrentDays": { "type": "integer" }, "StorageClass": {} } }, "S4m": { "type": "structure", "members": { "NoncurrentDays": { "type": "integer" } } }, "S4n": { "type": "structure", "members": { "DaysAfterInitiation": { "type": "integer" } } }, "S4r": { "type": "list", "member": { "type": "structure", "required": [ "Status" ], "members": { "Expiration": { "shape": "S4e" }, "ID": {}, "Prefix": { "deprecated": true }, "Filter": { "type": "structure", "members": { "Prefix": {}, "Tag": { "shape": "S39" }, "And": { "type": "structure", "members": { "Prefix": {}, "Tags": { "shape": "S3c", "flattened": true, "locationName": "Tag" } } } } }, "Status": {}, "Transitions": { "locationName": "Transition", "type": "list", "member": { "shape": "S4j" }, "flattened": true }, "NoncurrentVersionTransitions": { "locationName": "NoncurrentVersionTransition", "type": "list", "member": { "shape": "S4l" }, "flattened": true }, "NoncurrentVersionExpiration": { "shape": "S4m" }, "AbortIncompleteMultipartUpload": { "shape": "S4n" } } }, "flattened": true }, "S51": { "type": "structure", "members": { "TargetBucket": {}, "TargetGrants": { "type": "list", "member": { "locationName": "Grant", "type": "structure", "members": { "Grantee": { "shape": "S2z" }, "Permission": {} } } }, "TargetPrefix": {} } }, "S59": { "type": "structure", "required": [ "Id" ], "members": { "Id": {}, "Filter": { "type": "structure", "members": { "Prefix": {}, "Tag": { "shape": "S39" }, "And": { "type": "structure", "members": { "Prefix": {}, "Tags": { "shape": "S3c", "flattened": true, "locationName": "Tag" } } } } } } }, "S5c": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": { "location": "uri", "locationName": "Bucket" } } }, "S5d": { "type": "structure", "members": { "TopicConfiguration": { "type": "structure", "members": { "Id": {}, "Events": { "shape": "S5g", "locationName": "Event" }, "Event": { "deprecated": true }, "Topic": {} } }, "QueueConfiguration": { "type": "structure", "members": { "Id": {}, "Event": { "deprecated": true }, "Events": { "shape": "S5g", "locationName": "Event" }, "Queue": {} } }, "CloudFunctionConfiguration": { "type": "structure", "members": { "Id": {}, "Event": { "deprecated": true }, "Events": { "shape": "S5g", "locationName": "Event" }, "CloudFunction": {}, "InvocationRole": {} } } } }, "S5g": { "type": "list", "member": {}, "flattened": true }, "S5o": { "type": "structure", "members": { "TopicConfigurations": { "locationName": "TopicConfiguration", "type": "list", "member": { "type": "structure", "required": [ "TopicArn", "Events" ], "members": { "Id": {}, "TopicArn": { "locationName": "Topic" }, "Events": { "shape": "S5g", "locationName": "Event" }, "Filter": { "shape": "S5r" } } }, "flattened": true }, "QueueConfigurations": { "locationName": "QueueConfiguration", "type": "list", "member": { "type": "structure", "required": [ "QueueArn", "Events" ], "members": { "Id": {}, "QueueArn": { "locationName": "Queue" }, "Events": { "shape": "S5g", "locationName": "Event" }, "Filter": { "shape": "S5r" } } }, "flattened": true }, "LambdaFunctionConfigurations": { "locationName": "CloudFunctionConfiguration", "type": "list", "member": { "type": "structure", "required": [ "LambdaFunctionArn", "Events" ], "members": { "Id": {}, "LambdaFunctionArn": { "locationName": "CloudFunction" }, "Events": { "shape": "S5g", "locationName": "Event" }, "Filter": { "shape": "S5r" } } }, "flattened": true } } }, "S5r": { "type": "structure", "members": { "Key": { "locationName": "S3Key", "type": "structure", "members": { "FilterRules": { "locationName": "FilterRule", "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Value": {} } }, "flattened": true } } } } }, "S67": { "type": "structure", "required": [ "Role", "Rules" ], "members": { "Role": {}, "Rules": { "locationName": "Rule", "type": "list", "member": { "type": "structure", "required": [ "Prefix", "Status", "Destination" ], "members": { "ID": {}, "Prefix": {}, "Status": {}, "Destination": { "type": "structure", "required": [ "Bucket" ], "members": { "Bucket": {}, "StorageClass": {} } } } }, "flattened": true } } }, "S6o": { "type": "structure", "required": [ "HostName" ], "members": { "HostName": {}, "Protocol": {} } }, "S6r": { "type": "structure", "required": [ "Suffix" ], "members": { "Suffix": {} } }, "S6t": { "type": "structure", "required": [ "Key" ], "members": { "Key": {} } }, "S6u": { "type": "list", "member": { "locationName": "RoutingRule", "type": "structure", "required": [ "Redirect" ], "members": { "Condition": { "type": "structure", "members": { "HttpErrorCodeReturnedEquals": {}, "KeyPrefixEquals": {} } }, "Redirect": { "type": "structure", "members": { "HostName": {}, "HttpRedirectCode": {}, "Protocol": {}, "ReplaceKeyPrefixWith": {}, "ReplaceKeyWith": {} } } } } }, "S8q": { "type": "structure", "members": { "ID": {}, "DisplayName": {} } }, "S8r": { "type": "list", "member": { "type": "structure", "members": { "Prefix": {} } }, "flattened": true }, "S99": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "LastModified": { "type": "timestamp" }, "ETag": {}, "Size": { "type": "integer" }, "StorageClass": {}, "Owner": { "shape": "S2u" } } }, "flattened": true }, "S9r": { "type": "structure", "members": { "Grants": { "shape": "S2x", "locationName": "AccessControlList" }, "Owner": { "shape": "S2u" } } }, "Sab": { "type": "structure", "required": [ "TagSet" ], "members": { "TagSet": { "shape": "S3c" } } } } } },{}],122:[function(require,module,exports){ module.exports={ "pagination": { "ListBuckets": { "result_key": "Buckets" }, "ListMultipartUploads": { "limit_key": "MaxUploads", "more_results": "IsTruncated", "output_token": [ "NextKeyMarker", "NextUploadIdMarker" ], "input_token": [ "KeyMarker", "UploadIdMarker" ], "result_key": [ "Uploads", "CommonPrefixes" ] }, "ListObjectVersions": { "more_results": "IsTruncated", "limit_key": "MaxKeys", "output_token": [ "NextKeyMarker", "NextVersionIdMarker" ], "input_token": [ "KeyMarker", "VersionIdMarker" ], "result_key": [ "Versions", "DeleteMarkers", "CommonPrefixes" ] }, "ListObjects": { "more_results": "IsTruncated", "limit_key": "MaxKeys", "output_token": "NextMarker || Contents[-1].Key", "input_token": "Marker", "result_key": [ "Contents", "CommonPrefixes" ] }, "ListObjectsV2": { "limit_key": "MaxKeys", "output_token": "NextContinuationToken", "input_token": "ContinuationToken", "result_key": [ "Contents", "CommonPrefixes" ] }, "ListParts": { "more_results": "IsTruncated", "limit_key": "MaxParts", "output_token": "NextPartNumberMarker", "input_token": "PartNumberMarker", "result_key": "Parts" } } } },{}],123:[function(require,module,exports){ module.exports={ "version": 2, "waiters": { "BucketExists": { "delay": 5, "operation": "HeadBucket", "maxAttempts": 20, "acceptors": [ { "expected": 200, "matcher": "status", "state": "success" }, { "expected": 301, "matcher": "status", "state": "success" }, { "expected": 403, "matcher": "status", "state": "success" }, { "expected": 404, "matcher": "status", "state": "retry" } ] }, "BucketNotExists": { "delay": 5, "operation": "HeadBucket", "maxAttempts": 20, "acceptors": [ { "expected": 404, "matcher": "status", "state": "success" } ] }, "ObjectExists": { "delay": 5, "operation": "HeadObject", "maxAttempts": 20, "acceptors": [ { "expected": 200, "matcher": "status", "state": "success" }, { "expected": 404, "matcher": "status", "state": "retry" } ] }, "ObjectNotExists": { "delay": 5, "operation": "HeadObject", "maxAttempts": 20, "acceptors": [ { "expected": 404, "matcher": "status", "state": "success" } ] } } } },{}],124:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "servicecatalog-2015-12-10", "apiVersion": "2015-12-10", "endpointPrefix": "servicecatalog", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "AWS Service Catalog", "signatureVersion": "v4", "targetPrefix": "AWS242ServiceCatalogService" }, "operations": { "AcceptPortfolioShare": { "input": { "type": "structure", "required": [ "PortfolioId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {} } }, "output": { "type": "structure", "members": {} } }, "AssociatePrincipalWithPortfolio": { "input": { "type": "structure", "required": [ "PortfolioId", "PrincipalARN", "PrincipalType" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "PrincipalARN": {}, "PrincipalType": {} } }, "output": { "type": "structure", "members": {} } }, "AssociateProductWithPortfolio": { "input": { "type": "structure", "required": [ "ProductId", "PortfolioId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "PortfolioId": {}, "SourcePortfolioId": {} } }, "output": { "type": "structure", "members": {} } }, "CreateConstraint": { "input": { "type": "structure", "required": [ "PortfolioId", "ProductId", "Parameters", "Type", "IdempotencyToken" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "ProductId": {}, "Parameters": {}, "Type": {}, "Description": {}, "IdempotencyToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "ConstraintDetail": { "shape": "Sh" }, "ConstraintParameters": {}, "Status": {} } } }, "CreatePortfolio": { "input": { "type": "structure", "required": [ "DisplayName", "ProviderName", "IdempotencyToken" ], "members": { "AcceptLanguage": {}, "DisplayName": {}, "Description": {}, "ProviderName": {}, "Tags": { "shape": "So" }, "IdempotencyToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "PortfolioDetail": { "shape": "St" }, "Tags": { "shape": "Sw" } } } }, "CreatePortfolioShare": { "input": { "type": "structure", "required": [ "PortfolioId", "AccountId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "AccountId": {} } }, "output": { "type": "structure", "members": {} } }, "CreateProduct": { "input": { "type": "structure", "required": [ "Name", "Owner", "ProductType", "ProvisioningArtifactParameters", "IdempotencyToken" ], "members": { "AcceptLanguage": {}, "Name": {}, "Owner": {}, "Description": {}, "Distributor": {}, "SupportDescription": {}, "SupportEmail": {}, "SupportUrl": {}, "ProductType": {}, "Tags": { "shape": "So" }, "ProvisioningArtifactParameters": { "shape": "S17" }, "IdempotencyToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "ProductViewDetail": { "shape": "S1f" }, "ProvisioningArtifactDetail": { "shape": "S1k" }, "Tags": { "shape": "Sw" } } } }, "CreateProvisioningArtifact": { "input": { "type": "structure", "required": [ "ProductId", "Parameters", "IdempotencyToken" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "Parameters": { "shape": "S17" }, "IdempotencyToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "ProvisioningArtifactDetail": { "shape": "S1k" }, "Info": { "shape": "S1a" }, "Status": {} } } }, "DeleteConstraint": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": {} } }, "DeletePortfolio": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": {} } }, "DeletePortfolioShare": { "input": { "type": "structure", "required": [ "PortfolioId", "AccountId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "AccountId": {} } }, "output": { "type": "structure", "members": {} } }, "DeleteProduct": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": {} } }, "DeleteProvisioningArtifact": { "input": { "type": "structure", "required": [ "ProductId", "ProvisioningArtifactId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "ProvisioningArtifactId": {} } }, "output": { "type": "structure", "members": {} } }, "DescribeConstraint": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": { "ConstraintDetail": { "shape": "Sh" }, "ConstraintParameters": {}, "Status": {} } } }, "DescribePortfolio": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": { "PortfolioDetail": { "shape": "St" }, "Tags": { "shape": "Sw" } } } }, "DescribeProduct": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": { "ProductViewSummary": { "shape": "S1g" }, "ProvisioningArtifacts": { "shape": "S23" } } } }, "DescribeProductAsAdmin": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": { "ProductViewDetail": { "shape": "S1f" }, "Tags": { "shape": "Sw" } } } }, "DescribeProductView": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {} } }, "output": { "type": "structure", "members": { "ProductViewSummary": { "shape": "S1g" }, "ProvisioningArtifacts": { "shape": "S23" } } } }, "DescribeProvisioningArtifact": { "input": { "type": "structure", "required": [ "ProvisioningArtifactId", "ProductId" ], "members": { "AcceptLanguage": {}, "ProvisioningArtifactId": {}, "ProductId": {} } }, "output": { "type": "structure", "members": { "ProvisioningArtifactDetail": { "shape": "S1k" }, "Info": { "shape": "S1a" }, "Status": {} } } }, "DescribeProvisioningParameters": { "input": { "type": "structure", "required": [ "ProductId", "ProvisioningArtifactId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "ProvisioningArtifactId": {}, "PathId": {} } }, "output": { "type": "structure", "members": { "ProvisioningArtifactParameters": { "type": "list", "member": { "type": "structure", "members": { "ParameterKey": {}, "DefaultValue": {}, "ParameterType": {}, "IsNoEcho": { "type": "boolean" }, "Description": {}, "ParameterConstraints": { "type": "structure", "members": { "AllowedValues": { "type": "list", "member": {} } } } } } }, "ConstraintSummaries": { "shape": "S2o" }, "UsageInstructions": { "type": "list", "member": { "type": "structure", "members": { "Type": {}, "Value": {} } } } } } }, "DescribeRecord": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {}, "PageToken": {}, "PageSize": { "type": "integer" } } }, "output": { "type": "structure", "members": { "RecordDetail": { "shape": "S2y" }, "RecordOutputs": { "type": "list", "member": { "type": "structure", "members": { "OutputKey": {}, "OutputValue": {}, "Description": {} } } }, "NextPageToken": {} } } }, "DisassociatePrincipalFromPortfolio": { "input": { "type": "structure", "required": [ "PortfolioId", "PrincipalARN" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "PrincipalARN": {} } }, "output": { "type": "structure", "members": {} } }, "DisassociateProductFromPortfolio": { "input": { "type": "structure", "required": [ "ProductId", "PortfolioId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "PortfolioId": {} } }, "output": { "type": "structure", "members": {} } }, "ListAcceptedPortfolioShares": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "PageToken": {}, "PageSize": { "type": "integer" } } }, "output": { "type": "structure", "members": { "PortfolioDetails": { "shape": "S3m" }, "NextPageToken": {} } } }, "ListConstraintsForPortfolio": { "input": { "type": "structure", "required": [ "PortfolioId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "ProductId": {}, "PageSize": { "type": "integer" }, "PageToken": {} } }, "output": { "type": "structure", "members": { "ConstraintDetails": { "type": "list", "member": { "shape": "Sh" } }, "NextPageToken": {} } } }, "ListLaunchPaths": { "input": { "type": "structure", "required": [ "ProductId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "PageSize": { "type": "integer" }, "PageToken": {} } }, "output": { "type": "structure", "members": { "LaunchPathSummaries": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "ConstraintSummaries": { "shape": "S2o" }, "Tags": { "shape": "Sw" }, "Name": {} } } }, "NextPageToken": {} } } }, "ListPortfolioAccess": { "input": { "type": "structure", "required": [ "PortfolioId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {} } }, "output": { "type": "structure", "members": { "AccountIds": { "type": "list", "member": {} }, "NextPageToken": {} } } }, "ListPortfolios": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "PageToken": {}, "PageSize": { "type": "integer" } } }, "output": { "type": "structure", "members": { "PortfolioDetails": { "shape": "S3m" }, "NextPageToken": {} } } }, "ListPortfoliosForProduct": { "input": { "type": "structure", "required": [ "ProductId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "PageToken": {}, "PageSize": { "type": "integer" } } }, "output": { "type": "structure", "members": { "PortfolioDetails": { "shape": "S3m" }, "NextPageToken": {} } } }, "ListPrincipalsForPortfolio": { "input": { "type": "structure", "required": [ "PortfolioId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {}, "PageSize": { "type": "integer" }, "PageToken": {} } }, "output": { "type": "structure", "members": { "Principals": { "type": "list", "member": { "type": "structure", "members": { "PrincipalARN": {}, "PrincipalType": {} } } }, "NextPageToken": {} } } }, "ListProvisioningArtifacts": { "input": { "type": "structure", "required": [ "ProductId" ], "members": { "AcceptLanguage": {}, "ProductId": {} } }, "output": { "type": "structure", "members": { "ProvisioningArtifactDetails": { "type": "list", "member": { "shape": "S1k" } }, "NextPageToken": {} } } }, "ListRecordHistory": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "AccessLevelFilter": { "shape": "S4a" }, "SearchFilter": { "type": "structure", "members": { "Key": {}, "Value": {} } }, "PageSize": { "type": "integer" }, "PageToken": {} } }, "output": { "type": "structure", "members": { "RecordDetails": { "type": "list", "member": { "shape": "S2y" } }, "NextPageToken": {} } } }, "ProvisionProduct": { "input": { "type": "structure", "required": [ "ProductId", "ProvisioningArtifactId", "ProvisionedProductName", "ProvisionToken" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "ProvisioningArtifactId": {}, "PathId": {}, "ProvisionedProductName": {}, "ProvisioningParameters": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } }, "Tags": { "shape": "Sw" }, "NotificationArns": { "type": "list", "member": {} }, "ProvisionToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "RecordDetail": { "shape": "S2y" } } } }, "RejectPortfolioShare": { "input": { "type": "structure", "required": [ "PortfolioId" ], "members": { "AcceptLanguage": {}, "PortfolioId": {} } }, "output": { "type": "structure", "members": {} } }, "ScanProvisionedProducts": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "AccessLevelFilter": { "shape": "S4a" }, "PageSize": { "type": "integer" }, "PageToken": {} } }, "output": { "type": "structure", "members": { "ProvisionedProducts": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Arn": {}, "Type": {}, "Id": {}, "Status": {}, "StatusMessage": {}, "CreatedTime": { "type": "timestamp" }, "IdempotencyToken": {}, "LastRecordId": {} } } }, "NextPageToken": {} } } }, "SearchProducts": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "Filters": { "shape": "S50" }, "PageSize": { "type": "integer" }, "SortBy": {}, "SortOrder": {}, "PageToken": {} } }, "output": { "type": "structure", "members": { "ProductViewSummaries": { "type": "list", "member": { "shape": "S1g" } }, "ProductViewAggregations": { "type": "map", "key": {}, "value": { "type": "list", "member": { "type": "structure", "members": { "Value": {}, "ApproximateCount": { "type": "integer" } } } } }, "NextPageToken": {} } } }, "SearchProductsAsAdmin": { "input": { "type": "structure", "members": { "AcceptLanguage": {}, "PortfolioId": {}, "Filters": { "shape": "S50" }, "SortBy": {}, "SortOrder": {}, "PageToken": {}, "PageSize": { "type": "integer" }, "ProductSource": {} } }, "output": { "type": "structure", "members": { "ProductViewDetails": { "type": "list", "member": { "shape": "S1f" } }, "NextPageToken": {} } } }, "TerminateProvisionedProduct": { "input": { "type": "structure", "required": [ "TerminateToken" ], "members": { "ProvisionedProductName": {}, "ProvisionedProductId": {}, "TerminateToken": { "idempotencyToken": true }, "IgnoreErrors": { "type": "boolean" }, "AcceptLanguage": {} } }, "output": { "type": "structure", "members": { "RecordDetail": { "shape": "S2y" } } } }, "UpdateConstraint": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {}, "Description": {} } }, "output": { "type": "structure", "members": { "ConstraintDetail": { "shape": "Sh" }, "ConstraintParameters": {}, "Status": {} } } }, "UpdatePortfolio": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {}, "DisplayName": {}, "Description": {}, "ProviderName": {}, "AddTags": { "shape": "So" }, "RemoveTags": { "shape": "S5o" } } }, "output": { "type": "structure", "members": { "PortfolioDetail": { "shape": "St" }, "Tags": { "shape": "Sw" } } } }, "UpdateProduct": { "input": { "type": "structure", "required": [ "Id" ], "members": { "AcceptLanguage": {}, "Id": {}, "Name": {}, "Owner": {}, "Description": {}, "Distributor": {}, "SupportDescription": {}, "SupportEmail": {}, "SupportUrl": {}, "AddTags": { "shape": "So" }, "RemoveTags": { "shape": "S5o" } } }, "output": { "type": "structure", "members": { "ProductViewDetail": { "shape": "S1f" }, "Tags": { "shape": "Sw" } } } }, "UpdateProvisionedProduct": { "input": { "type": "structure", "required": [ "UpdateToken" ], "members": { "AcceptLanguage": {}, "ProvisionedProductName": {}, "ProvisionedProductId": {}, "ProductId": {}, "ProvisioningArtifactId": {}, "PathId": {}, "ProvisioningParameters": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {}, "UsePreviousValue": { "type": "boolean" } } } }, "UpdateToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "RecordDetail": { "shape": "S2y" } } } }, "UpdateProvisioningArtifact": { "input": { "type": "structure", "required": [ "ProductId", "ProvisioningArtifactId" ], "members": { "AcceptLanguage": {}, "ProductId": {}, "ProvisioningArtifactId": {}, "Name": {}, "Description": {} } }, "output": { "type": "structure", "members": { "ProvisioningArtifactDetail": { "shape": "S1k" }, "Info": { "shape": "S1a" }, "Status": {} } } } }, "shapes": { "Sh": { "type": "structure", "members": { "ConstraintId": {}, "Type": {}, "Description": {}, "Owner": {} } }, "So": { "type": "list", "member": { "shape": "Sp" } }, "Sp": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {} } }, "St": { "type": "structure", "members": { "Id": {}, "ARN": {}, "DisplayName": {}, "Description": {}, "CreatedTime": { "type": "timestamp" }, "ProviderName": {} } }, "Sw": { "type": "list", "member": { "shape": "Sp" } }, "S17": { "type": "structure", "required": [ "Info" ], "members": { "Name": {}, "Description": {}, "Info": { "shape": "S1a" }, "Type": {} } }, "S1a": { "type": "map", "key": {}, "value": {} }, "S1f": { "type": "structure", "members": { "ProductViewSummary": { "shape": "S1g" }, "Status": {}, "ProductARN": {}, "CreatedTime": { "type": "timestamp" } } }, "S1g": { "type": "structure", "members": { "Id": {}, "ProductId": {}, "Name": {}, "Owner": {}, "ShortDescription": {}, "Type": {}, "Distributor": {}, "HasDefaultPath": { "type": "boolean" }, "SupportEmail": {}, "SupportDescription": {}, "SupportUrl": {} } }, "S1k": { "type": "structure", "members": { "Id": {}, "Name": {}, "Description": {}, "Type": {}, "CreatedTime": { "type": "timestamp" } } }, "S23": { "type": "list", "member": { "type": "structure", "members": { "Id": {}, "Name": {}, "Description": {}, "CreatedTime": { "type": "timestamp" } } } }, "S2o": { "type": "list", "member": { "type": "structure", "members": { "Type": {}, "Description": {} } } }, "S2y": { "type": "structure", "members": { "RecordId": {}, "ProvisionedProductName": {}, "Status": {}, "CreatedTime": { "type": "timestamp" }, "UpdatedTime": { "type": "timestamp" }, "ProvisionedProductType": {}, "RecordType": {}, "ProvisionedProductId": {}, "ProductId": {}, "ProvisioningArtifactId": {}, "PathId": {}, "RecordErrors": { "type": "list", "member": { "type": "structure", "members": { "Code": {}, "Description": {} } } }, "RecordTags": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Value": {} } } } } }, "S3m": { "type": "list", "member": { "shape": "St" } }, "S4a": { "type": "structure", "members": { "Key": {}, "Value": {} } }, "S50": { "type": "map", "key": {}, "value": { "type": "list", "member": {} } }, "S5o": { "type": "list", "member": {} } } } },{}],125:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "sns-2010-03-31", "apiVersion": "2010-03-31", "endpointPrefix": "sns", "protocol": "query", "serviceAbbreviation": "Amazon SNS", "serviceFullName": "Amazon Simple Notification Service", "signatureVersion": "v4", "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" }, "operations": { "AddPermission": { "input": { "type": "structure", "required": [ "TopicArn", "Label", "AWSAccountId", "ActionName" ], "members": { "TopicArn": {}, "Label": {}, "AWSAccountId": { "type": "list", "member": {} }, "ActionName": { "type": "list", "member": {} } } } }, "CheckIfPhoneNumberIsOptedOut": { "input": { "type": "structure", "required": [ "phoneNumber" ], "members": { "phoneNumber": {} } }, "output": { "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", "type": "structure", "members": { "isOptedOut": { "type": "boolean" } } } }, "ConfirmSubscription": { "input": { "type": "structure", "required": [ "TopicArn", "Token" ], "members": { "TopicArn": {}, "Token": {}, "AuthenticateOnUnsubscribe": {} } }, "output": { "resultWrapper": "ConfirmSubscriptionResult", "type": "structure", "members": { "SubscriptionArn": {} } } }, "CreatePlatformApplication": { "input": { "type": "structure", "required": [ "Name", "Platform", "Attributes" ], "members": { "Name": {}, "Platform": {}, "Attributes": { "shape": "Sj" } } }, "output": { "resultWrapper": "CreatePlatformApplicationResult", "type": "structure", "members": { "PlatformApplicationArn": {} } } }, "CreatePlatformEndpoint": { "input": { "type": "structure", "required": [ "PlatformApplicationArn", "Token" ], "members": { "PlatformApplicationArn": {}, "Token": {}, "CustomUserData": {}, "Attributes": { "shape": "Sj" } } }, "output": { "resultWrapper": "CreatePlatformEndpointResult", "type": "structure", "members": { "EndpointArn": {} } } }, "CreateTopic": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "resultWrapper": "CreateTopicResult", "type": "structure", "members": { "TopicArn": {} } } }, "DeleteEndpoint": { "input": { "type": "structure", "required": [ "EndpointArn" ], "members": { "EndpointArn": {} } } }, "DeletePlatformApplication": { "input": { "type": "structure", "required": [ "PlatformApplicationArn" ], "members": { "PlatformApplicationArn": {} } } }, "DeleteTopic": { "input": { "type": "structure", "required": [ "TopicArn" ], "members": { "TopicArn": {} } } }, "GetEndpointAttributes": { "input": { "type": "structure", "required": [ "EndpointArn" ], "members": { "EndpointArn": {} } }, "output": { "resultWrapper": "GetEndpointAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "Sj" } } } }, "GetPlatformApplicationAttributes": { "input": { "type": "structure", "required": [ "PlatformApplicationArn" ], "members": { "PlatformApplicationArn": {} } }, "output": { "resultWrapper": "GetPlatformApplicationAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "Sj" } } } }, "GetSMSAttributes": { "input": { "type": "structure", "members": { "attributes": { "type": "list", "member": {} } } }, "output": { "resultWrapper": "GetSMSAttributesResult", "type": "structure", "members": { "attributes": { "shape": "Sj" } } } }, "GetSubscriptionAttributes": { "input": { "type": "structure", "required": [ "SubscriptionArn" ], "members": { "SubscriptionArn": {} } }, "output": { "resultWrapper": "GetSubscriptionAttributesResult", "type": "structure", "members": { "Attributes": { "type": "map", "key": {}, "value": {} } } } }, "GetTopicAttributes": { "input": { "type": "structure", "required": [ "TopicArn" ], "members": { "TopicArn": {} } }, "output": { "resultWrapper": "GetTopicAttributesResult", "type": "structure", "members": { "Attributes": { "type": "map", "key": {}, "value": {} } } } }, "ListEndpointsByPlatformApplication": { "input": { "type": "structure", "required": [ "PlatformApplicationArn" ], "members": { "PlatformApplicationArn": {}, "NextToken": {} } }, "output": { "resultWrapper": "ListEndpointsByPlatformApplicationResult", "type": "structure", "members": { "Endpoints": { "type": "list", "member": { "type": "structure", "members": { "EndpointArn": {}, "Attributes": { "shape": "Sj" } } } }, "NextToken": {} } } }, "ListPhoneNumbersOptedOut": { "input": { "type": "structure", "members": { "nextToken": {} } }, "output": { "resultWrapper": "ListPhoneNumbersOptedOutResult", "type": "structure", "members": { "phoneNumbers": { "type": "list", "member": {} }, "nextToken": {} } } }, "ListPlatformApplications": { "input": { "type": "structure", "members": { "NextToken": {} } }, "output": { "resultWrapper": "ListPlatformApplicationsResult", "type": "structure", "members": { "PlatformApplications": { "type": "list", "member": { "type": "structure", "members": { "PlatformApplicationArn": {}, "Attributes": { "shape": "Sj" } } } }, "NextToken": {} } } }, "ListSubscriptions": { "input": { "type": "structure", "members": { "NextToken": {} } }, "output": { "resultWrapper": "ListSubscriptionsResult", "type": "structure", "members": { "Subscriptions": { "shape": "S1n" }, "NextToken": {} } } }, "ListSubscriptionsByTopic": { "input": { "type": "structure", "required": [ "TopicArn" ], "members": { "TopicArn": {}, "NextToken": {} } }, "output": { "resultWrapper": "ListSubscriptionsByTopicResult", "type": "structure", "members": { "Subscriptions": { "shape": "S1n" }, "NextToken": {} } } }, "ListTopics": { "input": { "type": "structure", "members": { "NextToken": {} } }, "output": { "resultWrapper": "ListTopicsResult", "type": "structure", "members": { "Topics": { "type": "list", "member": { "type": "structure", "members": { "TopicArn": {} } } }, "NextToken": {} } } }, "OptInPhoneNumber": { "input": { "type": "structure", "required": [ "phoneNumber" ], "members": { "phoneNumber": {} } }, "output": { "resultWrapper": "OptInPhoneNumberResult", "type": "structure", "members": {} } }, "Publish": { "input": { "type": "structure", "required": [ "Message" ], "members": { "TopicArn": {}, "TargetArn": {}, "PhoneNumber": {}, "Message": {}, "Subject": {}, "MessageStructure": {}, "MessageAttributes": { "type": "map", "key": { "locationName": "Name" }, "value": { "locationName": "Value", "type": "structure", "required": [ "DataType" ], "members": { "DataType": {}, "StringValue": {}, "BinaryValue": { "type": "blob" } } } } } }, "output": { "resultWrapper": "PublishResult", "type": "structure", "members": { "MessageId": {} } } }, "RemovePermission": { "input": { "type": "structure", "required": [ "TopicArn", "Label" ], "members": { "TopicArn": {}, "Label": {} } } }, "SetEndpointAttributes": { "input": { "type": "structure", "required": [ "EndpointArn", "Attributes" ], "members": { "EndpointArn": {}, "Attributes": { "shape": "Sj" } } } }, "SetPlatformApplicationAttributes": { "input": { "type": "structure", "required": [ "PlatformApplicationArn", "Attributes" ], "members": { "PlatformApplicationArn": {}, "Attributes": { "shape": "Sj" } } } }, "SetSMSAttributes": { "input": { "type": "structure", "required": [ "attributes" ], "members": { "attributes": { "shape": "Sj" } } }, "output": { "resultWrapper": "SetSMSAttributesResult", "type": "structure", "members": {} } }, "SetSubscriptionAttributes": { "input": { "type": "structure", "required": [ "SubscriptionArn", "AttributeName" ], "members": { "SubscriptionArn": {}, "AttributeName": {}, "AttributeValue": {} } } }, "SetTopicAttributes": { "input": { "type": "structure", "required": [ "TopicArn", "AttributeName" ], "members": { "TopicArn": {}, "AttributeName": {}, "AttributeValue": {} } } }, "Subscribe": { "input": { "type": "structure", "required": [ "TopicArn", "Protocol" ], "members": { "TopicArn": {}, "Protocol": {}, "Endpoint": {} } }, "output": { "resultWrapper": "SubscribeResult", "type": "structure", "members": { "SubscriptionArn": {} } } }, "Unsubscribe": { "input": { "type": "structure", "required": [ "SubscriptionArn" ], "members": { "SubscriptionArn": {} } } } }, "shapes": { "Sj": { "type": "map", "key": {}, "value": {} }, "S1n": { "type": "list", "member": { "type": "structure", "members": { "SubscriptionArn": {}, "Owner": {}, "Protocol": {}, "Endpoint": {}, "TopicArn": {} } } } } } },{}],126:[function(require,module,exports){ module.exports={ "pagination": { "ListEndpointsByPlatformApplication": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "Endpoints" }, "ListPlatformApplications": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "PlatformApplications" }, "ListSubscriptions": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "Subscriptions" }, "ListSubscriptionsByTopic": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "Subscriptions" }, "ListTopics": { "input_token": "NextToken", "output_token": "NextToken", "result_key": "Topics" } } } },{}],127:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2012-11-05", "endpointPrefix": "sqs", "protocol": "query", "serviceAbbreviation": "Amazon SQS", "serviceFullName": "Amazon Simple Queue Service", "signatureVersion": "v4", "uid": "sqs-2012-11-05", "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" }, "operations": { "AddPermission": { "input": { "type": "structure", "required": [ "QueueUrl", "Label", "AWSAccountIds", "Actions" ], "members": { "QueueUrl": {}, "Label": {}, "AWSAccountIds": { "type": "list", "member": { "locationName": "AWSAccountId" }, "flattened": true }, "Actions": { "type": "list", "member": { "locationName": "ActionName" }, "flattened": true } } } }, "ChangeMessageVisibility": { "input": { "type": "structure", "required": [ "QueueUrl", "ReceiptHandle", "VisibilityTimeout" ], "members": { "QueueUrl": {}, "ReceiptHandle": {}, "VisibilityTimeout": { "type": "integer" } } } }, "ChangeMessageVisibilityBatch": { "input": { "type": "structure", "required": [ "QueueUrl", "Entries" ], "members": { "QueueUrl": {}, "Entries": { "type": "list", "member": { "locationName": "ChangeMessageVisibilityBatchRequestEntry", "type": "structure", "required": [ "Id", "ReceiptHandle" ], "members": { "Id": {}, "ReceiptHandle": {}, "VisibilityTimeout": { "type": "integer" } } }, "flattened": true } } }, "output": { "resultWrapper": "ChangeMessageVisibilityBatchResult", "type": "structure", "required": [ "Successful", "Failed" ], "members": { "Successful": { "type": "list", "member": { "locationName": "ChangeMessageVisibilityBatchResultEntry", "type": "structure", "required": [ "Id" ], "members": { "Id": {} } }, "flattened": true }, "Failed": { "shape": "Sd" } } } }, "CreateQueue": { "input": { "type": "structure", "required": [ "QueueName" ], "members": { "QueueName": {}, "Attributes": { "shape": "Sh", "locationName": "Attribute" } } }, "output": { "resultWrapper": "CreateQueueResult", "type": "structure", "members": { "QueueUrl": {} } } }, "DeleteMessage": { "input": { "type": "structure", "required": [ "QueueUrl", "ReceiptHandle" ], "members": { "QueueUrl": {}, "ReceiptHandle": {} } } }, "DeleteMessageBatch": { "input": { "type": "structure", "required": [ "QueueUrl", "Entries" ], "members": { "QueueUrl": {}, "Entries": { "type": "list", "member": { "locationName": "DeleteMessageBatchRequestEntry", "type": "structure", "required": [ "Id", "ReceiptHandle" ], "members": { "Id": {}, "ReceiptHandle": {} } }, "flattened": true } } }, "output": { "resultWrapper": "DeleteMessageBatchResult", "type": "structure", "required": [ "Successful", "Failed" ], "members": { "Successful": { "type": "list", "member": { "locationName": "DeleteMessageBatchResultEntry", "type": "structure", "required": [ "Id" ], "members": { "Id": {} } }, "flattened": true }, "Failed": { "shape": "Sd" } } } }, "DeleteQueue": { "input": { "type": "structure", "required": [ "QueueUrl" ], "members": { "QueueUrl": {} } } }, "GetQueueAttributes": { "input": { "type": "structure", "required": [ "QueueUrl" ], "members": { "QueueUrl": {}, "AttributeNames": { "shape": "St" } } }, "output": { "resultWrapper": "GetQueueAttributesResult", "type": "structure", "members": { "Attributes": { "shape": "Sh", "locationName": "Attribute" } } } }, "GetQueueUrl": { "input": { "type": "structure", "required": [ "QueueName" ], "members": { "QueueName": {}, "QueueOwnerAWSAccountId": {} } }, "output": { "resultWrapper": "GetQueueUrlResult", "type": "structure", "members": { "QueueUrl": {} } } }, "ListDeadLetterSourceQueues": { "input": { "type": "structure", "required": [ "QueueUrl" ], "members": { "QueueUrl": {} } }, "output": { "resultWrapper": "ListDeadLetterSourceQueuesResult", "type": "structure", "required": [ "queueUrls" ], "members": { "queueUrls": { "shape": "Sz" } } } }, "ListQueues": { "input": { "type": "structure", "members": { "QueueNamePrefix": {} } }, "output": { "resultWrapper": "ListQueuesResult", "type": "structure", "members": { "QueueUrls": { "shape": "Sz" } } } }, "PurgeQueue": { "input": { "type": "structure", "required": [ "QueueUrl" ], "members": { "QueueUrl": {} } } }, "ReceiveMessage": { "input": { "type": "structure", "required": [ "QueueUrl" ], "members": { "QueueUrl": {}, "AttributeNames": { "shape": "St" }, "MessageAttributeNames": { "type": "list", "member": { "locationName": "MessageAttributeName" }, "flattened": true }, "MaxNumberOfMessages": { "type": "integer" }, "VisibilityTimeout": { "type": "integer" }, "WaitTimeSeconds": { "type": "integer" }, "ReceiveRequestAttemptId": {} } }, "output": { "resultWrapper": "ReceiveMessageResult", "type": "structure", "members": { "Messages": { "type": "list", "member": { "locationName": "Message", "type": "structure", "members": { "MessageId": {}, "ReceiptHandle": {}, "MD5OfBody": {}, "Body": {}, "Attributes": { "locationName": "Attribute", "type": "map", "key": { "locationName": "Name" }, "value": { "locationName": "Value" }, "flattened": true }, "MD5OfMessageAttributes": {}, "MessageAttributes": { "shape": "S1b", "locationName": "MessageAttribute" } } }, "flattened": true } } } }, "RemovePermission": { "input": { "type": "structure", "required": [ "QueueUrl", "Label" ], "members": { "QueueUrl": {}, "Label": {} } } }, "SendMessage": { "input": { "type": "structure", "required": [ "QueueUrl", "MessageBody" ], "members": { "QueueUrl": {}, "MessageBody": {}, "DelaySeconds": { "type": "integer" }, "MessageAttributes": { "shape": "S1b", "locationName": "MessageAttribute" }, "MessageDeduplicationId": {}, "MessageGroupId": {} } }, "output": { "resultWrapper": "SendMessageResult", "type": "structure", "members": { "MD5OfMessageBody": {}, "MD5OfMessageAttributes": {}, "MessageId": {}, "SequenceNumber": {} } } }, "SendMessageBatch": { "input": { "type": "structure", "required": [ "QueueUrl", "Entries" ], "members": { "QueueUrl": {}, "Entries": { "type": "list", "member": { "locationName": "SendMessageBatchRequestEntry", "type": "structure", "required": [ "Id", "MessageBody" ], "members": { "Id": {}, "MessageBody": {}, "DelaySeconds": { "type": "integer" }, "MessageAttributes": { "shape": "S1b", "locationName": "MessageAttribute" }, "MessageDeduplicationId": {}, "MessageGroupId": {} } }, "flattened": true } } }, "output": { "resultWrapper": "SendMessageBatchResult", "type": "structure", "required": [ "Successful", "Failed" ], "members": { "Successful": { "type": "list", "member": { "locationName": "SendMessageBatchResultEntry", "type": "structure", "required": [ "Id", "MessageId", "MD5OfMessageBody" ], "members": { "Id": {}, "MessageId": {}, "MD5OfMessageBody": {}, "MD5OfMessageAttributes": {}, "SequenceNumber": {} } }, "flattened": true }, "Failed": { "shape": "Sd" } } } }, "SetQueueAttributes": { "input": { "type": "structure", "required": [ "QueueUrl", "Attributes" ], "members": { "QueueUrl": {}, "Attributes": { "shape": "Sh", "locationName": "Attribute" } } } } }, "shapes": { "Sd": { "type": "list", "member": { "locationName": "BatchResultErrorEntry", "type": "structure", "required": [ "Id", "SenderFault", "Code" ], "members": { "Id": {}, "SenderFault": { "type": "boolean" }, "Code": {}, "Message": {} } }, "flattened": true }, "Sh": { "type": "map", "key": { "locationName": "Name" }, "value": { "locationName": "Value" }, "flattened": true, "locationName": "Attribute" }, "St": { "type": "list", "member": { "locationName": "AttributeName" }, "flattened": true }, "Sz": { "type": "list", "member": { "locationName": "QueueUrl" }, "flattened": true }, "S1b": { "type": "map", "key": { "locationName": "Name" }, "value": { "locationName": "Value", "type": "structure", "required": [ "DataType" ], "members": { "StringValue": {}, "BinaryValue": { "type": "blob" }, "StringListValues": { "flattened": true, "locationName": "StringListValue", "type": "list", "member": { "locationName": "StringListValue" } }, "BinaryListValues": { "flattened": true, "locationName": "BinaryListValue", "type": "list", "member": { "locationName": "BinaryListValue", "type": "blob" } }, "DataType": {} } }, "flattened": true } } } },{}],128:[function(require,module,exports){ module.exports={ "pagination": { "ListQueues": { "result_key": "QueueUrls" } } } },{}],129:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2014-11-06", "endpointPrefix": "ssm", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "Amazon SSM", "serviceFullName": "Amazon Simple Systems Manager (SSM)", "signatureVersion": "v4", "targetPrefix": "AmazonSSM", "uid": "ssm-2014-11-06" }, "operations": { "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceType", "ResourceId", "Tags" ], "members": { "ResourceType": {}, "ResourceId": {}, "Tags": { "shape": "S4" } } }, "output": { "type": "structure", "members": {} } }, "CancelCommand": { "input": { "type": "structure", "required": [ "CommandId" ], "members": { "CommandId": {}, "InstanceIds": { "shape": "Sb" } } }, "output": { "type": "structure", "members": {} } }, "CreateActivation": { "input": { "type": "structure", "required": [ "IamRole" ], "members": { "Description": {}, "DefaultInstanceName": {}, "IamRole": {}, "RegistrationLimit": { "type": "integer" }, "ExpirationDate": { "type": "timestamp" } } }, "output": { "type": "structure", "members": { "ActivationId": {}, "ActivationCode": {} } } }, "CreateAssociation": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "DocumentVersion": {}, "InstanceId": {}, "Parameters": { "shape": "Sq" }, "Targets": { "shape": "Su" }, "ScheduleExpression": {}, "OutputLocation": { "shape": "S10" } } }, "output": { "type": "structure", "members": { "AssociationDescription": { "shape": "S16" } } } }, "CreateAssociationBatch": { "input": { "type": "structure", "required": [ "Entries" ], "members": { "Entries": { "type": "list", "member": { "shape": "S1j", "locationName": "entries" } } } }, "output": { "type": "structure", "members": { "Successful": { "type": "list", "member": { "shape": "S16", "locationName": "AssociationDescription" } }, "Failed": { "type": "list", "member": { "locationName": "FailedCreateAssociationEntry", "type": "structure", "members": { "Entry": { "shape": "S1j" }, "Message": {}, "Fault": {} } } } } } }, "CreateDocument": { "input": { "type": "structure", "required": [ "Content", "Name" ], "members": { "Content": {}, "Name": {}, "DocumentType": {} } }, "output": { "type": "structure", "members": { "DocumentDescription": { "shape": "S1u" } } } }, "CreateMaintenanceWindow": { "input": { "type": "structure", "required": [ "Name", "Schedule", "Duration", "Cutoff", "AllowUnassociatedTargets" ], "members": { "Name": {}, "Schedule": {}, "Duration": { "type": "integer" }, "Cutoff": { "type": "integer" }, "AllowUnassociatedTargets": { "type": "boolean" }, "ClientToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "WindowId": {} } } }, "CreatePatchBaseline": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "GlobalFilters": { "shape": "S2m" }, "ApprovalRules": { "shape": "S2s" }, "ApprovedPatches": { "shape": "S2w" }, "RejectedPatches": { "shape": "S2w" }, "Description": {}, "ClientToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "BaselineId": {} } } }, "DeleteActivation": { "input": { "type": "structure", "required": [ "ActivationId" ], "members": { "ActivationId": {} } }, "output": { "type": "structure", "members": {} } }, "DeleteAssociation": { "input": { "type": "structure", "members": { "Name": {}, "InstanceId": {}, "AssociationId": {} } }, "output": { "type": "structure", "members": {} } }, "DeleteDocument": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "type": "structure", "members": {} } }, "DeleteMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {} } }, "output": { "type": "structure", "members": { "WindowId": {} } } }, "DeleteParameter": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {} } }, "output": { "type": "structure", "members": {} } }, "DeletePatchBaseline": { "input": { "type": "structure", "required": [ "BaselineId" ], "members": { "BaselineId": {} } }, "output": { "type": "structure", "members": { "BaselineId": {} } } }, "DeregisterManagedInstance": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {} } }, "output": { "type": "structure", "members": {} } }, "DeregisterPatchBaselineForPatchGroup": { "input": { "type": "structure", "required": [ "BaselineId", "PatchGroup" ], "members": { "BaselineId": {}, "PatchGroup": {} } }, "output": { "type": "structure", "members": { "BaselineId": {}, "PatchGroup": {} } } }, "DeregisterTargetFromMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId", "WindowTargetId" ], "members": { "WindowId": {}, "WindowTargetId": {} } }, "output": { "type": "structure", "members": { "WindowId": {}, "WindowTargetId": {} } } }, "DeregisterTaskFromMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId", "WindowTaskId" ], "members": { "WindowId": {}, "WindowTaskId": {} } }, "output": { "type": "structure", "members": { "WindowId": {}, "WindowTaskId": {} } } }, "DescribeActivations": { "input": { "type": "structure", "members": { "Filters": { "type": "list", "member": { "type": "structure", "members": { "FilterKey": {}, "FilterValues": { "type": "list", "member": {} } } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "ActivationList": { "type": "list", "member": { "type": "structure", "members": { "ActivationId": {}, "Description": {}, "DefaultInstanceName": {}, "IamRole": {}, "RegistrationLimit": { "type": "integer" }, "RegistrationsCount": { "type": "integer" }, "ExpirationDate": { "type": "timestamp" }, "Expired": { "type": "boolean" }, "CreatedDate": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeAssociation": { "input": { "type": "structure", "members": { "Name": {}, "InstanceId": {}, "AssociationId": {} } }, "output": { "type": "structure", "members": { "AssociationDescription": { "shape": "S16" } } } }, "DescribeAutomationExecutions": { "input": { "type": "structure", "members": { "Filters": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Values" ], "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "AutomationExecutionMetadataList": { "type": "list", "member": { "type": "structure", "members": { "AutomationExecutionId": {}, "DocumentName": {}, "DocumentVersion": {}, "AutomationExecutionStatus": {}, "ExecutionStartTime": { "type": "timestamp" }, "ExecutionEndTime": { "type": "timestamp" }, "ExecutedBy": {}, "LogFile": {}, "Outputs": { "shape": "S4h" } } } }, "NextToken": {} } } }, "DescribeAvailablePatches": { "input": { "type": "structure", "members": { "Filters": { "shape": "S4m" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Patches": { "type": "list", "member": { "shape": "S4u" } }, "NextToken": {} } } }, "DescribeDocument": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "DocumentVersion": {} } }, "output": { "type": "structure", "members": { "Document": { "shape": "S1u" } } } }, "DescribeDocumentPermission": { "input": { "type": "structure", "required": [ "Name", "PermissionType" ], "members": { "Name": {}, "PermissionType": {} } }, "output": { "type": "structure", "members": { "AccountIds": { "shape": "S5b" } } } }, "DescribeEffectiveInstanceAssociations": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Associations": { "type": "list", "member": { "type": "structure", "members": { "AssociationId": {}, "InstanceId": {}, "Content": {} } } }, "NextToken": {} } } }, "DescribeEffectivePatchesForPatchBaseline": { "input": { "type": "structure", "required": [ "BaselineId" ], "members": { "BaselineId": {}, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "EffectivePatches": { "type": "list", "member": { "type": "structure", "members": { "Patch": { "shape": "S4u" }, "PatchStatus": { "type": "structure", "members": { "DeploymentStatus": {}, "ApprovalDate": { "type": "timestamp" } } } } } }, "NextToken": {} } } }, "DescribeInstanceAssociationsStatus": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "InstanceAssociationStatusInfos": { "type": "list", "member": { "type": "structure", "members": { "AssociationId": {}, "Name": {}, "DocumentVersion": {}, "InstanceId": {}, "ExecutionDate": { "type": "timestamp" }, "Status": {}, "DetailedStatus": {}, "ExecutionSummary": {}, "ErrorCode": {}, "OutputUrl": { "type": "structure", "members": { "S3OutputUrl": { "type": "structure", "members": { "OutputUrl": {} } } } } } } }, "NextToken": {} } } }, "DescribeInstanceInformation": { "input": { "type": "structure", "members": { "InstanceInformationFilterList": { "type": "list", "member": { "locationName": "InstanceInformationFilter", "type": "structure", "required": [ "key", "valueSet" ], "members": { "key": {}, "valueSet": { "shape": "S61" } } } }, "Filters": { "type": "list", "member": { "locationName": "InstanceInformationStringFilter", "type": "structure", "required": [ "Key", "Values" ], "members": { "Key": {}, "Values": { "shape": "S61" } } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "InstanceInformationList": { "type": "list", "member": { "locationName": "InstanceInformation", "type": "structure", "members": { "InstanceId": {}, "PingStatus": {}, "LastPingDateTime": { "type": "timestamp" }, "AgentVersion": {}, "IsLatestVersion": { "type": "boolean" }, "PlatformType": {}, "PlatformName": {}, "PlatformVersion": {}, "ActivationId": {}, "IamRole": {}, "RegistrationDate": { "type": "timestamp" }, "ResourceType": {}, "Name": {}, "IPAddress": {}, "ComputerName": {}, "AssociationStatus": {}, "LastAssociationExecutionDate": { "type": "timestamp" }, "LastSuccessfulAssociationExecutionDate": { "type": "timestamp" }, "AssociationOverview": { "type": "structure", "members": { "DetailedStatus": {}, "InstanceAssociationStatusAggregatedCount": { "type": "map", "key": {}, "value": { "type": "integer" } } } } } } }, "NextToken": {} } } }, "DescribeInstancePatchStates": { "input": { "type": "structure", "required": [ "InstanceIds" ], "members": { "InstanceIds": { "shape": "Sb" }, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "InstancePatchStates": { "type": "list", "member": { "shape": "S6l" } }, "NextToken": {} } } }, "DescribeInstancePatchStatesForPatchGroup": { "input": { "type": "structure", "required": [ "PatchGroup" ], "members": { "PatchGroup": {}, "Filters": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Values", "Type" ], "members": { "Key": {}, "Values": { "type": "list", "member": {} }, "Type": {} } } }, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "InstancePatchStates": { "type": "list", "member": { "shape": "S6l" } }, "NextToken": {} } } }, "DescribeInstancePatches": { "input": { "type": "structure", "required": [ "InstanceId" ], "members": { "InstanceId": {}, "Filters": { "shape": "S4m" }, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Patches": { "type": "list", "member": { "type": "structure", "required": [ "Title", "KBId", "Classification", "Severity", "State", "InstalledTime" ], "members": { "Title": {}, "KBId": {}, "Classification": {}, "Severity": {}, "State": {}, "InstalledTime": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeMaintenanceWindowExecutionTaskInvocations": { "input": { "type": "structure", "required": [ "WindowExecutionId", "TaskId" ], "members": { "WindowExecutionId": {}, "TaskId": {}, "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "WindowExecutionTaskInvocationIdentities": { "type": "list", "member": { "type": "structure", "members": { "WindowExecutionId": {}, "TaskExecutionId": {}, "InvocationId": {}, "ExecutionId": {}, "Parameters": { "type": "string", "sensitive": true }, "Status": {}, "StatusDetails": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "OwnerInformation": { "shape": "S6n" }, "WindowTargetId": {} } } }, "NextToken": {} } } }, "DescribeMaintenanceWindowExecutionTasks": { "input": { "type": "structure", "required": [ "WindowExecutionId" ], "members": { "WindowExecutionId": {}, "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "WindowExecutionTaskIdentities": { "type": "list", "member": { "type": "structure", "members": { "WindowExecutionId": {}, "TaskExecutionId": {}, "Status": {}, "StatusDetails": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" }, "TaskArn": {}, "TaskType": {} } } }, "NextToken": {} } } }, "DescribeMaintenanceWindowExecutions": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {}, "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "WindowExecutions": { "type": "list", "member": { "type": "structure", "members": { "WindowId": {}, "WindowExecutionId": {}, "Status": {}, "StatusDetails": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" } } } }, "NextToken": {} } } }, "DescribeMaintenanceWindowTargets": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {}, "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Targets": { "type": "list", "member": { "type": "structure", "members": { "WindowId": {}, "WindowTargetId": {}, "ResourceType": {}, "Targets": { "shape": "Su" }, "OwnerInformation": { "shape": "S6n" } } } }, "NextToken": {} } } }, "DescribeMaintenanceWindowTasks": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {}, "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Tasks": { "type": "list", "member": { "type": "structure", "members": { "WindowId": {}, "WindowTaskId": {}, "TaskArn": {}, "Type": {}, "Targets": { "shape": "Su" }, "TaskParameters": { "shape": "S8d" }, "Priority": { "type": "integer" }, "LoggingInfo": { "shape": "S8j" }, "ServiceRoleArn": {}, "MaxConcurrency": {}, "MaxErrors": {} } } }, "NextToken": {} } } }, "DescribeMaintenanceWindows": { "input": { "type": "structure", "members": { "Filters": { "shape": "S7f" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "WindowIdentities": { "type": "list", "member": { "type": "structure", "members": { "WindowId": {}, "Name": {}, "Enabled": { "type": "boolean" }, "Duration": { "type": "integer" }, "Cutoff": { "type": "integer" } } } }, "NextToken": {} } } }, "DescribeParameters": { "input": { "type": "structure", "members": { "Filters": { "type": "list", "member": { "type": "structure", "required": [ "Values" ], "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Parameters": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Type": {}, "KeyId": {}, "LastModifiedDate": { "type": "timestamp" }, "LastModifiedUser": {}, "Description": {} } } }, "NextToken": {} } } }, "DescribePatchBaselines": { "input": { "type": "structure", "members": { "Filters": { "shape": "S4m" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "BaselineIdentities": { "type": "list", "member": { "shape": "S96" } }, "NextToken": {} } } }, "DescribePatchGroupState": { "input": { "type": "structure", "required": [ "PatchGroup" ], "members": { "PatchGroup": {} } }, "output": { "type": "structure", "members": { "Instances": { "type": "integer" }, "InstancesWithInstalledPatches": { "type": "integer" }, "InstancesWithInstalledOtherPatches": { "type": "integer" }, "InstancesWithMissingPatches": { "type": "integer" }, "InstancesWithFailedPatches": { "type": "integer" }, "InstancesWithNotApplicablePatches": { "type": "integer" } } } }, "DescribePatchGroups": { "input": { "type": "structure", "members": { "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Mappings": { "type": "list", "member": { "type": "structure", "members": { "PatchGroup": {}, "BaselineIdentity": { "shape": "S96" } } } }, "NextToken": {} } } }, "GetAutomationExecution": { "input": { "type": "structure", "required": [ "AutomationExecutionId" ], "members": { "AutomationExecutionId": {} } }, "output": { "type": "structure", "members": { "AutomationExecution": { "type": "structure", "members": { "AutomationExecutionId": {}, "DocumentName": {}, "DocumentVersion": {}, "ExecutionStartTime": { "type": "timestamp" }, "ExecutionEndTime": { "type": "timestamp" }, "AutomationExecutionStatus": {}, "StepExecutions": { "type": "list", "member": { "type": "structure", "members": { "StepName": {}, "Action": {}, "ExecutionStartTime": { "type": "timestamp" }, "ExecutionEndTime": { "type": "timestamp" }, "StepStatus": {}, "ResponseCode": {}, "Inputs": { "type": "map", "key": {}, "value": {} }, "Outputs": { "shape": "S4h" }, "Response": {}, "FailureMessage": {} } } }, "Parameters": { "shape": "S4h" }, "Outputs": { "shape": "S4h" }, "FailureMessage": {} } } } } }, "GetCommandInvocation": { "input": { "type": "structure", "required": [ "CommandId", "InstanceId" ], "members": { "CommandId": {}, "InstanceId": {}, "PluginName": {} } }, "output": { "type": "structure", "members": { "CommandId": {}, "InstanceId": {}, "Comment": {}, "DocumentName": {}, "PluginName": {}, "ResponseCode": { "type": "integer" }, "ExecutionStartDateTime": {}, "ExecutionElapsedTime": {}, "ExecutionEndDateTime": {}, "Status": {}, "StatusDetails": {}, "StandardOutputContent": {}, "StandardOutputUrl": {}, "StandardErrorContent": {}, "StandardErrorUrl": {} } } }, "GetDefaultPatchBaseline": { "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "BaselineId": {} } } }, "GetDeployablePatchSnapshotForInstance": { "input": { "type": "structure", "required": [ "InstanceId", "SnapshotId" ], "members": { "InstanceId": {}, "SnapshotId": {} } }, "output": { "type": "structure", "members": { "InstanceId": {}, "SnapshotId": {}, "SnapshotDownloadUrl": {} } } }, "GetDocument": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "DocumentVersion": {} } }, "output": { "type": "structure", "members": { "Name": {}, "DocumentVersion": {}, "Content": {}, "DocumentType": {} } } }, "GetInventory": { "input": { "type": "structure", "members": { "Filters": { "shape": "Sa4" }, "ResultAttributes": { "type": "list", "member": { "locationName": "ResultAttribute", "type": "structure", "required": [ "TypeName" ], "members": { "TypeName": {} } } }, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Entities": { "type": "list", "member": { "locationName": "Entity", "type": "structure", "members": { "Id": {}, "Data": { "type": "map", "key": {}, "value": { "type": "structure", "required": [ "TypeName", "SchemaVersion", "Content" ], "members": { "TypeName": {}, "SchemaVersion": {}, "CaptureTime": {}, "ContentHash": {}, "Content": { "shape": "San" } } } } } } }, "NextToken": {} } } }, "GetInventorySchema": { "input": { "type": "structure", "members": { "TypeName": {}, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Schemas": { "type": "list", "member": { "type": "structure", "required": [ "TypeName", "Attributes" ], "members": { "TypeName": {}, "Version": {}, "Attributes": { "type": "list", "member": { "locationName": "Attribute", "type": "structure", "required": [ "Name", "DataType" ], "members": { "Name": {}, "DataType": {} } } } } } }, "NextToken": {} } } }, "GetMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {} } }, "output": { "type": "structure", "members": { "WindowId": {}, "Name": {}, "Schedule": {}, "Duration": { "type": "integer" }, "Cutoff": { "type": "integer" }, "AllowUnassociatedTargets": { "type": "boolean" }, "Enabled": { "type": "boolean" }, "CreatedDate": { "type": "timestamp" }, "ModifiedDate": { "type": "timestamp" } } } }, "GetMaintenanceWindowExecution": { "input": { "type": "structure", "required": [ "WindowExecutionId" ], "members": { "WindowExecutionId": {} } }, "output": { "type": "structure", "members": { "WindowExecutionId": {}, "TaskIds": { "type": "list", "member": {} }, "Status": {}, "StatusDetails": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" } } } }, "GetMaintenanceWindowExecutionTask": { "input": { "type": "structure", "required": [ "WindowExecutionId", "TaskId" ], "members": { "WindowExecutionId": {}, "TaskId": {} } }, "output": { "type": "structure", "members": { "WindowExecutionId": {}, "TaskExecutionId": {}, "TaskArn": {}, "ServiceRole": {}, "Type": {}, "TaskParameters": { "type": "list", "member": { "shape": "S8d" }, "sensitive": true }, "Priority": { "type": "integer" }, "MaxConcurrency": {}, "MaxErrors": {}, "Status": {}, "StatusDetails": {}, "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" } } } }, "GetParameterHistory": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "WithDecryption": { "type": "boolean" }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Parameters": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Type": {}, "KeyId": {}, "LastModifiedDate": { "type": "timestamp" }, "LastModifiedUser": {}, "Description": {}, "Value": {} } } }, "NextToken": {} } } }, "GetParameters": { "input": { "type": "structure", "required": [ "Names" ], "members": { "Names": { "shape": "Sbf" }, "WithDecryption": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "Parameters": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Type": {}, "Value": {} } } }, "InvalidParameters": { "shape": "Sbf" } } } }, "GetPatchBaseline": { "input": { "type": "structure", "required": [ "BaselineId" ], "members": { "BaselineId": {} } }, "output": { "type": "structure", "members": { "BaselineId": {}, "Name": {}, "GlobalFilters": { "shape": "S2m" }, "ApprovalRules": { "shape": "S2s" }, "ApprovedPatches": { "shape": "S2w" }, "RejectedPatches": { "shape": "S2w" }, "PatchGroups": { "type": "list", "member": {} }, "CreatedDate": { "type": "timestamp" }, "ModifiedDate": { "type": "timestamp" }, "Description": {} } } }, "GetPatchBaselineForPatchGroup": { "input": { "type": "structure", "required": [ "PatchGroup" ], "members": { "PatchGroup": {} } }, "output": { "type": "structure", "members": { "BaselineId": {}, "PatchGroup": {} } } }, "ListAssociations": { "input": { "type": "structure", "members": { "AssociationFilterList": { "type": "list", "member": { "locationName": "AssociationFilter", "type": "structure", "required": [ "key", "value" ], "members": { "key": {}, "value": {} } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "Associations": { "type": "list", "member": { "locationName": "Association", "type": "structure", "members": { "Name": {}, "InstanceId": {}, "AssociationId": {}, "DocumentVersion": {}, "Targets": { "shape": "Su" }, "LastExecutionDate": { "type": "timestamp" }, "Overview": { "shape": "S1c" }, "ScheduleExpression": {} } } }, "NextToken": {} } } }, "ListCommandInvocations": { "input": { "type": "structure", "members": { "CommandId": {}, "InstanceId": {}, "MaxResults": { "type": "integer" }, "NextToken": {}, "Filters": { "shape": "Sby" }, "Details": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "CommandInvocations": { "type": "list", "member": { "type": "structure", "members": { "CommandId": {}, "InstanceId": {}, "InstanceName": {}, "Comment": {}, "DocumentName": {}, "RequestedDateTime": { "type": "timestamp" }, "Status": {}, "StatusDetails": {}, "TraceOutput": {}, "StandardOutputUrl": {}, "StandardErrorUrl": {}, "CommandPlugins": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Status": {}, "StatusDetails": {}, "ResponseCode": { "type": "integer" }, "ResponseStartDateTime": { "type": "timestamp" }, "ResponseFinishDateTime": { "type": "timestamp" }, "Output": {}, "StandardOutputUrl": {}, "StandardErrorUrl": {}, "OutputS3Region": {}, "OutputS3BucketName": {}, "OutputS3KeyPrefix": {} } } }, "ServiceRole": {}, "NotificationConfig": { "shape": "Scb" } } } }, "NextToken": {} } } }, "ListCommands": { "input": { "type": "structure", "members": { "CommandId": {}, "InstanceId": {}, "MaxResults": { "type": "integer" }, "NextToken": {}, "Filters": { "shape": "Sby" } } }, "output": { "type": "structure", "members": { "Commands": { "type": "list", "member": { "shape": "Scj" } }, "NextToken": {} } } }, "ListDocumentVersions": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "DocumentVersions": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "DocumentVersion": {}, "CreatedDate": { "type": "timestamp" }, "IsDefaultVersion": { "type": "boolean" } } } }, "NextToken": {} } } }, "ListDocuments": { "input": { "type": "structure", "members": { "DocumentFilterList": { "type": "list", "member": { "locationName": "DocumentFilter", "type": "structure", "required": [ "key", "value" ], "members": { "key": {}, "value": {} } } }, "MaxResults": { "type": "integer" }, "NextToken": {} } }, "output": { "type": "structure", "members": { "DocumentIdentifiers": { "type": "list", "member": { "locationName": "DocumentIdentifier", "type": "structure", "members": { "Name": {}, "Owner": {}, "PlatformTypes": { "shape": "S28" }, "DocumentVersion": {}, "DocumentType": {}, "SchemaVersion": {} } } }, "NextToken": {} } } }, "ListInventoryEntries": { "input": { "type": "structure", "required": [ "InstanceId", "TypeName" ], "members": { "InstanceId": {}, "TypeName": {}, "Filters": { "shape": "Sa4" }, "NextToken": {}, "MaxResults": { "type": "integer" } } }, "output": { "type": "structure", "members": { "TypeName": {}, "InstanceId": {}, "SchemaVersion": {}, "CaptureTime": {}, "Entries": { "shape": "San" }, "NextToken": {} } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceType", "ResourceId" ], "members": { "ResourceType": {}, "ResourceId": {} } }, "output": { "type": "structure", "members": { "TagList": { "shape": "S4" } } } }, "ModifyDocumentPermission": { "input": { "type": "structure", "required": [ "Name", "PermissionType" ], "members": { "Name": {}, "PermissionType": {}, "AccountIdsToAdd": { "shape": "S5b" }, "AccountIdsToRemove": { "shape": "S5b" } } }, "output": { "type": "structure", "members": {} } }, "PutInventory": { "input": { "type": "structure", "required": [ "InstanceId", "Items" ], "members": { "InstanceId": {}, "Items": { "type": "list", "member": { "locationName": "Item", "type": "structure", "required": [ "TypeName", "SchemaVersion", "CaptureTime" ], "members": { "TypeName": {}, "SchemaVersion": {}, "CaptureTime": {}, "ContentHash": {}, "Content": { "shape": "San" } } } } } }, "output": { "type": "structure", "members": {} } }, "PutParameter": { "input": { "type": "structure", "required": [ "Name", "Value", "Type" ], "members": { "Name": {}, "Description": {}, "Value": {}, "Type": {}, "KeyId": {}, "Overwrite": { "type": "boolean" } } }, "output": { "type": "structure", "members": {} } }, "RegisterDefaultPatchBaseline": { "input": { "type": "structure", "required": [ "BaselineId" ], "members": { "BaselineId": {} } }, "output": { "type": "structure", "members": { "BaselineId": {} } } }, "RegisterPatchBaselineForPatchGroup": { "input": { "type": "structure", "required": [ "BaselineId", "PatchGroup" ], "members": { "BaselineId": {}, "PatchGroup": {} } }, "output": { "type": "structure", "members": { "BaselineId": {}, "PatchGroup": {} } } }, "RegisterTargetWithMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId", "ResourceType", "Targets" ], "members": { "WindowId": {}, "ResourceType": {}, "Targets": { "shape": "Su" }, "OwnerInformation": { "shape": "S6n" }, "ClientToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "WindowTargetId": {} } } }, "RegisterTaskWithMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId", "Targets", "TaskArn", "ServiceRoleArn", "TaskType", "MaxConcurrency", "MaxErrors" ], "members": { "WindowId": {}, "Targets": { "shape": "Su" }, "TaskArn": {}, "ServiceRoleArn": {}, "TaskType": {}, "TaskParameters": { "shape": "S8d" }, "Priority": { "type": "integer" }, "MaxConcurrency": {}, "MaxErrors": {}, "LoggingInfo": { "shape": "S8j" }, "ClientToken": { "idempotencyToken": true } } }, "output": { "type": "structure", "members": { "WindowTaskId": {} } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceType", "ResourceId", "TagKeys" ], "members": { "ResourceType": {}, "ResourceId": {}, "TagKeys": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": {} } }, "SendCommand": { "input": { "type": "structure", "required": [ "DocumentName" ], "members": { "InstanceIds": { "shape": "Sb" }, "Targets": { "shape": "Su" }, "DocumentName": {}, "DocumentHash": {}, "DocumentHashType": {}, "TimeoutSeconds": { "type": "integer" }, "Comment": {}, "Parameters": { "shape": "Sq" }, "OutputS3Region": {}, "OutputS3BucketName": {}, "OutputS3KeyPrefix": {}, "MaxConcurrency": {}, "MaxErrors": {}, "ServiceRoleArn": {}, "NotificationConfig": { "shape": "Scb" } } }, "output": { "type": "structure", "members": { "Command": { "shape": "Scj" } } } }, "StartAutomationExecution": { "input": { "type": "structure", "required": [ "DocumentName" ], "members": { "DocumentName": {}, "DocumentVersion": {}, "Parameters": { "shape": "S4h" } } }, "output": { "type": "structure", "members": { "AutomationExecutionId": {} } } }, "StopAutomationExecution": { "input": { "type": "structure", "required": [ "AutomationExecutionId" ], "members": { "AutomationExecutionId": {} } }, "output": { "type": "structure", "members": {} } }, "UpdateAssociation": { "input": { "type": "structure", "required": [ "AssociationId" ], "members": { "AssociationId": {}, "Parameters": { "shape": "Sq" }, "DocumentVersion": {}, "ScheduleExpression": {}, "OutputLocation": { "shape": "S10" } } }, "output": { "type": "structure", "members": { "AssociationDescription": { "shape": "S16" } } } }, "UpdateAssociationStatus": { "input": { "type": "structure", "required": [ "Name", "InstanceId", "AssociationStatus" ], "members": { "Name": {}, "InstanceId": {}, "AssociationStatus": { "shape": "S18" } } }, "output": { "type": "structure", "members": { "AssociationDescription": { "shape": "S16" } } } }, "UpdateDocument": { "input": { "type": "structure", "required": [ "Content", "Name" ], "members": { "Content": {}, "Name": {}, "DocumentVersion": {} } }, "output": { "type": "structure", "members": { "DocumentDescription": { "shape": "S1u" } } } }, "UpdateDocumentDefaultVersion": { "input": { "type": "structure", "required": [ "Name", "DocumentVersion" ], "members": { "Name": {}, "DocumentVersion": {} } }, "output": { "type": "structure", "members": { "Description": { "type": "structure", "members": { "Name": {}, "DefaultVersion": {} } } } } }, "UpdateMaintenanceWindow": { "input": { "type": "structure", "required": [ "WindowId" ], "members": { "WindowId": {}, "Name": {}, "Schedule": {}, "Duration": { "type": "integer" }, "Cutoff": { "type": "integer" }, "AllowUnassociatedTargets": { "type": "boolean" }, "Enabled": { "type": "boolean" } } }, "output": { "type": "structure", "members": { "WindowId": {}, "Name": {}, "Schedule": {}, "Duration": { "type": "integer" }, "Cutoff": { "type": "integer" }, "AllowUnassociatedTargets": { "type": "boolean" }, "Enabled": { "type": "boolean" } } } }, "UpdateManagedInstanceRole": { "input": { "type": "structure", "required": [ "InstanceId", "IamRole" ], "members": { "InstanceId": {}, "IamRole": {} } }, "output": { "type": "structure", "members": {} } }, "UpdatePatchBaseline": { "input": { "type": "structure", "required": [ "BaselineId" ], "members": { "BaselineId": {}, "Name": {}, "GlobalFilters": { "shape": "S2m" }, "ApprovalRules": { "shape": "S2s" }, "ApprovedPatches": { "shape": "S2w" }, "RejectedPatches": { "shape": "S2w" }, "Description": {} } }, "output": { "type": "structure", "members": { "BaselineId": {}, "Name": {}, "GlobalFilters": { "shape": "S2m" }, "ApprovalRules": { "shape": "S2s" }, "ApprovedPatches": { "shape": "S2w" }, "RejectedPatches": { "shape": "S2w" }, "CreatedDate": { "type": "timestamp" }, "ModifiedDate": { "type": "timestamp" }, "Description": {} } } } }, "shapes": { "S4": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {} } } }, "Sb": { "type": "list", "member": {} }, "Sq": { "type": "map", "key": {}, "value": { "type": "list", "member": {} } }, "Su": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } }, "S10": { "type": "structure", "members": { "S3Location": { "type": "structure", "members": { "OutputS3Region": {}, "OutputS3BucketName": {}, "OutputS3KeyPrefix": {} } } } }, "S16": { "type": "structure", "members": { "Name": {}, "InstanceId": {}, "Date": { "type": "timestamp" }, "LastUpdateAssociationDate": { "type": "timestamp" }, "Status": { "shape": "S18" }, "Overview": { "shape": "S1c" }, "DocumentVersion": {}, "Parameters": { "shape": "Sq" }, "AssociationId": {}, "Targets": { "shape": "Su" }, "ScheduleExpression": {}, "OutputLocation": { "shape": "S10" }, "LastExecutionDate": { "type": "timestamp" }, "LastSuccessfulExecutionDate": { "type": "timestamp" } } }, "S18": { "type": "structure", "required": [ "Date", "Name", "Message" ], "members": { "Date": { "type": "timestamp" }, "Name": {}, "Message": {}, "AdditionalInfo": {} } }, "S1c": { "type": "structure", "members": { "Status": {}, "DetailedStatus": {}, "AssociationStatusAggregatedCount": { "type": "map", "key": {}, "value": { "type": "integer" } } } }, "S1j": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "InstanceId": {}, "Parameters": { "shape": "Sq" }, "DocumentVersion": {}, "Targets": { "shape": "Su" }, "ScheduleExpression": {}, "OutputLocation": { "shape": "S10" } } }, "S1u": { "type": "structure", "members": { "Sha1": {}, "Hash": {}, "HashType": {}, "Name": {}, "Owner": {}, "CreatedDate": { "type": "timestamp" }, "Status": {}, "DocumentVersion": {}, "Description": {}, "Parameters": { "type": "list", "member": { "locationName": "DocumentParameter", "type": "structure", "members": { "Name": {}, "Type": {}, "Description": {}, "DefaultValue": {} } } }, "PlatformTypes": { "shape": "S28" }, "DocumentType": {}, "SchemaVersion": {}, "LatestVersion": {}, "DefaultVersion": {} } }, "S28": { "type": "list", "member": { "locationName": "PlatformType" } }, "S2m": { "type": "structure", "required": [ "PatchFilters" ], "members": { "PatchFilters": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Values" ], "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } } } }, "S2s": { "type": "structure", "required": [ "PatchRules" ], "members": { "PatchRules": { "type": "list", "member": { "type": "structure", "required": [ "PatchFilterGroup", "ApproveAfterDays" ], "members": { "PatchFilterGroup": { "shape": "S2m" }, "ApproveAfterDays": { "type": "integer" } } } } } }, "S2w": { "type": "list", "member": {} }, "S4h": { "type": "map", "key": {}, "value": { "type": "list", "member": {} } }, "S4m": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } }, "S4u": { "type": "structure", "members": { "Id": {}, "ReleaseDate": { "type": "timestamp" }, "Title": {}, "Description": {}, "ContentUrl": {}, "Vendor": {}, "ProductFamily": {}, "Product": {}, "Classification": {}, "MsrcSeverity": {}, "KbNumber": {}, "MsrcNumber": {}, "Language": {} } }, "S5b": { "type": "list", "member": { "locationName": "AccountId" } }, "S61": { "type": "list", "member": { "locationName": "InstanceInformationFilterValue" } }, "S6l": { "type": "structure", "required": [ "InstanceId", "PatchGroup", "BaselineId", "OperationStartTime", "OperationEndTime", "Operation" ], "members": { "InstanceId": {}, "PatchGroup": {}, "BaselineId": {}, "SnapshotId": {}, "OwnerInformation": { "shape": "S6n" }, "InstalledCount": { "type": "integer" }, "InstalledOtherCount": { "type": "integer" }, "MissingCount": { "type": "integer" }, "FailedCount": { "type": "integer" }, "NotApplicableCount": { "type": "integer" }, "OperationStartTime": { "type": "timestamp" }, "OperationEndTime": { "type": "timestamp" }, "Operation": {} } }, "S6n": { "type": "string", "sensitive": true }, "S7f": { "type": "list", "member": { "type": "structure", "members": { "Key": {}, "Values": { "type": "list", "member": {} } } } }, "S8d": { "type": "map", "key": {}, "value": { "type": "structure", "members": { "Values": { "type": "list", "member": { "type": "string", "sensitive": true }, "sensitive": true } }, "sensitive": true }, "sensitive": true }, "S8j": { "type": "structure", "required": [ "S3BucketName", "S3Region" ], "members": { "S3BucketName": {}, "S3KeyPrefix": {}, "S3Region": {} } }, "S96": { "type": "structure", "members": { "BaselineId": {}, "BaselineName": {}, "BaselineDescription": {}, "DefaultBaseline": { "type": "boolean" } } }, "Sa4": { "type": "list", "member": { "locationName": "InventoryFilter", "type": "structure", "required": [ "Key", "Values" ], "members": { "Key": {}, "Values": { "type": "list", "member": { "locationName": "FilterValue" } }, "Type": {} } } }, "San": { "type": "list", "member": { "type": "map", "key": {}, "value": {} } }, "Sbf": { "type": "list", "member": {} }, "Sby": { "type": "list", "member": { "type": "structure", "required": [ "key", "value" ], "members": { "key": {}, "value": {} } } }, "Scb": { "type": "structure", "members": { "NotificationArn": {}, "NotificationEvents": { "type": "list", "member": {} }, "NotificationType": {} } }, "Scj": { "type": "structure", "members": { "CommandId": {}, "DocumentName": {}, "Comment": {}, "ExpiresAfter": { "type": "timestamp" }, "Parameters": { "shape": "Sq" }, "InstanceIds": { "shape": "Sb" }, "Targets": { "shape": "Su" }, "RequestedDateTime": { "type": "timestamp" }, "Status": {}, "StatusDetails": {}, "OutputS3Region": {}, "OutputS3BucketName": {}, "OutputS3KeyPrefix": {}, "MaxConcurrency": {}, "MaxErrors": {}, "TargetCount": { "type": "integer" }, "CompletedCount": { "type": "integer" }, "ErrorCount": { "type": "integer" }, "ServiceRole": {}, "NotificationConfig": { "shape": "Scb" } } } } } },{}],130:[function(require,module,exports){ module.exports={ "pagination": { "DescribeInstanceInformation": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "InstanceInformationList" }, "ListAssociations": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "Associations" }, "ListCommandInvocations": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "CommandInvocations" }, "ListCommands": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "Commands" }, "ListDocuments": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "DocumentIdentifiers" }, "DescribeActivations": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults", "result_key": "ActivationList" } } } },{}],131:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2013-06-30", "endpointPrefix": "storagegateway", "jsonVersion": "1.1", "protocol": "json", "serviceFullName": "AWS Storage Gateway", "signatureVersion": "v4", "targetPrefix": "StorageGateway_20130630", "uid": "storagegateway-2013-06-30" }, "operations": { "ActivateGateway": { "input": { "type": "structure", "required": [ "ActivationKey", "GatewayName", "GatewayTimezone", "GatewayRegion" ], "members": { "ActivationKey": {}, "GatewayName": {}, "GatewayTimezone": {}, "GatewayRegion": {}, "GatewayType": {}, "TapeDriveType": {}, "MediumChangerType": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "AddCache": { "input": { "type": "structure", "required": [ "GatewayARN", "DiskIds" ], "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "AddTagsToResource": { "input": { "type": "structure", "required": [ "ResourceARN", "Tags" ], "members": { "ResourceARN": {}, "Tags": { "shape": "Sh" } } }, "output": { "type": "structure", "members": { "ResourceARN": {} } } }, "AddUploadBuffer": { "input": { "type": "structure", "required": [ "GatewayARN", "DiskIds" ], "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "AddWorkingStorage": { "input": { "type": "structure", "required": [ "GatewayARN", "DiskIds" ], "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "CancelArchival": { "input": { "type": "structure", "required": [ "GatewayARN", "TapeARN" ], "members": { "GatewayARN": {}, "TapeARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "CancelRetrieval": { "input": { "type": "structure", "required": [ "GatewayARN", "TapeARN" ], "members": { "GatewayARN": {}, "TapeARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "CreateCachediSCSIVolume": { "input": { "type": "structure", "required": [ "GatewayARN", "VolumeSizeInBytes", "TargetName", "NetworkInterfaceId", "ClientToken" ], "members": { "GatewayARN": {}, "VolumeSizeInBytes": { "type": "long" }, "SnapshotId": {}, "TargetName": {}, "SourceVolumeARN": {}, "NetworkInterfaceId": {}, "ClientToken": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {}, "TargetARN": {} } } }, "CreateNFSFileShare": { "input": { "type": "structure", "required": [ "ClientToken", "GatewayARN", "Role", "LocationARN" ], "members": { "ClientToken": {}, "NFSFileShareDefaults": { "shape": "S15" }, "GatewayARN": {}, "KMSEncrypted": { "type": "boolean" }, "KMSKey": {}, "Role": {}, "LocationARN": {}, "DefaultStorageClass": {}, "ClientList": { "shape": "S1d" } } }, "output": { "type": "structure", "members": { "FileShareARN": {} } } }, "CreateSnapshot": { "input": { "type": "structure", "required": [ "VolumeARN", "SnapshotDescription" ], "members": { "VolumeARN": {}, "SnapshotDescription": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {}, "SnapshotId": {} } } }, "CreateSnapshotFromVolumeRecoveryPoint": { "input": { "type": "structure", "required": [ "VolumeARN", "SnapshotDescription" ], "members": { "VolumeARN": {}, "SnapshotDescription": {} } }, "output": { "type": "structure", "members": { "SnapshotId": {}, "VolumeARN": {}, "VolumeRecoveryPointTime": {} } } }, "CreateStorediSCSIVolume": { "input": { "type": "structure", "required": [ "GatewayARN", "DiskId", "PreserveExistingData", "TargetName", "NetworkInterfaceId" ], "members": { "GatewayARN": {}, "DiskId": {}, "SnapshotId": {}, "PreserveExistingData": { "type": "boolean" }, "TargetName": {}, "NetworkInterfaceId": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {}, "VolumeSizeInBytes": { "type": "long" }, "TargetARN": {} } } }, "CreateTapeWithBarcode": { "input": { "type": "structure", "required": [ "GatewayARN", "TapeSizeInBytes", "TapeBarcode" ], "members": { "GatewayARN": {}, "TapeSizeInBytes": { "type": "long" }, "TapeBarcode": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "CreateTapes": { "input": { "type": "structure", "required": [ "GatewayARN", "TapeSizeInBytes", "ClientToken", "NumTapesToCreate", "TapeBarcodePrefix" ], "members": { "GatewayARN": {}, "TapeSizeInBytes": { "type": "long" }, "ClientToken": {}, "NumTapesToCreate": { "type": "integer" }, "TapeBarcodePrefix": {} } }, "output": { "type": "structure", "members": { "TapeARNs": { "shape": "S1y" } } } }, "DeleteBandwidthRateLimit": { "input": { "type": "structure", "required": [ "GatewayARN", "BandwidthType" ], "members": { "GatewayARN": {}, "BandwidthType": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "DeleteChapCredentials": { "input": { "type": "structure", "required": [ "TargetARN", "InitiatorName" ], "members": { "TargetARN": {}, "InitiatorName": {} } }, "output": { "type": "structure", "members": { "TargetARN": {}, "InitiatorName": {} } } }, "DeleteFileShare": { "input": { "type": "structure", "required": [ "FileShareARN" ], "members": { "FileShareARN": {} } }, "output": { "type": "structure", "members": { "FileShareARN": {} } } }, "DeleteGateway": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "DeleteSnapshotSchedule": { "input": { "type": "structure", "required": [ "VolumeARN" ], "members": { "VolumeARN": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {} } } }, "DeleteTape": { "input": { "type": "structure", "required": [ "GatewayARN", "TapeARN" ], "members": { "GatewayARN": {}, "TapeARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "DeleteTapeArchive": { "input": { "type": "structure", "required": [ "TapeARN" ], "members": { "TapeARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "DeleteVolume": { "input": { "type": "structure", "required": [ "VolumeARN" ], "members": { "VolumeARN": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {} } } }, "DescribeBandwidthRateLimit": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "AverageUploadRateLimitInBitsPerSec": { "type": "long" }, "AverageDownloadRateLimitInBitsPerSec": { "type": "long" } } } }, "DescribeCache": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" }, "CacheAllocatedInBytes": { "type": "long" }, "CacheUsedPercentage": { "type": "double" }, "CacheDirtyPercentage": { "type": "double" }, "CacheHitPercentage": { "type": "double" }, "CacheMissPercentage": { "type": "double" } } } }, "DescribeCachediSCSIVolumes": { "input": { "type": "structure", "required": [ "VolumeARNs" ], "members": { "VolumeARNs": { "shape": "S2p" } } }, "output": { "type": "structure", "members": { "CachediSCSIVolumes": { "type": "list", "member": { "type": "structure", "members": { "VolumeARN": {}, "VolumeId": {}, "VolumeType": {}, "VolumeStatus": {}, "VolumeSizeInBytes": { "type": "long" }, "VolumeProgress": { "type": "double" }, "SourceSnapshotId": {}, "VolumeiSCSIAttributes": { "shape": "S2x" }, "CreatedDate": { "type": "timestamp" } } } } } } }, "DescribeChapCredentials": { "input": { "type": "structure", "required": [ "TargetARN" ], "members": { "TargetARN": {} } }, "output": { "type": "structure", "members": { "ChapCredentials": { "type": "list", "member": { "type": "structure", "members": { "TargetARN": {}, "SecretToAuthenticateInitiator": {}, "InitiatorName": {}, "SecretToAuthenticateTarget": {} } } } } } }, "DescribeGatewayInformation": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "GatewayId": {}, "GatewayName": {}, "GatewayTimezone": {}, "GatewayState": {}, "GatewayNetworkInterfaces": { "type": "list", "member": { "type": "structure", "members": { "Ipv4Address": {}, "MacAddress": {}, "Ipv6Address": {} } } }, "GatewayType": {}, "NextUpdateAvailabilityDate": {}, "LastSoftwareUpdate": {} } } }, "DescribeMaintenanceStartTime": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "HourOfDay": { "type": "integer" }, "MinuteOfHour": { "type": "integer" }, "DayOfWeek": { "type": "integer" }, "Timezone": {} } } }, "DescribeNFSFileShares": { "input": { "type": "structure", "required": [ "FileShareARNList" ], "members": { "FileShareARNList": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "NFSFileShareInfoList": { "type": "list", "member": { "type": "structure", "members": { "NFSFileShareDefaults": { "shape": "S15" }, "FileShareARN": {}, "FileShareId": {}, "FileShareStatus": {}, "GatewayARN": {}, "KMSEncrypted": { "type": "boolean" }, "KMSKey": {}, "Path": {}, "Role": {}, "LocationARN": {}, "DefaultStorageClass": {}, "ClientList": { "shape": "S1d" } } } } } } }, "DescribeSnapshotSchedule": { "input": { "type": "structure", "required": [ "VolumeARN" ], "members": { "VolumeARN": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {}, "StartAt": { "type": "integer" }, "RecurrenceInHours": { "type": "integer" }, "Description": {}, "Timezone": {} } } }, "DescribeStorediSCSIVolumes": { "input": { "type": "structure", "required": [ "VolumeARNs" ], "members": { "VolumeARNs": { "shape": "S2p" } } }, "output": { "type": "structure", "members": { "StorediSCSIVolumes": { "type": "list", "member": { "type": "structure", "members": { "VolumeARN": {}, "VolumeId": {}, "VolumeType": {}, "VolumeStatus": {}, "VolumeSizeInBytes": { "type": "long" }, "VolumeProgress": { "type": "double" }, "VolumeDiskId": {}, "SourceSnapshotId": {}, "PreservedExistingData": { "type": "boolean" }, "VolumeiSCSIAttributes": { "shape": "S2x" }, "CreatedDate": { "type": "timestamp" } } } } } } }, "DescribeTapeArchives": { "input": { "type": "structure", "members": { "TapeARNs": { "shape": "S1y" }, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "TapeArchives": { "type": "list", "member": { "type": "structure", "members": { "TapeARN": {}, "TapeBarcode": {}, "TapeCreatedDate": { "type": "timestamp" }, "TapeSizeInBytes": { "type": "long" }, "CompletionTime": { "type": "timestamp" }, "RetrievedTo": {}, "TapeStatus": {} } } }, "Marker": {} } } }, "DescribeTapeRecoveryPoints": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {}, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "TapeRecoveryPointInfos": { "type": "list", "member": { "type": "structure", "members": { "TapeARN": {}, "TapeRecoveryPointTime": { "type": "timestamp" }, "TapeSizeInBytes": { "type": "long" }, "TapeStatus": {} } } }, "Marker": {} } } }, "DescribeTapes": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {}, "TapeARNs": { "shape": "S1y" }, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Tapes": { "type": "list", "member": { "type": "structure", "members": { "TapeARN": {}, "TapeBarcode": {}, "TapeCreatedDate": { "type": "timestamp" }, "TapeSizeInBytes": { "type": "long" }, "TapeStatus": {}, "VTLDevice": {}, "Progress": { "type": "double" } } } }, "Marker": {} } } }, "DescribeUploadBuffer": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" }, "UploadBufferUsedInBytes": { "type": "long" }, "UploadBufferAllocatedInBytes": { "type": "long" } } } }, "DescribeVTLDevices": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {}, "VTLDeviceARNs": { "type": "list", "member": {} }, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "VTLDevices": { "type": "list", "member": { "type": "structure", "members": { "VTLDeviceARN": {}, "VTLDeviceType": {}, "VTLDeviceVendor": {}, "VTLDeviceProductIdentifier": {}, "DeviceiSCSIAttributes": { "type": "structure", "members": { "TargetARN": {}, "NetworkInterfaceId": {}, "NetworkInterfacePort": { "type": "integer" }, "ChapEnabled": { "type": "boolean" } } } } } }, "Marker": {} } } }, "DescribeWorkingStorage": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "DiskIds": { "shape": "Sc" }, "WorkingStorageUsedInBytes": { "type": "long" }, "WorkingStorageAllocatedInBytes": { "type": "long" } } } }, "DisableGateway": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "ListFileShares": { "input": { "type": "structure", "members": { "GatewayARN": {}, "Limit": { "type": "integer" }, "Marker": {} } }, "output": { "type": "structure", "members": { "Marker": {}, "NextMarker": {}, "FileShareInfoList": { "type": "list", "member": { "type": "structure", "members": { "FileShareARN": {}, "FileShareId": {}, "FileShareStatus": {}, "GatewayARN": {} } } } } } }, "ListGateways": { "input": { "type": "structure", "members": { "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Gateways": { "type": "list", "member": { "type": "structure", "members": { "GatewayId": {}, "GatewayARN": {}, "GatewayType": {}, "GatewayOperationalState": {}, "GatewayName": {} } } }, "Marker": {} } } }, "ListLocalDisks": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "Disks": { "type": "list", "member": { "type": "structure", "members": { "DiskId": {}, "DiskPath": {}, "DiskNode": {}, "DiskStatus": {}, "DiskSizeInBytes": { "type": "long" }, "DiskAllocationType": {}, "DiskAllocationResource": {} } } } } } }, "ListTagsForResource": { "input": { "type": "structure", "required": [ "ResourceARN" ], "members": { "ResourceARN": {}, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "ResourceARN": {}, "Marker": {}, "Tags": { "shape": "Sh" } } } }, "ListTapes": { "input": { "type": "structure", "members": { "TapeARNs": { "shape": "S1y" }, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "TapeInfos": { "type": "list", "member": { "type": "structure", "members": { "TapeARN": {}, "TapeBarcode": {}, "TapeSizeInBytes": { "type": "long" }, "TapeStatus": {}, "GatewayARN": {} } } }, "Marker": {} } } }, "ListVolumeInitiators": { "input": { "type": "structure", "required": [ "VolumeARN" ], "members": { "VolumeARN": {} } }, "output": { "type": "structure", "members": { "Initiators": { "type": "list", "member": {} } } } }, "ListVolumeRecoveryPoints": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "VolumeRecoveryPointInfos": { "type": "list", "member": { "type": "structure", "members": { "VolumeARN": {}, "VolumeSizeInBytes": { "type": "long" }, "VolumeUsageInBytes": { "type": "long" }, "VolumeRecoveryPointTime": {} } } } } } }, "ListVolumes": { "input": { "type": "structure", "members": { "GatewayARN": {}, "Marker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "Marker": {}, "VolumeInfos": { "type": "list", "member": { "type": "structure", "members": { "VolumeARN": {}, "VolumeId": {}, "GatewayARN": {}, "GatewayId": {}, "VolumeType": {}, "VolumeSizeInBytes": { "type": "long" } } } } } } }, "RemoveTagsFromResource": { "input": { "type": "structure", "required": [ "ResourceARN", "TagKeys" ], "members": { "ResourceARN": {}, "TagKeys": { "type": "list", "member": {} } } }, "output": { "type": "structure", "members": { "ResourceARN": {} } } }, "ResetCache": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "RetrieveTapeArchive": { "input": { "type": "structure", "required": [ "TapeARN", "GatewayARN" ], "members": { "TapeARN": {}, "GatewayARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "RetrieveTapeRecoveryPoint": { "input": { "type": "structure", "required": [ "TapeARN", "GatewayARN" ], "members": { "TapeARN": {}, "GatewayARN": {} } }, "output": { "type": "structure", "members": { "TapeARN": {} } } }, "SetLocalConsolePassword": { "input": { "type": "structure", "required": [ "GatewayARN", "LocalConsolePassword" ], "members": { "GatewayARN": {}, "LocalConsolePassword": { "type": "string", "sensitive": true } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "ShutdownGateway": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "StartGateway": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "UpdateBandwidthRateLimit": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {}, "AverageUploadRateLimitInBitsPerSec": { "type": "long" }, "AverageDownloadRateLimitInBitsPerSec": { "type": "long" } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "UpdateChapCredentials": { "input": { "type": "structure", "required": [ "TargetARN", "SecretToAuthenticateInitiator", "InitiatorName" ], "members": { "TargetARN": {}, "SecretToAuthenticateInitiator": {}, "InitiatorName": {}, "SecretToAuthenticateTarget": {} } }, "output": { "type": "structure", "members": { "TargetARN": {}, "InitiatorName": {} } } }, "UpdateGatewayInformation": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {}, "GatewayName": {}, "GatewayTimezone": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {}, "GatewayName": {} } } }, "UpdateGatewaySoftwareNow": { "input": { "type": "structure", "required": [ "GatewayARN" ], "members": { "GatewayARN": {} } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "UpdateMaintenanceStartTime": { "input": { "type": "structure", "required": [ "GatewayARN", "HourOfDay", "MinuteOfHour", "DayOfWeek" ], "members": { "GatewayARN": {}, "HourOfDay": { "type": "integer" }, "MinuteOfHour": { "type": "integer" }, "DayOfWeek": { "type": "integer" } } }, "output": { "type": "structure", "members": { "GatewayARN": {} } } }, "UpdateNFSFileShare": { "input": { "type": "structure", "required": [ "FileShareARN" ], "members": { "FileShareARN": {}, "KMSEncrypted": { "type": "boolean" }, "KMSKey": {}, "NFSFileShareDefaults": { "shape": "S15" }, "DefaultStorageClass": {}, "ClientList": { "shape": "S1d" } } }, "output": { "type": "structure", "members": { "FileShareARN": {} } } }, "UpdateSnapshotSchedule": { "input": { "type": "structure", "required": [ "VolumeARN", "StartAt", "RecurrenceInHours" ], "members": { "VolumeARN": {}, "StartAt": { "type": "integer" }, "RecurrenceInHours": { "type": "integer" }, "Description": {} } }, "output": { "type": "structure", "members": { "VolumeARN": {} } } }, "UpdateVTLDeviceType": { "input": { "type": "structure", "required": [ "VTLDeviceARN", "DeviceType" ], "members": { "VTLDeviceARN": {}, "DeviceType": {} } }, "output": { "type": "structure", "members": { "VTLDeviceARN": {} } } } }, "shapes": { "Sc": { "type": "list", "member": {} }, "Sh": { "type": "list", "member": { "type": "structure", "required": [ "Key", "Value" ], "members": { "Key": {}, "Value": {} } } }, "S15": { "type": "structure", "members": { "FileMode": {}, "DirectoryMode": {}, "GroupId": { "type": "long" }, "OwnerId": { "type": "long" } } }, "S1d": { "type": "list", "member": {} }, "S1y": { "type": "list", "member": {} }, "S2p": { "type": "list", "member": {} }, "S2x": { "type": "structure", "members": { "TargetARN": {}, "NetworkInterfaceId": {}, "NetworkInterfacePort": { "type": "integer" }, "LunNumber": { "type": "integer" }, "ChapEnabled": { "type": "boolean" } } } } } },{}],132:[function(require,module,exports){ module.exports={ "pagination": { "DescribeCachediSCSIVolumes": { "result_key": "CachediSCSIVolumes" }, "DescribeStorediSCSIVolumes": { "result_key": "StorediSCSIVolumes" }, "DescribeTapeArchives": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "TapeArchives" }, "DescribeTapeRecoveryPoints": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "TapeRecoveryPointInfos" }, "DescribeTapes": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "Tapes" }, "DescribeVTLDevices": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "VTLDevices" }, "ListGateways": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "Gateways" }, "ListLocalDisks": { "result_key": "Disks" }, "ListVolumeRecoveryPoints": { "result_key": "VolumeRecoveryPointInfos" }, "ListVolumes": { "input_token": "Marker", "limit_key": "Limit", "output_token": "Marker", "result_key": "VolumeInfos" } } } },{}],133:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2012-08-10", "endpointPrefix": "streams.dynamodb", "jsonVersion": "1.0", "protocol": "json", "serviceFullName": "Amazon DynamoDB Streams", "signatureVersion": "v4", "signingName": "dynamodb", "targetPrefix": "DynamoDBStreams_20120810", "uid": "streams-dynamodb-2012-08-10" }, "operations": { "DescribeStream": { "input": { "type": "structure", "required": [ "StreamArn" ], "members": { "StreamArn": {}, "Limit": { "type": "integer" }, "ExclusiveStartShardId": {} } }, "output": { "type": "structure", "members": { "StreamDescription": { "type": "structure", "members": { "StreamArn": {}, "StreamLabel": {}, "StreamStatus": {}, "StreamViewType": {}, "CreationRequestDateTime": { "type": "timestamp" }, "TableName": {}, "KeySchema": { "type": "list", "member": { "type": "structure", "required": [ "AttributeName", "KeyType" ], "members": { "AttributeName": {}, "KeyType": {} } } }, "Shards": { "type": "list", "member": { "type": "structure", "members": { "ShardId": {}, "SequenceNumberRange": { "type": "structure", "members": { "StartingSequenceNumber": {}, "EndingSequenceNumber": {} } }, "ParentShardId": {} } } }, "LastEvaluatedShardId": {} } } } } }, "GetRecords": { "input": { "type": "structure", "required": [ "ShardIterator" ], "members": { "ShardIterator": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "Records": { "type": "list", "member": { "type": "structure", "members": { "eventID": {}, "eventName": {}, "eventVersion": {}, "eventSource": {}, "awsRegion": {}, "dynamodb": { "type": "structure", "members": { "ApproximateCreationDateTime": { "type": "timestamp" }, "Keys": { "shape": "Sr" }, "NewImage": { "shape": "Sr" }, "OldImage": { "shape": "Sr" }, "SequenceNumber": {}, "SizeBytes": { "type": "long" }, "StreamViewType": {} } } } } }, "NextShardIterator": {} } } }, "GetShardIterator": { "input": { "type": "structure", "required": [ "StreamArn", "ShardId", "ShardIteratorType" ], "members": { "StreamArn": {}, "ShardId": {}, "ShardIteratorType": {}, "SequenceNumber": {} } }, "output": { "type": "structure", "members": { "ShardIterator": {} } } }, "ListStreams": { "input": { "type": "structure", "members": { "TableName": {}, "Limit": { "type": "integer" }, "ExclusiveStartStreamArn": {} } }, "output": { "type": "structure", "members": { "Streams": { "type": "list", "member": { "type": "structure", "members": { "StreamArn": {}, "TableName": {}, "StreamLabel": {} } } }, "LastEvaluatedStreamArn": {} } } } }, "shapes": { "Sr": { "type": "map", "key": {}, "value": { "shape": "St" } }, "St": { "type": "structure", "members": { "S": {}, "N": {}, "B": { "type": "blob" }, "SS": { "type": "list", "member": {} }, "NS": { "type": "list", "member": {} }, "BS": { "type": "list", "member": { "type": "blob" } }, "M": { "type": "map", "key": {}, "value": { "shape": "St" } }, "L": { "type": "list", "member": { "shape": "St" } }, "NULL": { "type": "boolean" }, "BOOL": { "type": "boolean" } } } } } },{}],134:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "apiVersion": "2011-06-15", "endpointPrefix": "sts", "globalEndpoint": "sts.amazonaws.com", "protocol": "query", "serviceAbbreviation": "AWS STS", "serviceFullName": "AWS Security Token Service", "signatureVersion": "v4", "uid": "sts-2011-06-15", "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" }, "operations": { "AssumeRole": { "input": { "type": "structure", "required": [ "RoleArn", "RoleSessionName" ], "members": { "RoleArn": {}, "RoleSessionName": {}, "Policy": {}, "DurationSeconds": { "type": "integer" }, "ExternalId": {}, "SerialNumber": {}, "TokenCode": {} } }, "output": { "resultWrapper": "AssumeRoleResult", "type": "structure", "members": { "Credentials": { "shape": "Sa" }, "AssumedRoleUser": { "shape": "Sf" }, "PackedPolicySize": { "type": "integer" } } } }, "AssumeRoleWithSAML": { "input": { "type": "structure", "required": [ "RoleArn", "PrincipalArn", "SAMLAssertion" ], "members": { "RoleArn": {}, "PrincipalArn": {}, "SAMLAssertion": {}, "Policy": {}, "DurationSeconds": { "type": "integer" } } }, "output": { "resultWrapper": "AssumeRoleWithSAMLResult", "type": "structure", "members": { "Credentials": { "shape": "Sa" }, "AssumedRoleUser": { "shape": "Sf" }, "PackedPolicySize": { "type": "integer" }, "Subject": {}, "SubjectType": {}, "Issuer": {}, "Audience": {}, "NameQualifier": {} } } }, "AssumeRoleWithWebIdentity": { "input": { "type": "structure", "required": [ "RoleArn", "RoleSessionName", "WebIdentityToken" ], "members": { "RoleArn": {}, "RoleSessionName": {}, "WebIdentityToken": {}, "ProviderId": {}, "Policy": {}, "DurationSeconds": { "type": "integer" } } }, "output": { "resultWrapper": "AssumeRoleWithWebIdentityResult", "type": "structure", "members": { "Credentials": { "shape": "Sa" }, "SubjectFromWebIdentityToken": {}, "AssumedRoleUser": { "shape": "Sf" }, "PackedPolicySize": { "type": "integer" }, "Provider": {}, "Audience": {} } } }, "DecodeAuthorizationMessage": { "input": { "type": "structure", "required": [ "EncodedMessage" ], "members": { "EncodedMessage": {} } }, "output": { "resultWrapper": "DecodeAuthorizationMessageResult", "type": "structure", "members": { "DecodedMessage": {} } } }, "GetCallerIdentity": { "input": { "type": "structure", "members": {} }, "output": { "resultWrapper": "GetCallerIdentityResult", "type": "structure", "members": { "UserId": {}, "Account": {}, "Arn": {} } } }, "GetFederationToken": { "input": { "type": "structure", "required": [ "Name" ], "members": { "Name": {}, "Policy": {}, "DurationSeconds": { "type": "integer" } } }, "output": { "resultWrapper": "GetFederationTokenResult", "type": "structure", "members": { "Credentials": { "shape": "Sa" }, "FederatedUser": { "type": "structure", "required": [ "FederatedUserId", "Arn" ], "members": { "FederatedUserId": {}, "Arn": {} } }, "PackedPolicySize": { "type": "integer" } } } }, "GetSessionToken": { "input": { "type": "structure", "members": { "DurationSeconds": { "type": "integer" }, "SerialNumber": {}, "TokenCode": {} } }, "output": { "resultWrapper": "GetSessionTokenResult", "type": "structure", "members": { "Credentials": { "shape": "Sa" } } } } }, "shapes": { "Sa": { "type": "structure", "required": [ "AccessKeyId", "SecretAccessKey", "SessionToken", "Expiration" ], "members": { "AccessKeyId": {}, "SecretAccessKey": {}, "SessionToken": {}, "Expiration": { "type": "timestamp" } } }, "Sf": { "type": "structure", "required": [ "AssumedRoleId", "Arn" ], "members": { "AssumedRoleId": {}, "Arn": {} } } } } },{}],135:[function(require,module,exports){ module.exports={ "version": "2.0", "metadata": { "uid": "waf-2015-08-24", "apiVersion": "2015-08-24", "endpointPrefix": "waf", "jsonVersion": "1.1", "protocol": "json", "serviceAbbreviation": "WAF", "serviceFullName": "AWS WAF", "signatureVersion": "v4", "targetPrefix": "AWSWAF_20150824" }, "operations": { "CreateByteMatchSet": { "input": { "type": "structure", "required": [ "Name", "ChangeToken" ], "members": { "Name": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ByteMatchSet": { "shape": "S5" }, "ChangeToken": {} } } }, "CreateIPSet": { "input": { "type": "structure", "required": [ "Name", "ChangeToken" ], "members": { "Name": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "IPSet": { "shape": "Sh" }, "ChangeToken": {} } } }, "CreateRule": { "input": { "type": "structure", "required": [ "Name", "MetricName", "ChangeToken" ], "members": { "Name": {}, "MetricName": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "Rule": { "shape": "Sp" }, "ChangeToken": {} } } }, "CreateSizeConstraintSet": { "input": { "type": "structure", "required": [ "Name", "ChangeToken" ], "members": { "Name": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "SizeConstraintSet": { "shape": "Sw" }, "ChangeToken": {} } } }, "CreateSqlInjectionMatchSet": { "input": { "type": "structure", "required": [ "Name", "ChangeToken" ], "members": { "Name": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "SqlInjectionMatchSet": { "shape": "S13" }, "ChangeToken": {} } } }, "CreateWebACL": { "input": { "type": "structure", "required": [ "Name", "MetricName", "DefaultAction", "ChangeToken" ], "members": { "Name": {}, "MetricName": {}, "DefaultAction": { "shape": "S17" }, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "WebACL": { "shape": "S1a" }, "ChangeToken": {} } } }, "CreateXssMatchSet": { "input": { "type": "structure", "required": [ "Name", "ChangeToken" ], "members": { "Name": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "XssMatchSet": { "shape": "S1g" }, "ChangeToken": {} } } }, "DeleteByteMatchSet": { "input": { "type": "structure", "required": [ "ByteMatchSetId", "ChangeToken" ], "members": { "ByteMatchSetId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteIPSet": { "input": { "type": "structure", "required": [ "IPSetId", "ChangeToken" ], "members": { "IPSetId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteRule": { "input": { "type": "structure", "required": [ "RuleId", "ChangeToken" ], "members": { "RuleId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteSizeConstraintSet": { "input": { "type": "structure", "required": [ "SizeConstraintSetId", "ChangeToken" ], "members": { "SizeConstraintSetId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteSqlInjectionMatchSet": { "input": { "type": "structure", "required": [ "SqlInjectionMatchSetId", "ChangeToken" ], "members": { "SqlInjectionMatchSetId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteWebACL": { "input": { "type": "structure", "required": [ "WebACLId", "ChangeToken" ], "members": { "WebACLId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "DeleteXssMatchSet": { "input": { "type": "structure", "required": [ "XssMatchSetId", "ChangeToken" ], "members": { "XssMatchSetId": {}, "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "GetByteMatchSet": { "input": { "type": "structure", "required": [ "ByteMatchSetId" ], "members": { "ByteMatchSetId": {} } }, "output": { "type": "structure", "members": { "ByteMatchSet": { "shape": "S5" } } } }, "GetChangeToken": { "input": { "type": "structure", "members": {} }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "GetChangeTokenStatus": { "input": { "type": "structure", "required": [ "ChangeToken" ], "members": { "ChangeToken": {} } }, "output": { "type": "structure", "members": { "ChangeTokenStatus": {} } } }, "GetIPSet": { "input": { "type": "structure", "required": [ "IPSetId" ], "members": { "IPSetId": {} } }, "output": { "type": "structure", "members": { "IPSet": { "shape": "Sh" } } } }, "GetRule": { "input": { "type": "structure", "required": [ "RuleId" ], "members": { "RuleId": {} } }, "output": { "type": "structure", "members": { "Rule": { "shape": "Sp" } } } }, "GetSampledRequests": { "input": { "type": "structure", "required": [ "WebAclId", "RuleId", "TimeWindow", "MaxItems" ], "members": { "WebAclId": {}, "RuleId": {}, "TimeWindow": { "shape": "S29" }, "MaxItems": { "type": "long" } } }, "output": { "type": "structure", "members": { "SampledRequests": { "type": "list", "member": { "type": "structure", "required": [ "Request", "Weight" ], "members": { "Request": { "type": "structure", "members": { "ClientIP": {}, "Country": {}, "URI": {}, "Method": {}, "HTTPVersion": {}, "Headers": { "type": "list", "member": { "type": "structure", "members": { "Name": {}, "Value": {} } } } } }, "Weight": { "type": "long" }, "Timestamp": { "type": "timestamp" }, "Action": {} } } }, "PopulationSize": { "type": "long" }, "TimeWindow": { "shape": "S29" } } } }, "GetSizeConstraintSet": { "input": { "type": "structure", "required": [ "SizeConstraintSetId" ], "members": { "SizeConstraintSetId": {} } }, "output": { "type": "structure", "members": { "SizeConstraintSet": { "shape": "Sw" } } } }, "GetSqlInjectionMatchSet": { "input": { "type": "structure", "required": [ "SqlInjectionMatchSetId" ], "members": { "SqlInjectionMatchSetId": {} } }, "output": { "type": "structure", "members": { "SqlInjectionMatchSet": { "shape": "S13" } } } }, "GetWebACL": { "input": { "type": "structure", "required": [ "WebACLId" ], "members": { "WebACLId": {} } }, "output": { "type": "structure", "members": { "WebACL": { "shape": "S1a" } } } }, "GetXssMatchSet": { "input": { "type": "structure", "required": [ "XssMatchSetId" ], "members": { "XssMatchSetId": {} } }, "output": { "type": "structure", "members": { "XssMatchSet": { "shape": "S1g" } } } }, "ListByteMatchSets": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "ByteMatchSets": { "type": "list", "member": { "type": "structure", "required": [ "ByteMatchSetId", "Name" ], "members": { "ByteMatchSetId": {}, "Name": {} } } } } } }, "ListIPSets": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "IPSets": { "type": "list", "member": { "type": "structure", "required": [ "IPSetId", "Name" ], "members": { "IPSetId": {}, "Name": {} } } } } } }, "ListRules": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "Rules": { "type": "list", "member": { "type": "structure", "required": [ "RuleId", "Name" ], "members": { "RuleId": {}, "Name": {} } } } } } }, "ListSizeConstraintSets": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "SizeConstraintSets": { "type": "list", "member": { "type": "structure", "required": [ "SizeConstraintSetId", "Name" ], "members": { "SizeConstraintSetId": {}, "Name": {} } } } } } }, "ListSqlInjectionMatchSets": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "SqlInjectionMatchSets": { "type": "list", "member": { "type": "structure", "required": [ "SqlInjectionMatchSetId", "Name" ], "members": { "SqlInjectionMatchSetId": {}, "Name": {} } } } } } }, "ListWebACLs": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "WebACLs": { "type": "list", "member": { "type": "structure", "required": [ "WebACLId", "Name" ], "members": { "WebACLId": {}, "Name": {} } } } } } }, "ListXssMatchSets": { "input": { "type": "structure", "members": { "NextMarker": {}, "Limit": { "type": "integer" } } }, "output": { "type": "structure", "members": { "NextMarker": {}, "XssMatchSets": { "type": "list", "member": { "type": "structure", "required": [ "XssMatchSetId", "Name" ], "members": { "XssMatchSetId": {}, "Name": {} } } } } } }, "UpdateByteMatchSet": { "input": { "type": "structure", "required": [ "ByteMatchSetId", "ChangeToken", "Updates" ], "members": { "ByteMatchSetId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "ByteMatchTuple" ], "members": { "Action": {}, "ByteMatchTuple": { "shape": "S8" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateIPSet": { "input": { "type": "structure", "required": [ "IPSetId", "ChangeToken", "Updates" ], "members": { "IPSetId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "IPSetDescriptor" ], "members": { "Action": {}, "IPSetDescriptor": { "shape": "Sj" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateRule": { "input": { "type": "structure", "required": [ "RuleId", "ChangeToken", "Updates" ], "members": { "RuleId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "Predicate" ], "members": { "Action": {}, "Predicate": { "shape": "Sr" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateSizeConstraintSet": { "input": { "type": "structure", "required": [ "SizeConstraintSetId", "ChangeToken", "Updates" ], "members": { "SizeConstraintSetId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "SizeConstraint" ], "members": { "Action": {}, "SizeConstraint": { "shape": "Sy" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateSqlInjectionMatchSet": { "input": { "type": "structure", "required": [ "SqlInjectionMatchSetId", "ChangeToken", "Updates" ], "members": { "SqlInjectionMatchSetId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "SqlInjectionMatchTuple" ], "members": { "Action": {}, "SqlInjectionMatchTuple": { "shape": "S15" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateWebACL": { "input": { "type": "structure", "required": [ "WebACLId", "ChangeToken" ], "members": { "WebACLId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "ActivatedRule" ], "members": { "Action": {}, "ActivatedRule": { "shape": "S1c" } } } }, "DefaultAction": { "shape": "S17" } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } }, "UpdateXssMatchSet": { "input": { "type": "structure", "required": [ "XssMatchSetId", "ChangeToken", "Updates" ], "members": { "XssMatchSetId": {}, "ChangeToken": {}, "Updates": { "type": "list", "member": { "type": "structure", "required": [ "Action", "XssMatchTuple" ], "members": { "Action": {}, "XssMatchTuple": { "shape": "S1i" } } } } } }, "output": { "type": "structure", "members": { "ChangeToken": {} } } } }, "shapes": { "S5": { "type": "structure", "required": [ "ByteMatchSetId", "ByteMatchTuples" ], "members": { "ByteMatchSetId": {}, "Name": {}, "ByteMatchTuples": { "type": "list", "member": { "shape": "S8" } } } }, "S8": { "type": "structure", "required": [ "FieldToMatch", "TargetString", "TextTransformation", "PositionalConstraint" ], "members": { "FieldToMatch": { "shape": "S9" }, "TargetString": { "type": "blob" }, "TextTransformation": {}, "PositionalConstraint": {} } }, "S9": { "type": "structure", "required": [ "Type" ], "members": { "Type": {}, "Data": {} } }, "Sh": { "type": "structure", "required": [ "IPSetId", "IPSetDescriptors" ], "members": { "IPSetId": {}, "Name": {}, "IPSetDescriptors": { "type": "list", "member": { "shape": "Sj" } } } }, "Sj": { "type": "structure", "required": [ "Type", "Value" ], "members": { "Type": {}, "Value": {} } }, "Sp": { "type": "structure", "required": [ "RuleId", "Predicates" ], "members": { "RuleId": {}, "Name": {}, "MetricName": {}, "Predicates": { "type": "list", "member": { "shape": "Sr" } } } }, "Sr": { "type": "structure", "required": [ "Negated", "Type", "DataId" ], "members": { "Negated": { "type": "boolean" }, "Type": {}, "DataId": {} } }, "Sw": { "type": "structure", "required": [ "SizeConstraintSetId", "SizeConstraints" ], "members": { "SizeConstraintSetId": {}, "Name": {}, "SizeConstraints": { "type": "list", "member": { "shape": "Sy" } } } }, "Sy": { "type": "structure", "required": [ "FieldToMatch", "TextTransformation", "ComparisonOperator", "Size" ], "members": { "FieldToMatch": { "shape": "S9" }, "TextTransformation": {}, "ComparisonOperator": {}, "Size": { "type": "long" } } }, "S13": { "type": "structure", "required": [ "SqlInjectionMatchSetId", "SqlInjectionMatchTuples" ], "members": { "SqlInjectionMatchSetId": {}, "Name": {}, "SqlInjectionMatchTuples": { "type": "list", "member": { "shape": "S15" } } } }, "S15": { "type": "structure", "required": [ "FieldToMatch", "TextTransformation" ], "members": { "FieldToMatch": { "shape": "S9" }, "TextTransformation": {} } }, "S17": { "type": "structure", "required": [ "Type" ], "members": { "Type": {} } }, "S1a": { "type": "structure", "required": [ "WebACLId", "DefaultAction", "Rules" ], "members": { "WebACLId": {}, "Name": {}, "MetricName": {}, "DefaultAction": { "shape": "S17" }, "Rules": { "type": "list", "member": { "shape": "S1c" } } } }, "S1c": { "type": "structure", "required": [ "Priority", "RuleId", "Action" ], "members": { "Priority": { "type": "integer" }, "RuleId": {}, "Action": { "shape": "S17" } } }, "S1g": { "type": "structure", "required": [ "XssMatchSetId", "XssMatchTuples" ], "members": { "XssMatchSetId": {}, "Name": {}, "XssMatchTuples": { "type": "list", "member": { "shape": "S1i" } } } }, "S1i": { "type": "structure", "required": [ "FieldToMatch", "TextTransformation" ], "members": { "FieldToMatch": { "shape": "S9" }, "TextTransformation": {} } }, "S29": { "type": "structure", "required": [ "StartTime", "EndTime" ], "members": { "StartTime": { "type": "timestamp" }, "EndTime": { "type": "timestamp" } } } } } },{}],136:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['acm'] = {}; AWS.ACM = Service.defineService('acm', ['2015-12-08']); Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { get: function get() { var model = require('../apis/acm-2015-12-08.min.json'); model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ACM; },{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],137:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['apigateway'] = {}; AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); require('../lib/services/apigateway'); Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { get: function get() { var model = require('../apis/apigateway-2015-07-09.min.json'); model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.APIGateway; },{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/apigateway":240}],138:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['applicationautoscaling'] = {}; AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { get: function get() { var model = require('../apis/application-autoscaling-2016-02-06.min.json'); model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ApplicationAutoScaling; },{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],139:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['autoscaling'] = {}; AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { get: function get() { var model = require('../apis/autoscaling-2011-01-01.min.json'); model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.AutoScaling; },{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],140:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); module.exports = { ACM: require('./acm'), APIGateway: require('./apigateway'), ApplicationAutoScaling: require('./applicationautoscaling'), AutoScaling: require('./autoscaling'), CloudFormation: require('./cloudformation'), CloudFront: require('./cloudfront'), CloudHSM: require('./cloudhsm'), CloudTrail: require('./cloudtrail'), CloudWatch: require('./cloudwatch'), CloudWatchEvents: require('./cloudwatchevents'), CloudWatchLogs: require('./cloudwatchlogs'), CodeCommit: require('./codecommit'), CodeDeploy: require('./codedeploy'), CodePipeline: require('./codepipeline'), CognitoIdentity: require('./cognitoidentity'), CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), CognitoSync: require('./cognitosync'), ConfigService: require('./configservice'), CUR: require('./cur'), DeviceFarm: require('./devicefarm'), DirectConnect: require('./directconnect'), DynamoDB: require('./dynamodb'), DynamoDBStreams: require('./dynamodbstreams'), EC2: require('./ec2'), ECR: require('./ecr'), ECS: require('./ecs'), ElastiCache: require('./elasticache'), ElasticBeanstalk: require('./elasticbeanstalk'), ELB: require('./elb'), ELBv2: require('./elbv2'), EMR: require('./emr'), ElasticTranscoder: require('./elastictranscoder'), Firehose: require('./firehose'), GameLift: require('./gamelift'), Inspector: require('./inspector'), Iot: require('./iot'), IotData: require('./iotdata'), Kinesis: require('./kinesis'), KMS: require('./kms'), Lambda: require('./lambda'), LexRuntime: require('./lexruntime'), MachineLearning: require('./machinelearning'), MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), MobileAnalytics: require('./mobileanalytics'), OpsWorks: require('./opsworks'), Polly: require('./polly'), RDS: require('./rds'), Redshift: require('./redshift'), Rekognition: require('./rekognition'), Route53: require('./route53'), Route53Domains: require('./route53domains'), S3: require('./s3'), ServiceCatalog: require('./servicecatalog'), SES: require('./ses'), SNS: require('./sns'), SQS: require('./sqs'), SSM: require('./ssm'), StorageGateway: require('./storagegateway'), STS: require('./sts'), WAF: require('./waf') }; },{"../lib/core":201,"../lib/node_loader":198,"./acm":136,"./apigateway":137,"./applicationautoscaling":138,"./autoscaling":139,"./cloudformation":141,"./cloudfront":142,"./cloudhsm":143,"./cloudtrail":144,"./cloudwatch":145,"./cloudwatchevents":146,"./cloudwatchlogs":147,"./codecommit":148,"./codedeploy":149,"./codepipeline":150,"./cognitoidentity":151,"./cognitoidentityserviceprovider":152,"./cognitosync":153,"./configservice":154,"./cur":155,"./devicefarm":156,"./directconnect":157,"./dynamodb":158,"./dynamodbstreams":159,"./ec2":160,"./ecr":161,"./ecs":162,"./elasticache":163,"./elasticbeanstalk":164,"./elastictranscoder":165,"./elb":166,"./elbv2":167,"./emr":168,"./firehose":169,"./gamelift":170,"./inspector":171,"./iot":172,"./iotdata":173,"./kinesis":174,"./kms":175,"./lambda":176,"./lexruntime":177,"./machinelearning":178,"./marketplacecommerceanalytics":179,"./mobileanalytics":180,"./opsworks":181,"./polly":182,"./rds":183,"./redshift":184,"./rekognition":185,"./route53":186,"./route53domains":187,"./s3":188,"./servicecatalog":189,"./ses":190,"./sns":191,"./sqs":192,"./ssm":193,"./storagegateway":194,"./sts":195,"./waf":196}],141:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudformation'] = {}; AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { get: function get() { var model = require('../apis/cloudformation-2010-05-15.min.json'); model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudFormation; },{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],142:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudfront'] = {}; AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25']); require('../lib/services/cloudfront'); Object.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', { get: function get() { var model = require('../apis/cloudfront-2016-11-25.min.json'); model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination; model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudFront; },{"../apis/cloudfront-2016-11-25.min.json":12,"../apis/cloudfront-2016-11-25.paginators.json":13,"../apis/cloudfront-2016-11-25.waiters2.json":14,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/cloudfront":241}],143:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudhsm'] = {}; AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { get: function get() { var model = require('../apis/cloudhsm-2014-05-30.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudHSM; },{"../apis/cloudhsm-2014-05-30.min.json":15,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],144:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudtrail'] = {}; AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { get: function get() { var model = require('../apis/cloudtrail-2013-11-01.min.json'); model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudTrail; },{"../apis/cloudtrail-2013-11-01.min.json":16,"../apis/cloudtrail-2013-11-01.paginators.json":17,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],145:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudwatch'] = {}; AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { get: function get() { var model = require('../apis/monitoring-2010-08-01.min.json'); model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudWatch; },{"../apis/monitoring-2010-08-01.min.json":92,"../apis/monitoring-2010-08-01.paginators.json":93,"../apis/monitoring-2010-08-01.waiters2.json":94,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],146:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudwatchevents'] = {}; AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { get: function get() { var model = require('../apis/events-2015-10-07.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudWatchEvents; },{"../apis/events-2015-10-07.min.json":69,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],147:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cloudwatchlogs'] = {}; AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { get: function get() { var model = require('../apis/logs-2014-03-28.min.json'); model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CloudWatchLogs; },{"../apis/logs-2014-03-28.min.json":84,"../apis/logs-2014-03-28.paginators.json":85,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],148:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['codecommit'] = {}; AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { get: function get() { var model = require('../apis/codecommit-2015-04-13.min.json'); model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CodeCommit; },{"../apis/codecommit-2015-04-13.min.json":18,"../apis/codecommit-2015-04-13.paginators.json":19,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],149:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['codedeploy'] = {}; AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { get: function get() { var model = require('../apis/codedeploy-2014-10-06.min.json'); model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CodeDeploy; },{"../apis/codedeploy-2014-10-06.min.json":20,"../apis/codedeploy-2014-10-06.paginators.json":21,"../apis/codedeploy-2014-10-06.waiters2.json":22,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],150:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['codepipeline'] = {}; AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { get: function get() { var model = require('../apis/codepipeline-2015-07-09.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.CodePipeline; },{"../apis/codepipeline-2015-07-09.min.json":23,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],151:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cognitoidentity'] = {}; AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); require('../lib/services/cognitoidentity'); Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { get: function get() { var model = require('../apis/cognito-identity-2014-06-30.min.json'); model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CognitoIdentity; },{"../apis/cognito-identity-2014-06-30.min.json":24,"../apis/cognito-identity-2014-06-30.paginators.json":25,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/cognitoidentity":242}],152:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cognitoidentityserviceprovider'] = {}; AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { get: function get() { var model = require('../apis/cognito-idp-2016-04-18.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.CognitoIdentityServiceProvider; },{"../apis/cognito-idp-2016-04-18.min.json":26,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],153:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cognitosync'] = {}; AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { get: function get() { var model = require('../apis/cognito-sync-2014-06-30.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.CognitoSync; },{"../apis/cognito-sync-2014-06-30.min.json":27,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],154:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['configservice'] = {}; AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { get: function get() { var model = require('../apis/config-2014-11-12.min.json'); model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ConfigService; },{"../apis/config-2014-11-12.min.json":28,"../apis/config-2014-11-12.paginators.json":29,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],155:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['cur'] = {}; AWS.CUR = Service.defineService('cur', ['2017-01-06']); Object.defineProperty(apiLoader.services['cur'], '2017-01-06', { get: function get() { var model = require('../apis/cur-2017-01-06.min.json'); model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.CUR; },{"../apis/cur-2017-01-06.min.json":30,"../apis/cur-2017-01-06.paginators.json":31,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],156:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['devicefarm'] = {}; AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { get: function get() { var model = require('../apis/devicefarm-2015-06-23.min.json'); model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.DeviceFarm; },{"../apis/devicefarm-2015-06-23.min.json":32,"../apis/devicefarm-2015-06-23.paginators.json":33,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],157:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['directconnect'] = {}; AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { get: function get() { var model = require('../apis/directconnect-2012-10-25.min.json'); model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.DirectConnect; },{"../apis/directconnect-2012-10-25.min.json":34,"../apis/directconnect-2012-10-25.paginators.json":35,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],158:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['dynamodb'] = {}; AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); require('../lib/services/dynamodb'); Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { get: function get() { var model = require('../apis/dynamodb-2011-12-05.min.json'); model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { get: function get() { var model = require('../apis/dynamodb-2012-08-10.min.json'); model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.DynamoDB; },{"../apis/dynamodb-2011-12-05.min.json":36,"../apis/dynamodb-2011-12-05.paginators.json":37,"../apis/dynamodb-2011-12-05.waiters2.json":38,"../apis/dynamodb-2012-08-10.min.json":39,"../apis/dynamodb-2012-08-10.paginators.json":40,"../apis/dynamodb-2012-08-10.waiters2.json":41,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/dynamodb":243}],159:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['dynamodbstreams'] = {}; AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { get: function get() { var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.DynamoDBStreams; },{"../apis/streams.dynamodb-2012-08-10.min.json":133,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],160:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['ec2'] = {}; AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']); require('../lib/services/ec2'); Object.defineProperty(apiLoader.services['ec2'], '2016-11-15', { get: function get() { var model = require('../apis/ec2-2016-11-15.min.json'); model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination; model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.EC2; },{"../apis/ec2-2016-11-15.min.json":42,"../apis/ec2-2016-11-15.paginators.json":43,"../apis/ec2-2016-11-15.waiters2.json":44,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/ec2":244}],161:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['ecr'] = {}; AWS.ECR = Service.defineService('ecr', ['2015-09-21']); Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { get: function get() { var model = require('../apis/ecr-2015-09-21.min.json'); model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ECR; },{"../apis/ecr-2015-09-21.min.json":45,"../apis/ecr-2015-09-21.paginators.json":46,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],162:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['ecs'] = {}; AWS.ECS = Service.defineService('ecs', ['2014-11-13']); Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { get: function get() { var model = require('../apis/ecs-2014-11-13.min.json'); model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ECS; },{"../apis/ecs-2014-11-13.min.json":47,"../apis/ecs-2014-11-13.paginators.json":48,"../apis/ecs-2014-11-13.waiters2.json":49,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],163:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['elasticache'] = {}; AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { get: function get() { var model = require('../apis/elasticache-2015-02-02.min.json'); model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ElastiCache; },{"../apis/elasticache-2015-02-02.min.json":50,"../apis/elasticache-2015-02-02.paginators.json":51,"../apis/elasticache-2015-02-02.waiters2.json":52,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],164:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['elasticbeanstalk'] = {}; AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { get: function get() { var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ElasticBeanstalk; },{"../apis/elasticbeanstalk-2010-12-01.min.json":53,"../apis/elasticbeanstalk-2010-12-01.paginators.json":54,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],165:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['elastictranscoder'] = {}; AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { get: function get() { var model = require('../apis/elastictranscoder-2012-09-25.min.json'); model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ElasticTranscoder; },{"../apis/elastictranscoder-2012-09-25.min.json":63,"../apis/elastictranscoder-2012-09-25.paginators.json":64,"../apis/elastictranscoder-2012-09-25.waiters2.json":65,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],166:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['elb'] = {}; AWS.ELB = Service.defineService('elb', ['2012-06-01']); Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { get: function get() { var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ELB; },{"../apis/elasticloadbalancing-2012-06-01.min.json":55,"../apis/elasticloadbalancing-2012-06-01.paginators.json":56,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":57,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],167:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['elbv2'] = {}; AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { get: function get() { var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.ELBv2; },{"../apis/elasticloadbalancingv2-2015-12-01.min.json":58,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":59,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],168:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['emr'] = {}; AWS.EMR = Service.defineService('emr', ['2009-03-31']); Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { get: function get() { var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.EMR; },{"../apis/elasticmapreduce-2009-03-31.min.json":60,"../apis/elasticmapreduce-2009-03-31.paginators.json":61,"../apis/elasticmapreduce-2009-03-31.waiters2.json":62,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],169:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['firehose'] = {}; AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { get: function get() { var model = require('../apis/firehose-2015-08-04.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.Firehose; },{"../apis/firehose-2015-08-04.min.json":70,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],170:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['gamelift'] = {}; AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { get: function get() { var model = require('../apis/gamelift-2015-10-01.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.GameLift; },{"../apis/gamelift-2015-10-01.min.json":71,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],171:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['inspector'] = {}; AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { get: function get() { var model = require('../apis/inspector-2016-02-16.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.Inspector; },{"../apis/inspector-2016-02-16.min.json":72,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],172:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['iot'] = {}; AWS.Iot = Service.defineService('iot', ['2015-05-28']); Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { get: function get() { var model = require('../apis/iot-2015-05-28.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.Iot; },{"../apis/iot-2015-05-28.min.json":73,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],173:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['iotdata'] = {}; AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); require('../lib/services/iotdata'); Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { get: function get() { var model = require('../apis/iot-data-2015-05-28.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.IotData; },{"../apis/iot-data-2015-05-28.min.json":74,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/iotdata":245}],174:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['kinesis'] = {}; AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { get: function get() { var model = require('../apis/kinesis-2013-12-02.min.json'); model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Kinesis; },{"../apis/kinesis-2013-12-02.min.json":75,"../apis/kinesis-2013-12-02.paginators.json":76,"../apis/kinesis-2013-12-02.waiters2.json":77,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],175:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['kms'] = {}; AWS.KMS = Service.defineService('kms', ['2014-11-01']); Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { get: function get() { var model = require('../apis/kms-2014-11-01.min.json'); model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.KMS; },{"../apis/kms-2014-11-01.min.json":78,"../apis/kms-2014-11-01.paginators.json":79,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],176:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['lambda'] = {}; AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { get: function get() { var model = require('../apis/lambda-2014-11-11.min.json'); model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { get: function get() { var model = require('../apis/lambda-2015-03-31.min.json'); model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Lambda; },{"../apis/lambda-2014-11-11.min.json":80,"../apis/lambda-2014-11-11.paginators.json":81,"../apis/lambda-2015-03-31.min.json":82,"../apis/lambda-2015-03-31.paginators.json":83,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],177:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['lexruntime'] = {}; AWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']); Object.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', { get: function get() { var model = require('../apis/runtime.lex-2016-11-28.min.json'); model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.LexRuntime; },{"../apis/runtime.lex-2016-11-28.min.json":119,"../apis/runtime.lex-2016-11-28.paginators.json":120,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],178:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['machinelearning'] = {}; AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); require('../lib/services/machinelearning'); Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { get: function get() { var model = require('../apis/machinelearning-2014-12-12.min.json'); model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.MachineLearning; },{"../apis/machinelearning-2014-12-12.min.json":86,"../apis/machinelearning-2014-12-12.paginators.json":87,"../apis/machinelearning-2014-12-12.waiters2.json":88,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/machinelearning":246}],179:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['marketplacecommerceanalytics'] = {}; AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { get: function get() { var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.MarketplaceCommerceAnalytics; },{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":89,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],180:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['mobileanalytics'] = {}; AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { get: function get() { var model = require('../apis/mobileanalytics-2014-06-05.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.MobileAnalytics; },{"../apis/mobileanalytics-2014-06-05.min.json":91,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],181:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['opsworks'] = {}; AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { get: function get() { var model = require('../apis/opsworks-2013-02-18.min.json'); model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.OpsWorks; },{"../apis/opsworks-2013-02-18.min.json":95,"../apis/opsworks-2013-02-18.paginators.json":96,"../apis/opsworks-2013-02-18.waiters2.json":97,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],182:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['polly'] = {}; AWS.Polly = Service.defineService('polly', ['2016-06-10']); require('../lib/services/polly'); Object.defineProperty(apiLoader.services['polly'], '2016-06-10', { get: function get() { var model = require('../apis/polly-2016-06-10.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.Polly; },{"../apis/polly-2016-06-10.min.json":98,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/polly":247}],183:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['rds'] = {}; AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01*', '2014-10-31']); require('../lib/services/rds'); Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { get: function get() { var model = require('../apis/rds-2013-01-10.min.json'); model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { get: function get() { var model = require('../apis/rds-2013-02-12.min.json'); model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { get: function get() { var model = require('../apis/rds-2013-09-09.min.json'); model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { get: function get() { var model = require('../apis/rds-2014-10-31.min.json'); model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.RDS; },{"../apis/rds-2013-01-10.min.json":99,"../apis/rds-2013-01-10.paginators.json":100,"../apis/rds-2013-02-12.min.json":101,"../apis/rds-2013-02-12.paginators.json":102,"../apis/rds-2013-09-09.min.json":103,"../apis/rds-2013-09-09.paginators.json":104,"../apis/rds-2013-09-09.waiters2.json":105,"../apis/rds-2014-10-31.min.json":106,"../apis/rds-2014-10-31.paginators.json":107,"../apis/rds-2014-10-31.waiters2.json":108,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/rds":248}],184:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['redshift'] = {}; AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { get: function get() { var model = require('../apis/redshift-2012-12-01.min.json'); model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Redshift; },{"../apis/redshift-2012-12-01.min.json":109,"../apis/redshift-2012-12-01.paginators.json":110,"../apis/redshift-2012-12-01.waiters2.json":111,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],185:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['rekognition'] = {}; AWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']); Object.defineProperty(apiLoader.services['rekognition'], '2016-06-27', { get: function get() { var model = require('../apis/rekognition-2016-06-27.min.json'); model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Rekognition; },{"../apis/rekognition-2016-06-27.min.json":112,"../apis/rekognition-2016-06-27.paginators.json":113,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],186:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['route53'] = {}; AWS.Route53 = Service.defineService('route53', ['2013-04-01']); require('../lib/services/route53'); Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { get: function get() { var model = require('../apis/route53-2013-04-01.min.json'); model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Route53; },{"../apis/route53-2013-04-01.min.json":114,"../apis/route53-2013-04-01.paginators.json":115,"../apis/route53-2013-04-01.waiters2.json":116,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/route53":249}],187:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['route53domains'] = {}; AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { get: function get() { var model = require('../apis/route53domains-2014-05-15.min.json'); model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.Route53Domains; },{"../apis/route53domains-2014-05-15.min.json":117,"../apis/route53domains-2014-05-15.paginators.json":118,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],188:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['s3'] = {}; AWS.S3 = Service.defineService('s3', ['2006-03-01']); require('../lib/services/s3'); Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { get: function get() { var model = require('../apis/s3-2006-03-01.min.json'); model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.S3; },{"../apis/s3-2006-03-01.min.json":121,"../apis/s3-2006-03-01.paginators.json":122,"../apis/s3-2006-03-01.waiters2.json":123,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/s3":250}],189:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['servicecatalog'] = {}; AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { get: function get() { var model = require('../apis/servicecatalog-2015-12-10.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.ServiceCatalog; },{"../apis/servicecatalog-2015-12-10.min.json":124,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],190:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['ses'] = {}; AWS.SES = Service.defineService('ses', ['2010-12-01']); Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { get: function get() { var model = require('../apis/email-2010-12-01.min.json'); model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; return model; }, enumerable: true, configurable: true }); module.exports = AWS.SES; },{"../apis/email-2010-12-01.min.json":66,"../apis/email-2010-12-01.paginators.json":67,"../apis/email-2010-12-01.waiters2.json":68,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],191:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['sns'] = {}; AWS.SNS = Service.defineService('sns', ['2010-03-31']); Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { get: function get() { var model = require('../apis/sns-2010-03-31.min.json'); model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.SNS; },{"../apis/sns-2010-03-31.min.json":125,"../apis/sns-2010-03-31.paginators.json":126,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],192:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['sqs'] = {}; AWS.SQS = Service.defineService('sqs', ['2012-11-05']); require('../lib/services/sqs'); Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { get: function get() { var model = require('../apis/sqs-2012-11-05.min.json'); model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.SQS; },{"../apis/sqs-2012-11-05.min.json":127,"../apis/sqs-2012-11-05.paginators.json":128,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/sqs":251}],193:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['ssm'] = {}; AWS.SSM = Service.defineService('ssm', ['2014-11-06']); Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { get: function get() { var model = require('../apis/ssm-2014-11-06.min.json'); model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.SSM; },{"../apis/ssm-2014-11-06.min.json":129,"../apis/ssm-2014-11-06.paginators.json":130,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],194:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['storagegateway'] = {}; AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { get: function get() { var model = require('../apis/storagegateway-2013-06-30.min.json'); model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; return model; }, enumerable: true, configurable: true }); module.exports = AWS.StorageGateway; },{"../apis/storagegateway-2013-06-30.min.json":131,"../apis/storagegateway-2013-06-30.paginators.json":132,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],195:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['sts'] = {}; AWS.STS = Service.defineService('sts', ['2011-06-15']); require('../lib/services/sts'); Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { get: function get() { var model = require('../apis/sts-2011-06-15.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.STS; },{"../apis/sts-2011-06-15.min.json":134,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239,"../lib/services/sts":252}],196:[function(require,module,exports){ require('../lib/node_loader'); var AWS = require('../lib/core'); var Service = require('../lib/service'); var apiLoader = require('../lib/api_loader'); apiLoader.services['waf'] = {}; AWS.WAF = Service.defineService('waf', ['2015-08-24']); Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { get: function get() { var model = require('../apis/waf-2015-08-24.min.json'); return model; }, enumerable: true, configurable: true }); module.exports = AWS.WAF; },{"../apis/waf-2015-08-24.min.json":135,"../lib/api_loader":197,"../lib/core":201,"../lib/node_loader":198,"../lib/service":239}],197:[function(require,module,exports){ var AWS = require('./core'); AWS.apiLoader = function(svc, version) { if (!AWS.apiLoader.services.hasOwnProperty(svc)) { throw new Error('InvalidService: Failed to load api for ' + svc); } return AWS.apiLoader.services[svc][version]; }; AWS.apiLoader.services = {}; module.exports = AWS.apiLoader; },{"./core":201}],198:[function(require,module,exports){ (function (process){ var util = require('./util'); util.crypto.lib = require('crypto-browserify'); util.Buffer = require('buffer/').Buffer; util.url = require('url/'); util.querystring = require('querystring/'); var AWS = require('./core'); require('./api_loader'); AWS.XML.Parser = require('./xml/browser_parser'); require('./http/xhr'); if (typeof process === 'undefined') { process = { browser: true }; } }).call(this,require('_process')) },{"./api_loader":197,"./core":201,"./http/xhr":215,"./util":261,"./xml/browser_parser":262,"_process":266,"buffer/":274,"crypto-browserify":279,"querystring/":287,"url/":288}],199:[function(require,module,exports){ var AWS = require('../core'), url = AWS.util.url, crypto = AWS.util.crypto.lib, base64Encode = AWS.util.base64.encode, inherit = AWS.util.inherit; var queryEncode = function (string) { var replacements = { '+': '-', '=': '_', '/': '~' }; return string.replace(/[\+=\/]/g, function (match) { return replacements[match]; }); }; var signPolicy = function (policy, privateKey) { var sign = crypto.createSign('RSA-SHA1'); sign.write(policy); return queryEncode(sign.sign(privateKey, 'base64')) }; var signWithCannedPolicy = function (url, expires, keyPairId, privateKey) { var policy = JSON.stringify({ Statement: [ { Resource: url, Condition: { DateLessThan: { 'AWS:EpochTime': expires } } } ] }); return { Expires: expires, 'Key-Pair-Id': keyPairId, Signature: signPolicy(policy.toString(), privateKey) }; }; var signWithCustomPolicy = function (policy, keyPairId, privateKey) { policy = policy.replace(/\s/mg, policy); return { Policy: queryEncode(base64Encode(policy)), 'Key-Pair-Id': keyPairId, Signature: signPolicy(policy, privateKey) } }; var determineScheme = function (url) { var parts = url.split('://'); if (parts.length < 2) { throw new Error('Invalid URL.'); } return parts[0].replace('*', ''); }; var getRtmpUrl = function (rtmpUrl) { var parsed = url.parse(rtmpUrl); return parsed.path.replace(/^\//, '') + (parsed.hash || ''); }; var getResource = function (url) { switch (determineScheme(url)) { case 'http': case 'https': return url; case 'rtmp': return getRtmpUrl(url); default: throw new Error('Invalid URI scheme. Scheme must be one of' + ' http, https, or rtmp'); } }; var handleError = function (err, callback) { if (!callback || typeof callback !== 'function') { throw err; } callback(err); }; var handleSuccess = function (result, callback) { if (!callback || typeof callback !== 'function') { return result; } callback(null, result); }; AWS.CloudFront.Signer = inherit({ constructor: function Signer(keyPairId, privateKey) { if (keyPairId === void 0 || privateKey === void 0) { throw new Error('A key pair ID and private key are required'); } this.keyPairId = keyPairId; this.privateKey = privateKey; }, getSignedCookie: function (options, cb) { var signatureHash = 'policy' in options ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey); var cookieHash = {}; for (var key in signatureHash) { if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { cookieHash['CloudFront-' + key] = signatureHash[key]; } } return handleSuccess(cookieHash, cb); }, getSignedUrl: function (options, cb) { try { var resource = getResource(options.url); } catch (err) { return handleError(err, cb); } var parsedUrl = url.parse(options.url, true), signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy') ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey); parsedUrl.search = null; for (var key in signatureHash) { if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { parsedUrl.query[key] = signatureHash[key]; } } try { var signedUrl = determineScheme(options.url) === 'rtmp' ? getRtmpUrl(url.format(parsedUrl)) : url.format(parsedUrl); } catch (err) { return handleError(err, cb); } return handleSuccess(signedUrl, cb); } }); module.exports = AWS.CloudFront.Signer; },{"../core":201}],200:[function(require,module,exports){ var AWS = require('./core'); require('./credentials'); require('./credentials/credential_provider_chain'); var PromisesDependency; AWS.Config = AWS.util.inherit({ constructor: function Config(options) { if (options === undefined) options = {}; options = this.extractCredentials(options); AWS.util.each.call(this, this.keys, function (key, value) { this.set(key, options[key], value); }); }, getCredentials: function getCredentials(callback) { var self = this; function finish(err) { callback(err, err ? null : self.credentials); } function credError(msg, err) { return new AWS.util.error(err || new Error(), { code: 'CredentialsError', message: msg }); } function getAsyncCredentials() { self.credentials.get(function(err) { if (err) { var msg = 'Could not load credentials from ' + self.credentials.constructor.name; err = credError(msg, err); } finish(err); }); } function getStaticCredentials() { var err = null; if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) { err = credError('Missing credentials'); } finish(err); } if (self.credentials) { if (typeof self.credentials.get === 'function') { getAsyncCredentials(); } else { // static credentials getStaticCredentials(); } } else if (self.credentialProvider) { self.credentialProvider.resolve(function(err, creds) { if (err) { err = credError('Could not load credentials from any providers', err); } self.credentials = creds; finish(err); }); } else { finish(credError('No credentials to load')); } }, update: function update(options, allowUnknownKeys) { allowUnknownKeys = allowUnknownKeys || false; options = this.extractCredentials(options); AWS.util.each.call(this, options, function (key, value) { if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) || AWS.Service.hasService(key)) { this.set(key, value); } }); }, loadFromPath: function loadFromPath(path) { this.clear(); var options = JSON.parse(AWS.util.readFileSync(path)); var fileSystemCreds = new AWS.FileSystemCredentials(path); var chain = new AWS.CredentialProviderChain(); chain.providers.unshift(fileSystemCreds); chain.resolve(function (err, creds) { if (err) throw err; else options.credentials = creds; }); this.constructor(options); return this; }, clear: function clear() { AWS.util.each.call(this, this.keys, function (key) { delete this[key]; }); this.set('credentials', undefined); this.set('credentialProvider', undefined); }, set: function set(property, value, defaultValue) { if (value === undefined) { if (defaultValue === undefined) { defaultValue = this.keys[property]; } if (typeof defaultValue === 'function') { this[property] = defaultValue.call(this); } else { this[property] = defaultValue; } } else if (property === 'httpOptions' && this[property]) { this[property] = AWS.util.merge(this[property], value); } else { this[property] = value; } }, keys: { credentials: null, credentialProvider: null, region: null, logger: null, apiVersions: {}, apiVersion: null, endpoint: undefined, httpOptions: { timeout: 120000 }, maxRetries: undefined, maxRedirects: 10, paramValidation: true, sslEnabled: true, s3ForcePathStyle: false, s3BucketEndpoint: false, s3DisableBodySigning: true, computeChecksums: true, convertResponseTypes: true, correctClockSkew: false, customUserAgent: null, dynamoDbCrc32: true, systemClockOffset: 0, signatureVersion: null, signatureCache: true, retryDelayOptions: { base: 100 }, useAccelerateEndpoint: false }, extractCredentials: function extractCredentials(options) { if (options.accessKeyId && options.secretAccessKey) { options = AWS.util.copy(options); options.credentials = new AWS.Credentials(options); } return options; }, setPromisesDependency: function setPromisesDependency(dep) { PromisesDependency = dep; if (dep === null && typeof Promise === 'function') { PromisesDependency = Promise; } var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain]; if (AWS.S3 && AWS.S3.ManagedUpload) constructors.push(AWS.S3.ManagedUpload); AWS.util.addPromises(constructors, PromisesDependency); }, getPromisesDependency: function getPromisesDependency() { return PromisesDependency; } }); AWS.config = new AWS.Config(); },{"./core":201,"./credentials":202,"./credentials/credential_provider_chain":204}],201:[function(require,module,exports){ var AWS = { util: require('./util') }; var _hidden = {}; _hidden.toString(); // hack to parse macro module.exports = AWS; AWS.util.update(AWS, { VERSION: '2.17.0', Signers: {}, Protocol: { Json: require('./protocol/json'), Query: require('./protocol/query'), Rest: require('./protocol/rest'), RestJson: require('./protocol/rest_json'), RestXml: require('./protocol/rest_xml') }, XML: { Builder: require('./xml/builder'), Parser: null // conditionally set based on environment }, JSON: { Builder: require('./json/builder'), Parser: require('./json/parser') }, Model: { Api: require('./model/api'), Operation: require('./model/operation'), Shape: require('./model/shape'), Paginator: require('./model/paginator'), ResourceWaiter: require('./model/resource_waiter') }, util: require('./util'), apiLoader: function() { throw new Error('No API loader set'); } }); require('./service'); require('./config'); require('./credentials'); require('./credentials/credential_provider_chain'); require('./credentials/temporary_credentials'); require('./credentials/web_identity_credentials'); require('./credentials/cognito_identity_credentials'); require('./credentials/saml_credentials'); require('./http'); require('./sequential_executor'); require('./event_listeners'); require('./request'); require('./response'); require('./resource_waiter'); require('./signers/request_signer'); require('./param_validator'); AWS.events = new AWS.SequentialExecutor(); },{"./config":200,"./credentials":202,"./credentials/cognito_identity_credentials":203,"./credentials/credential_provider_chain":204,"./credentials/saml_credentials":205,"./credentials/temporary_credentials":206,"./credentials/web_identity_credentials":207,"./event_listeners":213,"./http":214,"./json/builder":216,"./json/parser":217,"./model/api":218,"./model/operation":220,"./model/paginator":221,"./model/resource_waiter":222,"./model/shape":223,"./param_validator":224,"./protocol/json":226,"./protocol/query":227,"./protocol/rest":228,"./protocol/rest_json":229,"./protocol/rest_xml":230,"./request":234,"./resource_waiter":235,"./response":236,"./sequential_executor":238,"./service":239,"./signers/request_signer":254,"./util":261,"./xml/builder":263}],202:[function(require,module,exports){ var AWS = require('./core'); AWS.Credentials = AWS.util.inherit({ constructor: function Credentials() { AWS.util.hideProperties(this, ['secretAccessKey']); this.expired = false; this.expireTime = null; if (arguments.length === 1 && typeof arguments[0] === 'object') { var creds = arguments[0].credentials || arguments[0]; this.accessKeyId = creds.accessKeyId; this.secretAccessKey = creds.secretAccessKey; this.sessionToken = creds.sessionToken; } else { this.accessKeyId = arguments[0]; this.secretAccessKey = arguments[1]; this.sessionToken = arguments[2]; } }, expiryWindow: 15, needsRefresh: function needsRefresh() { var currentTime = AWS.util.date.getDate().getTime(); var adjustedTime = new Date(currentTime + this.expiryWindow * 1000); if (this.expireTime && adjustedTime > this.expireTime) { return true; } else { return this.expired || !this.accessKeyId || !this.secretAccessKey; } }, get: function get(callback) { var self = this; if (this.needsRefresh()) { this.refresh(function(err) { if (!err) self.expired = false; // reset expired flag if (callback) callback(err); }); } else if (callback) { callback(); } }, refresh: function refresh(callback) { this.expired = false; callback(); } }); AWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) { this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency); this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency); }; AWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() { delete this.prototype.getPromise; delete this.prototype.refreshPromise; }; AWS.util.addPromises(AWS.Credentials); },{"./core":201}],203:[function(require,module,exports){ var AWS = require('../core'); var CognitoIdentity = require('../../clients/cognitoidentity'); var STS = require('../../clients/sts'); AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { localStorageKey: { id: 'aws.cognito.identity-id.', providers: 'aws.cognito.identity-providers.' }, constructor: function CognitoIdentityCredentials(params, clientConfig) { AWS.Credentials.call(this); this.expired = true; this.params = params; this.data = null; this._identityId = null; this._clientConfig = AWS.util.copy(clientConfig || {}); this.loadCachedId(); var self = this; Object.defineProperty(this, 'identityId', { get: function() { self.loadCachedId(); return self._identityId || self.params.IdentityId; }, set: function(identityId) { self._identityId = identityId; } }); }, refresh: function refresh(callback) { var self = this; self.createClients(); self.data = null; self._identityId = null; self.getId(function(err) { if (!err) { if (!self.params.RoleArn) { self.getCredentialsForIdentity(callback); } else { self.getCredentialsFromSTS(callback); } } else { self.clearIdOnNotAuthorized(err); callback(err); } }); }, clearCachedId: function clearCache() { this._identityId = null; delete this.params.IdentityId; var poolId = this.params.IdentityPoolId; var loginId = this.params.LoginId || ''; delete this.storage[this.localStorageKey.id + poolId + loginId]; delete this.storage[this.localStorageKey.providers + poolId + loginId]; }, clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { var self = this; if (err.code == 'NotAuthorizedException') { self.clearCachedId(); } }, getId: function getId(callback) { var self = this; if (typeof self.params.IdentityId === 'string') { return callback(null, self.params.IdentityId); } self.cognito.getId(function(err, data) { if (!err && data.IdentityId) { self.params.IdentityId = data.IdentityId; callback(null, data.IdentityId); } else { callback(err); } }); }, loadCredentials: function loadCredentials(data, credentials) { if (!data || !credentials) return; credentials.expired = false; credentials.accessKeyId = data.Credentials.AccessKeyId; credentials.secretAccessKey = data.Credentials.SecretKey; credentials.sessionToken = data.Credentials.SessionToken; credentials.expireTime = data.Credentials.Expiration; }, getCredentialsForIdentity: function getCredentialsForIdentity(callback) { var self = this; self.cognito.getCredentialsForIdentity(function(err, data) { if (!err) { self.cacheId(data); self.data = data; self.loadCredentials(self.data, self); } else { self.clearIdOnNotAuthorized(err); } callback(err); }); }, getCredentialsFromSTS: function getCredentialsFromSTS(callback) { var self = this; self.cognito.getOpenIdToken(function(err, data) { if (!err) { self.cacheId(data); self.params.WebIdentityToken = data.Token; self.webIdentityCredentials.refresh(function(webErr) { if (!webErr) { self.data = self.webIdentityCredentials.data; self.sts.credentialsFrom(self.data, self); } callback(webErr); }); } else { self.clearIdOnNotAuthorized(err); callback(err); } }); }, loadCachedId: function loadCachedId() { var self = this; if (AWS.util.isBrowser() && !self.params.IdentityId) { var id = self.getStorage('id'); if (id && self.params.Logins) { var actualProviders = Object.keys(self.params.Logins); var cachedProviders = (self.getStorage('providers') || '').split(','); var intersect = cachedProviders.filter(function(n) { return actualProviders.indexOf(n) !== -1; }); if (intersect.length !== 0) { self.params.IdentityId = id; } } else if (id) { self.params.IdentityId = id; } } }, createClients: function() { var clientConfig = this._clientConfig; this.webIdentityCredentials = this.webIdentityCredentials || new AWS.WebIdentityCredentials(this.params, clientConfig); if (!this.cognito) { var cognitoConfig = AWS.util.merge({}, clientConfig); cognitoConfig.params = this.params; this.cognito = new CognitoIdentity(cognitoConfig); } this.sts = this.sts || new STS(clientConfig); }, cacheId: function cacheId(data) { this._identityId = data.IdentityId; this.params.IdentityId = this._identityId; if (AWS.util.isBrowser()) { this.setStorage('id', data.IdentityId); if (this.params.Logins) { this.setStorage('providers', Object.keys(this.params.Logins).join(',')); } } }, getStorage: function getStorage(key) { return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; }, setStorage: function setStorage(key, val) { try { this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; } catch (_) {} }, storage: (function() { try { var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? window.localStorage : {}; storage['aws.test-storage'] = 'foobar'; delete storage['aws.test-storage']; return storage; } catch (_) { return {}; } })() }); },{"../../clients/cognitoidentity":151,"../../clients/sts":195,"../core":201}],204:[function(require,module,exports){ var AWS = require('../core'); AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { constructor: function CredentialProviderChain(providers) { if (providers) { this.providers = providers; } else { this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); } }, resolve: function resolve(callback) { if (this.providers.length === 0) { callback(new Error('No providers')); return this; } var index = 0; var providers = this.providers.slice(0); function resolveNext(err, creds) { if ((!err && creds) || index === providers.length) { callback(err, creds); return; } var provider = providers[index++]; if (typeof provider === 'function') { creds = provider.call(); } else { creds = provider; } if (creds.get) { creds.get(function(getErr) { resolveNext(getErr, getErr ? null : creds); }); } else { resolveNext(null, creds); } } resolveNext(); return this; } }); AWS.CredentialProviderChain.defaultProviders = []; AWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) { this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency); }; AWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() { delete this.prototype.resolvePromise; }; AWS.util.addPromises(AWS.CredentialProviderChain); },{"../core":201}],205:[function(require,module,exports){ var AWS = require('../core'); var STS = require('../../clients/sts'); AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { constructor: function SAMLCredentials(params) { AWS.Credentials.call(this); this.expired = true; this.params = params; }, refresh: function refresh(callback) { var self = this; self.createClients(); if (!callback) callback = function(err) { if (err) throw err; }; self.service.assumeRoleWithSAML(function (err, data) { if (!err) { self.service.credentialsFrom(data, self); } callback(err); }); }, createClients: function() { this.service = this.service || new STS({params: this.params}); } }); },{"../../clients/sts":195,"../core":201}],206:[function(require,module,exports){ var AWS = require('../core'); var STS = require('../../clients/sts'); AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { constructor: function TemporaryCredentials(params, masterCredentials) { AWS.Credentials.call(this); this.loadMasterCredentials(masterCredentials); this.expired = true; this.params = params || {}; if (this.params.RoleArn) { this.params.RoleSessionName = this.params.RoleSessionName || 'temporary-credentials'; } }, refresh: function refresh(callback) { var self = this; self.createClients(); if (!callback) callback = function(err) { if (err) throw err; }; self.service.config.credentials = self.masterCredentials; var operation = self.params.RoleArn ? self.service.assumeRole : self.service.getSessionToken; operation.call(self.service, function (err, data) { if (!err) { self.service.credentialsFrom(data, self); } callback(err); }); }, loadMasterCredentials: function loadMasterCredentials(masterCredentials) { this.masterCredentials = masterCredentials || AWS.config.credentials; while (this.masterCredentials.masterCredentials) { this.masterCredentials = this.masterCredentials.masterCredentials; } }, createClients: function() { this.service = this.service || new STS({params: this.params}); } }); },{"../../clients/sts":195,"../core":201}],207:[function(require,module,exports){ var AWS = require('../core'); var STS = require('../../clients/sts'); AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { constructor: function WebIdentityCredentials(params, clientConfig) { AWS.Credentials.call(this); this.expired = true; this.params = params; this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; this.data = null; this._clientConfig = AWS.util.copy(clientConfig || {}); }, refresh: function refresh(callback) { var self = this; self.createClients(); if (!callback) callback = function(err) { if (err) throw err; }; self.service.assumeRoleWithWebIdentity(function (err, data) { self.data = null; if (!err) { self.data = data; self.service.credentialsFrom(data, self); } callback(err); }); }, createClients: function() { if (!this.service) { var stsConfig = AWS.util.merge({}, this._clientConfig); stsConfig.params = this.params; this.service = new STS(stsConfig); } } }); },{"../../clients/sts":195,"../core":201}],208:[function(require,module,exports){ var util = require('../core').util; var typeOf = require('./types').typeOf; var DynamoDBSet = require('./set'); function convertInput(data, options) { options = options || {}; var type = typeOf(data); if (type === 'Object') { var map = {M: {}}; for (var key in data) { map['M'][key] = convertInput(data[key], options); } return map; } else if (type === 'Array') { var list = {L: []}; for (var i = 0; i < data.length; i++) { list['L'].push(convertInput(data[i], options)); } return list; } else if (type === 'Set') { return formatSet(data, options); } else if (type === 'String') { if (data.length === 0 && options.convertEmptyValues) { return convertInput(null); } return { 'S': data }; } else if (type === 'Number') { return { 'N': data.toString() }; } else if (type === 'Binary') { if (data.length === 0 && options.convertEmptyValues) { return convertInput(null); } return { 'B': data }; } else if (type === 'Boolean') { return {'BOOL': data}; } else if (type === 'null') { return {'NULL': true}; } } function formatSet(data, options) { options = options || {}; var values = data.values; if (options.convertEmptyValues) { values = filterEmptySetValues(data); if (values.length === 0) { return convertInput(null); } } var map = {}; switch (data.type) { case 'String': map['SS'] = values; break; case 'Binary': map['BS'] = values; break; case 'Number': map['NS'] = values.map(function (value) { return value.toString(); }); } return map; } function filterEmptySetValues(set) { var nonEmptyValues = []; var potentiallyEmptyTypes = { String: true, Binary: true, Number: false }; if (potentiallyEmptyTypes[set.type]) { for (var i = 0; i < set.values.length; i++) { if (set.values[i].length === 0) { continue; } nonEmptyValues.push(set.values[i]); } return nonEmptyValues; } return set.values; } function convertOutput(data) { var list, map, i; for (var type in data) { var values = data[type]; if (type === 'M') { map = {}; for (var key in values) { map[key] = convertOutput(values[key]); } return map; } else if (type === 'L') { list = []; for (i = 0; i < values.length; i++) { list.push(convertOutput(values[i])); } return list; } else if (type === 'SS') { list = []; for (i = 0; i < values.length; i++) { list.push(values[i] + ''); } return new DynamoDBSet(list); } else if (type === 'NS') { list = []; for (i = 0; i < values.length; i++) { list.push(Number(values[i])); } return new DynamoDBSet(list); } else if (type === 'BS') { list = []; for (i = 0; i < values.length; i++) { list.push(new util.Buffer(values[i])); } return new DynamoDBSet(list); } else if (type === 'S') { return values + ''; } else if (type === 'N') { return Number(values); } else if (type === 'B') { return new util.Buffer(values); } else if (type === 'BOOL') { return (values === 'true' || values === 'TRUE' || values === true); } else if (type === 'NULL') { return null; } } } module.exports = { input: convertInput, output: convertOutput }; },{"../core":201,"./set":210,"./types":212}],209:[function(require,module,exports){ var AWS = require('../core'); var Translator = require('./translator'); var DynamoDBSet = require('./set'); AWS.DynamoDB.DocumentClient = AWS.util.inherit({ operations: { batchGetItem: 'batchGet', batchWriteItem: 'batchWrite', putItem: 'put', getItem: 'get', deleteItem: 'delete', updateItem: 'update', scan: 'scan', query: 'query' }, constructor: function DocumentClient(options) { var self = this; self.options = options || {}; self.configure(self.options); }, configure: function configure(options) { var self = this; self.service = options.service; self.bindServiceObject(options); self.attrValue = options.attrValue = self.service.api.operations.putItem.input.members.Item.value.shape; }, bindServiceObject: function bindServiceObject(options) { var self = this; options = options || {}; if (!self.service) { self.service = new AWS.DynamoDB(options); } else { var config = AWS.util.copy(self.service.config); self.service = new self.service.constructor.__super__(config); self.service.config.params = AWS.util.merge(self.service.config.params || {}, options.params); } }, batchGet: function(params, callback) { var self = this; var request = self.service.batchGetItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, batchWrite: function(params, callback) { var self = this; var request = self.service.batchWriteItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, delete: function(params, callback) { var self = this; var request = self.service.deleteItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, get: function(params, callback) { var self = this; var request = self.service.getItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, put: function put(params, callback) { var self = this; var request = self.service.putItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, update: function(params, callback) { var self = this; var request = self.service.updateItem(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, scan: function(params, callback) { var self = this; var request = self.service.scan(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, query: function(params, callback) { var self = this; var request = self.service.query(params); self.setupRequest(request); self.setupResponse(request); if (typeof callback === 'function') { request.send(callback); } return request; }, createSet: function(list, options) { options = options || {}; return new DynamoDBSet(list, options); }, getTranslator: function() { return new Translator(this.options); }, setupRequest: function setupRequest(request) { var self = this; var translator = self.getTranslator(); var operation = request.operation; var inputShape = request.service.api.operations[operation].input; request._events.validate.unshift(function(req) { req.rawParams = AWS.util.copy(req.params); req.params = translator.translateInput(req.rawParams, inputShape); }); }, setupResponse: function setupResponse(request) { var self = this; var translator = self.getTranslator(); var outputShape = self.service.api.operations[request.operation].output; request.on('extractData', function(response) { response.data = translator.translateOutput(response.data, outputShape); }); var response = request.response; response.nextPage = function(cb) { var resp = this; var req = resp.request; var config; var service = req.service; var operation = req.operation; try { config = service.paginationConfig(operation, true); } catch (e) { resp.error = e; } if (!resp.hasNextPage()) { if (cb) cb(resp.error, null); else if (resp.error) throw resp.error; return null; } var params = AWS.util.copy(req.rawParams); if (!resp.nextPageTokens) { return cb ? cb(null, null) : null; } else { var inputTokens = config.inputToken; if (typeof inputTokens === 'string') inputTokens = [inputTokens]; for (var i = 0; i < inputTokens.length; i++) { params[inputTokens[i]] = resp.nextPageTokens[i]; } return self[operation](params, cb); } }; } }); module.exports = AWS.DynamoDB.DocumentClient; },{"../core":201,"./set":210,"./translator":211}],210:[function(require,module,exports){ var util = require('../core').util; var typeOf = require('./types').typeOf; var DynamoDBSet = util.inherit({ constructor: function Set(list, options) { options = options || {}; this.initialize(list, options.validate); }, initialize: function(list, validate) { var self = this; self.values = [].concat(list); self.detectType(); if (validate) { self.validate(); } }, detectType: function() { var self = this; var value = self.values[0]; if (typeOf(value) === 'String') { self.type = 'String'; } else if (typeOf(value) === 'Number') { self.type = 'Number'; } else if (typeOf(value) === 'Binary') { self.type = 'Binary'; } else { throw util.error(new Error(), { code: 'InvalidSetType', message: 'Sets can contain string, number, or binary values' }); } }, validate: function() { var self = this; var length = self.values.length; var values = self.values; for (var i = 0; i < length; i++) { if (typeOf(values[i]) !== self.type) { throw util.error(new Error(), { code: 'InvalidType', message: self.type + ' Set contains ' + typeOf(values[i]) + ' value' }); } } } }); module.exports = DynamoDBSet; },{"../core":201,"./types":212}],211:[function(require,module,exports){ var util = require('../core').util; var convert = require('./converter'); var Translator = function(options) { options = options || {}; this.attrValue = options.attrValue; this.convertEmptyValues = Boolean(options.convertEmptyValues); }; Translator.prototype.translateInput = function(value, shape) { this.mode = 'input'; return this.translate(value, shape); }; Translator.prototype.translateOutput = function(value, shape) { this.mode = 'output'; return this.translate(value, shape); }; Translator.prototype.translate = function(value, shape) { var self = this; if (!shape || value === undefined) return undefined; if (shape.shape === self.attrValue) { return convert[self.mode](value, {convertEmptyValues: self.convertEmptyValues}); } switch (shape.type) { case 'structure': return self.translateStructure(value, shape); case 'map': return self.translateMap(value, shape); case 'list': return self.translateList(value, shape); default: return self.translateScalar(value, shape); } }; Translator.prototype.translateStructure = function(structure, shape) { var self = this; if (structure == null) return undefined; var struct = {}; util.each(structure, function(name, value) { var memberShape = shape.members[name]; if (memberShape) { var result = self.translate(value, memberShape); if (result !== undefined) struct[name] = result; } }); return struct; }; Translator.prototype.translateList = function(list, shape) { var self = this; if (list == null) return undefined; var out = []; util.arrayEach(list, function(value) { var result = self.translate(value, shape.member); if (result === undefined) out.push(null); else out.push(result); }); return out; }; Translator.prototype.translateMap = function(map, shape) { var self = this; if (map == null) return undefined; var out = {}; util.each(map, function(key, value) { var result = self.translate(value, shape.value); if (result === undefined) out[key] = null; else out[key] = result; }); return out; }; Translator.prototype.translateScalar = function(value, shape) { return shape.toType(value); }; module.exports = Translator; },{"../core":201,"./converter":208}],212:[function(require,module,exports){ var util = require('../core').util; function typeOf(data) { if (data === null && typeof data === 'object') { return 'null'; } else if (data !== undefined && isBinary(data)) { return 'Binary'; } else if (data !== undefined && data.constructor) { return util.typeName(data.constructor); } else if (data !== undefined && typeof data === 'object') { return 'Object'; } else { return 'undefined'; } } function isBinary(data) { var types = [ 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', 'Float64Array' ]; if (util.isNode()) { var Stream = util.stream.Stream; if (util.Buffer.isBuffer(data) || data instanceof Stream) return true; } else { for (var i = 0; i < types.length; i++) { if (data !== undefined && data.constructor) { if (util.isType(data, types[i])) return true; if (util.typeName(data.constructor) === types[i]) return true; } } } return false; } module.exports = { typeOf: typeOf, isBinary: isBinary }; },{"../core":201}],213:[function(require,module,exports){ var AWS = require('./core'); var SequentialExecutor = require('./sequential_executor'); AWS.EventListeners = { Core: {} /* doc hack */ }; AWS.EventListeners = { Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { addAsync('VALIDATE_CREDENTIALS', 'validate', function VALIDATE_CREDENTIALS(req, done) { if (!req.service.api.signatureVersion) return done(); // none req.service.config.getCredentials(function(err) { if (err) { req.response.error = AWS.util.error(err, {code: 'CredentialsError', message: 'Missing credentials in config'}); } done(); }); }); add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { if (!req.service.config.region && !req.service.isGlobalEndpoint) { req.response.error = AWS.util.error(new Error(), {code: 'ConfigError', message: 'Missing region in config'}); } }); add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) { var operation = req.service.api.operations[req.operation]; if (!operation) { return; } var idempotentMembers = operation.idempotentMembers; if (!idempotentMembers.length) { return; } var params = AWS.util.copy(req.params); for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) { if (!params[idempotentMembers[i]]) { params[idempotentMembers[i]] = AWS.util.uuid.v4(); } } req.params = params; }); add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { var rules = req.service.api.operations[req.operation].input; var validation = req.service.config.paramValidation; new AWS.ParamValidator(validation).validate(rules, req.params); }); addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { req.haltHandlersOnError(); if (!req.service.api.signatureVersion) return done(); // none if (req.service.getSignerClass(req) === AWS.Signers.V4) { var body = req.httpRequest.body || ''; AWS.util.computeSha256(body, function(err, sha) { if (err) { done(err); } else { req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; done(); } }); } else { done(); } }); add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { if (req.httpRequest.headers['Content-Length'] === undefined) { var length = AWS.util.string.byteLength(req.httpRequest.body); req.httpRequest.headers['Content-Length'] = length; } }); add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; }); add('RESTART', 'restart', function RESTART() { var err = this.response.error; if (!err || !err.retryable) return; this.httpRequest = new AWS.HttpRequest( this.service.endpoint, this.service.region ); if (this.response.retryCount < this.service.config.maxRetries) { this.response.retryCount++; } else { this.response.error = null; } }); addAsync('SIGN', 'sign', function SIGN(req, done) { var service = req.service; if (!service.api.signatureVersion) return done(); // none service.config.getCredentials(function (err, credentials) { if (err) { req.response.error = err; return done(); } try { var date = AWS.util.date.getDate(); var SignerClass = service.getSignerClass(req); var signer = new SignerClass(req.httpRequest, service.api.signingName || service.api.endpointPrefix, service.config.signatureCache); signer.setServiceClientId(service._clientId); delete req.httpRequest.headers['Authorization']; delete req.httpRequest.headers['Date']; delete req.httpRequest.headers['X-Amz-Date']; signer.addAuthorization(credentials, date); req.signedAt = date; } catch (e) { req.response.error = e; } done(); }); }); add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { if (this.service.successfulResponse(resp, this)) { resp.data = {}; resp.error = null; } else { resp.data = null; resp.error = AWS.util.error(new Error(), {code: 'UnknownError', message: 'An unknown error occurred.'}); } }); addAsync('SEND', 'send', function SEND(resp, done) { resp.httpResponse._abortCallback = done; resp.error = null; resp.data = null; function callback(httpResp) { resp.httpResponse.stream = httpResp; httpResp.on('headers', function onHeaders(statusCode, headers) { resp.request.emit('httpHeaders', [statusCode, headers, resp]); if (!resp.httpResponse.streaming) { if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check httpResp.on('readable', function onReadable() { var data = httpResp.read(); if (data !== null) { resp.request.emit('httpData', [data, resp]); } }); } else { // legacy streams API httpResp.on('data', function onData(data) { resp.request.emit('httpData', [data, resp]); }); } } }); httpResp.on('end', function onEnd() { resp.request.emit('httpDone'); done(); }); } function progress(httpResp) { httpResp.on('sendProgress', function onSendProgress(value) { resp.request.emit('httpUploadProgress', [value, resp]); }); httpResp.on('receiveProgress', function onReceiveProgress(value) { resp.request.emit('httpDownloadProgress', [value, resp]); }); } function error(err) { resp.error = AWS.util.error(err, { code: 'NetworkingError', region: resp.request.httpRequest.region, hostname: resp.request.httpRequest.endpoint.hostname, retryable: true }); resp.request.emit('httpError', [resp.error, resp], function() { done(); }); } function executeSend() { var http = AWS.HttpClient.getInstance(); var httpOptions = resp.request.service.config.httpOptions || {}; try { var stream = http.handleRequest(resp.request.httpRequest, httpOptions, callback, error); progress(stream); } catch (err) { error(err); } } var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign this.emit('sign', [this], function(err) { if (err) done(err); else executeSend(); }); } else { executeSend(); } }); add('HTTP_HEADERS', 'httpHeaders', function HTTP_HEADERS(statusCode, headers, resp) { resp.httpResponse.statusCode = statusCode; resp.httpResponse.headers = headers; resp.httpResponse.body = new AWS.util.Buffer(''); resp.httpResponse.buffers = []; resp.httpResponse.numBytes = 0; var dateHeader = headers.date || headers.Date; if (dateHeader) { var serverTime = Date.parse(dateHeader); if (resp.request.service.config.correctClockSkew && AWS.util.isClockSkewed(serverTime)) { AWS.util.applyClockOffset(serverTime); } } }); add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { if (chunk) { if (AWS.util.isNode()) { resp.httpResponse.numBytes += chunk.length; var total = resp.httpResponse.headers['content-length']; var progress = { loaded: resp.httpResponse.numBytes, total: total }; resp.request.emit('httpDownloadProgress', [progress, resp]); } resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); } }); add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { var body = AWS.util.buffer.concat(resp.httpResponse.buffers); resp.httpResponse.body = body; } delete resp.httpResponse.numBytes; delete resp.httpResponse.buffers; }); add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { if (resp.httpResponse.statusCode) { resp.error.statusCode = resp.httpResponse.statusCode; if (resp.error.retryable === undefined) { resp.error.retryable = this.service.retryableError(resp.error, this); } } }); add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { if (!resp.error) return; switch (resp.error.code) { case 'RequestExpired': // EC2 only case 'ExpiredTokenException': case 'ExpiredToken': resp.error.retryable = true; resp.request.service.config.credentials.expired = true; } }); add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { var err = resp.error; if (!err) return; if (typeof err.code === 'string' && typeof err.message === 'string') { if (err.code.match(/Signature/) && err.message.match(/expired/)) { resp.error.retryable = true; } } }); add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { if (!resp.error) return; if (this.service.clockSkewError(resp.error) && this.service.config.correctClockSkew && AWS.config.isClockSkewed) { resp.error.retryable = true; } }); add('REDIRECT', 'retry', function REDIRECT(resp) { if (resp.error && resp.error.statusCode >= 300 && resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { this.httpRequest.endpoint = new AWS.Endpoint(resp.httpResponse.headers['location']); this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; resp.error.redirect = true; resp.error.retryable = true; } }); add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { if (resp.error) { if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { resp.error.retryDelay = 0; } else if (resp.retryCount < resp.maxRetries) { resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; } } }); addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { var delay, willRetry = false; if (resp.error) { delay = resp.error.retryDelay || 0; if (resp.error.retryable && resp.retryCount < resp.maxRetries) { resp.retryCount++; willRetry = true; } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { resp.redirectCount++; willRetry = true; } } if (willRetry) { resp.error = null; setTimeout(done, delay); } else { done(); } }); }), CorePost: new SequentialExecutor().addNamedListeners(function(add) { add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { var message = 'Inaccessible host: `' + err.hostname + '\'. This service may not be available in the `' + err.region + '\' region.'; this.response.error = AWS.util.error(new Error(message), { code: 'UnknownEndpoint', region: err.region, hostname: err.hostname, retryable: true, originalError: err }); } }); }), Logger: new SequentialExecutor().addNamedListeners(function(add) { add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { var req = resp.request; var logger = req.service.config.logger; if (!logger) return; function buildMessage() { var time = AWS.util.date.getDate().getTime(); var delta = (time - req.startTime.getTime()) / 1000; var ansi = logger.isTTY ? true : false; var status = resp.httpResponse.statusCode; var params = require('util').inspect(req.params, true, null); var message = ''; if (ansi) message += '\x1B[33m'; message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; if (ansi) message += '\x1B[0;1m'; message += ' ' + AWS.util.string.lowerFirst(req.operation); message += '(' + params + ')'; if (ansi) message += '\x1B[0m'; return message; } var line = buildMessage(); if (typeof logger.log === 'function') { logger.log(line); } else if (typeof logger.write === 'function') { logger.write(line + '\n'); } }); }), Json: new SequentialExecutor().addNamedListeners(function(add) { var svc = require('./protocol/json'); add('BUILD', 'build', svc.buildRequest); add('EXTRACT_DATA', 'extractData', svc.extractData); add('EXTRACT_ERROR', 'extractError', svc.extractError); }), Rest: new SequentialExecutor().addNamedListeners(function(add) { var svc = require('./protocol/rest'); add('BUILD', 'build', svc.buildRequest); add('EXTRACT_DATA', 'extractData', svc.extractData); add('EXTRACT_ERROR', 'extractError', svc.extractError); }), RestJson: new SequentialExecutor().addNamedListeners(function(add) { var svc = require('./protocol/rest_json'); add('BUILD', 'build', svc.buildRequest); add('EXTRACT_DATA', 'extractData', svc.extractData); add('EXTRACT_ERROR', 'extractError', svc.extractError); }), RestXml: new SequentialExecutor().addNamedListeners(function(add) { var svc = require('./protocol/rest_xml'); add('BUILD', 'build', svc.buildRequest); add('EXTRACT_DATA', 'extractData', svc.extractData); add('EXTRACT_ERROR', 'extractError', svc.extractError); }), Query: new SequentialExecutor().addNamedListeners(function(add) { var svc = require('./protocol/query'); add('BUILD', 'build', svc.buildRequest); add('EXTRACT_DATA', 'extractData', svc.extractData); add('EXTRACT_ERROR', 'extractError', svc.extractError); }) }; },{"./core":201,"./protocol/json":226,"./protocol/query":227,"./protocol/rest":228,"./protocol/rest_json":229,"./protocol/rest_xml":230,"./sequential_executor":238,"util":273}],214:[function(require,module,exports){ var AWS = require('./core'); var inherit = AWS.util.inherit; AWS.Endpoint = inherit({ constructor: function Endpoint(endpoint, config) { AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); if (typeof endpoint === 'undefined' || endpoint === null) { throw new Error('Invalid endpoint: ' + endpoint); } else if (typeof endpoint !== 'string') { return AWS.util.copy(endpoint); } if (!endpoint.match(/^http/)) { var useSSL = config && config.sslEnabled !== undefined ? config.sslEnabled : AWS.config.sslEnabled; endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; } AWS.util.update(this, AWS.util.urlParse(endpoint)); if (this.port) { this.port = parseInt(this.port, 10); } else { this.port = this.protocol === 'https:' ? 443 : 80; } } }); AWS.HttpRequest = inherit({ constructor: function HttpRequest(endpoint, region) { endpoint = new AWS.Endpoint(endpoint); this.method = 'POST'; this.path = endpoint.path || '/'; this.headers = {}; this.body = ''; this.endpoint = endpoint; this.region = region; this._userAgent = ''; this.setUserAgent(); }, setUserAgent: function setUserAgent() { this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent(); }, getUserAgentHeaderName: function getUserAgentHeaderName() { var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; return prefix + 'User-Agent'; }, appendToUserAgent: function appendToUserAgent(agentPartial) { if (typeof agentPartial === 'string' && agentPartial) { this._userAgent += ' ' + agentPartial; } this.headers[this.getUserAgentHeaderName()] = this._userAgent; }, getUserAgent: function getUserAgent() { return this._userAgent; }, pathname: function pathname() { return this.path.split('?', 1)[0]; }, search: function search() { var query = this.path.split('?', 2)[1]; if (query) { query = AWS.util.queryStringParse(query); return AWS.util.queryParamsToString(query); } return ''; } }); AWS.HttpResponse = inherit({ constructor: function HttpResponse() { this.statusCode = undefined; this.headers = {}; this.body = undefined; this.streaming = false; this.stream = null; }, createUnbufferedStream: function createUnbufferedStream() { this.streaming = true; return this.stream; } }); AWS.HttpClient = inherit({}); AWS.HttpClient.getInstance = function getInstance() { if (this.singleton === undefined) { this.singleton = new this(); } return this.singleton; }; },{"./core":201}],215:[function(require,module,exports){ var AWS = require('../core'); var EventEmitter = require('events').EventEmitter; require('../http'); AWS.XHRClient = AWS.util.inherit({ handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { var self = this; var endpoint = httpRequest.endpoint; var emitter = new EventEmitter(); var href = endpoint.protocol + '//' + endpoint.hostname; if (endpoint.port !== 80 && endpoint.port !== 443) { href += ':' + endpoint.port; } href += httpRequest.path; var xhr = new XMLHttpRequest(), headersEmitted = false; httpRequest.stream = xhr; xhr.addEventListener('readystatechange', function() { try { if (xhr.status === 0) return; // 0 code is invalid } catch (e) { return; } if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { try { xhr.responseType = 'arraybuffer'; } catch (e) {} emitter.statusCode = xhr.status; emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); emitter.emit('headers', emitter.statusCode, emitter.headers); headersEmitted = true; } if (this.readyState === this.DONE) { self.finishRequest(xhr, emitter); } }, false); xhr.upload.addEventListener('progress', function (evt) { emitter.emit('sendProgress', evt); }); xhr.addEventListener('progress', function (evt) { emitter.emit('receiveProgress', evt); }, false); xhr.addEventListener('timeout', function () { errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); }, false); xhr.addEventListener('error', function () { errCallback(AWS.util.error(new Error('Network Failure'), { code: 'NetworkingError' })); }, false); callback(emitter); xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); AWS.util.each(httpRequest.headers, function (key, value) { if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { xhr.setRequestHeader(key, value); } }); if (httpOptions.timeout && httpOptions.xhrAsync !== false) { xhr.timeout = httpOptions.timeout; } if (httpOptions.xhrWithCredentials) { xhr.withCredentials = true; } try { xhr.send(httpRequest.body); } catch (err) { if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly } else { throw err; } } return emitter; }, parseHeaders: function parseHeaders(rawHeaders) { var headers = {}; AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { var key = line.split(':', 1)[0]; var value = line.substring(key.length + 2); if (key.length > 0) headers[key.toLowerCase()] = value; }); return headers; }, finishRequest: function finishRequest(xhr, emitter) { var buffer; if (xhr.responseType === 'arraybuffer' && xhr.response) { var ab = xhr.response; buffer = new AWS.util.Buffer(ab.byteLength); var view = new Uint8Array(ab); for (var i = 0; i < buffer.length; ++i) { buffer[i] = view[i]; } } try { if (!buffer && typeof xhr.responseText === 'string') { buffer = new AWS.util.Buffer(xhr.responseText); } } catch (e) {} if (buffer) emitter.emit('data', buffer); emitter.emit('end'); } }); AWS.HttpClient.prototype = AWS.XHRClient.prototype; AWS.HttpClient.streamsApiVersion = 1; },{"../core":201,"../http":214,"events":265}],216:[function(require,module,exports){ var util = require('../util'); function JsonBuilder() { } JsonBuilder.prototype.build = function(value, shape) { return JSON.stringify(translate(value, shape)); }; function translate(value, shape) { if (!shape || value === undefined || value === null) return undefined; switch (shape.type) { case 'structure': return translateStructure(value, shape); case 'map': return translateMap(value, shape); case 'list': return translateList(value, shape); default: return translateScalar(value, shape); } } function translateStructure(structure, shape) { var struct = {}; util.each(structure, function(name, value) { var memberShape = shape.members[name]; if (memberShape) { if (memberShape.location !== 'body') return; var locationName = memberShape.isLocationName ? memberShape.name : name; var result = translate(value, memberShape); if (result !== undefined) struct[locationName] = result; } }); return struct; } function translateList(list, shape) { var out = []; util.arrayEach(list, function(value) { var result = translate(value, shape.member); if (result !== undefined) out.push(result); }); return out; } function translateMap(map, shape) { var out = {}; util.each(map, function(key, value) { var result = translate(value, shape.value); if (result !== undefined) out[key] = result; }); return out; } function translateScalar(value, shape) { return shape.toWireFormat(value); } module.exports = JsonBuilder; },{"../util":261}],217:[function(require,module,exports){ var util = require('../util'); function JsonParser() { } JsonParser.prototype.parse = function(value, shape) { return translate(JSON.parse(value), shape); }; function translate(value, shape) { if (!shape || value === undefined) return undefined; switch (shape.type) { case 'structure': return translateStructure(value, shape); case 'map': return translateMap(value, shape); case 'list': return translateList(value, shape); default: return translateScalar(value, shape); } } function translateStructure(structure, shape) { if (structure == null) return undefined; var struct = {}; var shapeMembers = shape.members; util.each(shapeMembers, function(name, memberShape) { var locationName = memberShape.isLocationName ? memberShape.name : name; if (Object.prototype.hasOwnProperty.call(structure, locationName)) { var value = structure[locationName]; var result = translate(value, memberShape); if (result !== undefined) struct[name] = result; } }); return struct; } function translateList(list, shape) { if (list == null) return undefined; var out = []; util.arrayEach(list, function(value) { var result = translate(value, shape.member); if (result === undefined) out.push(null); else out.push(result); }); return out; } function translateMap(map, shape) { if (map == null) return undefined; var out = {}; util.each(map, function(key, value) { var result = translate(value, shape.value); if (result === undefined) out[key] = null; else out[key] = result; }); return out; } function translateScalar(value, shape) { return shape.toType(value); } module.exports = JsonParser; },{"../util":261}],218:[function(require,module,exports){ var Collection = require('./collection'); var Operation = require('./operation'); var Shape = require('./shape'); var Paginator = require('./paginator'); var ResourceWaiter = require('./resource_waiter'); var util = require('../util'); var property = util.property; var memoizedProperty = util.memoizedProperty; function Api(api, options) { api = api || {}; options = options || {}; options.api = this; api.metadata = api.metadata || {}; property(this, 'isApi', true, false); property(this, 'apiVersion', api.metadata.apiVersion); property(this, 'endpointPrefix', api.metadata.endpointPrefix); property(this, 'signingName', api.metadata.signingName); property(this, 'globalEndpoint', api.metadata.globalEndpoint); property(this, 'signatureVersion', api.metadata.signatureVersion); property(this, 'jsonVersion', api.metadata.jsonVersion); property(this, 'targetPrefix', api.metadata.targetPrefix); property(this, 'protocol', api.metadata.protocol); property(this, 'timestampFormat', api.metadata.timestampFormat); property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); property(this, 'abbreviation', api.metadata.serviceAbbreviation); property(this, 'fullName', api.metadata.serviceFullName); memoizedProperty(this, 'className', function() { var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; if (!name) return null; name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); if (name === 'ElasticLoadBalancing') name = 'ELB'; return name; }); property(this, 'operations', new Collection(api.operations, options, function(name, operation) { return new Operation(name, operation, options); }, util.string.lowerFirst)); property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { return Shape.create(shape, options); })); property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { return new Paginator(name, paginator, options); })); property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { return new ResourceWaiter(name, waiter, options); }, util.string.lowerFirst)); if (options.documentation) { property(this, 'documentation', api.documentation); property(this, 'documentationUrl', api.documentationUrl); } } module.exports = Api; },{"../util":261,"./collection":219,"./operation":220,"./paginator":221,"./resource_waiter":222,"./shape":223}],219:[function(require,module,exports){ var memoizedProperty = require('../util').memoizedProperty; function memoize(name, value, fn, nameTr) { memoizedProperty(this, nameTr(name), function() { return fn(name, value); }); } function Collection(iterable, options, fn, nameTr) { nameTr = nameTr || String; var self = this; for (var id in iterable) { if (Object.prototype.hasOwnProperty.call(iterable, id)) { memoize.call(self, id, iterable[id], fn, nameTr); } } } module.exports = Collection; },{"../util":261}],220:[function(require,module,exports){ var Shape = require('./shape'); var util = require('../util'); var property = util.property; var memoizedProperty = util.memoizedProperty; function Operation(name, operation, options) { var self = this; options = options || {}; property(this, 'name', operation.name || name); property(this, 'api', options.api, false); operation.http = operation.http || {}; property(this, 'httpMethod', operation.http.method || 'POST'); property(this, 'httpPath', operation.http.requestUri || '/'); property(this, 'authtype', operation.authtype || ''); memoizedProperty(this, 'input', function() { if (!operation.input) { return new Shape.create({type: 'structure'}, options); } return Shape.create(operation.input, options); }); memoizedProperty(this, 'output', function() { if (!operation.output) { return new Shape.create({type: 'structure'}, options); } return Shape.create(operation.output, options); }); memoizedProperty(this, 'errors', function() { var list = []; if (!operation.errors) return null; for (var i = 0; i < operation.errors.length; i++) { list.push(Shape.create(operation.errors[i], options)); } return list; }); memoizedProperty(this, 'paginator', function() { return options.api.paginators[name]; }); if (options.documentation) { property(this, 'documentation', operation.documentation); property(this, 'documentationUrl', operation.documentationUrl); } memoizedProperty(this, 'idempotentMembers', function() { var idempotentMembers = []; var input = self.input; var members = input.members; if (!input.members) { return idempotentMembers; } for (var name in members) { if (!members.hasOwnProperty(name)) { continue; } if (members[name].isIdempotent === true) { idempotentMembers.push(name); } } return idempotentMembers; }); } module.exports = Operation; },{"../util":261,"./shape":223}],221:[function(require,module,exports){ var property = require('../util').property; function Paginator(name, paginator) { property(this, 'inputToken', paginator.input_token); property(this, 'limitKey', paginator.limit_key); property(this, 'moreResults', paginator.more_results); property(this, 'outputToken', paginator.output_token); property(this, 'resultKey', paginator.result_key); } module.exports = Paginator; },{"../util":261}],222:[function(require,module,exports){ var util = require('../util'); var property = util.property; function ResourceWaiter(name, waiter, options) { options = options || {}; property(this, 'name', name); property(this, 'api', options.api, false); if (waiter.operation) { property(this, 'operation', util.string.lowerFirst(waiter.operation)); } var self = this; var keys = [ 'type', 'description', 'delay', 'maxAttempts', 'acceptors' ]; keys.forEach(function(key) { var value = waiter[key]; if (value) { property(self, key, value); } }); } module.exports = ResourceWaiter; },{"../util":261}],223:[function(require,module,exports){ var Collection = require('./collection'); var util = require('../util'); function property(obj, name, value) { if (value !== null && value !== undefined) { util.property.apply(this, arguments); } } function memoizedProperty(obj, name) { if (!obj.constructor.prototype[name]) { util.memoizedProperty.apply(this, arguments); } } function Shape(shape, options, memberName) { options = options || {}; property(this, 'shape', shape.shape); property(this, 'api', options.api, false); property(this, 'type', shape.type); property(this, 'enum', shape.enum); property(this, 'min', shape.min); property(this, 'max', shape.max); property(this, 'pattern', shape.pattern); property(this, 'location', shape.location || this.location || 'body'); property(this, 'name', this.name || shape.xmlName || shape.queryName || shape.locationName || memberName); property(this, 'isStreaming', shape.streaming || this.isStreaming || false); property(this, 'isComposite', shape.isComposite || false); property(this, 'isShape', true, false); property(this, 'isQueryName', shape.queryName ? true : false, false); property(this, 'isLocationName', shape.locationName ? true : false, false); property(this, 'isIdempotent', shape.idempotencyToken === true); if (options.documentation) { property(this, 'documentation', shape.documentation); property(this, 'documentationUrl', shape.documentationUrl); } if (shape.xmlAttribute) { property(this, 'isXmlAttribute', shape.xmlAttribute || false); } property(this, 'defaultValue', null); this.toWireFormat = function(value) { if (value === null || value === undefined) return ''; return value; }; this.toType = function(value) { return value; }; } Shape.normalizedTypes = { character: 'string', double: 'float', long: 'integer', short: 'integer', biginteger: 'integer', bigdecimal: 'float', blob: 'binary' }; Shape.types = { 'structure': StructureShape, 'list': ListShape, 'map': MapShape, 'boolean': BooleanShape, 'timestamp': TimestampShape, 'float': FloatShape, 'integer': IntegerShape, 'string': StringShape, 'base64': Base64Shape, 'binary': BinaryShape }; Shape.resolve = function resolve(shape, options) { if (shape.shape) { var refShape = options.api.shapes[shape.shape]; if (!refShape) { throw new Error('Cannot find shape reference: ' + shape.shape); } return refShape; } else { return null; } }; Shape.create = function create(shape, options, memberName) { if (shape.isShape) return shape; var refShape = Shape.resolve(shape, options); if (refShape) { var filteredKeys = Object.keys(shape); if (!options.documentation) { filteredKeys = filteredKeys.filter(function(name) { return !name.match(/documentation/); }); } if (filteredKeys === ['shape']) { // no inline customizations return refShape; } var InlineShape = function() { refShape.constructor.call(this, shape, options, memberName); }; InlineShape.prototype = refShape; return new InlineShape(); } else { if (!shape.type) { if (shape.members) shape.type = 'structure'; else if (shape.member) shape.type = 'list'; else if (shape.key) shape.type = 'map'; else shape.type = 'string'; } var origType = shape.type; if (Shape.normalizedTypes[shape.type]) { shape.type = Shape.normalizedTypes[shape.type]; } if (Shape.types[shape.type]) { return new Shape.types[shape.type](shape, options, memberName); } else { throw new Error('Unrecognized shape type: ' + origType); } } }; function CompositeShape(shape) { Shape.apply(this, arguments); property(this, 'isComposite', true); if (shape.flattened) { property(this, 'flattened', shape.flattened || false); } } function StructureShape(shape, options) { var requiredMap = null, firstInit = !this.isShape; CompositeShape.apply(this, arguments); if (firstInit) { property(this, 'defaultValue', function() { return {}; }); property(this, 'members', {}); property(this, 'memberNames', []); property(this, 'required', []); property(this, 'isRequired', function() { return false; }); } if (shape.members) { property(this, 'members', new Collection(shape.members, options, function(name, member) { return Shape.create(member, options, name); })); memoizedProperty(this, 'memberNames', function() { return shape.xmlOrder || Object.keys(shape.members); }); } if (shape.required) { property(this, 'required', shape.required); property(this, 'isRequired', function(name) { if (!requiredMap) { requiredMap = {}; for (var i = 0; i < shape.required.length; i++) { requiredMap[shape.required[i]] = true; } } return requiredMap[name]; }, false, true); } property(this, 'resultWrapper', shape.resultWrapper || null); if (shape.payload) { property(this, 'payload', shape.payload); } if (typeof shape.xmlNamespace === 'string') { property(this, 'xmlNamespaceUri', shape.xmlNamespace); } else if (typeof shape.xmlNamespace === 'object') { property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); } } function ListShape(shape, options) { var self = this, firstInit = !this.isShape; CompositeShape.apply(this, arguments); if (firstInit) { property(this, 'defaultValue', function() { return []; }); } if (shape.member) { memoizedProperty(this, 'member', function() { return Shape.create(shape.member, options); }); } if (this.flattened) { var oldName = this.name; memoizedProperty(this, 'name', function() { return self.member.name || oldName; }); } } function MapShape(shape, options) { var firstInit = !this.isShape; CompositeShape.apply(this, arguments); if (firstInit) { property(this, 'defaultValue', function() { return {}; }); property(this, 'key', Shape.create({type: 'string'}, options)); property(this, 'value', Shape.create({type: 'string'}, options)); } if (shape.key) { memoizedProperty(this, 'key', function() { return Shape.create(shape.key, options); }); } if (shape.value) { memoizedProperty(this, 'value', function() { return Shape.create(shape.value, options); }); } } function TimestampShape(shape) { var self = this; Shape.apply(this, arguments); if (this.location === 'header') { property(this, 'timestampFormat', 'rfc822'); } else if (shape.timestampFormat) { property(this, 'timestampFormat', shape.timestampFormat); } else if (this.api) { if (this.api.timestampFormat) { property(this, 'timestampFormat', this.api.timestampFormat); } else { switch (this.api.protocol) { case 'json': case 'rest-json': property(this, 'timestampFormat', 'unixTimestamp'); break; case 'rest-xml': case 'query': case 'ec2': property(this, 'timestampFormat', 'iso8601'); break; } } } this.toType = function(value) { if (value === null || value === undefined) return null; if (typeof value.toUTCString === 'function') return value; return typeof value === 'string' || typeof value === 'number' ? util.date.parseTimestamp(value) : null; }; this.toWireFormat = function(value) { return util.date.format(value, self.timestampFormat); }; } function StringShape() { Shape.apply(this, arguments); if (this.api) { switch (this.api.protocol) { case 'rest-xml': case 'query': case 'ec2': this.toType = function(value) { return value || ''; }; } } } function FloatShape() { Shape.apply(this, arguments); this.toType = function(value) { if (value === null || value === undefined) return null; return parseFloat(value); }; this.toWireFormat = this.toType; } function IntegerShape() { Shape.apply(this, arguments); this.toType = function(value) { if (value === null || value === undefined) return null; return parseInt(value, 10); }; this.toWireFormat = this.toType; } function BinaryShape() { Shape.apply(this, arguments); this.toType = util.base64.decode; this.toWireFormat = util.base64.encode; } function Base64Shape() { BinaryShape.apply(this, arguments); } function BooleanShape() { Shape.apply(this, arguments); this.toType = function(value) { if (typeof value === 'boolean') return value; if (value === null || value === undefined) return null; return value === 'true'; }; } Shape.shapes = { StructureShape: StructureShape, ListShape: ListShape, MapShape: MapShape, StringShape: StringShape, BooleanShape: BooleanShape, Base64Shape: Base64Shape }; module.exports = Shape; },{"../util":261,"./collection":219}],224:[function(require,module,exports){ var AWS = require('./core'); AWS.ParamValidator = AWS.util.inherit({ constructor: function ParamValidator(validation) { if (validation === true || validation === undefined) { validation = {'min': true}; } this.validation = validation; }, validate: function validate(shape, params, context) { this.errors = []; this.validateMember(shape, params || {}, context || 'params'); if (this.errors.length > 1) { var msg = this.errors.join('\n* '); msg = 'There were ' + this.errors.length + ' validation errors:\n* ' + msg; throw AWS.util.error(new Error(msg), {code: 'MultipleValidationErrors', errors: this.errors}); } else if (this.errors.length === 1) { throw this.errors[0]; } else { return true; } }, fail: function fail(code, message) { this.errors.push(AWS.util.error(new Error(message), {code: code})); }, validateStructure: function validateStructure(shape, params, context) { this.validateType(params, context, ['object'], 'structure'); var paramName; for (var i = 0; shape.required && i < shape.required.length; i++) { paramName = shape.required[i]; var value = params[paramName]; if (value === undefined || value === null) { this.fail('MissingRequiredParameter', 'Missing required key \'' + paramName + '\' in ' + context); } } for (paramName in params) { if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; var paramValue = params[paramName], memberShape = shape.members[paramName]; if (memberShape !== undefined) { var memberContext = [context, paramName].join('.'); this.validateMember(memberShape, paramValue, memberContext); } else { this.fail('UnexpectedParameter', 'Unexpected key \'' + paramName + '\' found in ' + context); } } return true; }, validateMember: function validateMember(shape, param, context) { switch (shape.type) { case 'structure': return this.validateStructure(shape, param, context); case 'list': return this.validateList(shape, param, context); case 'map': return this.validateMap(shape, param, context); default: return this.validateScalar(shape, param, context); } }, validateList: function validateList(shape, params, context) { if (this.validateType(params, context, [Array])) { this.validateRange(shape, params.length, context, 'list member count'); for (var i = 0; i < params.length; i++) { this.validateMember(shape.member, params[i], context + '[' + i + ']'); } } }, validateMap: function validateMap(shape, params, context) { if (this.validateType(params, context, ['object'], 'map')) { var mapCount = 0; for (var param in params) { if (!Object.prototype.hasOwnProperty.call(params, param)) continue; this.validateMember(shape.key, param, context + '[key=\'' + param + '\']') this.validateMember(shape.value, params[param], context + '[\'' + param + '\']'); mapCount++; } this.validateRange(shape, mapCount, context, 'map member count'); } }, validateScalar: function validateScalar(shape, value, context) { switch (shape.type) { case null: case undefined: case 'string': return this.validateString(shape, value, context); case 'base64': case 'binary': return this.validatePayload(value, context); case 'integer': case 'float': return this.validateNumber(shape, value, context); case 'boolean': return this.validateType(value, context, ['boolean']); case 'timestamp': return this.validateType(value, context, [Date, /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], 'Date object, ISO-8601 string, or a UNIX timestamp'); default: return this.fail('UnkownType', 'Unhandled type ' + shape.type + ' for ' + context); } }, validateString: function validateString(shape, value, context) { if (this.validateType(value, context, ['string'])) { this.validateEnum(shape, value, context); this.validateRange(shape, value.length, context, 'string length'); this.validatePattern(shape, value, context); } }, validatePattern: function validatePattern(shape, value, context) { if (this.validation['pattern'] && shape['pattern'] !== undefined) { if (!(new RegExp(shape['pattern'])).test(value)) { this.fail('PatternMatchError', 'Provided value "' + value + '" ' + 'does not match regex pattern /' + shape['pattern'] + '/ for ' + context); } } }, validateRange: function validateRange(shape, value, context, descriptor) { if (this.validation['min']) { if (shape['min'] !== undefined && value < shape['min']) { this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' + shape['min'] + ', but found ' + value + ' for ' + context); } } if (this.validation['max']) { if (shape['max'] !== undefined && value > shape['max']) { this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' + shape['max'] + ', but found ' + value + ' for ' + context); } } }, validateEnum: function validateRange(shape, value, context) { if (this.validation['enum'] && shape['enum'] !== undefined) { if (shape['enum'].indexOf(value) === -1) { this.fail('EnumError', 'Found string value of ' + value + ', but ' + 'expected ' + shape['enum'].join('|') + ' for ' + context); } } }, validateType: function validateType(value, context, acceptedTypes, type) { if (value === null || value === undefined) return false; var foundInvalidType = false; for (var i = 0; i < acceptedTypes.length; i++) { if (typeof acceptedTypes[i] === 'string') { if (typeof value === acceptedTypes[i]) return true; } else if (acceptedTypes[i] instanceof RegExp) { if ((value || '').toString().match(acceptedTypes[i])) return true; } else { if (value instanceof acceptedTypes[i]) return true; if (AWS.util.isType(value, acceptedTypes[i])) return true; if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); } foundInvalidType = true; } var acceptedType = type; if (!acceptedType) { acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); } var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + vowel + ' ' + acceptedType); return false; }, validateNumber: function validateNumber(shape, value, context) { if (value === null || value === undefined) return; if (typeof value === 'string') { var castedValue = parseFloat(value); if (castedValue.toString() === value) value = castedValue; } if (this.validateType(value, context, ['number'])) { this.validateRange(shape, value, context, 'numeric value'); } }, validatePayload: function validatePayload(value, context) { if (value === null || value === undefined) return; if (typeof value === 'string') return; if (value && typeof value.byteLength === 'number') return; // typed arrays if (AWS.util.isNode()) { // special check for buffer/stream in Node.js var Stream = AWS.util.stream.Stream; if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; } var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; if (value) { for (var i = 0; i < types.length; i++) { if (AWS.util.isType(value, types[i])) return; if (AWS.util.typeName(value.constructor) === types[i]) return; } } this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + 'string, Buffer, Stream, Blob, or typed array object'); } }); },{"./core":201}],225:[function(require,module,exports){ var AWS = require('../core'); var rest = require('../protocol/rest'); AWS.Polly.Presigner = AWS.util.inherit({ constructor: function Signer(options) { options = options || {}; this.options = options; this.service = options.service; this.bindServiceObject(options); this._operations = {}; }, bindServiceObject: function bindServiceObject(options) { options = options || {}; if (!this.service) { this.service = new AWS.Polly(options); } else { var config = AWS.util.copy(this.service.config); this.service = new this.service.constructor.__super__(config); this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params); } }, modifyInputMembers: function modifyInputMembers(input) { var modifiedInput = AWS.util.copy(input); modifiedInput.members = AWS.util.copy(input.members); AWS.util.each(input.members, function(name, member) { modifiedInput.members[name] = AWS.util.copy(member); if (!member.location || member.location === 'body') { modifiedInput.members[name].location = 'querystring'; modifiedInput.members[name].locationName = name; } }); return modifiedInput; }, convertPostToGet: function convertPostToGet(req) { req.httpRequest.method = 'GET'; var operation = req.service.api.operations[req.operation]; var input = this._operations[req.operation]; if (!input) { this._operations[req.operation] = input = this.modifyInputMembers(operation.input); } var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params); req.httpRequest.path = uri; req.httpRequest.body = ''; delete req.httpRequest.headers['Content-Length']; delete req.httpRequest.headers['Content-Type']; }, getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) { var self = this; var request = this.service.makeRequest('synthesizeSpeech', params); request.removeAllListeners('build'); request.on('build', function(req) { self.convertPostToGet(req); }); return request.presign(expires, callback); } }); },{"../core":201,"../protocol/rest":228}],226:[function(require,module,exports){ var util = require('../util'); var JsonBuilder = require('../json/builder'); var JsonParser = require('../json/parser'); function buildRequest(req) { var httpRequest = req.httpRequest; var api = req.service.api; var target = api.targetPrefix + '.' + api.operations[req.operation].name; var version = api.jsonVersion || '1.0'; var input = api.operations[req.operation].input; var builder = new JsonBuilder(); if (version === 1) version = '1.0'; httpRequest.body = builder.build(req.params || {}, input); httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; httpRequest.headers['X-Amz-Target'] = target; } function extractError(resp) { var error = {}; var httpResponse = resp.httpResponse; error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; if (typeof error.code === 'string') { error.code = error.code.split(':')[0]; } if (httpResponse.body.length > 0) { var e = JSON.parse(httpResponse.body.toString()); if (e.__type || e.code) { error.code = (e.__type || e.code).split('#').pop(); } if (error.code === 'RequestEntityTooLarge') { error.message = 'Request body must be less than 1 MB'; } else { error.message = (e.message || e.Message || null); } } else { error.statusCode = httpResponse.statusCode; error.message = httpResponse.statusCode.toString(); } resp.error = util.error(new Error(), error); } function extractData(resp) { var body = resp.httpResponse.body.toString() || '{}'; if (resp.request.service.config.convertResponseTypes === false) { resp.data = JSON.parse(body); } else { var operation = resp.request.service.api.operations[resp.request.operation]; var shape = operation.output || {}; var parser = new JsonParser(); resp.data = parser.parse(body, shape); } } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData }; },{"../json/builder":216,"../json/parser":217,"../util":261}],227:[function(require,module,exports){ var AWS = require('../core'); var util = require('../util'); var QueryParamSerializer = require('../query/query_param_serializer'); var Shape = require('../model/shape'); function buildRequest(req) { var operation = req.service.api.operations[req.operation]; var httpRequest = req.httpRequest; httpRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; httpRequest.params = { Version: req.service.api.apiVersion, Action: operation.name }; var builder = new QueryParamSerializer(); builder.serialize(req.params, operation.input, function(name, value) { httpRequest.params[name] = value; }); httpRequest.body = util.queryParamsToString(httpRequest.params); } function extractError(resp) { var data, body = resp.httpResponse.body.toString(); if (body.match('= 0 ? '&' : '?'); var parts = []; util.arrayEach(Object.keys(queryString).sort(), function(key) { if (!Array.isArray(queryString[key])) { queryString[key] = [queryString[key]]; } for (var i = 0; i < queryString[key].length; i++) { parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); } }); uri += parts.join('&'); } return uri; } function populateURI(req) { var operation = req.service.api.operations[req.operation]; var input = operation.input; var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params); req.httpRequest.path = uri; } function populateHeaders(req) { var operation = req.service.api.operations[req.operation]; util.each(operation.input.members, function (name, member) { var value = req.params[name]; if (value === null || value === undefined) return; if (member.location === 'headers' && member.type === 'map') { util.each(value, function(key, memberValue) { req.httpRequest.headers[member.name + key] = memberValue; }); } else if (member.location === 'header') { value = member.toWireFormat(value).toString(); req.httpRequest.headers[member.name] = value; } }); } function buildRequest(req) { populateMethod(req); populateURI(req); populateHeaders(req); } function extractError() { } function extractData(resp) { var req = resp.request; var data = {}; var r = resp.httpResponse; var operation = req.service.api.operations[req.operation]; var output = operation.output; var headers = {}; util.each(r.headers, function (k, v) { headers[k.toLowerCase()] = v; }); util.each(output.members, function(name, member) { var header = (member.name || name).toLowerCase(); if (member.location === 'headers' && member.type === 'map') { data[name] = {}; var location = member.isLocationName ? member.name : ''; var pattern = new RegExp('^' + location + '(.+)', 'i'); util.each(r.headers, function (k, v) { var result = k.match(pattern); if (result !== null) { data[name][result[1]] = v; } }); } else if (member.location === 'header') { if (headers[header] !== undefined) { data[name] = headers[header]; } } else if (member.location === 'statusCode') { data[name] = parseInt(r.statusCode, 10); } }); resp.data = data; } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData, generateURI: generateURI }; },{"../util":261}],229:[function(require,module,exports){ var util = require('../util'); var Rest = require('./rest'); var Json = require('./json'); var JsonBuilder = require('../json/builder'); var JsonParser = require('../json/parser'); function populateBody(req) { var builder = new JsonBuilder(); var input = req.service.api.operations[req.operation].input; if (input.payload) { var params = {}; var payloadShape = input.members[input.payload]; params = req.params[input.payload]; if (params === undefined) return; if (payloadShape.type === 'structure') { req.httpRequest.body = builder.build(params, payloadShape); } else { // non-JSON payload req.httpRequest.body = params; } } else { req.httpRequest.body = builder.build(req.params, input); } } function buildRequest(req) { Rest.buildRequest(req); if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { populateBody(req); } } function extractError(resp) { Json.extractError(resp); } function extractData(resp) { Rest.extractData(resp); var req = resp.request; var rules = req.service.api.operations[req.operation].output || {}; if (rules.payload) { var payloadMember = rules.members[rules.payload]; var body = resp.httpResponse.body; if (payloadMember.isStreaming) { resp.data[rules.payload] = body; } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { var parser = new JsonParser(); resp.data[rules.payload] = parser.parse(body, payloadMember); } else { resp.data[rules.payload] = body.toString(); } } else { var data = resp.data; Json.extractData(resp); resp.data = util.merge(data, resp.data); } } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData }; },{"../json/builder":216,"../json/parser":217,"../util":261,"./json":226,"./rest":228}],230:[function(require,module,exports){ var AWS = require('../core'); var util = require('../util'); var Rest = require('./rest'); function populateBody(req) { var input = req.service.api.operations[req.operation].input; var builder = new AWS.XML.Builder(); var params = req.params; var payload = input.payload; if (payload) { var payloadMember = input.members[payload]; params = params[payload]; if (params === undefined) return; if (payloadMember.type === 'structure') { var rootElement = payloadMember.name; req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); } else { // non-xml payload req.httpRequest.body = params; } } else { req.httpRequest.body = builder.toXML(params, input, input.name || input.shape || util.string.upperFirst(req.operation) + 'Request'); } } function buildRequest(req) { Rest.buildRequest(req); if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { populateBody(req); } } function extractError(resp) { Rest.extractError(resp); var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); if (data.Errors) data = data.Errors; if (data.Error) data = data.Error; if (data.Code) { resp.error = util.error(new Error(), { code: data.Code, message: data.Message }); } else { resp.error = util.error(new Error(), { code: resp.httpResponse.statusCode, message: null }); } } function extractData(resp) { Rest.extractData(resp); var parser; var req = resp.request; var body = resp.httpResponse.body; var operation = req.service.api.operations[req.operation]; var output = operation.output; var payload = output.payload; if (payload) { var payloadMember = output.members[payload]; if (payloadMember.isStreaming) { resp.data[payload] = body; } else if (payloadMember.type === 'structure') { parser = new AWS.XML.Parser(); resp.data[payload] = parser.parse(body.toString(), payloadMember); } else { resp.data[payload] = body.toString(); } } else if (body.length > 0) { parser = new AWS.XML.Parser(); var data = parser.parse(body.toString(), output); util.update(resp.data, data); } } module.exports = { buildRequest: buildRequest, extractError: extractError, extractData: extractData }; },{"../core":201,"../util":261,"./rest":228}],231:[function(require,module,exports){ var util = require('../util'); function QueryParamSerializer() { } QueryParamSerializer.prototype.serialize = function(params, shape, fn) { serializeStructure('', params, shape, fn); }; function ucfirst(shape) { if (shape.isQueryName || shape.api.protocol !== 'ec2') { return shape.name; } else { return shape.name[0].toUpperCase() + shape.name.substr(1); } } function serializeStructure(prefix, struct, rules, fn) { util.each(rules.members, function(name, member) { var value = struct[name]; if (value === null || value === undefined) return; var memberName = ucfirst(member); memberName = prefix ? prefix + '.' + memberName : memberName; serializeMember(memberName, value, member, fn); }); } function serializeMap(name, map, rules, fn) { var i = 1; util.each(map, function (key, value) { var prefix = rules.flattened ? '.' : '.entry.'; var position = prefix + (i++) + '.'; var keyName = position + (rules.key.name || 'key'); var valueName = position + (rules.value.name || 'value'); serializeMember(name + keyName, key, rules.key, fn); serializeMember(name + valueName, value, rules.value, fn); }); } function serializeList(name, list, rules, fn) { var memberRules = rules.member || {}; if (list.length === 0) { fn.call(this, name, null); return; } util.arrayEach(list, function (v, n) { var suffix = '.' + (n + 1); if (rules.api.protocol === 'ec2') { suffix = suffix + ''; // make linter happy } else if (rules.flattened) { if (memberRules.name) { var parts = name.split('.'); parts.pop(); parts.push(ucfirst(memberRules)); name = parts.join('.'); } } else { suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix; } serializeMember(name + suffix, v, memberRules, fn); }); } function serializeMember(name, value, rules, fn) { if (value === null || value === undefined) return; if (rules.type === 'structure') { serializeStructure(name, value, rules, fn); } else if (rules.type === 'list') { serializeList(name, value, rules, fn); } else if (rules.type === 'map') { serializeMap(name, value, rules, fn); } else { fn(name, rules.toWireFormat(value).toString()); } } module.exports = QueryParamSerializer; },{"../util":261}],232:[function(require,module,exports){ module.exports={ "rules": { "*/*": { "endpoint": "{service}.{region}.amazonaws.com" }, "cn-*/*": { "endpoint": "{service}.{region}.amazonaws.com.cn" }, "*/budgets": "globalSSL", "*/cloudfront": "globalSSL", "*/iam": "globalSSL", "*/sts": "globalSSL", "*/importexport": { "endpoint": "{service}.amazonaws.com", "signatureVersion": "v2", "globalEndpoint": true }, "*/route53": { "endpoint": "https://{service}.amazonaws.com", "signatureVersion": "v3https", "globalEndpoint": true }, "*/waf": "globalSSL", "us-gov-*/iam": "globalGovCloud", "us-gov-*/sts": { "endpoint": "{service}.{region}.amazonaws.com" }, "us-gov-west-1/s3": "s3dash", "us-west-1/s3": "s3dash", "us-west-2/s3": "s3dash", "eu-west-1/s3": "s3dash", "ap-southeast-1/s3": "s3dash", "ap-southeast-2/s3": "s3dash", "ap-northeast-1/s3": "s3dash", "sa-east-1/s3": "s3dash", "us-east-1/s3": { "endpoint": "{service}.amazonaws.com", "signatureVersion": "s3" }, "us-east-1/sdb": { "endpoint": "{service}.amazonaws.com", "signatureVersion": "v2" }, "*/sdb": { "endpoint": "{service}.{region}.amazonaws.com", "signatureVersion": "v2" } }, "patterns": { "globalSSL": { "endpoint": "https://{service}.amazonaws.com", "globalEndpoint": true }, "globalGovCloud": { "endpoint": "{service}.us-gov.amazonaws.com" }, "s3dash": { "endpoint": "{service}-{region}.amazonaws.com", "signatureVersion": "s3" } } } },{}],233:[function(require,module,exports){ var util = require('./util'); var regionConfig = require('./region_config.json'); function generateRegionPrefix(region) { if (!region) return null; var parts = region.split('-'); if (parts.length < 3) return null; return parts.slice(0, parts.length - 2).join('-') + '-*'; } function derivedKeys(service) { var region = service.config.region; var regionPrefix = generateRegionPrefix(region); var endpointPrefix = service.api.endpointPrefix; return [ [region, endpointPrefix], [regionPrefix, endpointPrefix], [region, '*'], [regionPrefix, '*'], ['*', endpointPrefix], ['*', '*'] ].map(function(item) { return item[0] && item[1] ? item.join('/') : null; }); } function applyConfig(service, config) { util.each(config, function(key, value) { if (key === 'globalEndpoint') return; if (service.config[key] === undefined || service.config[key] === null) { service.config[key] = value; } }); } function configureEndpoint(service) { var keys = derivedKeys(service); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!key) continue; if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { var config = regionConfig.rules[key]; if (typeof config === 'string') { config = regionConfig.patterns[config]; } if (service.config.useDualstack && util.isDualstackAvailable(service)) { config = util.copy(config); config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; } service.isGlobalEndpoint = !!config.globalEndpoint; if (!config.signatureVersion) config.signatureVersion = 'v4'; applyConfig(service, config); return; } } } module.exports = configureEndpoint; },{"./region_config.json":232,"./util":261}],234:[function(require,module,exports){ (function (process){ var AWS = require('./core'); var AcceptorStateMachine = require('./state_machine'); var inherit = AWS.util.inherit; var domain = AWS.util.domain; var jmespath = require('jmespath'); var hardErrorStates = {success: 1, error: 1, complete: 1}; function isTerminalState(machine) { return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); } var fsm = new AcceptorStateMachine(); fsm.setupStates = function() { var transition = function(_, done) { var self = this; self._haltHandlersOnError = false; self.emit(self._asm.currentState, function(err) { if (err) { if (isTerminalState(self)) { if (domain && self.domain instanceof domain.Domain) { err.domainEmitter = self; err.domain = self.domain; err.domainThrown = false; self.domain.emit('error', err); } else { throw err; } } else { self.response.error = err; done(err); } } else { done(self.response.error); } }); }; this.addState('validate', 'build', 'error', transition); this.addState('build', 'afterBuild', 'restart', transition); this.addState('afterBuild', 'sign', 'restart', transition); this.addState('sign', 'send', 'retry', transition); this.addState('retry', 'afterRetry', 'afterRetry', transition); this.addState('afterRetry', 'sign', 'error', transition); this.addState('send', 'validateResponse', 'retry', transition); this.addState('validateResponse', 'extractData', 'extractError', transition); this.addState('extractError', 'extractData', 'retry', transition); this.addState('extractData', 'success', 'retry', transition); this.addState('restart', 'build', 'error', transition); this.addState('success', 'complete', 'complete', transition); this.addState('error', 'complete', 'complete', transition); this.addState('complete', null, null, transition); }; fsm.setupStates(); AWS.Request = inherit({ constructor: function Request(service, operation, params) { var endpoint = service.endpoint; var region = service.config.region; var customUserAgent = service.config.customUserAgent; if (service.isGlobalEndpoint) region = 'us-east-1'; this.domain = domain && domain.active; this.service = service; this.operation = operation; this.params = params || {}; this.httpRequest = new AWS.HttpRequest(endpoint, region); this.httpRequest.appendToUserAgent(customUserAgent); this.startTime = AWS.util.date.getDate(); this.response = new AWS.Response(this); this._asm = new AcceptorStateMachine(fsm.states, 'validate'); this._haltHandlersOnError = false; AWS.SequentialExecutor.call(this); this.emit = this.emitEvent; }, send: function send(callback) { if (callback) { this.httpRequest.appendToUserAgent('callback'); this.on('complete', function (resp) { callback.call(resp, resp.error, resp.data); }); } this.runTo(); return this.response; }, build: function build(callback) { return this.runTo('send', callback); }, runTo: function runTo(state, done) { this._asm.runTo(state, done, this); return this; }, abort: function abort() { this.removeAllListeners('validateResponse'); this.removeAllListeners('extractError'); this.on('validateResponse', function addAbortedError(resp) { resp.error = AWS.util.error(new Error('Request aborted by user'), { code: 'RequestAbortedError', retryable: false }); }); if (this.httpRequest.stream) { // abort HTTP stream this.httpRequest.stream.abort(); if (this.httpRequest._abortCallback) { this.httpRequest._abortCallback(); } else { this.removeAllListeners('send'); // haven't sent yet, so let's not } } return this; }, eachPage: function eachPage(callback) { callback = AWS.util.fn.makeAsync(callback, 3); function wrappedCallback(response) { callback.call(response, response.error, response.data, function (result) { if (result === false) return; if (response.hasNextPage()) { response.nextPage().on('complete', wrappedCallback).send(); } else { callback.call(response, null, null, AWS.util.fn.noop); } }); } this.on('complete', wrappedCallback).send(); }, eachItem: function eachItem(callback) { var self = this; function wrappedCallback(err, data) { if (err) return callback(err, null); if (data === null) return callback(null, null); var config = self.service.paginationConfig(self.operation); var resultKey = config.resultKey; if (Array.isArray(resultKey)) resultKey = resultKey[0]; var items = jmespath.search(data, resultKey); var continueIteration = true; AWS.util.arrayEach(items, function(item) { continueIteration = callback(null, item); if (continueIteration === false) { return AWS.util.abort; } }); return continueIteration; } this.eachPage(wrappedCallback); }, isPageable: function isPageable() { return this.service.paginationConfig(this.operation) ? true : false; }, createReadStream: function createReadStream() { var streams = AWS.util.stream; var req = this; var stream = null; if (AWS.HttpClient.streamsApiVersion === 2) { stream = new streams.PassThrough(); req.send(); } else { stream = new streams.Stream(); stream.readable = true; stream.sent = false; stream.on('newListener', function(event) { if (!stream.sent && event === 'data') { stream.sent = true; process.nextTick(function() { req.send(); }); } }); } this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { if (statusCode < 300) { req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); req.on('httpError', function streamHttpError(error) { resp.error = error; resp.error.retryable = false; }); var shouldCheckContentLength = false; var expectedLen; if (req.httpRequest.method !== 'HEAD') { expectedLen = parseInt(headers['content-length'], 10); } if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { shouldCheckContentLength = true; var receivedLen = 0; } var checkContentLengthAndEmit = function checkContentLengthAndEmit() { if (shouldCheckContentLength && receivedLen !== expectedLen) { stream.emit('error', AWS.util.error( new Error('Stream content length mismatch. Received ' + receivedLen + ' of ' + expectedLen + ' bytes.'), { code: 'StreamContentLengthMismatch' } )); } else if (AWS.HttpClient.streamsApiVersion === 2) { stream.end(); } else { stream.emit('end') } } var httpStream = resp.httpResponse.createUnbufferedStream(); if (AWS.HttpClient.streamsApiVersion === 2) { if (shouldCheckContentLength) { var lengthAccumulator = new streams.PassThrough(); lengthAccumulator._write = function(chunk) { if (chunk && chunk.length) { receivedLen += chunk.length; } return streams.PassThrough.prototype._write.apply(this, arguments); }; lengthAccumulator.on('end', checkContentLengthAndEmit); httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); } else { httpStream.pipe(stream); } } else { if (shouldCheckContentLength) { httpStream.on('data', function(arg) { if (arg && arg.length) { receivedLen += arg.length; } }); } httpStream.on('data', function(arg) { stream.emit('data', arg); }); httpStream.on('end', checkContentLengthAndEmit); } httpStream.on('error', function(err) { shouldCheckContentLength = false; stream.emit('error', err); }); } }); this.on('error', function(err) { stream.emit('error', err); }); return stream; }, emitEvent: function emit(eventName, args, done) { if (typeof args === 'function') { done = args; args = null; } if (!done) done = function() { }; if (!args) args = this.eventParameters(eventName, this.response); var origEmit = AWS.SequentialExecutor.prototype.emit; origEmit.call(this, eventName, args, function (err) { if (err) this.response.error = err; done.call(this, err); }); }, eventParameters: function eventParameters(eventName) { switch (eventName) { case 'restart': case 'validate': case 'sign': case 'build': case 'afterValidate': case 'afterBuild': return [this]; case 'error': return [this.response.error, this.response]; default: return [this.response]; } }, presign: function presign(expires, callback) { if (!callback && typeof expires === 'function') { callback = expires; expires = null; } return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); }, isPresigned: function isPresigned() { return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); }, toUnauthenticated: function toUnauthenticated() { this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); this.removeListener('sign', AWS.EventListeners.Core.SIGN); return this; }, toGet: function toGet() { if (this.service.api.protocol === 'query' || this.service.api.protocol === 'ec2') { this.removeListener('build', this.buildAsGet); this.addListener('build', this.buildAsGet); } return this; }, buildAsGet: function buildAsGet(request) { request.httpRequest.method = 'GET'; request.httpRequest.path = request.service.endpoint.path + '?' + request.httpRequest.body; request.httpRequest.body = ''; delete request.httpRequest.headers['Content-Length']; delete request.httpRequest.headers['Content-Type']; }, haltHandlersOnError: function haltHandlersOnError() { this._haltHandlersOnError = true; } }); AWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) { this.prototype.promise = function promise() { var self = this; this.httpRequest.appendToUserAgent('promise'); return new PromiseDependency(function(resolve, reject) { self.on('complete', function(resp) { if (resp.error) { reject(resp.error); } else { resolve(resp.data); } }); self.runTo(); }); }; }; AWS.Request.deletePromisesFromClass = function deletePromisesFromClass() { delete this.prototype.promise; }; AWS.util.addPromises(AWS.Request); AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); }).call(this,require('_process')) },{"./core":201,"./state_machine":260,"_process":266,"jmespath":284}],235:[function(require,module,exports){ var AWS = require('./core'); var inherit = AWS.util.inherit; var jmespath = require('jmespath'); function CHECK_ACCEPTORS(resp) { var waiter = resp.request._waiter; var acceptors = waiter.config.acceptors; var acceptorMatched = false; var state = 'retry'; acceptors.forEach(function(acceptor) { if (!acceptorMatched) { var matcher = waiter.matchers[acceptor.matcher]; if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { acceptorMatched = true; state = acceptor.state; } } }); if (!acceptorMatched && resp.error) state = 'failure'; if (state === 'success') { waiter.setSuccess(resp); } else { waiter.setError(resp, state === 'retry'); } } AWS.ResourceWaiter = inherit({ constructor: function constructor(service, state) { this.service = service; this.state = state; this.loadWaiterConfig(this.state); }, service: null, state: null, config: null, matchers: { path: function(resp, expected, argument) { var result = jmespath.search(resp.data, argument); return jmespath.strictDeepEqual(result,expected); }, pathAll: function(resp, expected, argument) { var results = jmespath.search(resp.data, argument); if (!Array.isArray(results)) results = [results]; var numResults = results.length; if (!numResults) return false; for (var ind = 0 ; ind < numResults; ind++) { if (!jmespath.strictDeepEqual(results[ind], expected)) { return false; } } return true; }, pathAny: function(resp, expected, argument) { var results = jmespath.search(resp.data, argument); if (!Array.isArray(results)) results = [results]; var numResults = results.length; for (var ind = 0 ; ind < numResults; ind++) { if (jmespath.strictDeepEqual(results[ind], expected)) { return true; } } return false; }, status: function(resp, expected) { var statusCode = resp.httpResponse.statusCode; return (typeof statusCode === 'number') && (statusCode === expected); }, error: function(resp, expected) { if (typeof expected === 'string' && resp.error) { return expected === resp.error.code; } return expected === !!resp.error; } }, listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { add('RETRY_CHECK', 'retry', function(resp) { var waiter = resp.request._waiter; if (resp.error && resp.error.code === 'ResourceNotReady') { resp.error.retryDelay = (waiter.config.delay || 0) * 1000; } }); add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); }), wait: function wait(params, callback) { if (typeof params === 'function') { callback = params; params = undefined; } var request = this.service.makeRequest(this.config.operation, params); request._waiter = this; request.response.maxRetries = this.config.maxAttempts; request.addListeners(this.listeners); if (callback) request.send(callback); return request; }, setSuccess: function setSuccess(resp) { resp.error = null; resp.data = resp.data || {}; resp.request.removeAllListeners('extractData'); }, setError: function setError(resp, retryable) { resp.data = null; resp.error = AWS.util.error(resp.error || new Error(), { code: 'ResourceNotReady', message: 'Resource is not in the state ' + this.state, retryable: retryable }); }, loadWaiterConfig: function loadWaiterConfig(state) { if (!this.service.api.waiters[state]) { throw new AWS.util.error(new Error(), { code: 'StateNotFoundError', message: 'State ' + state + ' not found.' }); } this.config = this.service.api.waiters[state]; } }); },{"./core":201,"jmespath":284}],236:[function(require,module,exports){ var AWS = require('./core'); var inherit = AWS.util.inherit; var jmespath = require('jmespath'); AWS.Response = inherit({ constructor: function Response(request) { this.request = request; this.data = null; this.error = null; this.retryCount = 0; this.redirectCount = 0; this.httpResponse = new AWS.HttpResponse(); if (request) { this.maxRetries = request.service.numRetries(); this.maxRedirects = request.service.config.maxRedirects; } }, nextPage: function nextPage(callback) { var config; var service = this.request.service; var operation = this.request.operation; try { config = service.paginationConfig(operation, true); } catch (e) { this.error = e; } if (!this.hasNextPage()) { if (callback) callback(this.error, null); else if (this.error) throw this.error; return null; } var params = AWS.util.copy(this.request.params); if (!this.nextPageTokens) { return callback ? callback(null, null) : null; } else { var inputTokens = config.inputToken; if (typeof inputTokens === 'string') inputTokens = [inputTokens]; for (var i = 0; i < inputTokens.length; i++) { params[inputTokens[i]] = this.nextPageTokens[i]; } return service.makeRequest(this.request.operation, params, callback); } }, hasNextPage: function hasNextPage() { this.cacheNextPageTokens(); if (this.nextPageTokens) return true; if (this.nextPageTokens === undefined) return undefined; else return false; }, cacheNextPageTokens: function cacheNextPageTokens() { if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; this.nextPageTokens = undefined; var config = this.request.service.paginationConfig(this.request.operation); if (!config) return this.nextPageTokens; this.nextPageTokens = null; if (config.moreResults) { if (!jmespath.search(this.data, config.moreResults)) { return this.nextPageTokens; } } var exprs = config.outputToken; if (typeof exprs === 'string') exprs = [exprs]; AWS.util.arrayEach.call(this, exprs, function (expr) { var output = jmespath.search(this.data, expr); if (output) { this.nextPageTokens = this.nextPageTokens || []; this.nextPageTokens.push(output); } }); return this.nextPageTokens; } }); },{"./core":201,"jmespath":284}],237:[function(require,module,exports){ var AWS = require('../core'); var byteLength = AWS.util.string.byteLength; var Buffer = AWS.util.Buffer; AWS.S3.ManagedUpload = AWS.util.inherit({ constructor: function ManagedUpload(options) { var self = this; AWS.SequentialExecutor.call(self); self.body = null; self.sliceFn = null; self.callback = null; self.parts = {}; self.completeInfo = []; self.fillQueue = function() { self.callback(new Error('Unsupported body payload ' + typeof self.body)); }; self.configure(options); }, configure: function configure(options) { options = options || {}; this.partSize = this.minPartSize; if (options.queueSize) this.queueSize = options.queueSize; if (options.partSize) this.partSize = options.partSize; if (options.leavePartsOnError) this.leavePartsOnError = true; if (this.partSize < this.minPartSize) { throw new Error('partSize must be greater than ' + this.minPartSize); } this.service = options.service; this.bindServiceObject(options.params); this.validateBody(); this.adjustTotalBytes(); }, leavePartsOnError: false, queueSize: 4, partSize: null, minPartSize: 1024 * 1024 * 5, maxTotalParts: 10000, send: function(callback) { var self = this; self.failed = false; self.callback = callback || function(err) { if (err) throw err; }; var runFill = true; if (self.sliceFn) { self.fillQueue = self.fillBuffer; } else if (AWS.util.isNode()) { var Stream = AWS.util.stream.Stream; if (self.body instanceof Stream) { runFill = false; self.fillQueue = self.fillStream; self.partBuffers = []; self.body. on('error', function(err) { self.cleanup(err); }). on('readable', function() { self.fillQueue(); }). on('end', function() { self.isDoneChunking = true; self.numParts = self.totalPartNumbers; self.fillQueue.call(self); }); } } if (runFill) self.fillQueue.call(self); }, abort: function() { this.cleanup(AWS.util.error(new Error('Request aborted by user'), { code: 'RequestAbortedError', retryable: false })); }, validateBody: function validateBody() { var self = this; self.body = self.service.config.params.Body; if (!self.body) throw new Error('params.Body is required'); if (typeof self.body === 'string') { self.body = new AWS.util.Buffer(self.body); } self.sliceFn = AWS.util.arraySliceFn(self.body); }, bindServiceObject: function bindServiceObject(params) { params = params || {}; var self = this; if (!self.service) { self.service = new AWS.S3({params: params}); } else { var config = AWS.util.copy(self.service.config); self.service = new self.service.constructor.__super__(config); self.service.config.params = AWS.util.merge(self.service.config.params || {}, params); } }, adjustTotalBytes: function adjustTotalBytes() { var self = this; try { // try to get totalBytes self.totalBytes = byteLength(self.body); } catch (e) { } if (self.totalBytes) { var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts); if (newPartSize > self.partSize) self.partSize = newPartSize; } else { self.totalBytes = undefined; } }, isDoneChunking: false, partPos: 0, totalChunkedBytes: 0, totalUploadedBytes: 0, totalBytes: undefined, numParts: 0, totalPartNumbers: 0, activeParts: 0, doneParts: 0, parts: null, completeInfo: null, failed: false, multipartReq: null, partBuffers: null, partBufferLength: 0, fillBuffer: function fillBuffer() { var self = this; var bodyLen = byteLength(self.body); if (bodyLen === 0) { self.isDoneChunking = true; self.numParts = 1; self.nextChunk(self.body); return; } while (self.activeParts < self.queueSize && self.partPos < bodyLen) { var endPos = Math.min(self.partPos + self.partSize, bodyLen); var buf = self.sliceFn.call(self.body, self.partPos, endPos); self.partPos += self.partSize; if (byteLength(buf) < self.partSize || self.partPos === bodyLen) { self.isDoneChunking = true; self.numParts = self.totalPartNumbers + 1; } self.nextChunk(buf); } }, fillStream: function fillStream() { var self = this; if (self.activeParts >= self.queueSize) return; var buf = self.body.read(self.partSize - self.partBufferLength) || self.body.read(); if (buf) { self.partBuffers.push(buf); self.partBufferLength += buf.length; self.totalChunkedBytes += buf.length; } if (self.partBufferLength >= self.partSize) { var pbuf = self.partBuffers.length === 1 ? self.partBuffers[0] : Buffer.concat(self.partBuffers); self.partBuffers = []; self.partBufferLength = 0; if (pbuf.length > self.partSize) { var rest = pbuf.slice(self.partSize); self.partBuffers.push(rest); self.partBufferLength += rest.length; pbuf = pbuf.slice(0, self.partSize); } self.nextChunk(pbuf); } if (self.isDoneChunking && !self.isDoneSending) { pbuf = self.partBuffers.length === 1 ? self.partBuffers[0] : Buffer.concat(self.partBuffers); self.partBuffers = []; self.partBufferLength = 0; self.totalBytes = self.totalChunkedBytes; self.isDoneSending = true; if (self.numParts === 0 || pbuf.length > 0) { self.numParts++; self.nextChunk(pbuf); } } self.body.read(0); }, nextChunk: function nextChunk(chunk) { var self = this; if (self.failed) return null; var partNumber = ++self.totalPartNumbers; if (self.isDoneChunking && partNumber === 1) { var req = self.service.putObject({Body: chunk}); req._managedUpload = self; req.on('httpUploadProgress', self.progress).send(self.finishSinglePart); return null; } else if (self.service.config.params.ContentMD5) { var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), { code: 'InvalidDigest', retryable: false }); self.cleanup(err); return null; } if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) { return null; // Already uploaded this part. } self.activeParts++; if (!self.service.config.params.UploadId) { if (!self.multipartReq) { // create multipart self.multipartReq = self.service.createMultipartUpload(); self.multipartReq.on('success', function(resp) { self.service.config.params.UploadId = resp.data.UploadId; self.multipartReq = null; }); self.queueChunks(chunk, partNumber); self.multipartReq.on('error', function(err) { self.cleanup(err); }); self.multipartReq.send(); } else { self.queueChunks(chunk, partNumber); } } else { // multipart is created, just send self.uploadPart(chunk, partNumber); } }, uploadPart: function uploadPart(chunk, partNumber) { var self = this; var partParams = { Body: chunk, ContentLength: AWS.util.string.byteLength(chunk), PartNumber: partNumber }; var partInfo = {ETag: null, PartNumber: partNumber}; self.completeInfo[partNumber] = partInfo; var req = self.service.uploadPart(partParams); self.parts[partNumber] = req; req._lastUploadedBytes = 0; req._managedUpload = self; req.on('httpUploadProgress', self.progress); req.send(function(err, data) { delete self.parts[partParams.PartNumber]; self.activeParts--; if (!err && (!data || !data.ETag)) { var message = 'No access to ETag property on response.'; if (AWS.util.isBrowser()) { message += ' Check CORS configuration to expose ETag header.'; } err = AWS.util.error(new Error(message), { code: 'ETagMissing', retryable: false }); } if (err) return self.cleanup(err); partInfo.ETag = data.ETag; self.doneParts++; if (self.isDoneChunking && self.doneParts === self.numParts) { self.finishMultiPart(); } else { self.fillQueue.call(self); } }); }, queueChunks: function queueChunks(chunk, partNumber) { var self = this; self.multipartReq.on('success', function() { self.uploadPart(chunk, partNumber); }); }, cleanup: function cleanup(err) { var self = this; if (self.failed) return; if (typeof self.body.removeAllListeners === 'function' && typeof self.body.resume === 'function') { self.body.removeAllListeners('readable'); self.body.removeAllListeners('end'); self.body.resume(); } if (self.service.config.params.UploadId && !self.leavePartsOnError) { self.service.abortMultipartUpload().send(); } AWS.util.each(self.parts, function(partNumber, part) { part.removeAllListeners('complete'); part.abort(); }); self.activeParts = 0; self.partPos = 0; self.numParts = 0; self.totalPartNumbers = 0; self.parts = {}; self.failed = true; self.callback(err); }, finishMultiPart: function finishMultiPart() { var self = this; var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } }; self.service.completeMultipartUpload(completeParams, function(err, data) { if (err) return self.cleanup(err); else self.callback(err, data); }); }, finishSinglePart: function finishSinglePart(err, data) { var upload = this.request._managedUpload; var httpReq = this.request.httpRequest; var endpoint = httpReq.endpoint; if (err) return upload.callback(err); data.Location = [endpoint.protocol, '//', endpoint.host, httpReq.path].join(''); data.key = this.request.params.Key; // will stay undocumented data.Key = this.request.params.Key; data.Bucket = this.request.params.Bucket; upload.callback(err, data); }, progress: function progress(info) { var upload = this._managedUpload; if (this.operation === 'putObject') { info.part = 1; info.key = this.params.Key; } else { upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes; this._lastUploadedBytes = info.loaded; info = { loaded: upload.totalUploadedBytes, total: upload.totalBytes, part: this.params.PartNumber, key: this.params.Key }; } upload.emit('httpUploadProgress', [info]); } }); AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor); AWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) { this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency); }; AWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() { delete this.prototype.promise; }; AWS.util.addPromises(AWS.S3.ManagedUpload); module.exports = AWS.S3.ManagedUpload; },{"../core":201}],238:[function(require,module,exports){ var AWS = require('./core'); AWS.SequentialExecutor = AWS.util.inherit({ constructor: function SequentialExecutor() { this._events = {}; }, listeners: function listeners(eventName) { return this._events[eventName] ? this._events[eventName].slice(0) : []; }, on: function on(eventName, listener) { if (this._events[eventName]) { this._events[eventName].push(listener); } else { this._events[eventName] = [listener]; } return this; }, onAsync: function onAsync(eventName, listener) { listener._isAsync = true; return this.on(eventName, listener); }, removeListener: function removeListener(eventName, listener) { var listeners = this._events[eventName]; if (listeners) { var length = listeners.length; var position = -1; for (var i = 0; i < length; ++i) { if (listeners[i] === listener) { position = i; } } if (position > -1) { listeners.splice(position, 1); } } return this; }, removeAllListeners: function removeAllListeners(eventName) { if (eventName) { delete this._events[eventName]; } else { this._events = {}; } return this; }, emit: function emit(eventName, eventArgs, doneCallback) { if (!doneCallback) doneCallback = function() { }; var listeners = this.listeners(eventName); var count = listeners.length; this.callListeners(listeners, eventArgs, doneCallback); return count > 0; }, callListeners: function callListeners(listeners, args, doneCallback, prevError) { var self = this; var error = prevError || null; function callNextListener(err) { if (err) { error = AWS.util.error(error || new Error(), err); if (self._haltHandlersOnError) { return doneCallback.call(self, error); } } self.callListeners(listeners, args, doneCallback, error); } while (listeners.length > 0) { var listener = listeners.shift(); if (listener._isAsync) { // asynchronous listener listener.apply(self, args.concat([callNextListener])); return; // stop here, callNextListener will continue } else { // synchronous listener try { listener.apply(self, args); } catch (err) { error = AWS.util.error(error || new Error(), err); } if (error && self._haltHandlersOnError) { doneCallback.call(self, error); return; } } } doneCallback.call(self, error); }, addListeners: function addListeners(listeners) { var self = this; if (listeners._events) listeners = listeners._events; AWS.util.each(listeners, function(event, callbacks) { if (typeof callbacks === 'function') callbacks = [callbacks]; AWS.util.arrayEach(callbacks, function(callback) { self.on(event, callback); }); }); return self; }, addNamedListener: function addNamedListener(name, eventName, callback) { this[name] = callback; this.addListener(eventName, callback); return this; }, addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { callback._isAsync = true; return this.addNamedListener(name, eventName, callback); }, addNamedListeners: function addNamedListeners(callback) { var self = this; callback( function() { self.addNamedListener.apply(self, arguments); }, function() { self.addNamedAsyncListener.apply(self, arguments); } ); return this; } }); AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; module.exports = AWS.SequentialExecutor; },{"./core":201}],239:[function(require,module,exports){ var AWS = require('./core'); var Api = require('./model/api'); var regionConfig = require('./region_config'); var inherit = AWS.util.inherit; var clientCount = 0; AWS.Service = inherit({ constructor: function Service(config) { if (!this.loadServiceClass) { throw AWS.util.error(new Error(), 'Service must be constructed with `new\' operator'); } var ServiceClass = this.loadServiceClass(config || {}); if (ServiceClass) { var originalConfig = AWS.util.copy(config); var svc = new ServiceClass(config); Object.defineProperty(svc, '_originalConfig', { get: function() { return originalConfig; }, enumerable: false, configurable: true }); svc._clientId = ++clientCount; return svc; } this.initialize(config); }, initialize: function initialize(config) { var svcConfig = AWS.config[this.serviceIdentifier]; this.config = new AWS.Config(AWS.config); if (svcConfig) this.config.update(svcConfig, true); if (config) this.config.update(config, true); this.validateService(); if (!this.config.endpoint) regionConfig(this); this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); this.setEndpoint(this.config.endpoint); }, validateService: function validateService() { }, loadServiceClass: function loadServiceClass(serviceConfig) { var config = serviceConfig; if (!AWS.util.isEmpty(this.api)) { return null; } else if (config.apiConfig) { return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); } else if (!this.constructor.services) { return null; } else { config = new AWS.Config(AWS.config); config.update(serviceConfig, true); var version = config.apiVersions[this.constructor.serviceIdentifier]; version = version || config.apiVersion; return this.getLatestServiceClass(version); } }, getLatestServiceClass: function getLatestServiceClass(version) { version = this.getLatestServiceVersion(version); if (this.constructor.services[version] === null) { AWS.Service.defineServiceApi(this.constructor, version); } return this.constructor.services[version]; }, getLatestServiceVersion: function getLatestServiceVersion(version) { if (!this.constructor.services || this.constructor.services.length === 0) { throw new Error('No services defined on ' + this.constructor.serviceIdentifier); } if (!version) { version = 'latest'; } else if (AWS.util.isType(version, Date)) { version = AWS.util.date.iso8601(version).split('T')[0]; } if (Object.hasOwnProperty(this.constructor.services, version)) { return version; } var keys = Object.keys(this.constructor.services).sort(); var selectedVersion = null; for (var i = keys.length - 1; i >= 0; i--) { if (keys[i][keys[i].length - 1] !== '*') { selectedVersion = keys[i]; } if (keys[i].substr(0, 10) <= version) { return selectedVersion; } } throw new Error('Could not find ' + this.constructor.serviceIdentifier + ' API to satisfy version constraint `' + version + '\''); }, api: {}, defaultRetryCount: 3, customizeRequests: function customizeRequests(callback) { if (!callback) { this.customRequestHandler = null; } else if (typeof callback === 'function') { this.customRequestHandler = callback; } else { throw new Error('Invalid callback type \'' + typeof callback + '\' provided in customizeRequests'); } }, makeRequest: function makeRequest(operation, params, callback) { if (typeof params === 'function') { callback = params; params = null; } params = params || {}; if (this.config.params) { // copy only toplevel bound params var rules = this.api.operations[operation]; if (rules) { params = AWS.util.copy(params); AWS.util.each(this.config.params, function(key, value) { if (rules.input.members[key]) { if (params[key] === undefined || params[key] === null) { params[key] = value; } } }); } } var request = new AWS.Request(this, operation, params); this.addAllRequestListeners(request); if (callback) request.send(callback); return request; }, makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { if (typeof params === 'function') { callback = params; params = {}; } var request = this.makeRequest(operation, params).toUnauthenticated(); return callback ? request.send(callback) : request; }, waitFor: function waitFor(state, params, callback) { var waiter = new AWS.ResourceWaiter(this, state); return waiter.wait(params, callback); }, addAllRequestListeners: function addAllRequestListeners(request) { var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), AWS.EventListeners.CorePost]; for (var i = 0; i < list.length; i++) { if (list[i]) request.addListeners(list[i]); } if (!this.config.paramValidation) { request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS); } if (this.config.logger) { // add logging events request.addListeners(AWS.EventListeners.Logger); } this.setupRequestListeners(request); if (typeof this.constructor.prototype.customRequestHandler === 'function') { this.constructor.prototype.customRequestHandler(request); } if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') { this.customRequestHandler(request); } }, setupRequestListeners: function setupRequestListeners() { }, getSignerClass: function getSignerClass() { var version; if (this.config.signatureVersion) { version = this.config.signatureVersion; } else { version = this.api.signatureVersion; } return AWS.Signers.RequestSigner.getVersion(version); }, serviceInterface: function serviceInterface() { switch (this.api.protocol) { case 'ec2': return AWS.EventListeners.Query; case 'query': return AWS.EventListeners.Query; case 'json': return AWS.EventListeners.Json; case 'rest-json': return AWS.EventListeners.RestJson; case 'rest-xml': return AWS.EventListeners.RestXml; } if (this.api.protocol) { throw new Error('Invalid service `protocol\' ' + this.api.protocol + ' in API config'); } }, successfulResponse: function successfulResponse(resp) { return resp.httpResponse.statusCode < 300; }, numRetries: function numRetries() { if (this.config.maxRetries !== undefined) { return this.config.maxRetries; } else { return this.defaultRetryCount; } }, retryDelays: function retryDelays(retryCount) { return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); }, retryableError: function retryableError(error) { if (this.networkingError(error)) return true; if (this.expiredCredentialsError(error)) return true; if (this.throttledError(error)) return true; if (error.statusCode >= 500) return true; return false; }, networkingError: function networkingError(error) { return error.code === 'NetworkingError'; }, expiredCredentialsError: function expiredCredentialsError(error) { return (error.code === 'ExpiredTokenException'); }, clockSkewError: function clockSkewError(error) { switch (error.code) { case 'RequestTimeTooSkewed': case 'RequestExpired': case 'InvalidSignatureException': case 'SignatureDoesNotMatch': case 'AuthFailure': case 'RequestInTheFuture': return true; default: return false; } }, throttledError: function throttledError(error) { switch (error.code) { case 'ProvisionedThroughputExceededException': case 'Throttling': case 'ThrottlingException': case 'RequestLimitExceeded': case 'RequestThrottled': return true; default: return false; } }, endpointFromTemplate: function endpointFromTemplate(endpoint) { if (typeof endpoint !== 'string') return endpoint; var e = endpoint; e = e.replace(/\{service\}/g, this.api.endpointPrefix); e = e.replace(/\{region\}/g, this.config.region); e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); return e; }, setEndpoint: function setEndpoint(endpoint) { this.endpoint = new AWS.Endpoint(endpoint, this.config); }, paginationConfig: function paginationConfig(operation, throwException) { var paginator = this.api.operations[operation].paginator; if (!paginator) { if (throwException) { var e = new Error(); throw AWS.util.error(e, 'No pagination configuration for ' + operation); } return null; } return paginator; } }); AWS.util.update(AWS.Service, { defineMethods: function defineMethods(svc) { AWS.util.each(svc.prototype.api.operations, function iterator(method) { if (svc.prototype[method]) return; var operation = svc.prototype.api.operations[method]; if (operation.authtype === 'none') { svc.prototype[method] = function (params, callback) { return this.makeUnauthenticatedRequest(method, params, callback); }; } else { svc.prototype[method] = function (params, callback) { return this.makeRequest(method, params, callback); }; } }); }, defineService: function defineService(serviceIdentifier, versions, features) { AWS.Service._serviceMap[serviceIdentifier] = true; if (!Array.isArray(versions)) { features = versions; versions = []; } var svc = inherit(AWS.Service, features || {}); if (typeof serviceIdentifier === 'string') { AWS.Service.addVersions(svc, versions); var identifier = svc.serviceIdentifier || serviceIdentifier; svc.serviceIdentifier = identifier; } else { // defineService called with an API svc.prototype.api = serviceIdentifier; AWS.Service.defineMethods(svc); } return svc; }, addVersions: function addVersions(svc, versions) { if (!Array.isArray(versions)) versions = [versions]; svc.services = svc.services || {}; for (var i = 0; i < versions.length; i++) { if (svc.services[versions[i]] === undefined) { svc.services[versions[i]] = null; } } svc.apiVersions = Object.keys(svc.services).sort(); }, defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { var svc = inherit(superclass, { serviceIdentifier: superclass.serviceIdentifier }); function setApi(api) { if (api.isApi) { svc.prototype.api = api; } else { svc.prototype.api = new Api(api); } } if (typeof version === 'string') { if (apiConfig) { setApi(apiConfig); } else { try { setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); } catch (err) { throw AWS.util.error(err, { message: 'Could not find API configuration ' + superclass.serviceIdentifier + '-' + version }); } } if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { superclass.apiVersions = superclass.apiVersions.concat(version).sort(); } superclass.services[version] = svc; } else { setApi(version); } AWS.Service.defineMethods(svc); return svc; }, hasService: function(identifier) { return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); }, _serviceMap: {} }); module.exports = AWS.Service; },{"./core":201,"./model/api":218,"./region_config":233}],240:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.APIGateway.prototype, { setAcceptHeader: function setAcceptHeader(req) { var httpRequest = req.httpRequest; httpRequest.headers['Accept'] = 'application/json'; }, setupRequestListeners: function setupRequestListeners(request) { request.addListener('build', this.setAcceptHeader); if (request.operation === 'getSdk') { request.addListener('extractData', this.useRawPayload); } }, useRawPayload: function useRawPayload(resp) { var req = resp.request; var operation = req.operation; var rules = req.service.api.operations[operation].output || {}; if (rules.payload) { var body = resp.httpResponse.body; resp.data[rules.payload] = body; } } }); },{"../core":201}],241:[function(require,module,exports){ var AWS = require('../core'); require('../cloudfront/signer'); AWS.util.update(AWS.CloudFront.prototype, { setupRequestListeners: function setupRequestListeners(request) { request.addListener('extractData', AWS.util.hoistPayloadMember); } }); },{"../cloudfront/signer":199,"../core":201}],242:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.CognitoIdentity.prototype, { getOpenIdToken: function getOpenIdToken(params, callback) { return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); }, getId: function getId(params, callback) { return this.makeUnauthenticatedRequest('getId', params, callback); }, getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); } }); },{"../core":201}],243:[function(require,module,exports){ var AWS = require('../core'); require('../dynamodb/document_client'); AWS.util.update(AWS.DynamoDB.prototype, { setupRequestListeners: function setupRequestListeners(request) { if (request.service.config.dynamoDbCrc32) { request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); request.addListener('extractData', this.checkCrc32); request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); } }, checkCrc32: function checkCrc32(resp) { if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) { resp.data = null; resp.error = AWS.util.error(new Error(), { code: 'CRC32CheckFailed', message: 'CRC32 integrity check failed', retryable: true }); resp.request.haltHandlersOnError(); throw (resp.error); } }, crc32IsValid: function crc32IsValid(resp) { var crc = resp.httpResponse.headers['x-amz-crc32']; if (!crc) return true; // no (valid) CRC32 header return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body); }, defaultRetryCount: 10, retryDelays: function retryDelays(retryCount) { var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0; return delay; } }); },{"../core":201,"../dynamodb/document_client":209}],244:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.EC2.prototype, { setupRequestListeners: function setupRequestListeners(request) { request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR); request.addListener('extractError', this.extractError); if (request.operation === 'copySnapshot') { request.onAsync('validate', this.buildCopySnapshotPresignedUrl); } }, buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) { if (req.params.PresignedUrl || req._subRequest) { return done(); } req.params = AWS.util.copy(req.params); req.params.DestinationRegion = req.service.config.region; var config = AWS.util.copy(req.service.config); delete config.endpoint; config.region = req.params.SourceRegion; var svc = new req.service.constructor(config); var newReq = svc[req.operation](req.params); newReq._subRequest = true; newReq.presign(function(err, url) { if (err) done(err); else { req.params.PresignedUrl = url; done(); } }); }, extractError: function extractError(resp) { var httpResponse = resp.httpResponse; var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || ''); if (data.Errors) { resp.error = AWS.util.error(new Error(), { code: data.Errors.Error.Code, message: data.Errors.Error.Message }); } else { resp.error = AWS.util.error(new Error(), { code: httpResponse.statusCode, message: null }); } resp.error.requestId = data.RequestID || null; } }); },{"../core":201}],245:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.IotData.prototype, { validateService: function validateService() { if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { var msg = 'AWS.IotData requires an explicit ' + '`endpoint\' configuration option.'; throw AWS.util.error(new Error(), {name: 'InvalidEndpoint', message: msg}); } }, setupRequestListeners: function setupRequestListeners(request) { request.addListener('validateResponse', this.validateResponseBody) }, validateResponseBody: function validateResponseBody(resp) { var body = resp.httpResponse.body.toString() || '{}'; var bodyCheck = body.trim(); if (!bodyCheck || bodyCheck.charAt(0) !== '{') { resp.httpResponse.body = ''; } } }); },{"../core":201}],246:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.MachineLearning.prototype, { setupRequestListeners: function setupRequestListeners(request) { if (request.operation === 'predict') { request.addListener('build', this.buildEndpoint); } }, buildEndpoint: function buildEndpoint(request) { var url = request.params.PredictEndpoint; if (url) { request.httpRequest.endpoint = new AWS.Endpoint(url); } } }); },{"../core":201}],247:[function(require,module,exports){ require('../polly/presigner'); },{"../polly/presigner":225}],248:[function(require,module,exports){ var AWS = require('../core'); var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica']; AWS.util.update(AWS.RDS.prototype, { setupRequestListeners: function setupRequestListeners(request) { if (crossRegionOperations.indexOf(request.operation) !== -1 && request.params.SourceRegion) { request.params = AWS.util.copy(request.params); if (request.params.PreSignedUrl || request.params.SourceRegion === this.config.region) { delete request.params.SourceRegion; } else { var doesParamValidation = !!this.config.paramValidation; if (doesParamValidation) { request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS); } request.onAsync('validate', this.buildCrossRegionPresignedUrl); if (doesParamValidation) { request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS); } } } }, buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) { var config = AWS.util.copy(req.service.config); config.region = req.params.SourceRegion; delete req.params.SourceRegion; delete config.endpoint; delete config.params; config.signatureVersion = 'v4'; var destinationRegion = req.service.config.region; var svc = new req.service.constructor(config); var newReq = svc[req.operation](AWS.util.copy(req.params)); newReq.on('build', function addDestinationRegionParam(request) { var httpRequest = request.httpRequest; httpRequest.params.DestinationRegion = destinationRegion; httpRequest.body = AWS.util.queryParamsToString(httpRequest.params); }); newReq.presign(function(err, url) { if (err) done(err); else { req.params.PreSignedUrl = url; done(); } }); } }); },{"../core":201}],249:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.Route53.prototype, { setupRequestListeners: function setupRequestListeners(request) { request.on('build', this.sanitizeUrl); }, sanitizeUrl: function sanitizeUrl(request) { var path = request.httpRequest.path; request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/'); }, retryableError: function retryableError(error) { if (error.code === 'PriorRequestNotComplete' && error.statusCode === 400) { return true; } else { var _super = AWS.Service.prototype.retryableError; return _super.call(this, error); } } }); },{"../core":201}],250:[function(require,module,exports){ var AWS = require('../core'); require('../s3/managed_upload'); var operationsWith200StatusCodeError = { 'completeMultipartUpload': true, 'copyObject': true, 'uploadPartCopy': true }; var regionRedirectErrorCodes = [ 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints 'BadRequest', // head operations on virtual-hosted global bucket endpoints 'PermanentRedirect', // non-head operations on path-style or regional endpoints 301 // head operations on path-style or regional endpoints ]; AWS.util.update(AWS.S3.prototype, { getSignerClass: function getSignerClass(request) { var defaultApiVersion = this.api.signatureVersion; var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null; var regionDefinedVersion = this.config.signatureVersion; var isPresigned = request ? request.isPresigned() : false; if (userDefinedVersion) { userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion; return AWS.Signers.RequestSigner.getVersion(userDefinedVersion); } if (regionDefinedVersion) { defaultApiVersion = regionDefinedVersion; } return AWS.Signers.RequestSigner.getVersion(defaultApiVersion); }, validateService: function validateService() { var msg; var messages = []; if (!this.config.region) this.config.region = 'us-east-1'; if (!this.config.endpoint && this.config.s3BucketEndpoint) { messages.push('An endpoint must be provided when configuring ' + '`s3BucketEndpoint` to true.'); } if (messages.length === 1) { msg = messages[0]; } else if (messages.length > 1) { msg = 'Multiple configuration errors:\n' + messages.join('\n'); } if (msg) { throw AWS.util.error(new Error(), {name: 'InvalidEndpoint', message: msg}); } }, shouldDisableBodySigning: function shouldDisableBodySigning(request) { var signerClass = this.getSignerClass(); if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4 && request.httpRequest.endpoint.protocol === 'https:') { return true; } return false; }, setupRequestListeners: function setupRequestListeners(request) { request.addListener('validate', this.validateScheme); request.addListener('validate', this.validateBucketEndpoint); request.addListener('validate', this.correctBucketRegionFromCache); request.addListener('build', this.addContentType); request.addListener('build', this.populateURI); request.addListener('build', this.computeContentMd5); request.addListener('build', this.computeSseCustomerKeyMd5); request.addListener('afterBuild', this.addExpect100Continue); request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_REGION); request.addListener('extractError', this.extractError); request.onAsync('extractError', this.requestBucketRegion); request.addListener('extractData', this.extractData); request.addListener('extractData', AWS.util.hoistPayloadMember); request.addListener('beforePresign', this.prepareSignedUrl); if (AWS.util.isBrowser()) { request.onAsync('retry', this.reqRegionForNetworkingError); } if (this.shouldDisableBodySigning(request)) { request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); request.addListener('afterBuild', this.disableBodySigning); } }, validateScheme: function(req) { var params = req.params, scheme = req.httpRequest.endpoint.protocol, sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey; if (sensitive && scheme !== 'https:') { var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' + 'to \'true\' in your configuration'; throw AWS.util.error(new Error(), { code: 'ConfigError', message: msg }); } }, validateBucketEndpoint: function(req) { if (!req.params.Bucket && req.service.config.s3BucketEndpoint) { var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.'; throw AWS.util.error(new Error(), { code: 'ConfigError', message: msg }); } }, isValidAccelerateOperation: function isValidAccelerateOperation(operation) { var invalidOperations = [ 'createBucket', 'deleteBucket', 'listBuckets' ]; return invalidOperations.indexOf(operation) === -1; }, populateURI: function populateURI(req) { var httpRequest = req.httpRequest; var b = req.params.Bucket; var service = req.service; var endpoint = httpRequest.endpoint; if (b) { if (!service.pathStyleBucketName(b)) { if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) { if (service.config.useDualstack) { endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com'; } else { endpoint.hostname = b + '.s3-accelerate.amazonaws.com'; } } else if (!service.config.s3BucketEndpoint) { endpoint.hostname = b + '.' + endpoint.hostname; } var port = endpoint.port; if (port !== 80 && port !== 443) { endpoint.host = endpoint.hostname + ':' + endpoint.port; } else { endpoint.host = endpoint.hostname; } httpRequest.virtualHostedBucket = b; // needed for signing the request service.removeVirtualHostedBucketFromPath(req); } } }, removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) { var httpRequest = req.httpRequest; var bucket = httpRequest.virtualHostedBucket; if (bucket && httpRequest.path) { httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), ''); if (httpRequest.path[0] !== '/') { httpRequest.path = '/' + httpRequest.path; } } }, addExpect100Continue: function addExpect100Continue(req) { var len = req.httpRequest.headers['Content-Length']; if (AWS.util.isNode() && len >= 1024 * 1024) { req.httpRequest.headers['Expect'] = '100-continue'; } }, addContentType: function addContentType(req) { var httpRequest = req.httpRequest; if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') { delete httpRequest.headers['Content-Type']; return; } if (!httpRequest.headers['Content-Type']) { // always have a Content-Type httpRequest.headers['Content-Type'] = 'application/octet-stream'; } var contentType = httpRequest.headers['Content-Type']; if (AWS.util.isBrowser()) { if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) { var charset = '; charset=UTF-8'; httpRequest.headers['Content-Type'] += charset; } else { var replaceFn = function(_, prefix, charsetName) { return prefix + charsetName.toUpperCase(); }; httpRequest.headers['Content-Type'] = contentType.replace(/(;\s*charset=)(.+)$/, replaceFn); } } }, computableChecksumOperations: { putBucketCors: true, putBucketLifecycle: true, putBucketLifecycleConfiguration: true, putBucketTagging: true, deleteObjects: true, putBucketReplication: true }, willComputeChecksums: function willComputeChecksums(req) { if (this.computableChecksumOperations[req.operation]) return true; if (!this.config.computeChecksums) return false; if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) && typeof req.httpRequest.body !== 'string') { return false; } var rules = req.service.api.operations[req.operation].input.members; if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) { if (rules.ContentMD5 && !req.params.ContentMD5) { return true; } } if (req.service.getSignerClass(req) === AWS.Signers.V4) { if (rules.ContentMD5 && !rules.ContentMD5.required) return false; } if (rules.ContentMD5 && !req.params.ContentMD5) return true; }, computeContentMd5: function computeContentMd5(req) { if (req.service.willComputeChecksums(req)) { var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64'); req.httpRequest.headers['Content-MD5'] = md5; } }, computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) { var keys = { SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5', CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5' }; AWS.util.each(keys, function(key, header) { if (req.params[key]) { var value = AWS.util.crypto.md5(req.params[key], 'base64'); req.httpRequest.headers[header] = value; } }); }, pathStyleBucketName: function pathStyleBucketName(bucketName) { if (this.config.s3ForcePathStyle) return true; if (this.config.s3BucketEndpoint) return false; if (this.dnsCompatibleBucketName(bucketName)) { return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false; } else { return true; // not dns compatible names must always use path style } }, dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) { var b = bucketName; var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/); var ipAddress = new RegExp(/(\d+\.){3}\d+/); var dots = new RegExp(/\.\./); return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false; }, successfulResponse: function successfulResponse(resp) { var req = resp.request; var httpResponse = resp.httpResponse; if (operationsWith200StatusCodeError[req.operation] && httpResponse.body.toString().match('')) { return false; } else { return httpResponse.statusCode < 300; } }, retryableError: function retryableError(error, request) { if (operationsWith200StatusCodeError[request.operation] && error.statusCode === 200) { return true; } else if (request._requestRegionForBucket && request.service.bucketRegionCache[request._requestRegionForBucket]) { return false; } else if (error && error.code === 'RequestTimeout') { return true; } else if (error && regionRedirectErrorCodes.indexOf(error.code) != -1 && error.region && error.region != request.httpRequest.region) { request.httpRequest.region = error.region; if (error.statusCode === 301) { request.service.updateReqBucketRegion(request); } return true; } else { var _super = AWS.Service.prototype.retryableError; return _super.call(this, error, request); } }, updateReqBucketRegion: function updateReqBucketRegion(request, region) { var httpRequest = request.httpRequest; if (typeof region === 'string' && region.length) { httpRequest.region = region; } if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) { return; } var service = request.service; var s3Config = service.config; var s3BucketEndpoint = s3Config.s3BucketEndpoint; if (s3BucketEndpoint) { delete s3Config.s3BucketEndpoint; } var newConfig = AWS.util.copy(s3Config); delete newConfig.endpoint; newConfig.region = httpRequest.region; httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint; service.populateURI(request); s3Config.s3BucketEndpoint = s3BucketEndpoint; httpRequest.headers.Host = httpRequest.endpoint.host; if (request._asm.currentState === 'validate') { request.removeListener('build', service.populateURI); request.addListener('build', service.removeVirtualHostedBucketFromPath); } }, extractData: function extractData(resp) { var req = resp.request; if (req.operation === 'getBucketLocation') { var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/); delete resp.data['_']; if (match) { resp.data.LocationConstraint = match[1]; } else { resp.data.LocationConstraint = ''; } } var bucket = req.params.Bucket || null; if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) { req.service.clearBucketRegionCache(bucket); } else { var headers = resp.httpResponse.headers || {}; var region = headers['x-amz-bucket-region'] || null; if (!region && req.operation === 'createBucket' && !resp.error) { var createBucketConfiguration = req.params.CreateBucketConfiguration; if (!createBucketConfiguration) { region = 'us-east-1'; } else if (createBucketConfiguration.LocationConstraint === 'EU') { region = 'eu-west-1'; } else { region = createBucketConfiguration.LocationConstraint; } } if (region) { if (bucket && region !== req.service.bucketRegionCache[bucket]) { req.service.bucketRegionCache[bucket] = region; } } } req.service.extractRequestIds(resp); }, extractError: function extractError(resp) { var codes = { 304: 'NotModified', 403: 'Forbidden', 400: 'BadRequest', 404: 'NotFound' }; var req = resp.request; var code = resp.httpResponse.statusCode; var body = resp.httpResponse.body || ''; var headers = resp.httpResponse.headers || {}; var region = headers['x-amz-bucket-region'] || null; var bucket = req.params.Bucket || null; var bucketRegionCache = req.service.bucketRegionCache; if (region && bucket && region !== bucketRegionCache[bucket]) { bucketRegionCache[bucket] = region; } var cachedRegion; if (codes[code] && body.length === 0) { if (bucket && !region) { cachedRegion = bucketRegionCache[bucket] || null; if (cachedRegion !== req.httpRequest.region) { region = cachedRegion; } } resp.error = AWS.util.error(new Error(), { code: codes[code], message: null, region: region }); } else { var data = new AWS.XML.Parser().parse(body.toString()); if (data.Region && !region) { region = data.Region; if (bucket && region !== bucketRegionCache[bucket]) { bucketRegionCache[bucket] = region; } } else if (bucket && !region && !data.Region) { cachedRegion = bucketRegionCache[bucket] || null; if (cachedRegion !== req.httpRequest.region) { region = cachedRegion; } } resp.error = AWS.util.error(new Error(), { code: data.Code || code, message: data.Message || null, region: region }); } req.service.extractRequestIds(resp); }, requestBucketRegion: function requestBucketRegion(resp, done) { var error = resp.error; var req = resp.request; var bucket = req.params.Bucket || null; if (!error || !bucket || error.region || req.operation === 'listObjects' || (AWS.util.isNode() && req.operation === 'headBucket') || (error.statusCode === 400 && req.operation !== 'headObject') || regionRedirectErrorCodes.indexOf(error.code) === -1) { return done(); } var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects'; var reqParams = {Bucket: bucket}; if (reqOperation === 'listObjects') reqParams.MaxKeys = 0; var regionReq = req.service[reqOperation](reqParams); regionReq._requestRegionForBucket = bucket; regionReq.send(function() { var region = req.service.bucketRegionCache[bucket] || null; error.region = region; done(); }); }, reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) { if (!AWS.util.isBrowser()) { return done(); } var error = resp.error; var request = resp.request; var bucket = request.params.Bucket; if (!error || error.code !== 'NetworkingError' || !bucket || request.httpRequest.region === 'us-east-1') { return done(); } var service = request.service; var bucketRegionCache = service.bucketRegionCache; var cachedRegion = bucketRegionCache[bucket] || null; if (cachedRegion && cachedRegion !== request.httpRequest.region) { service.updateReqBucketRegion(request, cachedRegion); done(); } else if (!service.dnsCompatibleBucketName(bucket)) { service.updateReqBucketRegion(request, 'us-east-1'); if (bucketRegionCache[bucket] !== 'us-east-1') { bucketRegionCache[bucket] = 'us-east-1'; } done(); } else if (request.httpRequest.virtualHostedBucket) { var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0}); service.updateReqBucketRegion(getRegionReq, 'us-east-1'); getRegionReq._requestRegionForBucket = bucket; getRegionReq.send(function() { var region = service.bucketRegionCache[bucket] || null; if (region && region !== request.httpRequest.region) { service.updateReqBucketRegion(request, region); } done(); }); } else { done(); } }, bucketRegionCache: {}, clearBucketRegionCache: function(buckets) { var bucketRegionCache = this.bucketRegionCache; if (!buckets) { buckets = Object.keys(bucketRegionCache); } else if (typeof buckets === 'string') { buckets = [buckets]; } for (var i = 0; i < buckets.length; i++) { delete bucketRegionCache[buckets[i]]; } return bucketRegionCache; }, correctBucketRegionFromCache: function correctBucketRegionFromCache(req) { var bucket = req.params.Bucket || null; if (bucket) { var service = req.service; var requestRegion = req.httpRequest.region; var cachedRegion = service.bucketRegionCache[bucket]; if (cachedRegion && cachedRegion !== requestRegion) { service.updateReqBucketRegion(req, cachedRegion); } } }, extractRequestIds: function extractRequestIds(resp) { var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null; var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null; resp.extendedRequestId = extendedRequestId; resp.cfId = cfId; if (resp.error) { resp.error.requestId = resp.requestId || null; resp.error.extendedRequestId = extendedRequestId; resp.error.cfId = cfId; } }, getSignedUrl: function getSignedUrl(operation, params, callback) { params = AWS.util.copy(params || {}); var expires = params.Expires || 900; delete params.Expires; // we can't validate this var request = this.makeRequest(operation, params); return request.presign(expires, callback); }, prepareSignedUrl: function prepareSignedUrl(request) { request.addListener('validate', request.service.noPresignedContentLength); request.removeListener('build', request.service.addContentType); if (!request.params.Body) { request.removeListener('build', request.service.computeContentMd5); } else { request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); } }, disableBodySigning: function disableBodySigning(request) { var headers = request.httpRequest.headers; if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) { headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD'; } }, noPresignedContentLength: function noPresignedContentLength(request) { if (request.params.ContentLength !== undefined) { throw AWS.util.error(new Error(), {code: 'UnexpectedParameter', message: 'ContentLength is not supported in pre-signed URLs.'}); } }, createBucket: function createBucket(params, callback) { if (typeof params === 'function' || !params) { callback = callback || params; params = {}; } var hostname = this.endpoint.hostname; if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) { params.CreateBucketConfiguration = { LocationConstraint: this.config.region }; } return this.makeRequest('createBucket', params, callback); }, upload: function upload(params, options, callback) { if (typeof options === 'function' && callback === undefined) { callback = options; options = null; } options = options || {}; options = AWS.util.merge(options || {}, {service: this, params: params}); var uploader = new AWS.S3.ManagedUpload(options); if (typeof callback === 'function') uploader.send(callback); return uploader; } }); },{"../core":201,"../s3/managed_upload":237}],251:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.SQS.prototype, { setupRequestListeners: function setupRequestListeners(request) { request.addListener('build', this.buildEndpoint); if (request.service.config.computeChecksums) { if (request.operation === 'sendMessage') { request.addListener('extractData', this.verifySendMessageChecksum); } else if (request.operation === 'sendMessageBatch') { request.addListener('extractData', this.verifySendMessageBatchChecksum); } else if (request.operation === 'receiveMessage') { request.addListener('extractData', this.verifyReceiveMessageChecksum); } } }, verifySendMessageChecksum: function verifySendMessageChecksum(response) { if (!response.data) return; var md5 = response.data.MD5OfMessageBody; var body = this.params.MessageBody; var calculatedMd5 = this.service.calculateChecksum(body); if (calculatedMd5 !== md5) { var msg = 'Got "' + response.data.MD5OfMessageBody + '", expecting "' + calculatedMd5 + '".'; this.service.throwInvalidChecksumError(response, [response.data.MessageId], msg); } }, verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) { if (!response.data) return; var service = this.service; var entries = {}; var errors = []; var messageIds = []; AWS.util.arrayEach(response.data.Successful, function (entry) { entries[entry.Id] = entry; }); AWS.util.arrayEach(this.params.Entries, function (entry) { if (entries[entry.Id]) { var md5 = entries[entry.Id].MD5OfMessageBody; var body = entry.MessageBody; if (!service.isChecksumValid(md5, body)) { errors.push(entry.Id); messageIds.push(entries[entry.Id].MessageId); } } }); if (errors.length > 0) { service.throwInvalidChecksumError(response, messageIds, 'Invalid messages: ' + errors.join(', ')); } }, verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) { if (!response.data) return; var service = this.service; var messageIds = []; AWS.util.arrayEach(response.data.Messages, function(message) { var md5 = message.MD5OfBody; var body = message.Body; if (!service.isChecksumValid(md5, body)) { messageIds.push(message.MessageId); } }); if (messageIds.length > 0) { service.throwInvalidChecksumError(response, messageIds, 'Invalid messages: ' + messageIds.join(', ')); } }, throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) { response.error = AWS.util.error(new Error(), { retryable: true, code: 'InvalidChecksum', messageIds: ids, message: response.request.operation + ' returned an invalid MD5 response. ' + message }); }, isChecksumValid: function isChecksumValid(checksum, data) { return this.calculateChecksum(data) === checksum; }, calculateChecksum: function calculateChecksum(data) { return AWS.util.crypto.md5(data, 'hex'); }, buildEndpoint: function buildEndpoint(request) { var url = request.httpRequest.params.QueueUrl; if (url) { request.httpRequest.endpoint = new AWS.Endpoint(url); var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./); if (matches) request.httpRequest.region = matches[1]; } } }); },{"../core":201}],252:[function(require,module,exports){ var AWS = require('../core'); AWS.util.update(AWS.STS.prototype, { credentialsFrom: function credentialsFrom(data, credentials) { if (!data) return null; if (!credentials) credentials = new AWS.TemporaryCredentials(); credentials.expired = false; credentials.accessKeyId = data.Credentials.AccessKeyId; credentials.secretAccessKey = data.Credentials.SecretAccessKey; credentials.sessionToken = data.Credentials.SessionToken; credentials.expireTime = data.Credentials.Expiration; return credentials; }, assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); }, assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); } }); },{"../core":201}],253:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; var expiresHeader = 'presigned-expires'; function signedUrlBuilder(request) { var expires = request.httpRequest.headers[expiresHeader]; var signerClass = request.service.getSignerClass(request); delete request.httpRequest.headers['User-Agent']; delete request.httpRequest.headers['X-Amz-User-Agent']; if (signerClass === AWS.Signers.V4) { if (expires > 604800) { // one week expiry is invalid var message = 'Presigning does not support expiry time greater ' + 'than a week with SigV4 signing.'; throw AWS.util.error(new Error(), { code: 'InvalidExpiryTime', message: message, retryable: false }); } request.httpRequest.headers[expiresHeader] = expires; } else if (signerClass === AWS.Signers.S3) { request.httpRequest.headers[expiresHeader] = parseInt( AWS.util.date.unixTimestamp() + expires, 10).toString(); } else { throw AWS.util.error(new Error(), { message: 'Presigning only supports S3 or SigV4 signing.', code: 'UnsupportedSigner', retryable: false }); } } function signedUrlSigner(request) { var endpoint = request.httpRequest.endpoint; var parsedUrl = AWS.util.urlParse(request.httpRequest.path); var queryParams = {}; if (parsedUrl.search) { queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); } AWS.util.each(request.httpRequest.headers, function (key, value) { if (key === expiresHeader) key = 'Expires'; if (key.indexOf('x-amz-meta-') === 0) { delete queryParams[key]; key = key.toLowerCase(); } queryParams[key] = value; }); delete request.httpRequest.headers[expiresHeader]; var auth = queryParams['Authorization'].split(' '); if (auth[0] === 'AWS') { auth = auth[1].split(':'); queryParams['AWSAccessKeyId'] = auth[0]; queryParams['Signature'] = auth[1]; } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing auth.shift(); var rest = auth.join(' '); var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; queryParams['X-Amz-Signature'] = signature; delete queryParams['Expires']; } delete queryParams['Authorization']; delete queryParams['Host']; endpoint.pathname = parsedUrl.pathname; endpoint.search = AWS.util.queryParamsToString(queryParams); } AWS.Signers.Presign = inherit({ sign: function sign(request, expireTime, callback) { request.httpRequest.headers[expiresHeader] = expireTime || 3600; request.on('build', signedUrlBuilder); request.on('sign', signedUrlSigner); request.removeListener('afterBuild', AWS.EventListeners.Core.SET_CONTENT_LENGTH); request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); request.emit('beforePresign', [request]); if (callback) { request.build(function() { if (this.response.error) callback(this.response.error); else { callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); } }); } else { request.build(); if (request.response.error) throw request.response.error; return AWS.util.urlFormat(request.httpRequest.endpoint); } } }); module.exports = AWS.Signers.Presign; },{"../core":201}],254:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; AWS.Signers.RequestSigner = inherit({ constructor: function RequestSigner(request) { this.request = request; }, setServiceClientId: function setServiceClientId(id) { this.serviceClientId = id; }, getServiceClientId: function getServiceClientId() { return this.serviceClientId; } }); AWS.Signers.RequestSigner.getVersion = function getVersion(version) { switch (version) { case 'v2': return AWS.Signers.V2; case 'v3': return AWS.Signers.V3; case 'v4': return AWS.Signers.V4; case 's3': return AWS.Signers.S3; case 'v3https': return AWS.Signers.V3Https; } throw new Error('Unknown signing version ' + version); }; require('./v2'); require('./v3'); require('./v3https'); require('./v4'); require('./s3'); require('./presign'); },{"../core":201,"./presign":253,"./s3":255,"./v2":256,"./v3":257,"./v3https":258,"./v4":259}],255:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { subResources: { 'acl': 1, 'accelerate': 1, 'analytics': 1, 'cors': 1, 'lifecycle': 1, 'delete': 1, 'inventory': 1, 'location': 1, 'logging': 1, 'metrics': 1, 'notification': 1, 'partNumber': 1, 'policy': 1, 'requestPayment': 1, 'replication': 1, 'restore': 1, 'tagging': 1, 'torrent': 1, 'uploadId': 1, 'uploads': 1, 'versionId': 1, 'versioning': 1, 'versions': 1, 'website': 1 }, responseHeaders: { 'response-content-type': 1, 'response-content-language': 1, 'response-expires': 1, 'response-cache-control': 1, 'response-content-disposition': 1, 'response-content-encoding': 1 }, addAuthorization: function addAuthorization(credentials, date) { if (!this.request.headers['presigned-expires']) { this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); } if (credentials.sessionToken) { this.request.headers['x-amz-security-token'] = credentials.sessionToken; } var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; this.request.headers['Authorization'] = auth; }, stringToSign: function stringToSign() { var r = this.request; var parts = []; parts.push(r.method); parts.push(r.headers['Content-MD5'] || ''); parts.push(r.headers['Content-Type'] || ''); parts.push(r.headers['presigned-expires'] || ''); var headers = this.canonicalizedAmzHeaders(); if (headers) parts.push(headers); parts.push(this.canonicalizedResource()); return parts.join('\n'); }, canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { var amzHeaders = []; AWS.util.each(this.request.headers, function (name) { if (name.match(/^x-amz-/i)) amzHeaders.push(name); }); amzHeaders.sort(function (a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1; }); var parts = []; AWS.util.arrayEach.call(this, amzHeaders, function (name) { parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); }); return parts.join('\n'); }, canonicalizedResource: function canonicalizedResource() { var r = this.request; var parts = r.path.split('?'); var path = parts[0]; var querystring = parts[1]; var resource = ''; if (r.virtualHostedBucket) resource += '/' + r.virtualHostedBucket; resource += path; if (querystring) { var resources = []; AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { var name = param.split('=')[0]; var value = param.split('=')[1]; if (this.subResources[name] || this.responseHeaders[name]) { var subresource = { name: name }; if (value !== undefined) { if (this.subResources[name]) { subresource.value = value; } else { subresource.value = decodeURIComponent(value); } } resources.push(subresource); } }); resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); if (resources.length) { querystring = []; AWS.util.arrayEach(resources, function (res) { if (res.value === undefined) { querystring.push(res.name); } else { querystring.push(res.name + '=' + res.value); } }); resource += '?' + querystring.join('&'); } } return resource; }, sign: function sign(secret, string) { return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); } }); module.exports = AWS.Signers.S3; },{"../core":201}],256:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { addAuthorization: function addAuthorization(credentials, date) { if (!date) date = AWS.util.date.getDate(); var r = this.request; r.params.Timestamp = AWS.util.date.iso8601(date); r.params.SignatureVersion = '2'; r.params.SignatureMethod = 'HmacSHA256'; r.params.AWSAccessKeyId = credentials.accessKeyId; if (credentials.sessionToken) { r.params.SecurityToken = credentials.sessionToken; } delete r.params.Signature; // delete old Signature for re-signing r.params.Signature = this.signature(credentials); r.body = AWS.util.queryParamsToString(r.params); r.headers['Content-Length'] = r.body.length; }, signature: function signature(credentials) { return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); }, stringToSign: function stringToSign() { var parts = []; parts.push(this.request.method); parts.push(this.request.endpoint.host.toLowerCase()); parts.push(this.request.pathname()); parts.push(AWS.util.queryParamsToString(this.request.params)); return parts.join('\n'); } }); module.exports = AWS.Signers.V2; },{"../core":201}],257:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { addAuthorization: function addAuthorization(credentials, date) { var datetime = AWS.util.date.rfc822(date); this.request.headers['X-Amz-Date'] = datetime; if (credentials.sessionToken) { this.request.headers['x-amz-security-token'] = credentials.sessionToken; } this.request.headers['X-Amzn-Authorization'] = this.authorization(credentials, datetime); }, authorization: function authorization(credentials) { return 'AWS3 ' + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + 'Algorithm=HmacSHA256,' + 'SignedHeaders=' + this.signedHeaders() + ',' + 'Signature=' + this.signature(credentials); }, signedHeaders: function signedHeaders() { var headers = []; AWS.util.arrayEach(this.headersToSign(), function iterator(h) { headers.push(h.toLowerCase()); }); return headers.sort().join(';'); }, canonicalHeaders: function canonicalHeaders() { var headers = this.request.headers; var parts = []; AWS.util.arrayEach(this.headersToSign(), function iterator(h) { parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); }); return parts.sort().join('\n') + '\n'; }, headersToSign: function headersToSign() { var headers = []; AWS.util.each(this.request.headers, function iterator(k) { if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { headers.push(k); } }); return headers; }, signature: function signature(credentials) { return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); }, stringToSign: function stringToSign() { var parts = []; parts.push(this.request.method); parts.push('/'); parts.push(''); parts.push(this.canonicalHeaders()); parts.push(this.request.body); return AWS.util.crypto.sha256(parts.join('\n')); } }); module.exports = AWS.Signers.V3; },{"../core":201}],258:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; require('./v3'); AWS.Signers.V3Https = inherit(AWS.Signers.V3, { authorization: function authorization(credentials) { return 'AWS3-HTTPS ' + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + 'Algorithm=HmacSHA256,' + 'Signature=' + this.signature(credentials); }, stringToSign: function stringToSign() { return this.request.headers['X-Amz-Date']; } }); module.exports = AWS.Signers.V3Https; },{"../core":201,"./v3":257}],259:[function(require,module,exports){ var AWS = require('../core'); var inherit = AWS.util.inherit; var cachedSecret = {}; var cacheQueue = []; var maxCacheEntries = 50; var expiresHeader = 'presigned-expires'; AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { constructor: function V4(request, serviceName, signatureCache) { AWS.Signers.RequestSigner.call(this, request); this.serviceName = serviceName; this.signatureCache = signatureCache; }, algorithm: 'AWS4-HMAC-SHA256', addAuthorization: function addAuthorization(credentials, date) { var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); if (this.isPresigned()) { this.updateForPresigned(credentials, datetime); } else { this.addHeaders(credentials, datetime); } this.request.headers['Authorization'] = this.authorization(credentials, datetime); }, addHeaders: function addHeaders(credentials, datetime) { this.request.headers['X-Amz-Date'] = datetime; if (credentials.sessionToken) { this.request.headers['x-amz-security-token'] = credentials.sessionToken; } }, updateForPresigned: function updateForPresigned(credentials, datetime) { var credString = this.credentialString(datetime); var qs = { 'X-Amz-Date': datetime, 'X-Amz-Algorithm': this.algorithm, 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, 'X-Amz-Expires': this.request.headers[expiresHeader], 'X-Amz-SignedHeaders': this.signedHeaders() }; if (credentials.sessionToken) { qs['X-Amz-Security-Token'] = credentials.sessionToken; } if (this.request.headers['Content-Type']) { qs['Content-Type'] = this.request.headers['Content-Type']; } if (this.request.headers['Content-MD5']) { qs['Content-MD5'] = this.request.headers['Content-MD5']; } if (this.request.headers['Cache-Control']) { qs['Cache-Control'] = this.request.headers['Cache-Control']; } AWS.util.each.call(this, this.request.headers, function(key, value) { if (key === expiresHeader) return; if (this.isSignableHeader(key)) { var lowerKey = key.toLowerCase(); if (lowerKey.indexOf('x-amz-meta-') === 0) { qs[lowerKey] = value; } else if (lowerKey.indexOf('x-amz-') === 0) { qs[key] = value; } } }); var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; this.request.path += sep + AWS.util.queryParamsToString(qs); }, authorization: function authorization(credentials, datetime) { var parts = []; var credString = this.credentialString(datetime); parts.push(this.algorithm + ' Credential=' + credentials.accessKeyId + '/' + credString); parts.push('SignedHeaders=' + this.signedHeaders()); parts.push('Signature=' + this.signature(credentials, datetime)); return parts.join(', '); }, signature: function signature(credentials, datetime) { var cache = null; var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); if (this.signatureCache) { var cache = cachedSecret[cacheIdentifier]; if (!cache) { cacheQueue.push(cacheIdentifier); if (cacheQueue.length > maxCacheEntries) { delete cachedSecret[cacheQueue.shift()]; } } } var date = datetime.substr(0, 8); if (!cache || cache.akid !== credentials.accessKeyId || cache.region !== this.request.region || cache.date !== date) { var kSecret = credentials.secretAccessKey; var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); if (!this.signatureCache) { return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); } cachedSecret[cacheIdentifier] = { region: this.request.region, date: date, key: kCredentials, akid: credentials.accessKeyId }; } var key = cachedSecret[cacheIdentifier].key; return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); }, stringToSign: function stringToSign(datetime) { var parts = []; parts.push('AWS4-HMAC-SHA256'); parts.push(datetime); parts.push(this.credentialString(datetime)); parts.push(this.hexEncodedHash(this.canonicalString())); return parts.join('\n'); }, canonicalString: function canonicalString() { var parts = [], pathname = this.request.pathname(); if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); parts.push(this.request.method); parts.push(pathname); parts.push(this.request.search()); parts.push(this.canonicalHeaders() + '\n'); parts.push(this.signedHeaders()); parts.push(this.hexEncodedBodyHash()); return parts.join('\n'); }, canonicalHeaders: function canonicalHeaders() { var headers = []; AWS.util.each.call(this, this.request.headers, function (key, item) { headers.push([key, item]); }); headers.sort(function (a, b) { return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; }); var parts = []; AWS.util.arrayEach.call(this, headers, function (item) { var key = item[0].toLowerCase(); if (this.isSignableHeader(key)) { parts.push(key + ':' + this.canonicalHeaderValues(item[1].toString())); } }); return parts.join('\n'); }, canonicalHeaderValues: function canonicalHeaderValues(values) { return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); }, signedHeaders: function signedHeaders() { var keys = []; AWS.util.each.call(this, this.request.headers, function (key) { key = key.toLowerCase(); if (this.isSignableHeader(key)) keys.push(key); }); return keys.sort().join(';'); }, credentialString: function credentialString(datetime) { var parts = []; parts.push(datetime.substr(0, 8)); parts.push(this.request.region); parts.push(this.serviceName); parts.push('aws4_request'); return parts.join('/'); }, hexEncodedHash: function hash(string) { return AWS.util.crypto.sha256(string, 'hex'); }, hexEncodedBodyHash: function hexEncodedBodyHash() { if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { return 'UNSIGNED-PAYLOAD'; } else if (this.request.headers['X-Amz-Content-Sha256']) { return this.request.headers['X-Amz-Content-Sha256']; } else { return this.hexEncodedHash(this.request.body || ''); } }, unsignableHeaders: [ 'authorization', 'content-type', 'content-length', 'user-agent', expiresHeader, 'expect', 'x-amzn-trace-id' ], isSignableHeader: function isSignableHeader(key) { if (key.toLowerCase().indexOf('x-amz-') === 0) return true; return this.unsignableHeaders.indexOf(key) < 0; }, isPresigned: function isPresigned() { return this.request.headers[expiresHeader] ? true : false; } }); module.exports = AWS.Signers.V4; },{"../core":201}],260:[function(require,module,exports){ function AcceptorStateMachine(states, state) { this.currentState = state || null; this.states = states || {}; } AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { if (typeof finalState === 'function') { inputError = bindObject; bindObject = done; done = finalState; finalState = null; } var self = this; var state = self.states[self.currentState]; state.fn.call(bindObject || self, inputError, function(err) { if (err) { if (state.fail) self.currentState = state.fail; else return done ? done.call(bindObject, err) : null; } else { if (state.accept) self.currentState = state.accept; else return done ? done.call(bindObject) : null; } if (self.currentState === finalState) { return done ? done.call(bindObject, err) : null; } self.runTo(finalState, done, bindObject, err); }); }; AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { if (typeof acceptState === 'function') { fn = acceptState; acceptState = null; failState = null; } else if (typeof failState === 'function') { fn = failState; failState = null; } if (!this.currentState) this.currentState = name; this.states[name] = { accept: acceptState, fail: failState, fn: fn }; return this; }; module.exports = AcceptorStateMachine; },{}],261:[function(require,module,exports){ (function (process){ var AWS; var util = { engine: function engine() { if (util.isBrowser() && typeof navigator !== 'undefined') { return navigator.userAgent; } else { var engine = process.platform + '/' + process.version; if (process.env.AWS_EXECUTION_ENV) { engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV; } return engine; } }, userAgent: function userAgent() { var name = util.isBrowser() ? 'js' : 'nodejs'; var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; if (name === 'nodejs') agent += ' ' + util.engine(); return agent; }, isBrowser: function isBrowser() { return process && process.browser; }, isNode: function isNode() { return !util.isBrowser(); }, uriEscape: function uriEscape(string) { var output = encodeURIComponent(string); output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); output = output.replace(/[*]/g, function(ch) { return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); }); return output; }, uriEscapePath: function uriEscapePath(string) { var parts = []; util.arrayEach(string.split('/'), function (part) { parts.push(util.uriEscape(part)); }); return parts.join('/'); }, urlParse: function urlParse(url) { return util.url.parse(url); }, urlFormat: function urlFormat(url) { return util.url.format(url); }, queryStringParse: function queryStringParse(qs) { return util.querystring.parse(qs); }, queryParamsToString: function queryParamsToString(params) { var items = []; var escape = util.uriEscape; var sortedKeys = Object.keys(params).sort(); util.arrayEach(sortedKeys, function(name) { var value = params[name]; var ename = escape(name); var result = ename + '='; if (Array.isArray(value)) { var vals = []; util.arrayEach(value, function(item) { vals.push(escape(item)); }); result = ename + '=' + vals.sort().join('&' + ename + '='); } else if (value !== undefined && value !== null) { result = ename + '=' + escape(value); } items.push(result); }); return items.join('&'); }, readFileSync: function readFileSync(path) { if (util.isBrowser()) return null; return require('fs').readFileSync(path, 'utf-8'); }, base64: { encode: function encode64(string) { if (typeof string === 'number') { throw util.error(new Error('Cannot base64 encode number ' + string)); } if (string === null || typeof string === 'undefined') { return string; } var buf = (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string) : new util.Buffer(string); return buf.toString('base64'); }, decode: function decode64(string) { if (typeof string === 'number') { throw util.error(new Error('Cannot base64 decode number ' + string)); } if (string === null || typeof string === 'undefined') { return string; } return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ? util.Buffer.from(string, 'base64') : new util.Buffer(string, 'base64'); } }, buffer: { toStream: function toStream(buffer) { if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); var readable = new (util.stream.Readable)(); var pos = 0; readable._read = function(size) { if (pos >= buffer.length) return readable.push(null); var end = pos + size; if (end > buffer.length) end = buffer.length; readable.push(buffer.slice(pos, end)); pos = end; }; return readable; }, concat: function(buffers) { var length = 0, offset = 0, buffer = null, i; for (i = 0; i < buffers.length; i++) { length += buffers[i].length; } buffer = new util.Buffer(length); for (i = 0; i < buffers.length; i++) { buffers[i].copy(buffer, offset); offset += buffers[i].length; } return buffer; } }, string: { byteLength: function byteLength(string) { if (string === null || string === undefined) return 0; if (typeof string === 'string') string = new util.Buffer(string); if (typeof string.byteLength === 'number') { return string.byteLength; } else if (typeof string.length === 'number') { return string.length; } else if (typeof string.size === 'number') { return string.size; } else if (typeof string.path === 'string') { return require('fs').lstatSync(string.path).size; } else { throw util.error(new Error('Cannot determine length of ' + string), { object: string }); } }, upperFirst: function upperFirst(string) { return string[0].toUpperCase() + string.substr(1); }, lowerFirst: function lowerFirst(string) { return string[0].toLowerCase() + string.substr(1); } }, ini: { parse: function string(ini) { var currentSection, map = {}; util.arrayEach(ini.split(/\r?\n/), function(line) { line = line.split(/(^|\s)[;#]/)[0]; // remove comments var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); if (section) { currentSection = section[1]; } else if (currentSection) { var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); if (item) { map[currentSection] = map[currentSection] || {}; map[currentSection][item[1]] = item[2]; } } }); return map; } }, fn: { noop: function() {}, makeAsync: function makeAsync(fn, expectedArgs) { if (expectedArgs && expectedArgs <= fn.length) { return fn; } return function() { var args = Array.prototype.slice.call(arguments, 0); var callback = args.pop(); var result = fn.apply(null, args); callback(result); }; } }, date: { getDate: function getDate() { if (!AWS) AWS = require('./core'); if (AWS.config.systemClockOffset) { // use offset when non-zero return new Date(new Date().getTime() + AWS.config.systemClockOffset); } else { return new Date(); } }, iso8601: function iso8601(date) { if (date === undefined) { date = util.date.getDate(); } return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); }, rfc822: function rfc822(date) { if (date === undefined) { date = util.date.getDate(); } return date.toUTCString(); }, unixTimestamp: function unixTimestamp(date) { if (date === undefined) { date = util.date.getDate(); } return date.getTime() / 1000; }, from: function format(date) { if (typeof date === 'number') { return new Date(date * 1000); // unix timestamp } else { return new Date(date); } }, format: function format(date, formatter) { if (!formatter) formatter = 'iso8601'; return util.date[formatter](util.date.from(date)); }, parseTimestamp: function parseTimestamp(value) { if (typeof value === 'number') { // unix timestamp (number) return new Date(value * 1000); } else if (value.match(/^\d+$/)) { // unix timestamp return new Date(value * 1000); } else if (value.match(/^\d{4}/)) { // iso8601 return new Date(value); } else if (value.match(/^\w{3},/)) { // rfc822 return new Date(value); } else { throw util.error( new Error('unhandled timestamp format: ' + value), {code: 'TimestampParserError'}); } } }, crypto: { crc32Table: [ 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D], crc32: function crc32(data) { var tbl = util.crypto.crc32Table; var crc = 0 ^ -1; if (typeof data === 'string') { data = new util.Buffer(data); } for (var i = 0; i < data.length; i++) { var code = data.readUInt8(i); crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; } return (crc ^ -1) >>> 0; }, hmac: function hmac(key, string, digest, fn) { if (!digest) digest = 'binary'; if (digest === 'buffer') { digest = undefined; } if (!fn) fn = 'sha256'; if (typeof string === 'string') string = new util.Buffer(string); return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); }, md5: function md5(data, digest, callback) { return util.crypto.hash('md5', data, digest, callback); }, sha256: function sha256(data, digest, callback) { return util.crypto.hash('sha256', data, digest, callback); }, hash: function(algorithm, data, digest, callback) { var hash = util.crypto.createHash(algorithm); if (!digest) { digest = 'binary'; } if (digest === 'buffer') { digest = undefined; } if (typeof data === 'string') data = new util.Buffer(data); var sliceFn = util.arraySliceFn(data); var isBuffer = util.Buffer.isBuffer(data); if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; if (callback && typeof data === 'object' && typeof data.on === 'function' && !isBuffer) { data.on('data', function(chunk) { hash.update(chunk); }); data.on('error', function(err) { callback(err); }); data.on('end', function() { callback(null, hash.digest(digest)); }); } else if (callback && sliceFn && !isBuffer && typeof FileReader !== 'undefined') { var index = 0, size = 1024 * 512; var reader = new FileReader(); reader.onerror = function() { callback(new Error('Failed to read data.')); }; reader.onload = function() { var buf = new util.Buffer(new Uint8Array(reader.result)); hash.update(buf); index += buf.length; reader._continueReading(); }; reader._continueReading = function() { if (index >= data.size) { callback(null, hash.digest(digest)); return; } var back = index + size; if (back > data.size) back = data.size; reader.readAsArrayBuffer(sliceFn.call(data, index, back)); }; reader._continueReading(); } else { if (util.isBrowser() && typeof data === 'object' && !isBuffer) { data = new util.Buffer(new Uint8Array(data)); } var out = hash.update(data).digest(digest); if (callback) callback(null, out); return out; } }, toHex: function toHex(data) { var out = []; for (var i = 0; i < data.length; i++) { out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); } return out.join(''); }, createHash: function createHash(algorithm) { return util.crypto.lib.createHash(algorithm); } }, abort: {}, each: function each(object, iterFunction) { for (var key in object) { if (Object.prototype.hasOwnProperty.call(object, key)) { var ret = iterFunction.call(this, key, object[key]); if (ret === util.abort) break; } } }, arrayEach: function arrayEach(array, iterFunction) { for (var idx in array) { if (Object.prototype.hasOwnProperty.call(array, idx)) { var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); if (ret === util.abort) break; } } }, update: function update(obj1, obj2) { util.each(obj2, function iterator(key, item) { obj1[key] = item; }); return obj1; }, merge: function merge(obj1, obj2) { return util.update(util.copy(obj1), obj2); }, copy: function copy(object) { if (object === null || object === undefined) return object; var dupe = {}; for (var key in object) { dupe[key] = object[key]; } return dupe; }, isEmpty: function isEmpty(obj) { for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { return false; } } return true; }, arraySliceFn: function arraySliceFn(obj) { var fn = obj.slice || obj.webkitSlice || obj.mozSlice; return typeof fn === 'function' ? fn : null; }, isType: function isType(obj, type) { if (typeof type === 'function') type = util.typeName(type); return Object.prototype.toString.call(obj) === '[object ' + type + ']'; }, typeName: function typeName(type) { if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; var str = type.toString(); var match = str.match(/^\s*function (.+)\(/); return match ? match[1] : str; }, error: function error(err, options) { var originalError = null; if (typeof err.message === 'string' && err.message !== '') { if (typeof options === 'string' || (options && options.message)) { originalError = util.copy(err); originalError.message = err.message; } } err.message = err.message || null; if (typeof options === 'string') { err.message = options; } else if (typeof options === 'object' && options !== null) { util.update(err, options); if (options.message) err.message = options.message; if (options.code || options.name) err.code = options.code || options.name; if (options.stack) err.stack = options.stack; } if (typeof Object.defineProperty === 'function') { Object.defineProperty(err, 'name', {writable: true, enumerable: false}); Object.defineProperty(err, 'message', {enumerable: true}); } err.name = options && options.name || err.name || err.code || 'Error'; err.time = new Date(); if (originalError) err.originalError = originalError; return err; }, inherit: function inherit(klass, features) { var newObject = null; if (features === undefined) { features = klass; klass = Object; newObject = {}; } else { var ctor = function ConstructorWrapper() {}; ctor.prototype = klass.prototype; newObject = new ctor(); } if (features.constructor === Object) { features.constructor = function() { if (klass !== Object) { return klass.apply(this, arguments); } }; } features.constructor.prototype = newObject; util.update(features.constructor.prototype, features); features.constructor.__super__ = klass; return features.constructor; }, mixin: function mixin() { var klass = arguments[0]; for (var i = 1; i < arguments.length; i++) { for (var prop in arguments[i].prototype) { var fn = arguments[i].prototype[prop]; if (prop !== 'constructor') { klass.prototype[prop] = fn; } } } return klass; }, hideProperties: function hideProperties(obj, props) { if (typeof Object.defineProperty !== 'function') return; util.arrayEach(props, function (key) { Object.defineProperty(obj, key, { enumerable: false, writable: true, configurable: true }); }); }, property: function property(obj, name, value, enumerable, isValue) { var opts = { configurable: true, enumerable: enumerable !== undefined ? enumerable : true }; if (typeof value === 'function' && !isValue) { opts.get = value; } else { opts.value = value; opts.writable = true; } Object.defineProperty(obj, name, opts); }, memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { var cachedValue = null; util.property(obj, name, function() { if (cachedValue === null) { cachedValue = get(); } return cachedValue; }, enumerable); }, hoistPayloadMember: function hoistPayloadMember(resp) { var req = resp.request; var operation = req.operation; var output = req.service.api.operations[operation].output; if (output.payload) { var payloadMember = output.members[output.payload]; var responsePayload = resp.data[output.payload]; if (payloadMember.type === 'structure') { util.each(responsePayload, function(key, value) { util.property(resp.data, key, value, false); }); } } }, computeSha256: function computeSha256(body, done) { if (util.isNode()) { var Stream = util.stream.Stream; var fs = require('fs'); if (body instanceof Stream) { if (typeof body.path === 'string') { // assume file object var settings = {}; if (typeof body.start === 'number') { settings.start = body.start; } if (typeof body.end === 'number') { settings.end = body.end; } body = fs.createReadStream(body.path, settings); } else { // TODO support other stream types return done(new Error('Non-file stream objects are ' + 'not supported with SigV4')); } } } util.crypto.sha256(body, 'hex', function(err, sha) { if (err) done(err); else done(null, sha); }); }, isClockSkewed: function isClockSkewed(serverTime) { if (serverTime) { util.property(AWS.config, 'isClockSkewed', Math.abs(new Date().getTime() - serverTime) >= 300000, false); return AWS.config.isClockSkewed; } }, applyClockOffset: function applyClockOffset(serverTime) { if (serverTime) AWS.config.systemClockOffset = serverTime - new Date().getTime(); }, extractRequestId: function extractRequestId(resp) { var requestId = resp.httpResponse.headers['x-amz-request-id'] || resp.httpResponse.headers['x-amzn-requestid']; if (!requestId && resp.data && resp.data.ResponseMetadata) { requestId = resp.data.ResponseMetadata.RequestId; } if (requestId) { resp.requestId = requestId; } if (resp.error) { resp.error.requestId = requestId; } }, addPromises: function addPromises(constructors, PromiseDependency) { if (PromiseDependency === undefined && AWS && AWS.config) { PromiseDependency = AWS.config.getPromisesDependency(); } if (PromiseDependency === undefined && typeof Promise !== 'undefined') { PromiseDependency = Promise; } if (typeof PromiseDependency !== 'function') var deletePromises = true; if (!Array.isArray(constructors)) constructors = [constructors]; for (var ind = 0; ind < constructors.length; ind++) { var constructor = constructors[ind]; if (deletePromises) { if (constructor.deletePromisesFromClass) { constructor.deletePromisesFromClass(); } } else if (constructor.addPromisesToClass) { constructor.addPromisesToClass(PromiseDependency); } } }, promisifyMethod: function promisifyMethod(methodName, PromiseDependency) { return function promise() { var self = this; return new PromiseDependency(function(resolve, reject) { self[methodName](function(err, data) { if (err) { reject(err); } else { resolve(data); } }); }); }; }, isDualstackAvailable: function isDualstackAvailable(service) { if (!service) return false; var metadata = require('../apis/metadata.json'); if (typeof service !== 'string') service = service.serviceIdentifier; if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; return !!metadata[service].dualstackAvailable; }, calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { if (!retryDelayOptions) retryDelayOptions = {}; var customBackoff = retryDelayOptions.customBackoff || null; if (typeof customBackoff === 'function') { return customBackoff(retryCount); } var base = retryDelayOptions.base || 100; var delay = Math.random() * (Math.pow(2, retryCount) * base); return delay; }, handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { if (!options) options = {}; var http = AWS.HttpClient.getInstance(); var httpOptions = options.httpOptions || {}; var retryCount = 0; var errCallback = function(err) { var maxRetries = options.maxRetries || 0; if (err && err.code === 'TimeoutError') err.retryable = true; if (err && err.retryable && retryCount < maxRetries) { retryCount++; var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); setTimeout(sendRequest, delay + (err.retryAfter || 0)); } else { cb(err); } }; var sendRequest = function() { var data = ''; http.handleRequest(httpRequest, httpOptions, function(httpResponse) { httpResponse.on('data', function(chunk) { data += chunk.toString(); }); httpResponse.on('end', function() { var statusCode = httpResponse.statusCode; if (statusCode < 300) { cb(null, data); } else { var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; var err = util.error(new Error(), { retryable: statusCode >= 500 || statusCode === 429 } ); if (retryAfter && err.retryable) err.retryAfter = retryAfter; errCallback(err); } }); }, errCallback); }; process.nextTick(sendRequest); }, uuid: { v4: function uuidV4() { return require('uuid').v4(); } } }; module.exports = util; }).call(this,require('_process')) },{"../apis/metadata.json":90,"./core":201,"_process":266,"fs":264,"uuid":290}],262:[function(require,module,exports){ var util = require('../util'); var Shape = require('../model/shape'); function DomXmlParser() { } DomXmlParser.prototype.parse = function(xml, shape) { if (xml.replace(/^\s+/, '') === '') return {}; var result, error; try { if (window.DOMParser) { try { var parser = new DOMParser(); result = parser.parseFromString(xml, 'text/xml'); } catch (syntaxError) { throw util.error(new Error('Parse error in document'), { originalError: syntaxError, code: 'XMLParserError', retryable: true }); } if (result.documentElement === null) { throw util.error(new Error('Cannot parse empty document.'), { code: 'XMLParserError', retryable: true }); } var isError = result.getElementsByTagName('parsererror')[0]; if (isError && (isError.parentNode === result || isError.parentNode.nodeName === 'body' || isError.parentNode.parentNode === result || isError.parentNode.parentNode.nodeName === 'body')) { var errorElement = isError.getElementsByTagName('div')[0] || isError; throw util.error(new Error(errorElement.textContent || 'Parser error in document'), { code: 'XMLParserError', retryable: true }); } } else if (window.ActiveXObject) { result = new window.ActiveXObject('Microsoft.XMLDOM'); result.async = false; if (!result.loadXML(xml)) { throw util.error(new Error('Parse error in document'), { code: 'XMLParserError', retryable: true }); } } else { throw new Error('Cannot load XML parser'); } } catch (e) { error = e; } if (result && result.documentElement && !error) { var data = parseXml(result.documentElement, shape); var metadata = result.getElementsByTagName('ResponseMetadata')[0]; if (metadata) { data.ResponseMetadata = parseXml(metadata, {}); } return data; } else if (error) { throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); } else { // empty xml document return {}; } }; function parseXml(xml, shape) { if (!shape) shape = {}; switch (shape.type) { case 'structure': return parseStructure(xml, shape); case 'map': return parseMap(xml, shape); case 'list': return parseList(xml, shape); case undefined: case null: return parseUnknown(xml); default: return parseScalar(xml, shape); } } function parseStructure(xml, shape) { var data = {}; if (xml === null) return data; util.each(shape.members, function(memberName, memberShape) { if (memberShape.isXmlAttribute) { if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { var value = xml.attributes[memberShape.name].value; data[memberName] = parseXml({textContent: value}, memberShape); } } else { var xmlChild = memberShape.flattened ? xml : xml.getElementsByTagName(memberShape.name)[0]; if (xmlChild) { data[memberName] = parseXml(xmlChild, memberShape); } else if (!memberShape.flattened && memberShape.type === 'list') { data[memberName] = memberShape.defaultValue; } } }); return data; } function parseMap(xml, shape) { var data = {}; var xmlKey = shape.key.name || 'key'; var xmlValue = shape.value.name || 'value'; var tagName = shape.flattened ? shape.name : 'entry'; var child = xml.firstElementChild; while (child) { if (child.nodeName === tagName) { var key = child.getElementsByTagName(xmlKey)[0].textContent; var value = child.getElementsByTagName(xmlValue)[0]; data[key] = parseXml(value, shape.value); } child = child.nextElementSibling; } return data; } function parseList(xml, shape) { var data = []; var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); var child = xml.firstElementChild; while (child) { if (child.nodeName === tagName) { data.push(parseXml(child, shape.member)); } child = child.nextElementSibling; } return data; } function parseScalar(xml, shape) { if (xml.getAttribute) { var encoding = xml.getAttribute('encoding'); if (encoding === 'base64') { shape = new Shape.create({type: encoding}); } } var text = xml.textContent; if (text === '') text = null; if (typeof shape.toType === 'function') { return shape.toType(text); } else { return text; } } function parseUnknown(xml) { if (xml === undefined || xml === null) return ''; if (!xml.firstElementChild) { if (xml.parentNode.parentNode === null) return {}; if (xml.childNodes.length === 0) return ''; else return xml.textContent; } var shape = {type: 'structure', members: {}}; var child = xml.firstElementChild; while (child) { var tag = child.nodeName; if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { shape.members[tag].type = 'list'; } else { shape.members[tag] = {name: tag}; } child = child.nextElementSibling; } return parseStructure(xml, shape); } module.exports = DomXmlParser; },{"../model/shape":223,"../util":261}],263:[function(require,module,exports){ var util = require('../util'); var builder = require('xmlbuilder'); function XmlBuilder() { } XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { var xml = builder.create(rootElement); applyNamespaces(xml, shape); serialize(xml, params, shape); return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; }; function serialize(xml, value, shape) { switch (shape.type) { case 'structure': return serializeStructure(xml, value, shape); case 'map': return serializeMap(xml, value, shape); case 'list': return serializeList(xml, value, shape); default: return serializeScalar(xml, value, shape); } } function serializeStructure(xml, params, shape) { util.arrayEach(shape.memberNames, function(memberName) { var memberShape = shape.members[memberName]; if (memberShape.location !== 'body') return; var value = params[memberName]; var name = memberShape.name; if (value !== undefined && value !== null) { if (memberShape.isXmlAttribute) { xml.att(name, value); } else if (memberShape.flattened) { serialize(xml, value, memberShape); } else { var element = xml.ele(name); applyNamespaces(element, memberShape); serialize(element, value, memberShape); } } }); } function serializeMap(xml, map, shape) { var xmlKey = shape.key.name || 'key'; var xmlValue = shape.value.name || 'value'; util.each(map, function(key, value) { var entry = xml.ele(shape.flattened ? shape.name : 'entry'); serialize(entry.ele(xmlKey), key, shape.key); serialize(entry.ele(xmlValue), value, shape.value); }); } function serializeList(xml, list, shape) { if (shape.flattened) { util.arrayEach(list, function(value) { var name = shape.member.name || shape.name; var element = xml.ele(name); serialize(element, value, shape.member); }); } else { util.arrayEach(list, function(value) { var name = shape.member.name || 'member'; var element = xml.ele(name); serialize(element, value, shape.member); }); } } function serializeScalar(xml, value, shape) { xml.txt(shape.toWireFormat(value)); } function applyNamespaces(xml, shape) { var uri, prefix = 'xmlns'; if (shape.xmlNamespaceUri) { uri = shape.xmlNamespaceUri; if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; } else if (xml.isRoot && shape.api.xmlNamespaceUri) { uri = shape.api.xmlNamespaceUri; } if (uri) xml.att(prefix, uri); } module.exports = XmlBuilder; },{"../util":261,"xmlbuilder":307}],264:[function(require,module,exports){ },{}],265:[function(require,module,exports){ function EventEmitter() { this._events = this._events || {}; this._maxListeners = this._maxListeners || undefined; } module.exports = EventEmitter; EventEmitter.EventEmitter = EventEmitter; EventEmitter.prototype._events = undefined; EventEmitter.prototype._maxListeners = undefined; EventEmitter.defaultMaxListeners = 10; EventEmitter.prototype.setMaxListeners = function(n) { if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number'); this._maxListeners = n; return this; }; EventEmitter.prototype.emit = function(type) { var er, handler, len, args, i, listeners; if (!this._events) this._events = {}; if (type === 'error') { if (!this._events.error || (isObject(this._events.error) && !this._events.error.length)) { er = arguments[1]; if (er instanceof Error) { throw er; // Unhandled 'error' event } else { var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); err.context = er; throw err; } } } handler = this._events[type]; if (isUndefined(handler)) return false; if (isFunction(handler)) { switch (arguments.length) { case 1: handler.call(this); break; case 2: handler.call(this, arguments[1]); break; case 3: handler.call(this, arguments[1], arguments[2]); break; default: args = Array.prototype.slice.call(arguments, 1); handler.apply(this, args); } } else if (isObject(handler)) { args = Array.prototype.slice.call(arguments, 1); listeners = handler.slice(); len = listeners.length; for (i = 0; i < len; i++) listeners[i].apply(this, args); } return true; }; EventEmitter.prototype.addListener = function(type, listener) { var m; if (!isFunction(listener)) throw TypeError('listener must be a function'); if (!this._events) this._events = {}; if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener); if (!this._events[type]) this._events[type] = listener; else if (isObject(this._events[type])) this._events[type].push(listener); else this._events[type] = [this._events[type], listener]; if (isObject(this._events[type]) && !this._events[type].warned) { if (!isUndefined(this._maxListeners)) { m = this._maxListeners; } else { m = EventEmitter.defaultMaxListeners; } if (m && m > 0 && this._events[type].length > m) { this._events[type].warned = true; console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length); if (typeof console.trace === 'function') { console.trace(); } } } return this; }; EventEmitter.prototype.on = EventEmitter.prototype.addListener; EventEmitter.prototype.once = function(type, listener) { if (!isFunction(listener)) throw TypeError('listener must be a function'); var fired = false; function g() { this.removeListener(type, g); if (!fired) { fired = true; listener.apply(this, arguments); } } g.listener = listener; this.on(type, g); return this; }; EventEmitter.prototype.removeListener = function(type, listener) { var list, position, length, i; if (!isFunction(listener)) throw TypeError('listener must be a function'); if (!this._events || !this._events[type]) return this; list = this._events[type]; length = list.length; position = -1; if (list === listener || (isFunction(list.listener) && list.listener === listener)) { delete this._events[type]; if (this._events.removeListener) this.emit('removeListener', type, listener); } else if (isObject(list)) { for (i = length; i-- > 0;) { if (list[i] === listener || (list[i].listener && list[i].listener === listener)) { position = i; break; } } if (position < 0) return this; if (list.length === 1) { list.length = 0; delete this._events[type]; } else { list.splice(position, 1); } if (this._events.removeListener) this.emit('removeListener', type, listener); } return this; }; EventEmitter.prototype.removeAllListeners = function(type) { var key, listeners; if (!this._events) return this; if (!this._events.removeListener) { if (arguments.length === 0) this._events = {}; else if (this._events[type]) delete this._events[type]; return this; } if (arguments.length === 0) { for (key in this._events) { if (key === 'removeListener') continue; this.removeAllListeners(key); } this.removeAllListeners('removeListener'); this._events = {}; return this; } listeners = this._events[type]; if (isFunction(listeners)) { this.removeListener(type, listeners); } else if (listeners) { while (listeners.length) this.removeListener(type, listeners[listeners.length - 1]); } delete this._events[type]; return this; }; EventEmitter.prototype.listeners = function(type) { var ret; if (!this._events || !this._events[type]) ret = []; else if (isFunction(this._events[type])) ret = [this._events[type]]; else ret = this._events[type].slice(); return ret; }; EventEmitter.prototype.listenerCount = function(type) { if (this._events) { var evlistener = this._events[type]; if (isFunction(evlistener)) return 1; else if (evlistener) return evlistener.length; } return 0; }; EventEmitter.listenerCount = function(emitter, type) { return emitter.listenerCount(type); }; function isFunction(arg) { return typeof arg === 'function'; } function isNumber(arg) { return typeof arg === 'number'; } function isObject(arg) { return typeof arg === 'object' && arg !== null; } function isUndefined(arg) { return arg === void 0; } },{}],266:[function(require,module,exports){ var process = module.exports = {}; var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout () { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } } ()) function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { return setTimeout(fun, 0); } if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { return cachedSetTimeout(fun, 0); } catch(e){ try { return cachedSetTimeout.call(null, fun, 0); } catch(e){ return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { return clearTimeout(marker); } if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { return cachedClearTimeout(marker); } catch (e){ try { return cachedClearTimeout.call(null, marker); } catch (e){ return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while(len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; },{}],267:[function(require,module,exports){ (function (global){ ;(function(root) { var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; var freeModule = typeof module == 'object' && module && !module.nodeType && module; var freeGlobal = typeof global == 'object' && global; if ( freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal ) { root = freeGlobal; } var punycode, maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 base = 36, tMin = 1, tMax = 26, skew = 38, damp = 700, initialBias = 72, initialN = 128, // 0x80 delimiter = '-', // '\x2D' regexPunycode = /^xn--/, regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators errors = { 'overflow': 'Overflow: input needs wider integers to process', 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', 'invalid-input': 'Invalid input' }, baseMinusTMin = base - tMin, floor = Math.floor, stringFromCharCode = String.fromCharCode, key; function error(type) { throw new RangeError(errors[type]); } function map(array, fn) { var length = array.length; var result = []; while (length--) { result[length] = fn(array[length]); } return result; } function mapDomain(string, fn) { var parts = string.split('@'); var result = ''; if (parts.length > 1) { result = parts[0] + '@'; string = parts[1]; } string = string.replace(regexSeparators, '\x2E'); var labels = string.split('.'); var encoded = map(labels, fn).join('.'); return result + encoded; } function ucs2decode(string) { var output = [], counter = 0, length = string.length, value, extra; while (counter < length) { value = string.charCodeAt(counter++); if (value >= 0xD800 && value <= 0xDBFF && counter < length) { extra = string.charCodeAt(counter++); if ((extra & 0xFC00) == 0xDC00) { // low surrogate output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); } else { output.push(value); counter--; } } else { output.push(value); } } return output; } function ucs2encode(array) { return map(array, function(value) { var output = ''; if (value > 0xFFFF) { value -= 0x10000; output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); value = 0xDC00 | value & 0x3FF; } output += stringFromCharCode(value); return output; }).join(''); } function basicToDigit(codePoint) { if (codePoint - 48 < 10) { return codePoint - 22; } if (codePoint - 65 < 26) { return codePoint - 65; } if (codePoint - 97 < 26) { return codePoint - 97; } return base; } function digitToBasic(digit, flag) { return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); } function adapt(delta, numPoints, firstTime) { var k = 0; delta = firstTime ? floor(delta / damp) : delta >> 1; delta += floor(delta / numPoints); for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { delta = floor(delta / baseMinusTMin); } return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); } function decode(input) { var output = [], inputLength = input.length, out, i = 0, n = initialN, bias = initialBias, basic, j, index, oldi, w, k, digit, t, baseMinusT; basic = input.lastIndexOf(delimiter); if (basic < 0) { basic = 0; } for (j = 0; j < basic; ++j) { if (input.charCodeAt(j) >= 0x80) { error('not-basic'); } output.push(input.charCodeAt(j)); } for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { for (oldi = i, w = 1, k = base; /* no condition */; k += base) { if (index >= inputLength) { error('invalid-input'); } digit = basicToDigit(input.charCodeAt(index++)); if (digit >= base || digit > floor((maxInt - i) / w)) { error('overflow'); } i += digit * w; t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); if (digit < t) { break; } baseMinusT = base - t; if (w > floor(maxInt / baseMinusT)) { error('overflow'); } w *= baseMinusT; } out = output.length + 1; bias = adapt(i - oldi, out, oldi == 0); if (floor(i / out) > maxInt - n) { error('overflow'); } n += floor(i / out); i %= out; output.splice(i++, 0, n); } return ucs2encode(output); } function encode(input) { var n, delta, handledCPCount, basicLength, bias, j, m, q, k, t, currentValue, output = [], inputLength, handledCPCountPlusOne, baseMinusT, qMinusT; input = ucs2decode(input); inputLength = input.length; n = initialN; delta = 0; bias = initialBias; for (j = 0; j < inputLength; ++j) { currentValue = input[j]; if (currentValue < 0x80) { output.push(stringFromCharCode(currentValue)); } } handledCPCount = basicLength = output.length; if (basicLength) { output.push(delimiter); } while (handledCPCount < inputLength) { for (m = maxInt, j = 0; j < inputLength; ++j) { currentValue = input[j]; if (currentValue >= n && currentValue < m) { m = currentValue; } } handledCPCountPlusOne = handledCPCount + 1; if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { error('overflow'); } delta += (m - n) * handledCPCountPlusOne; n = m; for (j = 0; j < inputLength; ++j) { currentValue = input[j]; if (currentValue < n && ++delta > maxInt) { error('overflow'); } if (currentValue == n) { for (q = delta, k = base; /* no condition */; k += base) { t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); if (q < t) { break; } qMinusT = q - t; baseMinusT = base - t; output.push( stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) ); q = floor(qMinusT / baseMinusT); } output.push(stringFromCharCode(digitToBasic(q, 0))); bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); delta = 0; ++handledCPCount; } } ++delta; ++n; } return output.join(''); } function toUnicode(input) { return mapDomain(input, function(string) { return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; }); } function toASCII(input) { return mapDomain(input, function(string) { return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; }); } punycode = { 'version': '1.4.1', 'ucs2': { 'decode': ucs2decode, 'encode': ucs2encode }, 'decode': decode, 'encode': encode, 'toASCII': toASCII, 'toUnicode': toUnicode }; if ( typeof define == 'function' && typeof define.amd == 'object' && define.amd ) { define('punycode', function() { return punycode; }); } else if (freeExports && freeModule) { if (module.exports == freeExports) { freeModule.exports = punycode; } else { for (key in punycode) { punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); } } } else { root.punycode = punycode; } }(this)); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],268:[function(require,module,exports){ 'use strict'; function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } module.exports = function(qs, sep, eq, options) { sep = sep || '&'; eq = eq || '='; var obj = {}; if (typeof qs !== 'string' || qs.length === 0) { return obj; } var regexp = /\+/g; qs = qs.split(sep); var maxKeys = 1000; if (options && typeof options.maxKeys === 'number') { maxKeys = options.maxKeys; } var len = qs.length; if (maxKeys > 0 && len > maxKeys) { len = maxKeys; } for (var i = 0; i < len; ++i) { var x = qs[i].replace(regexp, '%20'), idx = x.indexOf(eq), kstr, vstr, k, v; if (idx >= 0) { kstr = x.substr(0, idx); vstr = x.substr(idx + 1); } else { kstr = x; vstr = ''; } k = decodeURIComponent(kstr); v = decodeURIComponent(vstr); if (!hasOwnProperty(obj, k)) { obj[k] = v; } else if (isArray(obj[k])) { obj[k].push(v); } else { obj[k] = [obj[k], v]; } } return obj; }; var isArray = Array.isArray || function (xs) { return Object.prototype.toString.call(xs) === '[object Array]'; }; },{}],269:[function(require,module,exports){ 'use strict'; var stringifyPrimitive = function(v) { switch (typeof v) { case 'string': return v; case 'boolean': return v ? 'true' : 'false'; case 'number': return isFinite(v) ? v : ''; default: return ''; } }; module.exports = function(obj, sep, eq, name) { sep = sep || '&'; eq = eq || '='; if (obj === null) { obj = undefined; } if (typeof obj === 'object') { return map(objectKeys(obj), function(k) { var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; if (isArray(obj[k])) { return map(obj[k], function(v) { return ks + encodeURIComponent(stringifyPrimitive(v)); }).join(sep); } else { return ks + encodeURIComponent(stringifyPrimitive(obj[k])); } }).join(sep); } if (!name) return ''; return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj)); }; var isArray = Array.isArray || function (xs) { return Object.prototype.toString.call(xs) === '[object Array]'; }; function map (xs, f) { if (xs.map) return xs.map(f); var res = []; for (var i = 0; i < xs.length; i++) { res.push(f(xs[i], i)); } return res; } var objectKeys = Object.keys || function (obj) { var res = []; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); } return res; }; },{}],270:[function(require,module,exports){ 'use strict'; exports.decode = exports.parse = require('./decode'); exports.encode = exports.stringify = require('./encode'); },{"./decode":268,"./encode":269}],271:[function(require,module,exports){ if (typeof Object.create === 'function') { module.exports = function inherits(ctor, superCtor) { ctor.super_ = superCtor ctor.prototype = Object.create(superCtor.prototype, { constructor: { value: ctor, enumerable: false, writable: true, configurable: true } }); }; } else { module.exports = function inherits(ctor, superCtor) { ctor.super_ = superCtor var TempCtor = function () {} TempCtor.prototype = superCtor.prototype ctor.prototype = new TempCtor() ctor.prototype.constructor = ctor } } },{}],272:[function(require,module,exports){ module.exports = function isBuffer(arg) { return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; } },{}],273:[function(require,module,exports){ (function (process,global){ var formatRegExp = /%[sdj%]/g; exports.format = function(f) { if (!isString(f)) { var objects = []; for (var i = 0; i < arguments.length; i++) { objects.push(inspect(arguments[i])); } return objects.join(' '); } var i = 1; var args = arguments; var len = args.length; var str = String(f).replace(formatRegExp, function(x) { if (x === '%') return '%'; if (i >= len) return x; switch (x) { case '%s': return String(args[i++]); case '%d': return Number(args[i++]); case '%j': try { return JSON.stringify(args[i++]); } catch (_) { return '[Circular]'; } default: return x; } }); for (var x = args[i]; i < len; x = args[++i]) { if (isNull(x) || !isObject(x)) { str += ' ' + x; } else { str += ' ' + inspect(x); } } return str; }; exports.deprecate = function(fn, msg) { if (isUndefined(global.process)) { return function() { return exports.deprecate(fn, msg).apply(this, arguments); }; } if (process.noDeprecation === true) { return fn; } var warned = false; function deprecated() { if (!warned) { if (process.throwDeprecation) { throw new Error(msg); } else if (process.traceDeprecation) { console.trace(msg); } else { console.error(msg); } warned = true; } return fn.apply(this, arguments); } return deprecated; }; var debugs = {}; var debugEnviron; exports.debuglog = function(set) { if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || ''; set = set.toUpperCase(); if (!debugs[set]) { if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { var pid = process.pid; debugs[set] = function() { var msg = exports.format.apply(exports, arguments); console.error('%s %d: %s', set, pid, msg); }; } else { debugs[set] = function() {}; } } return debugs[set]; }; function inspect(obj, opts) { var ctx = { seen: [], stylize: stylizeNoColor }; if (arguments.length >= 3) ctx.depth = arguments[2]; if (arguments.length >= 4) ctx.colors = arguments[3]; if (isBoolean(opts)) { ctx.showHidden = opts; } else if (opts) { exports._extend(ctx, opts); } if (isUndefined(ctx.showHidden)) ctx.showHidden = false; if (isUndefined(ctx.depth)) ctx.depth = 2; if (isUndefined(ctx.colors)) ctx.colors = false; if (isUndefined(ctx.customInspect)) ctx.customInspect = true; if (ctx.colors) ctx.stylize = stylizeWithColor; return formatValue(ctx, obj, ctx.depth); } exports.inspect = inspect; inspect.colors = { 'bold' : [1, 22], 'italic' : [3, 23], 'underline' : [4, 24], 'inverse' : [7, 27], 'white' : [37, 39], 'grey' : [90, 39], 'black' : [30, 39], 'blue' : [34, 39], 'cyan' : [36, 39], 'green' : [32, 39], 'magenta' : [35, 39], 'red' : [31, 39], 'yellow' : [33, 39] }; inspect.styles = { 'special': 'cyan', 'number': 'yellow', 'boolean': 'yellow', 'undefined': 'grey', 'null': 'bold', 'string': 'green', 'date': 'magenta', 'regexp': 'red' }; function stylizeWithColor(str, styleType) { var style = inspect.styles[styleType]; if (style) { return '\u001b[' + inspect.colors[style][0] + 'm' + str + '\u001b[' + inspect.colors[style][1] + 'm'; } else { return str; } } function stylizeNoColor(str, styleType) { return str; } function arrayToHash(array) { var hash = {}; array.forEach(function(val, idx) { hash[val] = true; }); return hash; } function formatValue(ctx, value, recurseTimes) { if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) { var ret = value.inspect(recurseTimes, ctx); if (!isString(ret)) { ret = formatValue(ctx, ret, recurseTimes); } return ret; } var primitive = formatPrimitive(ctx, value); if (primitive) { return primitive; } var keys = Object.keys(value); var visibleKeys = arrayToHash(keys); if (ctx.showHidden) { keys = Object.getOwnPropertyNames(value); } if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { return formatError(value); } if (keys.length === 0) { if (isFunction(value)) { var name = value.name ? ': ' + value.name : ''; return ctx.stylize('[Function' + name + ']', 'special'); } if (isRegExp(value)) { return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); } if (isDate(value)) { return ctx.stylize(Date.prototype.toString.call(value), 'date'); } if (isError(value)) { return formatError(value); } } var base = '', array = false, braces = ['{', '}']; if (isArray(value)) { array = true; braces = ['[', ']']; } if (isFunction(value)) { var n = value.name ? ': ' + value.name : ''; base = ' [Function' + n + ']'; } if (isRegExp(value)) { base = ' ' + RegExp.prototype.toString.call(value); } if (isDate(value)) { base = ' ' + Date.prototype.toUTCString.call(value); } if (isError(value)) { base = ' ' + formatError(value); } if (keys.length === 0 && (!array || value.length == 0)) { return braces[0] + base + braces[1]; } if (recurseTimes < 0) { if (isRegExp(value)) { return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); } else { return ctx.stylize('[Object]', 'special'); } } ctx.seen.push(value); var output; if (array) { output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); } else { output = keys.map(function(key) { return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); }); } ctx.seen.pop(); return reduceToSingleString(output, base, braces); } function formatPrimitive(ctx, value) { if (isUndefined(value)) return ctx.stylize('undefined', 'undefined'); if (isString(value)) { var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') .replace(/'/g, "\\'") .replace(/\\"/g, '"') + '\''; return ctx.stylize(simple, 'string'); } if (isNumber(value)) return ctx.stylize('' + value, 'number'); if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); if (isNull(value)) return ctx.stylize('null', 'null'); } function formatError(value) { return '[' + Error.prototype.toString.call(value) + ']'; } function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { var output = []; for (var i = 0, l = value.length; i < l; ++i) { if (hasOwnProperty(value, String(i))) { output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); } else { output.push(''); } } keys.forEach(function(key) { if (!key.match(/^\d+$/)) { output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); } }); return output; } function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { var name, str, desc; desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; if (desc.get) { if (desc.set) { str = ctx.stylize('[Getter/Setter]', 'special'); } else { str = ctx.stylize('[Getter]', 'special'); } } else { if (desc.set) { str = ctx.stylize('[Setter]', 'special'); } } if (!hasOwnProperty(visibleKeys, key)) { name = '[' + key + ']'; } if (!str) { if (ctx.seen.indexOf(desc.value) < 0) { if (isNull(recurseTimes)) { str = formatValue(ctx, desc.value, null); } else { str = formatValue(ctx, desc.value, recurseTimes - 1); } if (str.indexOf('\n') > -1) { if (array) { str = str.split('\n').map(function(line) { return ' ' + line; }).join('\n').substr(2); } else { str = '\n' + str.split('\n').map(function(line) { return ' ' + line; }).join('\n'); } } } else { str = ctx.stylize('[Circular]', 'special'); } } if (isUndefined(name)) { if (array && key.match(/^\d+$/)) { return str; } name = JSON.stringify('' + key); if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { name = name.substr(1, name.length - 2); name = ctx.stylize(name, 'name'); } else { name = name.replace(/'/g, "\\'") .replace(/\\"/g, '"') .replace(/(^"|"$)/g, "'"); name = ctx.stylize(name, 'string'); } } return name + ': ' + str; } function reduceToSingleString(output, base, braces) { var numLinesEst = 0; var length = output.reduce(function(prev, cur) { numLinesEst++; if (cur.indexOf('\n') >= 0) numLinesEst++; return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; }, 0); if (length > 60) { return braces[0] + (base === '' ? '' : base + '\n ') + ' ' + output.join(',\n ') + ' ' + braces[1]; } return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; } function isArray(ar) { return Array.isArray(ar); } exports.isArray = isArray; function isBoolean(arg) { return typeof arg === 'boolean'; } exports.isBoolean = isBoolean; function isNull(arg) { return arg === null; } exports.isNull = isNull; function isNullOrUndefined(arg) { return arg == null; } exports.isNullOrUndefined = isNullOrUndefined; function isNumber(arg) { return typeof arg === 'number'; } exports.isNumber = isNumber; function isString(arg) { return typeof arg === 'string'; } exports.isString = isString; function isSymbol(arg) { return typeof arg === 'symbol'; } exports.isSymbol = isSymbol; function isUndefined(arg) { return arg === void 0; } exports.isUndefined = isUndefined; function isRegExp(re) { return isObject(re) && objectToString(re) === '[object RegExp]'; } exports.isRegExp = isRegExp; function isObject(arg) { return typeof arg === 'object' && arg !== null; } exports.isObject = isObject; function isDate(d) { return isObject(d) && objectToString(d) === '[object Date]'; } exports.isDate = isDate; function isError(e) { return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error); } exports.isError = isError; function isFunction(arg) { return typeof arg === 'function'; } exports.isFunction = isFunction; function isPrimitive(arg) { return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol typeof arg === 'undefined'; } exports.isPrimitive = isPrimitive; exports.isBuffer = require('./support/isBuffer'); function objectToString(o) { return Object.prototype.toString.call(o); } function pad(n) { return n < 10 ? '0' + n.toString(10) : n.toString(10); } var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; function timestamp() { var d = new Date(); var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':'); return [d.getDate(), months[d.getMonth()], time].join(' '); } exports.log = function() { console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); }; exports.inherits = require('inherits'); exports._extend = function(origin, add) { if (!add || !isObject(add)) return origin; var keys = Object.keys(add); var i = keys.length; while (i--) { origin[keys[i]] = add[keys[i]]; } return origin; }; function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./support/isBuffer":272,"_process":266,"inherits":271}],274:[function(require,module,exports){ (function (global){ 'use strict' var base64 = require('base64-js') var ieee754 = require('ieee754') var isArray = require('isarray') exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport() exports.kMaxLength = kMaxLength() function typedArraySupport () { try { var arr = new Uint8Array(1) arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} return arr.foo() === 42 && // typed array instances can be augmented typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } } function kMaxLength () { return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff } function createBuffer (that, length) { if (kMaxLength() < length) { throw new RangeError('Invalid typed array length') } if (Buffer.TYPED_ARRAY_SUPPORT) { that = new Uint8Array(length) that.__proto__ = Buffer.prototype } else { if (that === null) { that = new Buffer(length) } that.length = length } return that } function Buffer (arg, encodingOrOffset, length) { if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { return new Buffer(arg, encodingOrOffset, length) } if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { throw new Error( 'If encoding is specified then the first argument must be a string' ) } return allocUnsafe(this, arg) } return from(this, arg, encodingOrOffset, length) } Buffer.poolSize = 8192 // not used by this implementation Buffer._augment = function (arr) { arr.__proto__ = Buffer.prototype return arr } function from (that, value, encodingOrOffset, length) { if (typeof value === 'number') { throw new TypeError('"value" argument must not be a number') } if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { return fromArrayBuffer(that, value, encodingOrOffset, length) } if (typeof value === 'string') { return fromString(that, value, encodingOrOffset) } return fromObject(that, value) } Buffer.from = function (value, encodingOrOffset, length) { return from(null, value, encodingOrOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { Buffer.prototype.__proto__ = Uint8Array.prototype Buffer.__proto__ = Uint8Array if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { Object.defineProperty(Buffer, Symbol.species, { value: null, configurable: true }) } } function assertSize (size) { if (typeof size !== 'number') { throw new TypeError('"size" argument must be a number') } else if (size < 0) { throw new RangeError('"size" argument must not be negative') } } function alloc (that, size, fill, encoding) { assertSize(size) if (size <= 0) { return createBuffer(that, size) } if (fill !== undefined) { return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill) } return createBuffer(that, size) } Buffer.alloc = function (size, fill, encoding) { return alloc(null, size, fill, encoding) } function allocUnsafe (that, size) { assertSize(size) that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) if (!Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < size; ++i) { that[i] = 0 } } return that } Buffer.allocUnsafe = function (size) { return allocUnsafe(null, size) } Buffer.allocUnsafeSlow = function (size) { return allocUnsafe(null, size) } function fromString (that, string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8' } if (!Buffer.isEncoding(encoding)) { throw new TypeError('"encoding" must be a valid string encoding') } var length = byteLength(string, encoding) | 0 that = createBuffer(that, length) var actual = that.write(string, encoding) if (actual !== length) { that = that.slice(0, actual) } return that } function fromArrayLike (that, array) { var length = array.length < 0 ? 0 : checked(array.length) | 0 that = createBuffer(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function fromArrayBuffer (that, array, byteOffset, length) { array.byteLength // this throws if `array` is not a valid ArrayBuffer if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('\'offset\' is out of bounds') } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('\'length\' is out of bounds') } if (byteOffset === undefined && length === undefined) { array = new Uint8Array(array) } else if (length === undefined) { array = new Uint8Array(array, byteOffset) } else { array = new Uint8Array(array, byteOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { that = array that.__proto__ = Buffer.prototype } else { that = fromArrayLike(that, array) } return that } function fromObject (that, obj) { if (Buffer.isBuffer(obj)) { var len = checked(obj.length) | 0 that = createBuffer(that, len) if (that.length === 0) { return that } obj.copy(that, 0, 0, len) return that } if (obj) { if ((typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer) || 'length' in obj) { if (typeof obj.length !== 'number' || isnan(obj.length)) { return createBuffer(that, 0) } return fromArrayLike(that, obj) } if (obj.type === 'Buffer' && isArray(obj.data)) { return fromArrayLike(that, obj.data) } } throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') } function checked (length) { if (length >= kMaxLength()) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes') } return length | 0 } function SlowBuffer (length) { if (+length != length) { // eslint-disable-line eqeqeq length = 0 } return Buffer.alloc(+length) } Buffer.isBuffer = function isBuffer (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function compare (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('Arguments must be Buffers') } if (a === b) return 0 var x = a.length var y = b.length for (var i = 0, len = Math.min(x, y); i < len; ++i) { if (a[i] !== b[i]) { x = a[i] y = b[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'latin1': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers') } if (list.length === 0) { return Buffer.alloc(0) } var i if (length === undefined) { length = 0 for (i = 0; i < list.length; ++i) { length += list[i].length } } var buffer = Buffer.allocUnsafe(length) var pos = 0 for (i = 0; i < list.length; ++i) { var buf = list[i] if (!Buffer.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers') } buf.copy(buffer, pos) pos += buf.length } return buffer } function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { return string.byteLength } if (typeof string !== 'string') { string = '' + string } var len = string.length if (len === 0) return 0 var loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'latin1': case 'binary': return len case 'utf8': case 'utf-8': case undefined: return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength function slowToString (encoding, start, end) { var loweredCase = false if (start === undefined || start < 0) { start = 0 } if (start > this.length) { return '' } if (end === undefined || end > this.length) { end = this.length } if (end <= 0) { return '' } end >>>= 0 start >>>= 0 if (end <= start) { return '' } if (!encoding) encoding = 'utf8' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'latin1': case 'binary': return latin1Slice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } Buffer.prototype._isBuffer = true function swap (b, n, m) { var i = b[n] b[n] = b[m] b[m] = i } Buffer.prototype.swap16 = function swap16 () { var len = this.length if (len % 2 !== 0) { throw new RangeError('Buffer size must be a multiple of 16-bits') } for (var i = 0; i < len; i += 2) { swap(this, i, i + 1) } return this } Buffer.prototype.swap32 = function swap32 () { var len = this.length if (len % 4 !== 0) { throw new RangeError('Buffer size must be a multiple of 32-bits') } for (var i = 0; i < len; i += 4) { swap(this, i, i + 3) swap(this, i + 1, i + 2) } return this } Buffer.prototype.swap64 = function swap64 () { var len = this.length if (len % 8 !== 0) { throw new RangeError('Buffer size must be a multiple of 64-bits') } for (var i = 0; i < len; i += 8) { swap(this, i, i + 7) swap(this, i + 1, i + 6) swap(this, i + 2, i + 5) swap(this, i + 3, i + 4) } return this } Buffer.prototype.toString = function toString () { var length = this.length | 0 if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '' } Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { if (!Buffer.isBuffer(target)) { throw new TypeError('Argument must be a Buffer') } if (start === undefined) { start = 0 } if (end === undefined) { end = target ? target.length : 0 } if (thisStart === undefined) { thisStart = 0 } if (thisEnd === undefined) { thisEnd = this.length } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError('out of range index') } if (thisStart >= thisEnd && start >= end) { return 0 } if (thisStart >= thisEnd) { return -1 } if (start >= end) { return 1 } start >>>= 0 end >>>= 0 thisStart >>>= 0 thisEnd >>>= 0 if (this === target) return 0 var x = thisEnd - thisStart var y = end - start var len = Math.min(x, y) var thisCopy = this.slice(thisStart, thisEnd) var targetCopy = target.slice(start, end) for (var i = 0; i < len; ++i) { if (thisCopy[i] !== targetCopy[i]) { x = thisCopy[i] y = targetCopy[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { if (buffer.length === 0) return -1 if (typeof byteOffset === 'string') { encoding = byteOffset byteOffset = 0 } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. if (isNaN(byteOffset)) { byteOffset = dir ? 0 : (buffer.length - 1) } if (byteOffset < 0) byteOffset = buffer.length + byteOffset if (byteOffset >= buffer.length) { if (dir) return -1 else byteOffset = buffer.length - 1 } else if (byteOffset < 0) { if (dir) byteOffset = 0 else return -1 } if (typeof val === 'string') { val = Buffer.from(val, encoding) } if (Buffer.isBuffer(val)) { if (val.length === 0) { return -1 } return arrayIndexOf(buffer, val, byteOffset, encoding, dir) } else if (typeof val === 'number') { val = val & 0xFF // Search for a byte value [0-255] if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) } } return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) } throw new TypeError('val must be string, number or Buffer') } function arrayIndexOf (arr, val, byteOffset, encoding, dir) { var indexSize = 1 var arrLength = arr.length var valLength = val.length if (encoding !== undefined) { encoding = String(encoding).toLowerCase() if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { if (arr.length < 2 || val.length < 2) { return -1 } indexSize = 2 arrLength /= 2 valLength /= 2 byteOffset /= 2 } } function read (buf, i) { if (indexSize === 1) { return buf[i] } else { return buf.readUInt16BE(i * indexSize) } } var i if (dir) { var foundIndex = -1 for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === valLength) return foundIndex * indexSize } else { if (foundIndex !== -1) i -= i - foundIndex foundIndex = -1 } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength for (i = byteOffset; i >= 0; i--) { var found = true for (var j = 0; j < valLength; j++) { if (read(arr, i + j) !== read(val, j)) { found = false break } } if (found) return i } } return -1 } Buffer.prototype.includes = function includes (val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1 } Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true) } Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } var strLen = string.length if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16) if (isNaN(parsed)) return i buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function latin1Write (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 } else if (isFinite(offset)) { offset = offset | 0 if (isFinite(length)) { length = length | 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } } else { throw new Error( 'Buffer.write(string, encoding, offset[, length]) is no longer supported' ) } var remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('Attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' var loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': return asciiWrite(this, string, offset, length) case 'latin1': case 'binary': return latin1Write(this, string, offset, length) case 'base64': return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) var res = [] var i = start while (i < end) { var firstByte = buf[i] var codePoint = null var bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } var MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { var len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } var res = '' var i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function latin1Slice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; ++i) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function slice (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = this.subarray(start, end) newBuf.__proto__ = Buffer.prototype } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined) for (var i = 0; i < sliceLen; ++i) { newBuf[i] = this[i + start] } } return newBuf } function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') if (offset + ext > buf.length) throw new RangeError('Index out of range') } Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = (value & 0xff) return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = 0 var mul = 1 var sub = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = byteLength - 1 var mul = 1 var sub = 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = (value & 0xff) return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError('Index out of range') if (offset < 0) throw new RangeError('Index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } var len = end - start var i if (this === target && start < targetStart && targetStart < end) { for (i = len - 1; i >= 0; --i) { target[i + targetStart] = this[i + start] } } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { for (i = 0; i < len; ++i) { target[i + targetStart] = this[i + start] } } else { Uint8Array.prototype.set.call( target, this.subarray(start, start + len), targetStart ) } return len } Buffer.prototype.fill = function fill (val, start, end, encoding) { if (typeof val === 'string') { if (typeof start === 'string') { encoding = start start = 0 end = this.length } else if (typeof end === 'string') { encoding = end end = this.length } if (val.length === 1) { var code = val.charCodeAt(0) if (code < 256) { val = code } } if (encoding !== undefined && typeof encoding !== 'string') { throw new TypeError('encoding must be a string') } if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding) } } else if (typeof val === 'number') { val = val & 255 } if (start < 0 || this.length < start || this.length < end) { throw new RangeError('Out of range index') } if (end <= start) { return this } start = start >>> 0 end = end === undefined ? this.length : end >>> 0 if (!val) val = 0 var i if (typeof val === 'number') { for (i = start; i < end; ++i) { this[i] = val } } else { var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()) var len = bytes.length for (i = 0; i < end - start; ++i) { this[i + start] = bytes[i % len] } } return this } var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g function base64clean (str) { str = stringtrim(str).replace(INVALID_BASE64_RE, '') if (str.length < 2) return '' while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes (string, units) { units = units || Infinity var codePoint var length = string.length var leadSurrogate = null var bytes = [] for (var i = 0; i < length; ++i) { codePoint = string.charCodeAt(i) if (codePoint > 0xD7FF && codePoint < 0xE000) { if (!leadSurrogate) { if (codePoint > 0xDBFF) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } leadSurrogate = codePoint continue } if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 } else if (leadSurrogate) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; ++i) { byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; ++i) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { for (var i = 0; i < length; ++i) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } function isnan (val) { return val !== val // eslint-disable-line no-self-compare } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"base64-js":275,"ieee754":276,"isarray":277}],275:[function(require,module,exports){ 'use strict' exports.byteLength = byteLength exports.toByteArray = toByteArray exports.fromByteArray = fromByteArray var lookup = [] var revLookup = [] var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' for (var i = 0, len = code.length; i < len; ++i) { lookup[i] = code[i] revLookup[code.charCodeAt(i)] = i } revLookup['-'.charCodeAt(0)] = 62 revLookup['_'.charCodeAt(0)] = 63 function placeHoldersCount (b64) { var len = b64.length if (len % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 } function byteLength (b64) { return b64.length * 3 / 4 - placeHoldersCount(b64) } function toByteArray (b64) { var i, j, l, tmp, placeHolders, arr var len = b64.length placeHolders = placeHoldersCount(b64) arr = new Arr(len * 3 / 4 - placeHolders) l = placeHolders > 0 ? len - 4 : len var L = 0 for (i = 0, j = 0; i < l; i += 4, j += 3) { tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] arr[L++] = (tmp >> 16) & 0xFF arr[L++] = (tmp >> 8) & 0xFF arr[L++] = tmp & 0xFF } if (placeHolders === 2) { tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) arr[L++] = tmp & 0xFF } else if (placeHolders === 1) { tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) arr[L++] = (tmp >> 8) & 0xFF arr[L++] = tmp & 0xFF } return arr } function tripletToBase64 (num) { return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] } function encodeChunk (uint8, start, end) { var tmp var output = [] for (var i = start; i < end; i += 3) { tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) output.push(tripletToBase64(tmp)) } return output.join('') } function fromByteArray (uint8) { var tmp var len = uint8.length var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes var output = '' var parts = [] var maxChunkLength = 16383 // must be multiple of 3 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) } if (extraBytes === 1) { tmp = uint8[len - 1] output += lookup[tmp >> 2] output += lookup[(tmp << 4) & 0x3F] output += '==' } else if (extraBytes === 2) { tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) output += lookup[tmp >> 10] output += lookup[(tmp >> 4) & 0x3F] output += lookup[(tmp << 2) & 0x3F] output += '=' } parts.push(output) return parts.join('') } },{}],276:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } },{}],277:[function(require,module,exports){ var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; },{}],278:[function(require,module,exports){ var Buffer = require('buffer').Buffer; var intSize = 4; var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); var chrsz = 8; function toArray(buf, bigEndian) { if ((buf.length % intSize) !== 0) { var len = buf.length + (intSize - (buf.length % intSize)); buf = Buffer.concat([buf, zeroBuffer], len); } var arr = []; var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; for (var i = 0; i < buf.length; i += intSize) { arr.push(fn.call(buf, i)); } return arr; } function toBuffer(arr, size, bigEndian) { var buf = new Buffer(size); var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; for (var i = 0; i < arr.length; i++) { fn.call(buf, arr[i], i * 4, true); } return buf; } function hash(buf, fn, hashSize, bigEndian) { if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); return toBuffer(arr, hashSize, bigEndian); } module.exports = { hash: hash }; },{"buffer":274}],279:[function(require,module,exports){ var Buffer = require('buffer').Buffer var sha = require('./sha') var sha256 = require('./sha256') var rng = require('./rng') var md5 = require('./md5') var algorithms = { sha1: sha, sha256: sha256, md5: md5 } var blocksize = 64 var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) function hmac(fn, key, data) { if(!Buffer.isBuffer(key)) key = new Buffer(key) if(!Buffer.isBuffer(data)) data = new Buffer(data) if(key.length > blocksize) { key = fn(key) } else if(key.length < blocksize) { key = Buffer.concat([key, zeroBuffer], blocksize) } var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) for(var i = 0; i < blocksize; i++) { ipad[i] = key[i] ^ 0x36 opad[i] = key[i] ^ 0x5C } var hash = fn(Buffer.concat([ipad, data])) return fn(Buffer.concat([opad, hash])) } function hash(alg, key) { alg = alg || 'sha1' var fn = algorithms[alg] var bufs = [] var length = 0 if(!fn) error('algorithm:', alg, 'is not yet supported') return { update: function (data) { if(!Buffer.isBuffer(data)) data = new Buffer(data) bufs.push(data) length += data.length return this }, digest: function (enc) { var buf = Buffer.concat(bufs) var r = key ? hmac(fn, key, buf) : fn(buf) bufs = null return enc ? r.toString(enc) : r } } } function error () { var m = [].slice.call(arguments).join(' ') throw new Error([ m, 'we accept pull requests', 'http://github.com/dominictarr/crypto-browserify' ].join('\n')) } exports.createHash = function (alg) { return hash(alg) } exports.createHmac = function (alg, key) { return hash(alg, key) } exports.randomBytes = function(size, callback) { if (callback && callback.call) { try { callback.call(this, undefined, new Buffer(rng(size))) } catch (err) { callback(err) } } else { return new Buffer(rng(size)) } } function each(a, f) { for(var i in a) f(a[i], i) } each(['createCredentials' , 'createCipher' , 'createCipheriv' , 'createDecipher' , 'createDecipheriv' , 'createSign' , 'createVerify' , 'createDiffieHellman' , 'pbkdf2'], function (name) { exports[name] = function () { error('sorry,', name, 'is not implemented yet') } }) },{"./md5":280,"./rng":281,"./sha":282,"./sha256":283,"buffer":274}],280:[function(require,module,exports){ var helpers = require('./helpers'); function md5_vm_test() { return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; } function core_md5(x, len) { x[len >> 5] |= 0x80 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return Array(a, b, c, d); } function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); } function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); } function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; },{"./helpers":278}],281:[function(require,module,exports){ (function() { var _global = this; var mathRNG, whatwgRNG; mathRNG = function(size) { var bytes = new Array(size); var r; for (var i = 0, r; i < size; i++) { if ((i & 0x03) == 0) r = Math.random() * 0x100000000; bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; } return bytes; } if (_global.crypto && crypto.getRandomValues) { whatwgRNG = function(size) { var bytes = new Uint8Array(size); crypto.getRandomValues(bytes); return bytes; } } module.exports = whatwgRNG || mathRNG; }()) },{}],282:[function(require,module,exports){ var helpers = require('./helpers'); function core_sha1(x, len) { x[len >> 5] |= 0x80 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var w = Array(80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for(var j = 0; j < 80; j++) { if(j < 16) w[j] = x[i + j]; else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); e = d; d = c; c = rol(b, 30); b = a; a = t; } a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); e = safe_add(e, olde); } return Array(a, b, c, d, e); } function sha1_ft(t, b, c, d) { if(t < 20) return (b & c) | ((~b) & d); if(t < 40) return b ^ c ^ d; if(t < 60) return (b & c) | (b & d) | (c & d); return b ^ c ^ d; } function sha1_kt(t) { return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514; } function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } module.exports = function sha1(buf) { return helpers.hash(buf, core_sha1, 20, true); }; },{"./helpers":278}],283:[function(require,module,exports){ var helpers = require('./helpers'); var safe_add = function(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); }; var S = function(X, n) { return (X >>> n) | (X << (32 - n)); }; var R = function(X, n) { return (X >>> n); }; var Ch = function(x, y, z) { return ((x & y) ^ ((~x) & z)); }; var Maj = function(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }; var Sigma0256 = function(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }; var Sigma1256 = function(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }; var Gamma0256 = function(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }; var Gamma1256 = function(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }; var core_sha256 = function(m, l) { var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); var W = new Array(64); var a, b, c, d, e, f, g, h, i, j; var T1, T2; m[l >> 5] |= 0x80 << (24 - l % 32); m[((l + 64 >> 9) << 4) + 15] = l; for (var i = 0; i < m.length; i += 16) { a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; for (var j = 0; j < 64; j++) { if (j < 16) { W[j] = m[j + i]; } else { W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); } T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); T2 = safe_add(Sigma0256(a), Maj(a, b, c)); h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); } HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); } return HASH; }; module.exports = function sha256(buf) { return helpers.hash(buf, core_sha256, 32, true); }; },{"./helpers":278}],284:[function(require,module,exports){ (function(exports) { "use strict"; function isArray(obj) { if (obj !== null) { return Object.prototype.toString.call(obj) === "[object Array]"; } else { return false; } } function isObject(obj) { if (obj !== null) { return Object.prototype.toString.call(obj) === "[object Object]"; } else { return false; } } function strictDeepEqual(first, second) { if (first === second) { return true; } var firstType = Object.prototype.toString.call(first); if (firstType !== Object.prototype.toString.call(second)) { return false; } if (isArray(first) === true) { if (first.length !== second.length) { return false; } for (var i = 0; i < first.length; i++) { if (strictDeepEqual(first[i], second[i]) === false) { return false; } } return true; } if (isObject(first) === true) { var keysSeen = {}; for (var key in first) { if (hasOwnProperty.call(first, key)) { if (strictDeepEqual(first[key], second[key]) === false) { return false; } keysSeen[key] = true; } } for (var key2 in second) { if (hasOwnProperty.call(second, key2)) { if (keysSeen[key2] !== true) { return false; } } } return true; } return false; } function isFalse(obj) { if (obj === "" || obj === false || obj === null) { return true; } else if (isArray(obj) && obj.length === 0) { return true; } else if (isObject(obj)) { for (var key in obj) { if (obj.hasOwnProperty(key)) { return false; } } return true; } else { return false; } } function objValues(obj) { var keys = Object.keys(obj); var values = []; for (var i = 0; i < keys.length; i++) { values.push(obj[keys[i]]); } return values; } function merge(a, b) { var merged = {}; for (var key in a) { merged[key] = a[key]; } for (var key2 in b) { merged[key2] = b[key2]; } return merged; } var trimLeft; if (typeof String.prototype.trimLeft === "function") { trimLeft = function(str) { return str.trimLeft(); }; } else { trimLeft = function(str) { return str.match(/^\s*(.*)/)[1]; }; } var TYPE_NUMBER = 0; var TYPE_ANY = 1; var TYPE_STRING = 2; var TYPE_ARRAY = 3; var TYPE_OBJECT = 4; var TYPE_BOOLEAN = 5; var TYPE_EXPREF = 6; var TYPE_NULL = 7; var TYPE_ARRAY_NUMBER = 8; var TYPE_ARRAY_STRING = 9; var TOK_EOF = "EOF"; var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; var TOK_RBRACKET = "Rbracket"; var TOK_RPAREN = "Rparen"; var TOK_COMMA = "Comma"; var TOK_COLON = "Colon"; var TOK_RBRACE = "Rbrace"; var TOK_NUMBER = "Number"; var TOK_CURRENT = "Current"; var TOK_EXPREF = "Expref"; var TOK_PIPE = "Pipe"; var TOK_OR = "Or"; var TOK_AND = "And"; var TOK_EQ = "EQ"; var TOK_GT = "GT"; var TOK_LT = "LT"; var TOK_GTE = "GTE"; var TOK_LTE = "LTE"; var TOK_NE = "NE"; var TOK_FLATTEN = "Flatten"; var TOK_STAR = "Star"; var TOK_FILTER = "Filter"; var TOK_DOT = "Dot"; var TOK_NOT = "Not"; var TOK_LBRACE = "Lbrace"; var TOK_LBRACKET = "Lbracket"; var TOK_LPAREN= "Lparen"; var TOK_LITERAL= "Literal"; var basicTokens = { ".": TOK_DOT, "*": TOK_STAR, ",": TOK_COMMA, ":": TOK_COLON, "{": TOK_LBRACE, "}": TOK_RBRACE, "]": TOK_RBRACKET, "(": TOK_LPAREN, ")": TOK_RPAREN, "@": TOK_CURRENT }; var operatorStartToken = { "<": true, ">": true, "=": true, "!": true }; var skipChars = { " ": true, "\t": true, "\n": true }; function isAlpha(ch) { return (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || ch === "_"; } function isNum(ch) { return (ch >= "0" && ch <= "9") || ch === "-"; } function isAlphaNum(ch) { return (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || (ch >= "0" && ch <= "9") || ch === "_"; } function Lexer() { } Lexer.prototype = { tokenize: function(stream) { var tokens = []; this._current = 0; var start; var identifier; var token; while (this._current < stream.length) { if (isAlpha(stream[this._current])) { start = this._current; identifier = this._consumeUnquotedIdentifier(stream); tokens.push({type: TOK_UNQUOTEDIDENTIFIER, value: identifier, start: start}); } else if (basicTokens[stream[this._current]] !== undefined) { tokens.push({type: basicTokens[stream[this._current]], value: stream[this._current], start: this._current}); this._current++; } else if (isNum(stream[this._current])) { token = this._consumeNumber(stream); tokens.push(token); } else if (stream[this._current] === "[") { token = this._consumeLBracket(stream); tokens.push(token); } else if (stream[this._current] === "\"") { start = this._current; identifier = this._consumeQuotedIdentifier(stream); tokens.push({type: TOK_QUOTEDIDENTIFIER, value: identifier, start: start}); } else if (stream[this._current] === "'") { start = this._current; identifier = this._consumeRawStringLiteral(stream); tokens.push({type: TOK_LITERAL, value: identifier, start: start}); } else if (stream[this._current] === "`") { start = this._current; var literal = this._consumeLiteral(stream); tokens.push({type: TOK_LITERAL, value: literal, start: start}); } else if (operatorStartToken[stream[this._current]] !== undefined) { tokens.push(this._consumeOperator(stream)); } else if (skipChars[stream[this._current]] !== undefined) { this._current++; } else if (stream[this._current] === "&") { start = this._current; this._current++; if (stream[this._current] === "&") { this._current++; tokens.push({type: TOK_AND, value: "&&", start: start}); } else { tokens.push({type: TOK_EXPREF, value: "&", start: start}); } } else if (stream[this._current] === "|") { start = this._current; this._current++; if (stream[this._current] === "|") { this._current++; tokens.push({type: TOK_OR, value: "||", start: start}); } else { tokens.push({type: TOK_PIPE, value: "|", start: start}); } } else { var error = new Error("Unknown character:" + stream[this._current]); error.name = "LexerError"; throw error; } } return tokens; }, _consumeUnquotedIdentifier: function(stream) { var start = this._current; this._current++; while (this._current < stream.length && isAlphaNum(stream[this._current])) { this._current++; } return stream.slice(start, this._current); }, _consumeQuotedIdentifier: function(stream) { var start = this._current; this._current++; var maxLength = stream.length; while (stream[this._current] !== "\"" && this._current < maxLength) { var current = this._current; if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === "\"")) { current += 2; } else { current++; } this._current = current; } this._current++; return JSON.parse(stream.slice(start, this._current)); }, _consumeRawStringLiteral: function(stream) { var start = this._current; this._current++; var maxLength = stream.length; while (stream[this._current] !== "'" && this._current < maxLength) { var current = this._current; if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === "'")) { current += 2; } else { current++; } this._current = current; } this._current++; var literal = stream.slice(start + 1, this._current - 1); return literal.replace("\\'", "'"); }, _consumeNumber: function(stream) { var start = this._current; this._current++; var maxLength = stream.length; while (isNum(stream[this._current]) && this._current < maxLength) { this._current++; } var value = parseInt(stream.slice(start, this._current)); return {type: TOK_NUMBER, value: value, start: start}; }, _consumeLBracket: function(stream) { var start = this._current; this._current++; if (stream[this._current] === "?") { this._current++; return {type: TOK_FILTER, value: "[?", start: start}; } else if (stream[this._current] === "]") { this._current++; return {type: TOK_FLATTEN, value: "[]", start: start}; } else { return {type: TOK_LBRACKET, value: "[", start: start}; } }, _consumeOperator: function(stream) { var start = this._current; var startingChar = stream[start]; this._current++; if (startingChar === "!") { if (stream[this._current] === "=") { this._current++; return {type: TOK_NE, value: "!=", start: start}; } else { return {type: TOK_NOT, value: "!", start: start}; } } else if (startingChar === "<") { if (stream[this._current] === "=") { this._current++; return {type: TOK_LTE, value: "<=", start: start}; } else { return {type: TOK_LT, value: "<", start: start}; } } else if (startingChar === ">") { if (stream[this._current] === "=") { this._current++; return {type: TOK_GTE, value: ">=", start: start}; } else { return {type: TOK_GT, value: ">", start: start}; } } else if (startingChar === "=") { if (stream[this._current] === "=") { this._current++; return {type: TOK_EQ, value: "==", start: start}; } } }, _consumeLiteral: function(stream) { this._current++; var start = this._current; var maxLength = stream.length; var literal; while(stream[this._current] !== "`" && this._current < maxLength) { var current = this._current; if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === "`")) { current += 2; } else { current++; } this._current = current; } var literalString = trimLeft(stream.slice(start, this._current)); literalString = literalString.replace("\\`", "`"); if (this._looksLikeJSON(literalString)) { literal = JSON.parse(literalString); } else { literal = JSON.parse("\"" + literalString + "\""); } this._current++; return literal; }, _looksLikeJSON: function(literalString) { var startingChars = "[{\""; var jsonLiterals = ["true", "false", "null"]; var numberLooking = "-0123456789"; if (literalString === "") { return false; } else if (startingChars.indexOf(literalString[0]) >= 0) { return true; } else if (jsonLiterals.indexOf(literalString) >= 0) { return true; } else if (numberLooking.indexOf(literalString[0]) >= 0) { try { JSON.parse(literalString); return true; } catch (ex) { return false; } } else { return false; } } }; var bindingPower = {}; bindingPower[TOK_EOF] = 0; bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; bindingPower[TOK_QUOTEDIDENTIFIER] = 0; bindingPower[TOK_RBRACKET] = 0; bindingPower[TOK_RPAREN] = 0; bindingPower[TOK_COMMA] = 0; bindingPower[TOK_RBRACE] = 0; bindingPower[TOK_NUMBER] = 0; bindingPower[TOK_CURRENT] = 0; bindingPower[TOK_EXPREF] = 0; bindingPower[TOK_PIPE] = 1; bindingPower[TOK_OR] = 2; bindingPower[TOK_AND] = 3; bindingPower[TOK_EQ] = 5; bindingPower[TOK_GT] = 5; bindingPower[TOK_LT] = 5; bindingPower[TOK_GTE] = 5; bindingPower[TOK_LTE] = 5; bindingPower[TOK_NE] = 5; bindingPower[TOK_FLATTEN] = 9; bindingPower[TOK_STAR] = 20; bindingPower[TOK_FILTER] = 21; bindingPower[TOK_DOT] = 40; bindingPower[TOK_NOT] = 45; bindingPower[TOK_LBRACE] = 50; bindingPower[TOK_LBRACKET] = 55; bindingPower[TOK_LPAREN] = 60; function Parser() { } Parser.prototype = { parse: function(expression) { this._loadTokens(expression); this.index = 0; var ast = this.expression(0); if (this._lookahead(0) !== TOK_EOF) { var t = this._lookaheadToken(0); var error = new Error( "Unexpected token type: " + t.type + ", value: " + t.value); error.name = "ParserError"; throw error; } return ast; }, _loadTokens: function(expression) { var lexer = new Lexer(); var tokens = lexer.tokenize(expression); tokens.push({type: TOK_EOF, value: "", start: expression.length}); this.tokens = tokens; }, expression: function(rbp) { var leftToken = this._lookaheadToken(0); this._advance(); var left = this.nud(leftToken); var currentToken = this._lookahead(0); while (rbp < bindingPower[currentToken]) { this._advance(); left = this.led(currentToken, left); currentToken = this._lookahead(0); } return left; }, _lookahead: function(number) { return this.tokens[this.index + number].type; }, _lookaheadToken: function(number) { return this.tokens[this.index + number]; }, _advance: function() { this.index++; }, nud: function(token) { var left; var right; var expression; switch (token.type) { case TOK_LITERAL: return {type: "Literal", value: token.value}; case TOK_UNQUOTEDIDENTIFIER: return {type: "Field", name: token.value}; case TOK_QUOTEDIDENTIFIER: var node = {type: "Field", name: token.value}; if (this._lookahead(0) === TOK_LPAREN) { throw new Error("Quoted identifier not allowed for function names."); } else { return node; } break; case TOK_NOT: right = this.expression(bindingPower.Not); return {type: "NotExpression", children: [right]}; case TOK_STAR: left = {type: "Identity"}; right = null; if (this._lookahead(0) === TOK_RBRACKET) { right = {type: "Identity"}; } else { right = this._parseProjectionRHS(bindingPower.Star); } return {type: "ValueProjection", children: [left, right]}; case TOK_FILTER: return this.led(token.type, {type: "Identity"}); case TOK_LBRACE: return this._parseMultiselectHash(); case TOK_FLATTEN: left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; right = this._parseProjectionRHS(bindingPower.Flatten); return {type: "Projection", children: [left, right]}; case TOK_LBRACKET: if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { right = this._parseIndexExpression(); return this._projectIfSlice({type: "Identity"}, right); } else if (this._lookahead(0) === TOK_STAR && this._lookahead(1) === TOK_RBRACKET) { this._advance(); this._advance(); right = this._parseProjectionRHS(bindingPower.Star); return {type: "Projection", children: [{type: "Identity"}, right]}; } else { return this._parseMultiselectList(); } break; case TOK_CURRENT: return {type: TOK_CURRENT}; case TOK_EXPREF: expression = this.expression(bindingPower.Expref); return {type: "ExpressionReference", children: [expression]}; case TOK_LPAREN: var args = []; while (this._lookahead(0) !== TOK_RPAREN) { if (this._lookahead(0) === TOK_CURRENT) { expression = {type: TOK_CURRENT}; this._advance(); } else { expression = this.expression(0); } args.push(expression); } this._match(TOK_RPAREN); return args[0]; default: this._errorToken(token); } }, led: function(tokenName, left) { var right; switch(tokenName) { case TOK_DOT: var rbp = bindingPower.Dot; if (this._lookahead(0) !== TOK_STAR) { right = this._parseDotRHS(rbp); return {type: "Subexpression", children: [left, right]}; } else { this._advance(); right = this._parseProjectionRHS(rbp); return {type: "ValueProjection", children: [left, right]}; } break; case TOK_PIPE: right = this.expression(bindingPower.Pipe); return {type: TOK_PIPE, children: [left, right]}; case TOK_OR: right = this.expression(bindingPower.Or); return {type: "OrExpression", children: [left, right]}; case TOK_AND: right = this.expression(bindingPower.And); return {type: "AndExpression", children: [left, right]}; case TOK_LPAREN: var name = left.name; var args = []; var expression, node; while (this._lookahead(0) !== TOK_RPAREN) { if (this._lookahead(0) === TOK_CURRENT) { expression = {type: TOK_CURRENT}; this._advance(); } else { expression = this.expression(0); } if (this._lookahead(0) === TOK_COMMA) { this._match(TOK_COMMA); } args.push(expression); } this._match(TOK_RPAREN); node = {type: "Function", name: name, children: args}; return node; case TOK_FILTER: var condition = this.expression(0); this._match(TOK_RBRACKET); if (this._lookahead(0) === TOK_FLATTEN) { right = {type: "Identity"}; } else { right = this._parseProjectionRHS(bindingPower.Filter); } return {type: "FilterProjection", children: [left, right, condition]}; case TOK_FLATTEN: var leftNode = {type: TOK_FLATTEN, children: [left]}; var rightNode = this._parseProjectionRHS(bindingPower.Flatten); return {type: "Projection", children: [leftNode, rightNode]}; case TOK_EQ: case TOK_NE: case TOK_GT: case TOK_GTE: case TOK_LT: case TOK_LTE: return this._parseComparator(left, tokenName); case TOK_LBRACKET: var token = this._lookaheadToken(0); if (token.type === TOK_NUMBER || token.type === TOK_COLON) { right = this._parseIndexExpression(); return this._projectIfSlice(left, right); } else { this._match(TOK_STAR); this._match(TOK_RBRACKET); right = this._parseProjectionRHS(bindingPower.Star); return {type: "Projection", children: [left, right]}; } break; default: this._errorToken(this._lookaheadToken(0)); } }, _match: function(tokenType) { if (this._lookahead(0) === tokenType) { this._advance(); } else { var t = this._lookaheadToken(0); var error = new Error("Expected " + tokenType + ", got: " + t.type); error.name = "ParserError"; throw error; } }, _errorToken: function(token) { var error = new Error("Invalid token (" + token.type + "): \"" + token.value + "\""); error.name = "ParserError"; throw error; }, _parseIndexExpression: function() { if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { return this._parseSliceExpression(); } else { var node = { type: "Index", value: this._lookaheadToken(0).value}; this._advance(); this._match(TOK_RBRACKET); return node; } }, _projectIfSlice: function(left, right) { var indexExpr = {type: "IndexExpression", children: [left, right]}; if (right.type === "Slice") { return { type: "Projection", children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] }; } else { return indexExpr; } }, _parseSliceExpression: function() { var parts = [null, null, null]; var index = 0; var currentToken = this._lookahead(0); while (currentToken !== TOK_RBRACKET && index < 3) { if (currentToken === TOK_COLON) { index++; this._advance(); } else if (currentToken === TOK_NUMBER) { parts[index] = this._lookaheadToken(0).value; this._advance(); } else { var t = this._lookahead(0); var error = new Error("Syntax error, unexpected token: " + t.value + "(" + t.type + ")"); error.name = "Parsererror"; throw error; } currentToken = this._lookahead(0); } this._match(TOK_RBRACKET); return { type: "Slice", children: parts }; }, _parseComparator: function(left, comparator) { var right = this.expression(bindingPower[comparator]); return {type: "Comparator", name: comparator, children: [left, right]}; }, _parseDotRHS: function(rbp) { var lookahead = this._lookahead(0); var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; if (exprTokens.indexOf(lookahead) >= 0) { return this.expression(rbp); } else if (lookahead === TOK_LBRACKET) { this._match(TOK_LBRACKET); return this._parseMultiselectList(); } else if (lookahead === TOK_LBRACE) { this._match(TOK_LBRACE); return this._parseMultiselectHash(); } }, _parseProjectionRHS: function(rbp) { var right; if (bindingPower[this._lookahead(0)] < 10) { right = {type: "Identity"}; } else if (this._lookahead(0) === TOK_LBRACKET) { right = this.expression(rbp); } else if (this._lookahead(0) === TOK_FILTER) { right = this.expression(rbp); } else if (this._lookahead(0) === TOK_DOT) { this._match(TOK_DOT); right = this._parseDotRHS(rbp); } else { var t = this._lookaheadToken(0); var error = new Error("Sytanx error, unexpected token: " + t.value + "(" + t.type + ")"); error.name = "ParserError"; throw error; } return right; }, _parseMultiselectList: function() { var expressions = []; while (this._lookahead(0) !== TOK_RBRACKET) { var expression = this.expression(0); expressions.push(expression); if (this._lookahead(0) === TOK_COMMA) { this._match(TOK_COMMA); if (this._lookahead(0) === TOK_RBRACKET) { throw new Error("Unexpected token Rbracket"); } } } this._match(TOK_RBRACKET); return {type: "MultiSelectList", children: expressions}; }, _parseMultiselectHash: function() { var pairs = []; var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; var keyToken, keyName, value, node; for (;;) { keyToken = this._lookaheadToken(0); if (identifierTypes.indexOf(keyToken.type) < 0) { throw new Error("Expecting an identifier token, got: " + keyToken.type); } keyName = keyToken.value; this._advance(); this._match(TOK_COLON); value = this.expression(0); node = {type: "KeyValuePair", name: keyName, value: value}; pairs.push(node); if (this._lookahead(0) === TOK_COMMA) { this._match(TOK_COMMA); } else if (this._lookahead(0) === TOK_RBRACE) { this._match(TOK_RBRACE); break; } } return {type: "MultiSelectHash", children: pairs}; } }; function TreeInterpreter(runtime) { this.runtime = runtime; } TreeInterpreter.prototype = { search: function(node, value) { return this.visit(node, value); }, visit: function(node, value) { var matched, current, result, first, second, field, left, right, collected, i; switch (node.type) { case "Field": if (value === null ) { return null; } else if (isObject(value)) { field = value[node.name]; if (field === undefined) { return null; } else { return field; } } else { return null; } break; case "Subexpression": result = this.visit(node.children[0], value); for (i = 1; i < node.children.length; i++) { result = this.visit(node.children[1], result); if (result === null) { return null; } } return result; case "IndexExpression": left = this.visit(node.children[0], value); right = this.visit(node.children[1], left); return right; case "Index": if (!isArray(value)) { return null; } var index = node.value; if (index < 0) { index = value.length + index; } result = value[index]; if (result === undefined) { result = null; } return result; case "Slice": if (!isArray(value)) { return null; } var sliceParams = node.children.slice(0); var computed = this.computeSliceParams(value.length, sliceParams); var start = computed[0]; var stop = computed[1]; var step = computed[2]; result = []; if (step > 0) { for (i = start; i < stop; i += step) { result.push(value[i]); } } else { for (i = start; i > stop; i += step) { result.push(value[i]); } } return result; case "Projection": var base = this.visit(node.children[0], value); if (!isArray(base)) { return null; } collected = []; for (i = 0; i < base.length; i++) { current = this.visit(node.children[1], base[i]); if (current !== null) { collected.push(current); } } return collected; case "ValueProjection": base = this.visit(node.children[0], value); if (!isObject(base)) { return null; } collected = []; var values = objValues(base); for (i = 0; i < values.length; i++) { current = this.visit(node.children[1], values[i]); if (current !== null) { collected.push(current); } } return collected; case "FilterProjection": base = this.visit(node.children[0], value); if (!isArray(base)) { return null; } var filtered = []; var finalResults = []; for (i = 0; i < base.length; i++) { matched = this.visit(node.children[2], base[i]); if (!isFalse(matched)) { filtered.push(base[i]); } } for (var j = 0; j < filtered.length; j++) { current = this.visit(node.children[1], filtered[j]); if (current !== null) { finalResults.push(current); } } return finalResults; case "Comparator": first = this.visit(node.children[0], value); second = this.visit(node.children[1], value); switch(node.name) { case TOK_EQ: result = strictDeepEqual(first, second); break; case TOK_NE: result = !strictDeepEqual(first, second); break; case TOK_GT: result = first > second; break; case TOK_GTE: result = first >= second; break; case TOK_LT: result = first < second; break; case TOK_LTE: result = first <= second; break; default: throw new Error("Unknown comparator: " + node.name); } return result; case TOK_FLATTEN: var original = this.visit(node.children[0], value); if (!isArray(original)) { return null; } var merged = []; for (i = 0; i < original.length; i++) { current = original[i]; if (isArray(current)) { merged.push.apply(merged, current); } else { merged.push(current); } } return merged; case "Identity": return value; case "MultiSelectList": if (value === null) { return null; } collected = []; for (i = 0; i < node.children.length; i++) { collected.push(this.visit(node.children[i], value)); } return collected; case "MultiSelectHash": if (value === null) { return null; } collected = {}; var child; for (i = 0; i < node.children.length; i++) { child = node.children[i]; collected[child.name] = this.visit(child.value, value); } return collected; case "OrExpression": matched = this.visit(node.children[0], value); if (isFalse(matched)) { matched = this.visit(node.children[1], value); } return matched; case "AndExpression": first = this.visit(node.children[0], value); if (isFalse(first) === true) { return first; } return this.visit(node.children[1], value); case "NotExpression": first = this.visit(node.children[0], value); return isFalse(first); case "Literal": return node.value; case TOK_PIPE: left = this.visit(node.children[0], value); return this.visit(node.children[1], left); case TOK_CURRENT: return value; case "Function": var resolvedArgs = []; for (i = 0; i < node.children.length; i++) { resolvedArgs.push(this.visit(node.children[i], value)); } return this.runtime.callFunction(node.name, resolvedArgs); case "ExpressionReference": var refNode = node.children[0]; refNode.jmespathType = TOK_EXPREF; return refNode; default: throw new Error("Unknown node type: " + node.type); } }, computeSliceParams: function(arrayLength, sliceParams) { var start = sliceParams[0]; var stop = sliceParams[1]; var step = sliceParams[2]; var computed = [null, null, null]; if (step === null) { step = 1; } else if (step === 0) { var error = new Error("Invalid slice, step cannot be 0"); error.name = "RuntimeError"; throw error; } var stepValueNegative = step < 0 ? true : false; if (start === null) { start = stepValueNegative ? arrayLength - 1 : 0; } else { start = this.capSliceRange(arrayLength, start, step); } if (stop === null) { stop = stepValueNegative ? -1 : arrayLength; } else { stop = this.capSliceRange(arrayLength, stop, step); } computed[0] = start; computed[1] = stop; computed[2] = step; return computed; }, capSliceRange: function(arrayLength, actualValue, step) { if (actualValue < 0) { actualValue += arrayLength; if (actualValue < 0) { actualValue = step < 0 ? -1 : 0; } } else if (actualValue >= arrayLength) { actualValue = step < 0 ? arrayLength - 1 : arrayLength; } return actualValue; } }; function Runtime(interpreter) { this._interpreter = interpreter; this.functionTable = { abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, contains: { _func: this._functionContains, _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, {types: [TYPE_ANY]}]}, "ends_with": { _func: this._functionEndsWith, _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, length: { _func: this._functionLength, _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, map: { _func: this._functionMap, _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, max: { _func: this._functionMax, _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, "merge": { _func: this._functionMerge, _signature: [{types: [TYPE_OBJECT], variadic: true}] }, "max_by": { _func: this._functionMaxBy, _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] }, sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, "starts_with": { _func: this._functionStartsWith, _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, min: { _func: this._functionMin, _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, "min_by": { _func: this._functionMinBy, _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] }, type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, "sort_by": { _func: this._functionSortBy, _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] }, join: { _func: this._functionJoin, _signature: [ {types: [TYPE_STRING]}, {types: [TYPE_ARRAY_STRING]} ] }, reverse: { _func: this._functionReverse, _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, "not_null": { _func: this._functionNotNull, _signature: [{types: [TYPE_ANY], variadic: true}] } }; } Runtime.prototype = { callFunction: function(name, resolvedArgs) { var functionEntry = this.functionTable[name]; if (functionEntry === undefined) { throw new Error("Unknown function: " + name + "()"); } this._validateArgs(name, resolvedArgs, functionEntry._signature); return functionEntry._func.call(this, resolvedArgs); }, _validateArgs: function(name, args, signature) { var pluralized; if (signature[signature.length - 1].variadic) { if (args.length < signature.length) { pluralized = signature.length === 1 ? " argument" : " arguments"; throw new Error("ArgumentError: " + name + "() " + "takes at least" + signature.length + pluralized + " but received " + args.length); } } else if (args.length !== signature.length) { pluralized = signature.length === 1 ? " argument" : " arguments"; throw new Error("ArgumentError: " + name + "() " + "takes " + signature.length + pluralized + " but received " + args.length); } var currentSpec; var actualType; var typeMatched; for (var i = 0; i < signature.length; i++) { typeMatched = false; currentSpec = signature[i].types; actualType = this._getTypeName(args[i]); for (var j = 0; j < currentSpec.length; j++) { if (this._typeMatches(actualType, currentSpec[j], args[i])) { typeMatched = true; break; } } if (!typeMatched) { throw new Error("TypeError: " + name + "() " + "expected argument " + (i + 1) + " to be type " + currentSpec + " but received type " + actualType + " instead."); } } }, _typeMatches: function(actual, expected, argValue) { if (expected === TYPE_ANY) { return true; } if (expected === TYPE_ARRAY_STRING || expected === TYPE_ARRAY_NUMBER || expected === TYPE_ARRAY) { if (expected === TYPE_ARRAY) { return actual === TYPE_ARRAY; } else if (actual === TYPE_ARRAY) { var subtype; if (expected === TYPE_ARRAY_NUMBER) { subtype = TYPE_NUMBER; } else if (expected === TYPE_ARRAY_STRING) { subtype = TYPE_STRING; } for (var i = 0; i < argValue.length; i++) { if (!this._typeMatches( this._getTypeName(argValue[i]), subtype, argValue[i])) { return false; } } return true; } } else { return actual === expected; } }, _getTypeName: function(obj) { switch (Object.prototype.toString.call(obj)) { case "[object String]": return TYPE_STRING; case "[object Number]": return TYPE_NUMBER; case "[object Array]": return TYPE_ARRAY; case "[object Boolean]": return TYPE_BOOLEAN; case "[object Null]": return TYPE_NULL; case "[object Object]": if (obj.jmespathType === TOK_EXPREF) { return TYPE_EXPREF; } else { return TYPE_OBJECT; } } }, _functionStartsWith: function(resolvedArgs) { return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; }, _functionEndsWith: function(resolvedArgs) { var searchStr = resolvedArgs[0]; var suffix = resolvedArgs[1]; return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; }, _functionReverse: function(resolvedArgs) { var typeName = this._getTypeName(resolvedArgs[0]); if (typeName === TYPE_STRING) { var originalStr = resolvedArgs[0]; var reversedStr = ""; for (var i = originalStr.length - 1; i >= 0; i--) { reversedStr += originalStr[i]; } return reversedStr; } else { var reversedArray = resolvedArgs[0].slice(0); reversedArray.reverse(); return reversedArray; } }, _functionAbs: function(resolvedArgs) { return Math.abs(resolvedArgs[0]); }, _functionCeil: function(resolvedArgs) { return Math.ceil(resolvedArgs[0]); }, _functionAvg: function(resolvedArgs) { var sum = 0; var inputArray = resolvedArgs[0]; for (var i = 0; i < inputArray.length; i++) { sum += inputArray[i]; } return sum / inputArray.length; }, _functionContains: function(resolvedArgs) { return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; }, _functionFloor: function(resolvedArgs) { return Math.floor(resolvedArgs[0]); }, _functionLength: function(resolvedArgs) { if (!isObject(resolvedArgs[0])) { return resolvedArgs[0].length; } else { return Object.keys(resolvedArgs[0]).length; } }, _functionMap: function(resolvedArgs) { var mapped = []; var interpreter = this._interpreter; var exprefNode = resolvedArgs[0]; var elements = resolvedArgs[1]; for (var i = 0; i < elements.length; i++) { mapped.push(interpreter.visit(exprefNode, elements[i])); } return mapped; }, _functionMerge: function(resolvedArgs) { var merged = {}; for (var i = 0; i < resolvedArgs.length; i++) { var current = resolvedArgs[i]; for (var key in current) { merged[key] = current[key]; } } return merged; }, _functionMax: function(resolvedArgs) { if (resolvedArgs[0].length > 0) { var typeName = this._getTypeName(resolvedArgs[0][0]); if (typeName === TYPE_NUMBER) { return Math.max.apply(Math, resolvedArgs[0]); } else { var elements = resolvedArgs[0]; var maxElement = elements[0]; for (var i = 1; i < elements.length; i++) { if (maxElement.localeCompare(elements[i]) < 0) { maxElement = elements[i]; } } return maxElement; } } else { return null; } }, _functionMin: function(resolvedArgs) { if (resolvedArgs[0].length > 0) { var typeName = this._getTypeName(resolvedArgs[0][0]); if (typeName === TYPE_NUMBER) { return Math.min.apply(Math, resolvedArgs[0]); } else { var elements = resolvedArgs[0]; var minElement = elements[0]; for (var i = 1; i < elements.length; i++) { if (elements[i].localeCompare(minElement) < 0) { minElement = elements[i]; } } return minElement; } } else { return null; } }, _functionSum: function(resolvedArgs) { var sum = 0; var listToSum = resolvedArgs[0]; for (var i = 0; i < listToSum.length; i++) { sum += listToSum[i]; } return sum; }, _functionType: function(resolvedArgs) { switch (this._getTypeName(resolvedArgs[0])) { case TYPE_NUMBER: return "number"; case TYPE_STRING: return "string"; case TYPE_ARRAY: return "array"; case TYPE_OBJECT: return "object"; case TYPE_BOOLEAN: return "boolean"; case TYPE_EXPREF: return "expref"; case TYPE_NULL: return "null"; } }, _functionKeys: function(resolvedArgs) { return Object.keys(resolvedArgs[0]); }, _functionValues: function(resolvedArgs) { var obj = resolvedArgs[0]; var keys = Object.keys(obj); var values = []; for (var i = 0; i < keys.length; i++) { values.push(obj[keys[i]]); } return values; }, _functionJoin: function(resolvedArgs) { var joinChar = resolvedArgs[0]; var listJoin = resolvedArgs[1]; return listJoin.join(joinChar); }, _functionToArray: function(resolvedArgs) { if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { return resolvedArgs[0]; } else { return [resolvedArgs[0]]; } }, _functionToString: function(resolvedArgs) { if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { return resolvedArgs[0]; } else { return JSON.stringify(resolvedArgs[0]); } }, _functionToNumber: function(resolvedArgs) { var typeName = this._getTypeName(resolvedArgs[0]); var convertedValue; if (typeName === TYPE_NUMBER) { return resolvedArgs[0]; } else if (typeName === TYPE_STRING) { convertedValue = +resolvedArgs[0]; if (!isNaN(convertedValue)) { return convertedValue; } } return null; }, _functionNotNull: function(resolvedArgs) { for (var i = 0; i < resolvedArgs.length; i++) { if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { return resolvedArgs[i]; } } return null; }, _functionSort: function(resolvedArgs) { var sortedArray = resolvedArgs[0].slice(0); sortedArray.sort(); return sortedArray; }, _functionSortBy: function(resolvedArgs) { var sortedArray = resolvedArgs[0].slice(0); if (sortedArray.length === 0) { return sortedArray; } var interpreter = this._interpreter; var exprefNode = resolvedArgs[1]; var requiredType = this._getTypeName( interpreter.visit(exprefNode, sortedArray[0])); if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { throw new Error("TypeError"); } var that = this; var decorated = []; for (var i = 0; i < sortedArray.length; i++) { decorated.push([i, sortedArray[i]]); } decorated.sort(function(a, b) { var exprA = interpreter.visit(exprefNode, a[1]); var exprB = interpreter.visit(exprefNode, b[1]); if (that._getTypeName(exprA) !== requiredType) { throw new Error( "TypeError: expected " + requiredType + ", received " + that._getTypeName(exprA)); } else if (that._getTypeName(exprB) !== requiredType) { throw new Error( "TypeError: expected " + requiredType + ", received " + that._getTypeName(exprB)); } if (exprA > exprB) { return 1; } else if (exprA < exprB) { return -1; } else { return a[0] - b[0]; } }); for (var j = 0; j < decorated.length; j++) { sortedArray[j] = decorated[j][1]; } return sortedArray; }, _functionMaxBy: function(resolvedArgs) { var exprefNode = resolvedArgs[1]; var resolvedArray = resolvedArgs[0]; var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); var maxNumber = -Infinity; var maxRecord; var current; for (var i = 0; i < resolvedArray.length; i++) { current = keyFunction(resolvedArray[i]); if (current > maxNumber) { maxNumber = current; maxRecord = resolvedArray[i]; } } return maxRecord; }, _functionMinBy: function(resolvedArgs) { var exprefNode = resolvedArgs[1]; var resolvedArray = resolvedArgs[0]; var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); var minNumber = Infinity; var minRecord; var current; for (var i = 0; i < resolvedArray.length; i++) { current = keyFunction(resolvedArray[i]); if (current < minNumber) { minNumber = current; minRecord = resolvedArray[i]; } } return minRecord; }, createKeyFunction: function(exprefNode, allowedTypes) { var that = this; var interpreter = this._interpreter; var keyFunc = function(x) { var current = interpreter.visit(exprefNode, x); if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { var msg = "TypeError: expected one of " + allowedTypes + ", received " + that._getTypeName(current); throw new Error(msg); } return current; }; return keyFunc; } }; function compile(stream) { var parser = new Parser(); var ast = parser.parse(stream); return ast; } function tokenize(stream) { var lexer = new Lexer(); return lexer.tokenize(stream); } function search(data, expression) { var parser = new Parser(); var runtime = new Runtime(); var interpreter = new TreeInterpreter(runtime); runtime._interpreter = interpreter; var node = parser.parse(expression); return interpreter.search(node, data); } exports.tokenize = tokenize; exports.compile = compile; exports.search = search; exports.strictDeepEqual = strictDeepEqual; })(typeof exports === "undefined" ? this.jmespath = {} : exports); },{}],285:[function(require,module,exports){ 'use strict'; function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } module.exports = function(qs, sep, eq, options) { sep = sep || '&'; eq = eq || '='; var obj = {}; if (typeof qs !== 'string' || qs.length === 0) { return obj; } var regexp = /\+/g; qs = qs.split(sep); var maxKeys = 1000; if (options && typeof options.maxKeys === 'number') { maxKeys = options.maxKeys; } var len = qs.length; if (maxKeys > 0 && len > maxKeys) { len = maxKeys; } for (var i = 0; i < len; ++i) { var x = qs[i].replace(regexp, '%20'), idx = x.indexOf(eq), kstr, vstr, k, v; if (idx >= 0) { kstr = x.substr(0, idx); vstr = x.substr(idx + 1); } else { kstr = x; vstr = ''; } k = decodeURIComponent(kstr); v = decodeURIComponent(vstr); if (!hasOwnProperty(obj, k)) { obj[k] = v; } else if (Array.isArray(obj[k])) { obj[k].push(v); } else { obj[k] = [obj[k], v]; } } return obj; }; },{}],286:[function(require,module,exports){ 'use strict'; var stringifyPrimitive = function(v) { switch (typeof v) { case 'string': return v; case 'boolean': return v ? 'true' : 'false'; case 'number': return isFinite(v) ? v : ''; default: return ''; } }; module.exports = function(obj, sep, eq, name) { sep = sep || '&'; eq = eq || '='; if (obj === null) { obj = undefined; } if (typeof obj === 'object') { return Object.keys(obj).map(function(k) { var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; if (Array.isArray(obj[k])) { return obj[k].map(function(v) { return ks + encodeURIComponent(stringifyPrimitive(v)); }).join(sep); } else { return ks + encodeURIComponent(stringifyPrimitive(obj[k])); } }).join(sep); } if (!name) return ''; return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj)); }; },{}],287:[function(require,module,exports){ arguments[4][270][0].apply(exports,arguments) },{"./decode":285,"./encode":286,"dup":270}],288:[function(require,module,exports){ var punycode = require('punycode'); exports.parse = urlParse; exports.resolve = urlResolve; exports.resolveObject = urlResolveObject; exports.format = urlFormat; exports.Url = Url; function Url() { this.protocol = null; this.slashes = null; this.auth = null; this.host = null; this.port = null; this.hostname = null; this.hash = null; this.search = null; this.query = null; this.pathname = null; this.path = null; this.href = null; } var protocolPattern = /^([a-z0-9.+-]+:)/i, portPattern = /:[0-9]*$/, delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), autoEscape = ['\''].concat(unwise), nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), hostEndingChars = ['/', '?', '#'], hostnameMaxLen = 255, hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, unsafeProtocol = { 'javascript': true, 'javascript:': true }, hostlessProtocol = { 'javascript': true, 'javascript:': true }, slashedProtocol = { 'http': true, 'https': true, 'ftp': true, 'gopher': true, 'file': true, 'http:': true, 'https:': true, 'ftp:': true, 'gopher:': true, 'file:': true }, querystring = require('querystring'); function urlParse(url, parseQueryString, slashesDenoteHost) { if (url && isObject(url) && url instanceof Url) return url; var u = new Url; u.parse(url, parseQueryString, slashesDenoteHost); return u; } Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { if (!isString(url)) { throw new TypeError("Parameter 'url' must be a string, not " + typeof url); } var rest = url; rest = rest.trim(); var proto = protocolPattern.exec(rest); if (proto) { proto = proto[0]; var lowerProto = proto.toLowerCase(); this.protocol = lowerProto; rest = rest.substr(proto.length); } if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { var slashes = rest.substr(0, 2) === '//'; if (slashes && !(proto && hostlessProtocol[proto])) { rest = rest.substr(2); this.slashes = true; } } if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) { var hostEnd = -1; for (var i = 0; i < hostEndingChars.length; i++) { var hec = rest.indexOf(hostEndingChars[i]); if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; } var auth, atSign; if (hostEnd === -1) { atSign = rest.lastIndexOf('@'); } else { atSign = rest.lastIndexOf('@', hostEnd); } if (atSign !== -1) { auth = rest.slice(0, atSign); rest = rest.slice(atSign + 1); this.auth = decodeURIComponent(auth); } hostEnd = -1; for (var i = 0; i < nonHostChars.length; i++) { var hec = rest.indexOf(nonHostChars[i]); if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; } if (hostEnd === -1) hostEnd = rest.length; this.host = rest.slice(0, hostEnd); rest = rest.slice(hostEnd); this.parseHost(); this.hostname = this.hostname || ''; var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; if (!ipv6Hostname) { var hostparts = this.hostname.split(/\./); for (var i = 0, l = hostparts.length; i < l; i++) { var part = hostparts[i]; if (!part) continue; if (!part.match(hostnamePartPattern)) { var newpart = ''; for (var j = 0, k = part.length; j < k; j++) { if (part.charCodeAt(j) > 127) { newpart += 'x'; } else { newpart += part[j]; } } if (!newpart.match(hostnamePartPattern)) { var validParts = hostparts.slice(0, i); var notHost = hostparts.slice(i + 1); var bit = part.match(hostnamePartStart); if (bit) { validParts.push(bit[1]); notHost.unshift(bit[2]); } if (notHost.length) { rest = '/' + notHost.join('.') + rest; } this.hostname = validParts.join('.'); break; } } } } if (this.hostname.length > hostnameMaxLen) { this.hostname = ''; } else { this.hostname = this.hostname.toLowerCase(); } if (!ipv6Hostname) { var domainArray = this.hostname.split('.'); var newOut = []; for (var i = 0; i < domainArray.length; ++i) { var s = domainArray[i]; newOut.push(s.match(/[^A-Za-z0-9_-]/) ? 'xn--' + punycode.encode(s) : s); } this.hostname = newOut.join('.'); } var p = this.port ? ':' + this.port : ''; var h = this.hostname || ''; this.host = h + p; this.href += this.host; if (ipv6Hostname) { this.hostname = this.hostname.substr(1, this.hostname.length - 2); if (rest[0] !== '/') { rest = '/' + rest; } } } if (!unsafeProtocol[lowerProto]) { for (var i = 0, l = autoEscape.length; i < l; i++) { var ae = autoEscape[i]; var esc = encodeURIComponent(ae); if (esc === ae) { esc = escape(ae); } rest = rest.split(ae).join(esc); } } var hash = rest.indexOf('#'); if (hash !== -1) { this.hash = rest.substr(hash); rest = rest.slice(0, hash); } var qm = rest.indexOf('?'); if (qm !== -1) { this.search = rest.substr(qm); this.query = rest.substr(qm + 1); if (parseQueryString) { this.query = querystring.parse(this.query); } rest = rest.slice(0, qm); } else if (parseQueryString) { this.search = ''; this.query = {}; } if (rest) this.pathname = rest; if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { this.pathname = '/'; } if (this.pathname || this.search) { var p = this.pathname || ''; var s = this.search || ''; this.path = p + s; } this.href = this.format(); return this; }; function urlFormat(obj) { if (isString(obj)) obj = urlParse(obj); if (!(obj instanceof Url)) return Url.prototype.format.call(obj); return obj.format(); } Url.prototype.format = function() { var auth = this.auth || ''; if (auth) { auth = encodeURIComponent(auth); auth = auth.replace(/%3A/i, ':'); auth += '@'; } var protocol = this.protocol || '', pathname = this.pathname || '', hash = this.hash || '', host = false, query = ''; if (this.host) { host = auth + this.host; } else if (this.hostname) { host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); if (this.port) { host += ':' + this.port; } } if (this.query && isObject(this.query) && Object.keys(this.query).length) { query = querystring.stringify(this.query); } var search = this.search || (query && ('?' + query)) || ''; if (protocol && protocol.substr(-1) !== ':') protocol += ':'; if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) { host = '//' + (host || ''); if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; } else if (!host) { host = ''; } if (hash && hash.charAt(0) !== '#') hash = '#' + hash; if (search && search.charAt(0) !== '?') search = '?' + search; pathname = pathname.replace(/[?#]/g, function(match) { return encodeURIComponent(match); }); search = search.replace('#', '%23'); return protocol + host + pathname + search + hash; }; function urlResolve(source, relative) { return urlParse(source, false, true).resolve(relative); } Url.prototype.resolve = function(relative) { return this.resolveObject(urlParse(relative, false, true)).format(); }; function urlResolveObject(source, relative) { if (!source) return relative; return urlParse(source, false, true).resolveObject(relative); } Url.prototype.resolveObject = function(relative) { if (isString(relative)) { var rel = new Url(); rel.parse(relative, false, true); relative = rel; } var result = new Url(); Object.keys(this).forEach(function(k) { result[k] = this[k]; }, this); result.hash = relative.hash; if (relative.href === '') { result.href = result.format(); return result; } if (relative.slashes && !relative.protocol) { Object.keys(relative).forEach(function(k) { if (k !== 'protocol') result[k] = relative[k]; }); if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { result.path = result.pathname = '/'; } result.href = result.format(); return result; } if (relative.protocol && relative.protocol !== result.protocol) { if (!slashedProtocol[relative.protocol]) { Object.keys(relative).forEach(function(k) { result[k] = relative[k]; }); result.href = result.format(); return result; } result.protocol = relative.protocol; if (!relative.host && !hostlessProtocol[relative.protocol]) { var relPath = (relative.pathname || '').split('/'); while (relPath.length && !(relative.host = relPath.shift())); if (!relative.host) relative.host = ''; if (!relative.hostname) relative.hostname = ''; if (relPath[0] !== '') relPath.unshift(''); if (relPath.length < 2) relPath.unshift(''); result.pathname = relPath.join('/'); } else { result.pathname = relative.pathname; } result.search = relative.search; result.query = relative.query; result.host = relative.host || ''; result.auth = relative.auth; result.hostname = relative.hostname || relative.host; result.port = relative.port; if (result.pathname || result.search) { var p = result.pathname || ''; var s = result.search || ''; result.path = p + s; } result.slashes = result.slashes || relative.slashes; result.href = result.format(); return result; } var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), isRelAbs = ( relative.host || relative.pathname && relative.pathname.charAt(0) === '/' ), mustEndAbs = (isRelAbs || isSourceAbs || (result.host && relative.pathname)), removeAllDots = mustEndAbs, srcPath = result.pathname && result.pathname.split('/') || [], relPath = relative.pathname && relative.pathname.split('/') || [], psychotic = result.protocol && !slashedProtocol[result.protocol]; if (psychotic) { result.hostname = ''; result.port = null; if (result.host) { if (srcPath[0] === '') srcPath[0] = result.host; else srcPath.unshift(result.host); } result.host = ''; if (relative.protocol) { relative.hostname = null; relative.port = null; if (relative.host) { if (relPath[0] === '') relPath[0] = relative.host; else relPath.unshift(relative.host); } relative.host = null; } mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); } if (isRelAbs) { result.host = (relative.host || relative.host === '') ? relative.host : result.host; result.hostname = (relative.hostname || relative.hostname === '') ? relative.hostname : result.hostname; result.search = relative.search; result.query = relative.query; srcPath = relPath; } else if (relPath.length) { if (!srcPath) srcPath = []; srcPath.pop(); srcPath = srcPath.concat(relPath); result.search = relative.search; result.query = relative.query; } else if (!isNullOrUndefined(relative.search)) { if (psychotic) { result.hostname = result.host = srcPath.shift(); var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; if (authInHost) { result.auth = authInHost.shift(); result.host = result.hostname = authInHost.shift(); } } result.search = relative.search; result.query = relative.query; if (!isNull(result.pathname) || !isNull(result.search)) { result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); } result.href = result.format(); return result; } if (!srcPath.length) { result.pathname = null; if (result.search) { result.path = '/' + result.search; } else { result.path = null; } result.href = result.format(); return result; } var last = srcPath.slice(-1)[0]; var hasTrailingSlash = ( (result.host || relative.host) && (last === '.' || last === '..') || last === ''); var up = 0; for (var i = srcPath.length; i >= 0; i--) { last = srcPath[i]; if (last == '.') { srcPath.splice(i, 1); } else if (last === '..') { srcPath.splice(i, 1); up++; } else if (up) { srcPath.splice(i, 1); up--; } } if (!mustEndAbs && !removeAllDots) { for (; up--; up) { srcPath.unshift('..'); } } if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { srcPath.unshift(''); } if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { srcPath.push(''); } var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); if (psychotic) { result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; if (authInHost) { result.auth = authInHost.shift(); result.host = result.hostname = authInHost.shift(); } } mustEndAbs = mustEndAbs || (result.host && srcPath.length); if (mustEndAbs && !isAbsolute) { srcPath.unshift(''); } if (!srcPath.length) { result.pathname = null; result.path = null; } else { result.pathname = srcPath.join('/'); } if (!isNull(result.pathname) || !isNull(result.search)) { result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); } result.auth = relative.auth || result.auth; result.slashes = result.slashes || relative.slashes; result.href = result.format(); return result; }; Url.prototype.parseHost = function() { var host = this.host; var port = portPattern.exec(host); if (port) { port = port[0]; if (port !== ':') { this.port = port.substr(1); } host = host.substr(0, host.length - port.length); } if (host) this.hostname = host; }; function isString(arg) { return typeof arg === "string"; } function isObject(arg) { return typeof arg === 'object' && arg !== null; } function isNull(arg) { return arg === null; } function isNullOrUndefined(arg) { return arg == null; } },{"punycode":267,"querystring":270}],289:[function(require,module,exports){ (function (global){ var rng; var crypto = global.crypto || global.msCrypto; // for IE 11 if (crypto && crypto.getRandomValues) { var _rnds8 = new Uint8Array(16); rng = function whatwgRNG() { crypto.getRandomValues(_rnds8); return _rnds8; }; } if (!rng) { var _rnds = new Array(16); rng = function() { for (var i = 0, r; i < 16; i++) { if ((i & 0x03) === 0) r = Math.random() * 0x100000000; _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; } return _rnds; }; } module.exports = rng; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],290:[function(require,module,exports){ var _rng = require('./lib/rng'); var _byteToHex = []; var _hexToByte = {}; for (var i = 0; i < 256; ++i) { _byteToHex[i] = (i + 0x100).toString(16).substr(1); _hexToByte[_byteToHex[i]] = i; } function buff_to_string(buf, offset) { var i = offset || 0; var bth = _byteToHex; return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]]; } var _seedBytes = _rng(); var _nodeId = [ _seedBytes[0] | 0x01, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] ]; var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; var _lastMSecs = 0, _lastNSecs = 0; function v1(options, buf, offset) { var i = buf && offset || 0; var b = buf || []; options = options || {}; var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; if (dt < 0 && options.clockseq === undefined) { clockseq = clockseq + 1 & 0x3fff; } if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { nsecs = 0; } if (nsecs >= 10000) { throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); } _lastMSecs = msecs; _lastNSecs = nsecs; _clockseq = clockseq; msecs += 12219292800000; var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; b[i++] = tl >>> 24 & 0xff; b[i++] = tl >>> 16 & 0xff; b[i++] = tl >>> 8 & 0xff; b[i++] = tl & 0xff; var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; b[i++] = tmh >>> 8 & 0xff; b[i++] = tmh & 0xff; b[i++] = tmh >>> 24 & 0xf | 0x10; // include version b[i++] = tmh >>> 16 & 0xff; b[i++] = clockseq >>> 8 | 0x80; b[i++] = clockseq & 0xff; var node = options.node || _nodeId; for (var n = 0; n < 6; ++n) { b[i + n] = node[n]; } return buf ? buf : buff_to_string(b); } function v4(options, buf, offset) { var i = buf && offset || 0; if (typeof(options) == 'string') { buf = options == 'binary' ? new Array(16) : null; options = null; } options = options || {}; var rnds = options.random || (options.rng || _rng)(); rnds[6] = (rnds[6] & 0x0f) | 0x40; rnds[8] = (rnds[8] & 0x3f) | 0x80; if (buf) { for (var ii = 0; ii < 16; ++ii) { buf[i + ii] = rnds[ii]; } } return buf || buff_to_string(rnds); } var uuid = v4; uuid.v1 = v1; uuid.v4 = v4; module.exports = uuid; },{"./lib/rng":289}],291:[function(require,module,exports){ (function() { var XMLAttribute, create; create = require('lodash/object/create'); module.exports = XMLAttribute = (function() { function XMLAttribute(parent, name, value) { this.stringify = parent.stringify; if (name == null) { throw new Error("Missing attribute name of element " + parent.name); } if (value == null) { throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); } this.name = this.stringify.attName(name); this.value = this.stringify.attValue(value); } XMLAttribute.prototype.clone = function() { return create(XMLAttribute.prototype, this); }; XMLAttribute.prototype.toString = function(options, level) { return ' ' + this.name + '="' + this.value + '"'; }; return XMLAttribute; })(); }).call(this); },{"lodash/object/create":350}],292:[function(require,module,exports){ (function() { var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; XMLStringifier = require('./XMLStringifier'); XMLDeclaration = require('./XMLDeclaration'); XMLDocType = require('./XMLDocType'); XMLElement = require('./XMLElement'); module.exports = XMLBuilder = (function() { function XMLBuilder(name, options) { var root, temp; if (name == null) { throw new Error("Root element needs a name"); } if (options == null) { options = {}; } this.options = options; this.stringify = new XMLStringifier(options); temp = new XMLElement(this, 'doc'); root = temp.element(name); root.isRoot = true; root.documentObject = this; this.rootObject = root; if (!options.headless) { root.declaration(options); if ((options.pubID != null) || (options.sysID != null)) { root.doctype(options); } } } XMLBuilder.prototype.root = function() { return this.rootObject; }; XMLBuilder.prototype.end = function(options) { return this.toString(options); }; XMLBuilder.prototype.toString = function(options) { var indent, newline, offset, pretty, r, ref, ref1, ref2; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; r = ''; if (this.xmldec != null) { r += this.xmldec.toString(options); } if (this.doctype != null) { r += this.doctype.toString(options); } r += this.rootObject.toString(options); if (pretty && r.slice(-newline.length) === newline) { r = r.slice(0, -newline.length); } return r; }; return XMLBuilder; })(); }).call(this); },{"./XMLDeclaration":299,"./XMLDocType":300,"./XMLElement":301,"./XMLStringifier":305}],293:[function(require,module,exports){ (function() { var XMLCData, XMLNode, create, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; create = require('lodash/object/create'); XMLNode = require('./XMLNode'); module.exports = XMLCData = (function(superClass) { extend(XMLCData, superClass); function XMLCData(parent, text) { XMLCData.__super__.constructor.call(this, parent); if (text == null) { throw new Error("Missing CDATA text"); } this.text = this.stringify.cdata(text); } XMLCData.prototype.clone = function() { return create(XMLCData.prototype, this); }; XMLCData.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLCData; })(XMLNode); }).call(this); },{"./XMLNode":302,"lodash/object/create":350}],294:[function(require,module,exports){ (function() { var XMLComment, XMLNode, create, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; create = require('lodash/object/create'); XMLNode = require('./XMLNode'); module.exports = XMLComment = (function(superClass) { extend(XMLComment, superClass); function XMLComment(parent, text) { XMLComment.__super__.constructor.call(this, parent); if (text == null) { throw new Error("Missing comment text"); } this.text = this.stringify.comment(text); } XMLComment.prototype.clone = function() { return create(XMLComment.prototype, this); }; XMLComment.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLComment; })(XMLNode); }).call(this); },{"./XMLNode":302,"lodash/object/create":350}],295:[function(require,module,exports){ (function() { var XMLDTDAttList, create; create = require('lodash/object/create'); module.exports = XMLDTDAttList = (function() { function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { this.stringify = parent.stringify; if (elementName == null) { throw new Error("Missing DTD element name"); } if (attributeName == null) { throw new Error("Missing DTD attribute name"); } if (!attributeType) { throw new Error("Missing DTD attribute type"); } if (!defaultValueType) { throw new Error("Missing DTD attribute default"); } if (defaultValueType.indexOf('#') !== 0) { defaultValueType = '#' + defaultValueType; } if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); } if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { throw new Error("Default value only applies to #FIXED or #DEFAULT"); } this.elementName = this.stringify.eleName(elementName); this.attributeName = this.stringify.attName(attributeName); this.attributeType = this.stringify.dtdAttType(attributeType); this.defaultValue = this.stringify.dtdAttDefault(defaultValue); this.defaultValueType = defaultValueType; } XMLDTDAttList.prototype.clone = function() { return create(XMLDTDAttList.prototype, this); }; XMLDTDAttList.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLDTDAttList; })(); }).call(this); },{"lodash/object/create":350}],296:[function(require,module,exports){ (function() { var XMLDTDElement, create, isArray; create = require('lodash/object/create'); isArray = require('lodash/lang/isArray'); module.exports = XMLDTDElement = (function() { function XMLDTDElement(parent, name, value) { this.stringify = parent.stringify; if (name == null) { throw new Error("Missing DTD element name"); } if (!value) { value = '(#PCDATA)'; } if (isArray(value)) { value = '(' + value.join(',') + ')'; } this.name = this.stringify.eleName(name); this.value = this.stringify.dtdElementValue(value); } XMLDTDElement.prototype.clone = function() { return create(XMLDTDElement.prototype, this); }; XMLDTDElement.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLDTDElement; })(); }).call(this); },{"lodash/lang/isArray":342,"lodash/object/create":350}],297:[function(require,module,exports){ (function() { var XMLDTDEntity, create, isObject; create = require('lodash/object/create'); isObject = require('lodash/lang/isObject'); module.exports = XMLDTDEntity = (function() { function XMLDTDEntity(parent, pe, name, value) { this.stringify = parent.stringify; if (name == null) { throw new Error("Missing entity name"); } if (value == null) { throw new Error("Missing entity value"); } this.pe = !!pe; this.name = this.stringify.eleName(name); if (!isObject(value)) { this.value = this.stringify.dtdEntityValue(value); } else { if (!value.pubID && !value.sysID) { throw new Error("Public and/or system identifiers are required for an external entity"); } if (value.pubID && !value.sysID) { throw new Error("System identifier is required for a public external entity"); } if (value.pubID != null) { this.pubID = this.stringify.dtdPubID(value.pubID); } if (value.sysID != null) { this.sysID = this.stringify.dtdSysID(value.sysID); } if (value.nData != null) { this.nData = this.stringify.dtdNData(value.nData); } if (this.pe && this.nData) { throw new Error("Notation declaration is not allowed in a parameter entity"); } } } XMLDTDEntity.prototype.clone = function() { return create(XMLDTDEntity.prototype, this); }; XMLDTDEntity.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLDTDEntity; })(); }).call(this); },{"lodash/lang/isObject":346,"lodash/object/create":350}],298:[function(require,module,exports){ (function() { var XMLDTDNotation, create; create = require('lodash/object/create'); module.exports = XMLDTDNotation = (function() { function XMLDTDNotation(parent, name, value) { this.stringify = parent.stringify; if (name == null) { throw new Error("Missing notation name"); } if (!value.pubID && !value.sysID) { throw new Error("Public or system identifiers are required for an external entity"); } this.name = this.stringify.eleName(name); if (value.pubID != null) { this.pubID = this.stringify.dtdPubID(value.pubID); } if (value.sysID != null) { this.sysID = this.stringify.dtdSysID(value.sysID); } } XMLDTDNotation.prototype.clone = function() { return create(XMLDTDNotation.prototype, this); }; XMLDTDNotation.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLDTDNotation; })(); }).call(this); },{"lodash/object/create":350}],299:[function(require,module,exports){ (function() { var XMLDeclaration, XMLNode, create, isObject, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; create = require('lodash/object/create'); isObject = require('lodash/lang/isObject'); XMLNode = require('./XMLNode'); module.exports = XMLDeclaration = (function(superClass) { extend(XMLDeclaration, superClass); function XMLDeclaration(parent, version, encoding, standalone) { var ref; XMLDeclaration.__super__.constructor.call(this, parent); if (isObject(version)) { ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; } if (!version) { version = '1.0'; } if (version != null) { this.version = this.stringify.xmlVersion(version); } if (encoding != null) { this.encoding = this.stringify.xmlEncoding(encoding); } if (standalone != null) { this.standalone = this.stringify.xmlStandalone(standalone); } } XMLDeclaration.prototype.clone = function() { return create(XMLDeclaration.prototype, this); }; XMLDeclaration.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLDeclaration; })(XMLNode); }).call(this); },{"./XMLNode":302,"lodash/lang/isObject":346,"lodash/object/create":350}],300:[function(require,module,exports){ (function() { var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; create = require('lodash/object/create'); isObject = require('lodash/lang/isObject'); XMLCData = require('./XMLCData'); XMLComment = require('./XMLComment'); XMLDTDAttList = require('./XMLDTDAttList'); XMLDTDEntity = require('./XMLDTDEntity'); XMLDTDElement = require('./XMLDTDElement'); XMLDTDNotation = require('./XMLDTDNotation'); XMLProcessingInstruction = require('./XMLProcessingInstruction'); module.exports = XMLDocType = (function() { function XMLDocType(parent, pubID, sysID) { var ref, ref1; this.documentObject = parent; this.stringify = this.documentObject.stringify; this.children = []; if (isObject(pubID)) { ref = pubID, pubID = ref.pubID, sysID = ref.sysID; } if (sysID == null) { ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; } if (pubID != null) { this.pubID = this.stringify.dtdPubID(pubID); } if (sysID != null) { this.sysID = this.stringify.dtdSysID(sysID); } } XMLDocType.prototype.clone = function() { return create(XMLDocType.prototype, this); }; XMLDocType.prototype.element = function(name, value) { var child; child = new XMLDTDElement(this, name, value); this.children.push(child); return this; }; XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { var child; child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); this.children.push(child); return this; }; XMLDocType.prototype.entity = function(name, value) { var child; child = new XMLDTDEntity(this, false, name, value); this.children.push(child); return this; }; XMLDocType.prototype.pEntity = function(name, value) { var child; child = new XMLDTDEntity(this, true, name, value); this.children.push(child); return this; }; XMLDocType.prototype.notation = function(name, value) { var child; child = new XMLDTDNotation(this, name, value); this.children.push(child); return this; }; XMLDocType.prototype.cdata = function(value) { var child; child = new XMLCData(this, value); this.children.push(child); return this; }; XMLDocType.prototype.comment = function(value) { var child; child = new XMLComment(this, value); this.children.push(child); return this; }; XMLDocType.prototype.instruction = function(target, value) { var child; child = new XMLProcessingInstruction(this, target, value); this.children.push(child); return this; }; XMLDocType.prototype.root = function() { return this.documentObject.root(); }; XMLDocType.prototype.document = function() { return this.documentObject; }; XMLDocType.prototype.toString = function(options, level) { var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ' 0) { r += ' ['; if (pretty) { r += newline; } ref3 = this.children; for (i = 0, len = ref3.length; i < len; i++) { child = ref3[i]; r += child.toString(options, level + 1); } r += ']'; } r += '>'; if (pretty) { r += newline; } return r; }; XMLDocType.prototype.ele = function(name, value) { return this.element(name, value); }; XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); }; XMLDocType.prototype.ent = function(name, value) { return this.entity(name, value); }; XMLDocType.prototype.pent = function(name, value) { return this.pEntity(name, value); }; XMLDocType.prototype.not = function(name, value) { return this.notation(name, value); }; XMLDocType.prototype.dat = function(value) { return this.cdata(value); }; XMLDocType.prototype.com = function(value) { return this.comment(value); }; XMLDocType.prototype.ins = function(target, value) { return this.instruction(target, value); }; XMLDocType.prototype.up = function() { return this.root(); }; XMLDocType.prototype.doc = function() { return this.document(); }; return XMLDocType; })(); }).call(this); },{"./XMLCData":293,"./XMLComment":294,"./XMLDTDAttList":295,"./XMLDTDElement":296,"./XMLDTDEntity":297,"./XMLDTDNotation":298,"./XMLProcessingInstruction":303,"lodash/lang/isObject":346,"lodash/object/create":350}],301:[function(require,module,exports){ (function() { var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; create = require('lodash/object/create'); isObject = require('lodash/lang/isObject'); isArray = require('lodash/lang/isArray'); isFunction = require('lodash/lang/isFunction'); every = require('lodash/collection/every'); XMLNode = require('./XMLNode'); XMLAttribute = require('./XMLAttribute'); XMLProcessingInstruction = require('./XMLProcessingInstruction'); module.exports = XMLElement = (function(superClass) { extend(XMLElement, superClass); function XMLElement(parent, name, attributes) { XMLElement.__super__.constructor.call(this, parent); if (name == null) { throw new Error("Missing element name"); } this.name = this.stringify.eleName(name); this.children = []; this.instructions = []; this.attributes = {}; if (attributes != null) { this.attribute(attributes); } } XMLElement.prototype.clone = function() { var att, attName, clonedSelf, i, len, pi, ref, ref1; clonedSelf = create(XMLElement.prototype, this); if (clonedSelf.isRoot) { clonedSelf.documentObject = null; } clonedSelf.attributes = {}; ref = this.attributes; for (attName in ref) { if (!hasProp.call(ref, attName)) continue; att = ref[attName]; clonedSelf.attributes[attName] = att.clone(); } clonedSelf.instructions = []; ref1 = this.instructions; for (i = 0, len = ref1.length; i < len; i++) { pi = ref1[i]; clonedSelf.instructions.push(pi.clone()); } clonedSelf.children = []; this.children.forEach(function(child) { var clonedChild; clonedChild = child.clone(); clonedChild.parent = clonedSelf; return clonedSelf.children.push(clonedChild); }); return clonedSelf; }; XMLElement.prototype.attribute = function(name, value) { var attName, attValue; if (name != null) { name = name.valueOf(); } if (isObject(name)) { for (attName in name) { if (!hasProp.call(name, attName)) continue; attValue = name[attName]; this.attribute(attName, attValue); } } else { if (isFunction(value)) { value = value.apply(); } if (!this.options.skipNullAttributes || (value != null)) { this.attributes[name] = new XMLAttribute(this, name, value); } } return this; }; XMLElement.prototype.removeAttribute = function(name) { var attName, i, len; if (name == null) { throw new Error("Missing attribute name"); } name = name.valueOf(); if (isArray(name)) { for (i = 0, len = name.length; i < len; i++) { attName = name[i]; delete this.attributes[attName]; } } else { delete this.attributes[name]; } return this; }; XMLElement.prototype.instruction = function(target, value) { var i, insTarget, insValue, instruction, len; if (target != null) { target = target.valueOf(); } if (value != null) { value = value.valueOf(); } if (isArray(target)) { for (i = 0, len = target.length; i < len; i++) { insTarget = target[i]; this.instruction(insTarget); } } else if (isObject(target)) { for (insTarget in target) { if (!hasProp.call(target, insTarget)) continue; insValue = target[insTarget]; this.instruction(insTarget, insValue); } } else { if (isFunction(value)) { value = value.apply(); } instruction = new XMLProcessingInstruction(this, target, value); this.instructions.push(instruction); } return this; }; XMLElement.prototype.toString = function(options, level) { var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; ref3 = this.instructions; for (i = 0, len = ref3.length; i < len; i++) { instruction = ref3[i]; r += instruction.toString(options, level + 1); } if (pretty) { r += space; } r += '<' + this.name; ref4 = this.attributes; for (name in ref4) { if (!hasProp.call(ref4, name)) continue; att = ref4[name]; r += att.toString(options); } if (this.children.length === 0 || every(this.children, function(e) { return e.value === ''; })) { r += '/>'; if (pretty) { r += newline; } } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { r += '>'; r += this.children[0].value; r += ''; r += newline; } else { r += '>'; if (pretty) { r += newline; } ref5 = this.children; for (j = 0, len1 = ref5.length; j < len1; j++) { child = ref5[j]; r += child.toString(options, level + 1); } if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } } return r; }; XMLElement.prototype.att = function(name, value) { return this.attribute(name, value); }; XMLElement.prototype.ins = function(target, value) { return this.instruction(target, value); }; XMLElement.prototype.a = function(name, value) { return this.attribute(name, value); }; XMLElement.prototype.i = function(target, value) { return this.instruction(target, value); }; return XMLElement; })(XMLNode); }).call(this); },{"./XMLAttribute":291,"./XMLNode":302,"./XMLProcessingInstruction":303,"lodash/collection/every":308,"lodash/lang/isArray":342,"lodash/lang/isFunction":344,"lodash/lang/isObject":346,"lodash/object/create":350}],302:[function(require,module,exports){ (function() { var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, hasProp = {}.hasOwnProperty; isObject = require('lodash/lang/isObject'); isArray = require('lodash/lang/isArray'); isFunction = require('lodash/lang/isFunction'); isEmpty = require('lodash/lang/isEmpty'); XMLElement = null; XMLCData = null; XMLComment = null; XMLDeclaration = null; XMLDocType = null; XMLRaw = null; XMLText = null; module.exports = XMLNode = (function() { function XMLNode(parent) { this.parent = parent; this.options = this.parent.options; this.stringify = this.parent.stringify; if (XMLElement === null) { XMLElement = require('./XMLElement'); XMLCData = require('./XMLCData'); XMLComment = require('./XMLComment'); XMLDeclaration = require('./XMLDeclaration'); XMLDocType = require('./XMLDocType'); XMLRaw = require('./XMLRaw'); XMLText = require('./XMLText'); } } XMLNode.prototype.clone = function() { throw new Error("Cannot clone generic XMLNode"); }; XMLNode.prototype.element = function(name, attributes, text) { var item, j, key, lastChild, len, ref, val; lastChild = null; if (attributes == null) { attributes = {}; } attributes = attributes.valueOf(); if (!isObject(attributes)) { ref = [attributes, text], text = ref[0], attributes = ref[1]; } if (name != null) { name = name.valueOf(); } if (isArray(name)) { for (j = 0, len = name.length; j < len; j++) { item = name[j]; lastChild = this.element(item); } } else if (isFunction(name)) { lastChild = this.element(name.apply()); } else if (isObject(name)) { for (key in name) { if (!hasProp.call(name, key)) continue; val = name[key]; if (isFunction(val)) { val = val.apply(); } if ((isObject(val)) && (isEmpty(val))) { val = null; } if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); } else if (isObject(val)) { if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { lastChild = this.element(val); } else { lastChild = this.element(key); lastChild.element(val); } } else { lastChild = this.element(key, val); } } } else { if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { lastChild = this.text(text); } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { lastChild = this.cdata(text); } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { lastChild = this.comment(text); } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { lastChild = this.raw(text); } else { lastChild = this.node(name, attributes, text); } } if (lastChild == null) { throw new Error("Could not create any elements with: " + name); } return lastChild; }; XMLNode.prototype.insertBefore = function(name, attributes, text) { var child, i, removed; if (this.isRoot) { throw new Error("Cannot insert elements at root level"); } i = this.parent.children.indexOf(this); removed = this.parent.children.splice(i); child = this.parent.element(name, attributes, text); Array.prototype.push.apply(this.parent.children, removed); return child; }; XMLNode.prototype.insertAfter = function(name, attributes, text) { var child, i, removed; if (this.isRoot) { throw new Error("Cannot insert elements at root level"); } i = this.parent.children.indexOf(this); removed = this.parent.children.splice(i + 1); child = this.parent.element(name, attributes, text); Array.prototype.push.apply(this.parent.children, removed); return child; }; XMLNode.prototype.remove = function() { var i, ref; if (this.isRoot) { throw new Error("Cannot remove the root element"); } i = this.parent.children.indexOf(this); [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; return this.parent; }; XMLNode.prototype.node = function(name, attributes, text) { var child, ref; if (name != null) { name = name.valueOf(); } if (attributes == null) { attributes = {}; } attributes = attributes.valueOf(); if (!isObject(attributes)) { ref = [attributes, text], text = ref[0], attributes = ref[1]; } child = new XMLElement(this, name, attributes); if (text != null) { child.text(text); } this.children.push(child); return child; }; XMLNode.prototype.text = function(value) { var child; child = new XMLText(this, value); this.children.push(child); return this; }; XMLNode.prototype.cdata = function(value) { var child; child = new XMLCData(this, value); this.children.push(child); return this; }; XMLNode.prototype.comment = function(value) { var child; child = new XMLComment(this, value); this.children.push(child); return this; }; XMLNode.prototype.raw = function(value) { var child; child = new XMLRaw(this, value); this.children.push(child); return this; }; XMLNode.prototype.declaration = function(version, encoding, standalone) { var doc, xmldec; doc = this.document(); xmldec = new XMLDeclaration(doc, version, encoding, standalone); doc.xmldec = xmldec; return doc.root(); }; XMLNode.prototype.doctype = function(pubID, sysID) { var doc, doctype; doc = this.document(); doctype = new XMLDocType(doc, pubID, sysID); doc.doctype = doctype; return doctype; }; XMLNode.prototype.up = function() { if (this.isRoot) { throw new Error("The root node has no parent. Use doc() if you need to get the document object."); } return this.parent; }; XMLNode.prototype.root = function() { var child; if (this.isRoot) { return this; } child = this.parent; while (!child.isRoot) { child = child.parent; } return child; }; XMLNode.prototype.document = function() { return this.root().documentObject; }; XMLNode.prototype.end = function(options) { return this.document().toString(options); }; XMLNode.prototype.prev = function() { var i; if (this.isRoot) { throw new Error("Root node has no siblings"); } i = this.parent.children.indexOf(this); if (i < 1) { throw new Error("Already at the first node"); } return this.parent.children[i - 1]; }; XMLNode.prototype.next = function() { var i; if (this.isRoot) { throw new Error("Root node has no siblings"); } i = this.parent.children.indexOf(this); if (i === -1 || i === this.parent.children.length - 1) { throw new Error("Already at the last node"); } return this.parent.children[i + 1]; }; XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { var clonedRoot; clonedRoot = xmlbuilder.root().clone(); clonedRoot.parent = this; clonedRoot.isRoot = false; this.children.push(clonedRoot); return this; }; XMLNode.prototype.ele = function(name, attributes, text) { return this.element(name, attributes, text); }; XMLNode.prototype.nod = function(name, attributes, text) { return this.node(name, attributes, text); }; XMLNode.prototype.txt = function(value) { return this.text(value); }; XMLNode.prototype.dat = function(value) { return this.cdata(value); }; XMLNode.prototype.com = function(value) { return this.comment(value); }; XMLNode.prototype.doc = function() { return this.document(); }; XMLNode.prototype.dec = function(version, encoding, standalone) { return this.declaration(version, encoding, standalone); }; XMLNode.prototype.dtd = function(pubID, sysID) { return this.doctype(pubID, sysID); }; XMLNode.prototype.e = function(name, attributes, text) { return this.element(name, attributes, text); }; XMLNode.prototype.n = function(name, attributes, text) { return this.node(name, attributes, text); }; XMLNode.prototype.t = function(value) { return this.text(value); }; XMLNode.prototype.d = function(value) { return this.cdata(value); }; XMLNode.prototype.c = function(value) { return this.comment(value); }; XMLNode.prototype.r = function(value) { return this.raw(value); }; XMLNode.prototype.u = function() { return this.up(); }; return XMLNode; })(); }).call(this); },{"./XMLCData":293,"./XMLComment":294,"./XMLDeclaration":299,"./XMLDocType":300,"./XMLElement":301,"./XMLRaw":304,"./XMLText":306,"lodash/lang/isArray":342,"lodash/lang/isEmpty":343,"lodash/lang/isFunction":344,"lodash/lang/isObject":346}],303:[function(require,module,exports){ (function() { var XMLProcessingInstruction, create; create = require('lodash/object/create'); module.exports = XMLProcessingInstruction = (function() { function XMLProcessingInstruction(parent, target, value) { this.stringify = parent.stringify; if (target == null) { throw new Error("Missing instruction target"); } this.target = this.stringify.insTarget(target); if (value) { this.value = this.stringify.insValue(value); } } XMLProcessingInstruction.prototype.clone = function() { return create(XMLProcessingInstruction.prototype, this); }; XMLProcessingInstruction.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += ''; if (pretty) { r += newline; } return r; }; return XMLProcessingInstruction; })(); }).call(this); },{"lodash/object/create":350}],304:[function(require,module,exports){ (function() { var XMLNode, XMLRaw, create, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; create = require('lodash/object/create'); XMLNode = require('./XMLNode'); module.exports = XMLRaw = (function(superClass) { extend(XMLRaw, superClass); function XMLRaw(parent, text) { XMLRaw.__super__.constructor.call(this, parent); if (text == null) { throw new Error("Missing raw text"); } this.value = this.stringify.raw(text); } XMLRaw.prototype.clone = function() { return create(XMLRaw.prototype, this); }; XMLRaw.prototype.toString = function(options, level) { var indent, newline, offset, pretty, r, ref, ref1, ref2, space; pretty = (options != null ? options.pretty : void 0) || false; indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; level || (level = 0); space = new Array(level + offset + 1).join(indent); r = ''; if (pretty) { r += space; } r += this.value; if (pretty) { r += newline; } return r; }; return XMLRaw; })(XMLNode); }).call(this); },{"./XMLNode":302,"lodash/object/create":350}],305:[function(require,module,exports){ (function() { var XMLStringifier, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, hasProp = {}.hasOwnProperty; module.exports = XMLStringifier = (function() { function XMLStringifier(options) { this.assertLegalChar = bind(this.assertLegalChar, this); var key, ref, value; this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; ref = (options != null ? options.stringify : void 0) || {}; for (key in ref) { if (!hasProp.call(ref, key)) continue; value = ref[key]; this[key] = value; } } XMLStringifier.prototype.eleName = function(val) { val = '' + val || ''; return this.assertLegalChar(val); }; XMLStringifier.prototype.eleText = function(val) { val = '' + val || ''; return this.assertLegalChar(this.elEscape(val)); }; XMLStringifier.prototype.cdata = function(val) { val = '' + val || ''; if (val.match(/]]>/)) { throw new Error("Invalid CDATA text: " + val); } return this.assertLegalChar(val); }; XMLStringifier.prototype.comment = function(val) { val = '' + val || ''; if (val.match(/--/)) { throw new Error("Comment text cannot contain double-hypen: " + val); } return this.assertLegalChar(val); }; XMLStringifier.prototype.raw = function(val) { return '' + val || ''; }; XMLStringifier.prototype.attName = function(val) { return '' + val || ''; }; XMLStringifier.prototype.attValue = function(val) { val = '' + val || ''; return this.attEscape(val); }; XMLStringifier.prototype.insTarget = function(val) { return '' + val || ''; }; XMLStringifier.prototype.insValue = function(val) { val = '' + val || ''; if (val.match(/\?>/)) { throw new Error("Invalid processing instruction value: " + val); } return val; }; XMLStringifier.prototype.xmlVersion = function(val) { val = '' + val || ''; if (!val.match(/1\.[0-9]+/)) { throw new Error("Invalid version number: " + val); } return val; }; XMLStringifier.prototype.xmlEncoding = function(val) { val = '' + val || ''; if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { throw new Error("Invalid encoding: " + val); } return val; }; XMLStringifier.prototype.xmlStandalone = function(val) { if (val) { return "yes"; } else { return "no"; } }; XMLStringifier.prototype.dtdPubID = function(val) { return '' + val || ''; }; XMLStringifier.prototype.dtdSysID = function(val) { return '' + val || ''; }; XMLStringifier.prototype.dtdElementValue = function(val) { return '' + val || ''; }; XMLStringifier.prototype.dtdAttType = function(val) { return '' + val || ''; }; XMLStringifier.prototype.dtdAttDefault = function(val) { if (val != null) { return '' + val || ''; } else { return val; } }; XMLStringifier.prototype.dtdEntityValue = function(val) { return '' + val || ''; }; XMLStringifier.prototype.dtdNData = function(val) { return '' + val || ''; }; XMLStringifier.prototype.convertAttKey = '@'; XMLStringifier.prototype.convertPIKey = '?'; XMLStringifier.prototype.convertTextKey = '#text'; XMLStringifier.prototype.convertCDataKey = '#cdata'; XMLStringifier.prototype.convertCommentKey = '#comment'; XMLStringifier.prototype.convertRawKey = '#raw'; XMLStringifier.prototype.convertListKey = '#list'; XMLStringifier.prototype.assertLegalChar = function(str) { var chars, chr; if (this.allowSurrogateChars) { chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; } else { chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; } chr = str.match(chars); if (chr) { throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); } return str; }; XMLStringifier.prototype.elEscape = function(str) { return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); }; XMLStringifier.prototype.attEscape = function(str) { return str.replace(/&/g, '&').replace(/ 3 && typeof customizer == 'function') { customizer = bindCallback(customizer, thisArg, 5); length -= 2; } else { customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; length -= (customizer ? 1 : 0); } if (guard && isIterateeCall(args[1], args[2], guard)) { customizer = length == 3 ? null : customizer; length = 2; } var index = 0; while (++index < length) { var source = args[index]; if (source) { assigner(object, source, customizer); } } return object; }; } module.exports = createAssigner; },{"./bindCallback":327,"./isIterateeCall":334}],329:[function(require,module,exports){ function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { var index = -1, arrLength = array.length, othLength = other.length, result = true; if (arrLength != othLength && !(isWhere && othLength > arrLength)) { return false; } while (result && ++index < arrLength) { var arrValue = array[index], othValue = other[index]; result = undefined; if (customizer) { result = isWhere ? customizer(othValue, arrValue, index) : customizer(arrValue, othValue, index); } if (typeof result == 'undefined') { if (isWhere) { var othIndex = othLength; while (othIndex--) { othValue = other[othIndex]; result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); if (result) { break; } } } else { result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); } } } return !!result; } module.exports = equalArrays; },{}],330:[function(require,module,exports){ var boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', numberTag = '[object Number]', regexpTag = '[object RegExp]', stringTag = '[object String]'; function equalByTag(object, other, tag) { switch (tag) { case boolTag: case dateTag: return +object == +other; case errorTag: return object.name == other.name && object.message == other.message; case numberTag: return (object != +object) ? other != +other : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); case regexpTag: case stringTag: return object == (other + ''); } return false; } module.exports = equalByTag; },{}],331:[function(require,module,exports){ var keys = require('../object/keys'); var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { var objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length; if (objLength != othLength && !isWhere) { return false; } var hasCtor, index = -1; while (++index < objLength) { var key = objProps[index], result = hasOwnProperty.call(other, key); if (result) { var objValue = object[key], othValue = other[key]; result = undefined; if (customizer) { result = isWhere ? customizer(othValue, objValue, key) : customizer(objValue, othValue, key); } if (typeof result == 'undefined') { result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); } } if (!result) { return false; } hasCtor || (hasCtor = key == 'constructor'); } if (!hasCtor) { var objCtor = object.constructor, othCtor = other.constructor; if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { return false; } } return true; } module.exports = equalObjects; },{"../object/keys":351}],332:[function(require,module,exports){ var baseSetData = require('./baseSetData'), isNative = require('../lang/isNative'), support = require('../support'); var reFuncName = /^\s*function[ \n\r\t]+\w/; var reThis = /\bthis\b/; var fnToString = Function.prototype.toString; function isBindable(func) { var result = !(support.funcNames ? func.name : support.funcDecomp); if (!result) { var source = fnToString.call(func); if (!support.funcNames) { result = !reFuncName.test(source); } if (!result) { result = reThis.test(source) || isNative(func); baseSetData(func, result); } } return result; } module.exports = isBindable; },{"../lang/isNative":345,"../support":354,"./baseSetData":325}],333:[function(require,module,exports){ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; function isIndex(value, length) { value = +value; length = length == null ? MAX_SAFE_INTEGER : length; return value > -1 && value % 1 == 0 && value < length; } module.exports = isIndex; },{}],334:[function(require,module,exports){ var isIndex = require('./isIndex'), isLength = require('./isLength'), isObject = require('../lang/isObject'); function isIterateeCall(value, index, object) { if (!isObject(object)) { return false; } var type = typeof index; if (type == 'number') { var length = object.length, prereq = isLength(length) && isIndex(index, length); } else { prereq = type == 'string' && index in object; } if (prereq) { var other = object[index]; return value === value ? (value === other) : (other !== other); } return false; } module.exports = isIterateeCall; },{"../lang/isObject":346,"./isIndex":333,"./isLength":335}],335:[function(require,module,exports){ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; function isLength(value) { return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } module.exports = isLength; },{}],336:[function(require,module,exports){ function isObjectLike(value) { return (value && typeof value == 'object') || false; } module.exports = isObjectLike; },{}],337:[function(require,module,exports){ var isObject = require('../lang/isObject'); function isStrictComparable(value) { return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); } module.exports = isStrictComparable; },{"../lang/isObject":346}],338:[function(require,module,exports){ (function (global){ var isNative = require('../lang/isNative'); var WeakMap = isNative(WeakMap = global.WeakMap) && WeakMap; var metaMap = WeakMap && new WeakMap; module.exports = metaMap; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"../lang/isNative":345}],339:[function(require,module,exports){ var isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isIndex = require('./isIndex'), isLength = require('./isLength'), keysIn = require('../object/keysIn'), support = require('../support'); var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; function shimKeys(object) { var props = keysIn(object), propsLength = props.length, length = propsLength && object.length; var allowIndexes = length && isLength(length) && (isArray(object) || (support.nonEnumArgs && isArguments(object))); var index = -1, result = []; while (++index < propsLength) { var key = props[index]; if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { result.push(key); } } return result; } module.exports = shimKeys; },{"../lang/isArguments":341,"../lang/isArray":342,"../object/keysIn":352,"../support":354,"./isIndex":333,"./isLength":335}],340:[function(require,module,exports){ var isObject = require('../lang/isObject'); function toObject(value) { return isObject(value) ? value : Object(value); } module.exports = toObject; },{"../lang/isObject":346}],341:[function(require,module,exports){ var isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); var argsTag = '[object Arguments]'; var objectProto = Object.prototype; var objToString = objectProto.toString; function isArguments(value) { var length = isObjectLike(value) ? value.length : undefined; return (isLength(length) && objToString.call(value) == argsTag) || false; } module.exports = isArguments; },{"../internal/isLength":335,"../internal/isObjectLike":336}],342:[function(require,module,exports){ var isLength = require('../internal/isLength'), isNative = require('./isNative'), isObjectLike = require('../internal/isObjectLike'); var arrayTag = '[object Array]'; var objectProto = Object.prototype; var objToString = objectProto.toString; var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray; var isArray = nativeIsArray || function(value) { return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; }; module.exports = isArray; },{"../internal/isLength":335,"../internal/isObjectLike":336,"./isNative":345}],343:[function(require,module,exports){ var isArguments = require('./isArguments'), isArray = require('./isArray'), isFunction = require('./isFunction'), isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'), isString = require('./isString'), keys = require('../object/keys'); function isEmpty(value) { if (value == null) { return true; } var length = value.length; if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || (isObjectLike(value) && isFunction(value.splice)))) { return !length; } return !keys(value).length; } module.exports = isEmpty; },{"../internal/isLength":335,"../internal/isObjectLike":336,"../object/keys":351,"./isArguments":341,"./isArray":342,"./isFunction":344,"./isString":347}],344:[function(require,module,exports){ (function (global){ var baseIsFunction = require('../internal/baseIsFunction'), isNative = require('./isNative'); var funcTag = '[object Function]'; var objectProto = Object.prototype; var objToString = objectProto.toString; var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array; var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { return objToString.call(value) == funcTag; }; module.exports = isFunction; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"../internal/baseIsFunction":320,"./isNative":345}],345:[function(require,module,exports){ var escapeRegExp = require('../string/escapeRegExp'), isObjectLike = require('../internal/isObjectLike'); var funcTag = '[object Function]'; var reHostCtor = /^\[object .+?Constructor\]$/; var objectProto = Object.prototype; var fnToString = Function.prototype.toString; var objToString = objectProto.toString; var reNative = RegExp('^' + escapeRegExp(objToString) .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); function isNative(value) { if (value == null) { return false; } if (objToString.call(value) == funcTag) { return reNative.test(fnToString.call(value)); } return (isObjectLike(value) && reHostCtor.test(value)) || false; } module.exports = isNative; },{"../internal/isObjectLike":336,"../string/escapeRegExp":353}],346:[function(require,module,exports){ function isObject(value) { var type = typeof value; return type == 'function' || (value && type == 'object') || false; } module.exports = isObject; },{}],347:[function(require,module,exports){ var isObjectLike = require('../internal/isObjectLike'); var stringTag = '[object String]'; var objectProto = Object.prototype; var objToString = objectProto.toString; function isString(value) { return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; } module.exports = isString; },{"../internal/isObjectLike":336}],348:[function(require,module,exports){ var isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var objectProto = Object.prototype; var objToString = objectProto.toString; function isTypedArray(value) { return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; } module.exports = isTypedArray; },{"../internal/isLength":335,"../internal/isObjectLike":336}],349:[function(require,module,exports){ var baseAssign = require('../internal/baseAssign'), createAssigner = require('../internal/createAssigner'); var assign = createAssigner(baseAssign); module.exports = assign; },{"../internal/baseAssign":310,"../internal/createAssigner":328}],350:[function(require,module,exports){ var baseCopy = require('../internal/baseCopy'), baseCreate = require('../internal/baseCreate'), isIterateeCall = require('../internal/isIterateeCall'), keys = require('./keys'); function create(prototype, properties, guard) { var result = baseCreate(prototype); if (guard && isIterateeCall(prototype, properties, guard)) { properties = null; } return properties ? baseCopy(properties, result, keys(properties)) : result; } module.exports = create; },{"../internal/baseCopy":312,"../internal/baseCreate":313,"../internal/isIterateeCall":334,"./keys":351}],351:[function(require,module,exports){ var isLength = require('../internal/isLength'), isNative = require('../lang/isNative'), isObject = require('../lang/isObject'), shimKeys = require('../internal/shimKeys'); var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; var keys = !nativeKeys ? shimKeys : function(object) { if (object) { var Ctor = object.constructor, length = object.length; } if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object != 'function' && (length && isLength(length)))) { return shimKeys(object); } return isObject(object) ? nativeKeys(object) : []; }; module.exports = keys; },{"../internal/isLength":335,"../internal/shimKeys":339,"../lang/isNative":345,"../lang/isObject":346}],352:[function(require,module,exports){ var isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isIndex = require('../internal/isIndex'), isLength = require('../internal/isLength'), isObject = require('../lang/isObject'), support = require('../support'); var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; function keysIn(object) { if (object == null) { return []; } if (!isObject(object)) { object = Object(object); } var length = object.length; length = (length && isLength(length) && (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; var Ctor = object.constructor, index = -1, isProto = typeof Ctor == 'function' && Ctor.prototype === object, result = Array(length), skipIndexes = length > 0; while (++index < length) { result[index] = (index + ''); } for (var key in object) { if (!(skipIndexes && isIndex(key, length)) && !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { result.push(key); } } return result; } module.exports = keysIn; },{"../internal/isIndex":333,"../internal/isLength":335,"../lang/isArguments":341,"../lang/isArray":342,"../lang/isObject":346,"../support":354}],353:[function(require,module,exports){ var baseToString = require('../internal/baseToString'); var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, reHasRegExpChars = RegExp(reRegExpChars.source); function escapeRegExp(string) { string = baseToString(string); return (string && reHasRegExpChars.test(string)) ? string.replace(reRegExpChars, '\\$&') : string; } module.exports = escapeRegExp; },{"../internal/baseToString":326}],354:[function(require,module,exports){ (function (global){ var isNative = require('./lang/isNative'); var reThis = /\bthis\b/; var objectProto = Object.prototype; var document = (document = global.window) && document.document; var propertyIsEnumerable = objectProto.propertyIsEnumerable; var support = {}; (function(x) { support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); support.funcNames = typeof Function.name == 'string'; try { support.dom = document.createDocumentFragment().nodeType === 11; } catch(e) { support.dom = false; } try { support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); } catch(e) { support.nonEnumArgs = true; } }(0, 0)); module.exports = support; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./lang/isNative":345}],355:[function(require,module,exports){ function identity(value) { return value; } module.exports = identity; },{}],356:[function(require,module,exports){ require('./browser_loader'); var AWS = require('./core'); if (typeof window !== 'undefined') window.AWS = AWS; if (typeof module !== 'undefined') module.exports = AWS; if (typeof self !== 'undefined') self.AWS = AWS; require('../clients/browser_default'); },{"../clients/browser_default":140,"./browser_loader":198,"./core":201}]},{},[356]); ================================================ FILE: ionic-angular/official/aws/src/index.html ================================================ Ionic App ================================================ FILE: ionic-angular/official/aws/src/pages/about/about.html ================================================ About This is a starter project that leverages AWS Mobile Hub services to power the app. The following services are utilized:
  • Cognito (Authentication)
  • DynamoDB (Data Storage)
  • S3 (File Storage)
================================================ FILE: ionic-angular/official/aws/src/pages/about/about.scss ================================================ page-about { } ================================================ FILE: ionic-angular/official/aws/src/pages/about/about.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'page-about', templateUrl: 'about.html' }) export class AboutPage { constructor() { } } ================================================ FILE: ionic-angular/official/aws/src/pages/account/account.html ================================================ Account
username {{ username }} {{ attr.getName() }} {{ attr.getValue() }}
================================================ FILE: ionic-angular/official/aws/src/pages/account/account.scss ================================================ page-account { .avatar-input { display: none; } .avatar { display: block; width: 150px; height: 150px; border-radius: 50%; background-repeat: no-repeat; background-position: center center; background-size: cover; margin: 0 auto; border: 5px solid #f1f1f1; box-shadow: 0 0 5px #999; } } ================================================ FILE: ionic-angular/official/aws/src/pages/account/account.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { LoadingController, NavController } from 'ionic-angular'; import { Auth, Storage, Logger } from 'aws-amplify'; import { Camera, CameraOptions } from '@ionic-native/camera'; const logger = new Logger('Account'); @Component({ selector: 'page-account', templateUrl: 'account.html' }) export class AccountPage { @ViewChild('avatar') avatarInput; public avatarPhoto: string; public selectedPhoto: Blob; public userId: string; public username: string; public attributes: any; constructor(public navCtrl: NavController, public camera: Camera, public loadingCtrl: LoadingController) { this.attributes = []; this.avatarPhoto = null; this.selectedPhoto = null; Auth.currentUserInfo() .then(info => { this.userId = info.id; this.username = info.username; this.attributes = []; if (info['email']) { this.attributes.push({ name: 'email', value: info['email']}); } if (info['phone_number']) { this.attributes.push({ name: 'phone_number', value: info['phone_number']}); } this.refreshAvatar(); }); } refreshAvatar() { Storage.get(this.userId + '/avatar') .then(url => this.avatarPhoto = (url as string)); } dataURItoBlob(dataURI) { // code adapted from: http://stackoverflow.com/questions/33486352/cant-upload-image-to-aws-s3-from-ionic-camera let binary = atob(dataURI.split(',')[1]); let array = []; for (let i = 0; i < binary.length; i++) { array.push(binary.charCodeAt(i)); } return new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); }; selectAvatar() { const options: CameraOptions = { quality: 100, targetHeight: 200, targetWidth: 200, destinationType: this.camera.DestinationType.DATA_URL, encodingType: this.camera.EncodingType.JPEG, mediaType: this.camera.MediaType.PICTURE } this.camera.getPicture(options).then((imageData) => { // imageData is either a base64 encoded string or a file URI // If it's base64: this.selectedPhoto = this.dataURItoBlob('data:image/jpeg;base64,' + imageData); this.upload(); }, (err) => { this.avatarInput.nativeElement.click(); // Handle error }); } uploadFromFile(event) { const files = event.target.files; logger.debug('Uploading', files) const file = files[0]; const { type } = file; Storage.put(this.userId + '/avatar', file, { contentType: type }) .then(() => this.refreshAvatar()) .catch(err => logger.error(err)); } upload() { if (this.selectedPhoto) { let loading = this.loadingCtrl.create({ content: 'Uploading image...' }); loading.present(); Storage.put(this.userId + '/avatar', this.selectedPhoto, { contentType: 'image/jpeg' }) .then(() => { this.refreshAvatar() loading.dismiss(); }) .catch(err => { logger.error(err) loading.dismiss(); }); } } } ================================================ FILE: ionic-angular/official/aws/src/pages/confirm/confirm.html ================================================

Please enter the confirmation code sent to your email to verify your account:

Confirmation Code

Haven't received the confirmation code email yet? Resend

================================================ FILE: ionic-angular/official/aws/src/pages/confirm/confirm.scss ================================================ ================================================ FILE: ionic-angular/official/aws/src/pages/confirm/confirm.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { LoginPage } from '../login/login'; const logger = new Logger('Confirm'); @Component({ selector: 'page-confirm', templateUrl: 'confirm.html' }) export class ConfirmPage { public code: string; public username: string; constructor(public navCtrl: NavController, public navParams: NavParams) { this.username = navParams.get('username'); } confirm() { Auth.confirmSignUp(this.username, this.code) .then(() => this.navCtrl.push(LoginPage)) .catch(err => logger.debug('confirm error', err)); } resendCode() { Auth.resendSignUp(this.username) .then(() => logger.debug('sent')) .catch(err => logger.debug('send code error', err)); } } ================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignIn/confirmSignIn.html ================================================

Please enter the confirmation code sent to your email to verify your account:

Confirmation Code
================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignIn/confirmSignIn.scss ================================================ ================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignIn/confirmSignIn.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { TabsPage } from '../tabs/tabs'; import { LoginPage } from '../login/login'; const logger = new Logger('ConfirmSignIn'); @Component({ selector: 'page-confirm-signin', templateUrl: 'confirmSignIn.html' }) export class ConfirmSignInPage { public code: string; public user: any; constructor(public navCtrl: NavController, public navParams: NavParams) { this.user = navParams.get('user'); } confirm() { Auth.confirmSignIn(this.user, this.code, null) .then(() => this.navCtrl.push(TabsPage)) .catch(err => logger.debug('confirm error', err)); } login() { this.navCtrl.push(LoginPage); } } ================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignUp/confirmSignUp.html ================================================

Please enter the confirmation code sent to your email to verify your account:

Confirmation Code

Haven't received the confirmation code email yet? Resend

================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignUp/confirmSignUp.scss ================================================ ================================================ FILE: ionic-angular/official/aws/src/pages/confirmSignUp/confirmSignUp.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { LoginPage } from '../login/login'; const logger = new Logger('ConfirmSignUp'); @Component({ selector: 'page-confirm-signup', templateUrl: 'confirmSignUp.html' }) export class ConfirmSignUpPage { public code: string; public username: string; constructor(public navCtrl: NavController, public navParams: NavParams) { this.username = navParams.get('username'); } confirm() { Auth.confirmSignUp(this.username, this.code) .then(() => this.navCtrl.push(LoginPage)) .catch(err => logger.debug('confirm error', err)); } resendCode() { Auth.resendSignUp(this.username) .then(() => logger.debug('sent')) .catch(err => logger.debug('send code error', err)); } } ================================================ FILE: ionic-angular/official/aws/src/pages/login/login.html ================================================
Username Password

Don't have an account yet? Create one.

================================================ FILE: ionic-angular/official/aws/src/pages/login/login.scss ================================================ page-login { .logo { padding: 20px 0px 0px 0px; text-align: center; img { max-width: 150px; } } } ================================================ FILE: ionic-angular/official/aws/src/pages/login/login.ts ================================================ import { Component } from '@angular/core'; import { NavController, LoadingController } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { TabsPage } from '../tabs/tabs'; import { SignupPage } from '../signup/signup'; import { ConfirmSignInPage } from '../confirmSignIn/confirmSignIn'; const logger = new Logger('Login'); export class LoginDetails { username: string; password: string; } @Component({ selector: 'page-login', templateUrl: 'login.html' }) export class LoginPage { public loginDetails: LoginDetails; constructor(public navCtrl: NavController, public loadingCtrl: LoadingController) { this.loginDetails = new LoginDetails(); } login() { let loading = this.loadingCtrl.create({ content: 'Please wait...' }); loading.present(); let details = this.loginDetails; logger.info('login..'); Auth.signIn(details.username, details.password) .then(user => { logger.debug('signed in user', user); if (user.challengeName === 'SMS_MFA') { this.navCtrl.push(ConfirmSignInPage, { 'user': user }); } else { this.navCtrl.setRoot(TabsPage); } }) .catch(err => logger.debug('errrror', err)) .then(() => loading.dismiss()); } signup() { this.navCtrl.push(SignupPage); } } ================================================ FILE: ionic-angular/official/aws/src/pages/settings/settings.html ================================================ Settings ================================================ FILE: ionic-angular/official/aws/src/pages/settings/settings.ts ================================================ import { Component } from '@angular/core'; import { App } from 'ionic-angular'; import { Auth } from 'aws-amplify'; import { LoginPage } from '../login/login'; import { AboutPage } from '../about/about'; import { AccountPage } from '../account/account'; @Component({ templateUrl: 'settings.html' }) export class SettingsPage { public aboutPage = AboutPage; public accountPage = AccountPage; constructor(public app: App) { } logout() { Auth.signOut() .then(() => this.app.getRootNav().setRoot(LoginPage)); } } ================================================ FILE: ionic-angular/official/aws/src/pages/signup/signup.html ================================================

{{error.message}}

Username Email Phone Number Password
================================================ FILE: ionic-angular/official/aws/src/pages/signup/signup.scss ================================================ page-signup { .logo { padding: 20px 0px 0px 0px; text-align: center; img { max-width: 150px; } } } ================================================ FILE: ionic-angular/official/aws/src/pages/signup/signup.ts ================================================ import { Component } from '@angular/core'; import { NavController, LoadingController } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { LoginPage } from '../login/login'; import { ConfirmSignUpPage } from '../confirmSignUp/confirmSignUp'; const logger = new Logger('SignUp'); export class UserDetails { username: string; email: string; phone_number: string; password: string; } @Component({ selector: 'page-signup', templateUrl: 'signup.html' }) export class SignupPage { public userDetails: UserDetails; error: any; constructor(public navCtrl: NavController, public loadingCtrl: LoadingController) { this.userDetails = new UserDetails(); } signup() { let loading = this.loadingCtrl.create({ content: 'Please wait...' }); loading.present(); let details = this.userDetails; this.error = null; logger.debug('register'); Auth.signUp(details.username, details.password, details.email, details.phone_number) .then(user => { this.navCtrl.push(ConfirmSignUpPage, { username: details.username }); }) .catch(err => { this.error = err; }) .then(() => loading.dismiss()); } login() { this.navCtrl.push(LoginPage); } } ================================================ FILE: ionic-angular/official/aws/src/pages/tabs/tabs.html ================================================ ================================================ FILE: ionic-angular/official/aws/src/pages/tabs/tabs.ts ================================================ import { Component } from '@angular/core'; import { SettingsPage } from '../settings/settings'; import { TasksPage } from '../tasks/tasks'; @Component({ templateUrl: 'tabs.html' }) export class TabsPage { tab1Root = TasksPage; tab2Root = SettingsPage; constructor() { } } ================================================ FILE: ionic-angular/official/aws/src/pages/tasks/tasks.html ================================================ Tasks ================================================ FILE: ionic-angular/official/aws/src/pages/tasks/tasks.scss ================================================ ================================================ FILE: ionic-angular/official/aws/src/pages/tasks/tasks.ts ================================================ import { Component } from '@angular/core'; import { NavController, ModalController } from 'ionic-angular'; import { Auth, Logger } from 'aws-amplify'; import { TasksCreatePage } from '../tasks-create/tasks-create'; const aws_exports = require('../../aws-exports').default; import { DynamoDB } from '../../providers/providers'; const logger = new Logger('Tasks'); @Component({ selector: 'page-tasks', templateUrl: 'tasks.html' }) export class TasksPage { public items: any; public refresher: any; private taskTable: string = aws_exports.aws_resource_name_prefix + '-tasks'; private userId: string; constructor(public navCtrl: NavController, public modalCtrl: ModalController, public db: DynamoDB) { Auth.currentCredentials() .then(credentials => { this.userId = credentials.identityId; this.refreshTasks(); }) .catch(err => logger.debug('get current credentials err', err)); } refreshData(refresher) { this.refresher = refresher; this.refreshTasks() } refreshTasks() { const params = { 'TableName': this.taskTable, 'IndexName': 'DateSorted', 'KeyConditionExpression': "#userId = :userId", 'ExpressionAttributeNames': { '#userId': 'userId' }, 'ExpressionAttributeValues': { ':userId': this.userId }, 'ScanIndexForward': false }; this.db.getDocumentClient() .then(client => client.query(params).promise()) .then(data => { this.items = data.Items; }) .catch(err => logger.debug('error in refresh tasks', err)) .then(() => { this.refresher && this.refresher.complete() }); } generateId() { var len = 16; var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var charLength = chars.length; var result = ""; let randoms = window.crypto.getRandomValues(new Uint32Array(len)); for(var i = 0; i < len; i++) { result += chars[randoms[i] % charLength]; } return result.toLowerCase(); } addTask() { let id = this.generateId(); let addModal = this.modalCtrl.create(TasksCreatePage, { 'id': id }); addModal.onDidDismiss(item => { if (!item) { return; } item.userId = this.userId; item.created = (new Date().getTime() / 1000); const params = { 'TableName': this.taskTable, 'Item': item, 'ConditionExpression': 'attribute_not_exists(id)' }; this.db.getDocumentClient() .then(client => client.put(params).promise()) .then(data => this.refreshTasks()) .catch(err => logger.debug('add task error', err)); }) addModal.present(); } deleteTask(task, index) { const params = { 'TableName': this.taskTable, 'Key': { 'userId': this.userId, 'taskId': task.taskId } }; this.db.getDocumentClient() .then(client => client.delete(params).promise()) .then(data => this.items.splice(index, 1)) .catch((err) => logger.debug('delete task error', err)); } } ================================================ FILE: ionic-angular/official/aws/src/pages/tasks-create/tasks-create.html ================================================ New Task Category Todo Errand Task Description
================================================ FILE: ionic-angular/official/aws/src/pages/tasks-create/tasks-create.scss ================================================ page-tasks-create { .custom-item { flex-direction: column; textarea { margin: 0; } } } ================================================ FILE: ionic-angular/official/aws/src/pages/tasks-create/tasks-create.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams, ViewController, Platform } from 'ionic-angular'; @Component({ selector: 'page-tasks-create', templateUrl: 'tasks-create.html' }) export class TasksCreatePage { isReadyToSave: boolean; item: any; isAndroid: boolean; constructor(public navCtrl: NavController, public navParams: NavParams, public viewCtrl: ViewController, public platform: Platform) { this.isAndroid = platform.is('android'); this.item = { 'taskId': navParams.get('id'), 'category': 'Todo' }; this.isReadyToSave = true; } ionViewDidLoad() { } cancel() { this.viewCtrl.dismiss(); } done() { this.viewCtrl.dismiss(this.item); } } ================================================ FILE: ionic-angular/official/aws/src/providers/aws.dynamodb.ts ================================================ import { Injectable } from '@angular/core'; import { Auth, Logger } from 'aws-amplify'; import AWS from 'aws-sdk'; const aws_exports = require('../aws-exports').default; AWS.config.region = aws_exports.aws_project_region; AWS.config.update({customUserAgent: 'ionic-starter'}); const logger = new Logger('DynamoDB'); @Injectable() export class DynamoDB { constructor() { } getDocumentClient() { return Auth.currentCredentials() .then(credentials => new AWS.DynamoDB.DocumentClient({ credentials: credentials })) .catch(err => { logger.debug('error getting document client', err); throw err; }); } } ================================================ FILE: ionic-angular/official/aws/src/providers/providers.ts ================================================ import { DynamoDB } from './aws.dynamodb'; export { DynamoDB }; ================================================ FILE: ionic-angular/official/blank/ionic.starter.json ================================================ { "name": "Blank Starter", "baseref": "main", "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run build" } } ================================================ FILE: ionic-angular/official/blank/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { HomePage } from '../pages/home/home'; @Component({ templateUrl: 'app.html' }) export class MyApp { rootPage:any = HomePage; constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. statusBar.styleDefault(); splashScreen.hide(); }); } } ================================================ FILE: ionic-angular/official/blank/src/app/app.html ================================================ ================================================ FILE: ionic-angular/official/blank/src/app/app.module.ts ================================================ import { BrowserModule } from '@angular/platform-browser'; import { ErrorHandler, NgModule } from '@angular/core'; import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { SplashScreen } from '@ionic-native/splash-screen'; import { StatusBar } from '@ionic-native/status-bar'; import { MyApp } from './app.component'; import { HomePage } from '../pages/home/home'; @NgModule({ declarations: [ MyApp, HomePage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ MyApp, HomePage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} ================================================ FILE: ionic-angular/official/blank/src/pages/home/home.html ================================================ Ionic Blank The world is your oyster.

If you get lost, the docs will be your guide.

================================================ FILE: ionic-angular/official/blank/src/pages/home/home.scss ================================================ page-home { } ================================================ FILE: ionic-angular/official/blank/src/pages/home/home.ts ================================================ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/sidemenu/ionic.starter.json ================================================ { "name": "Sidemenu Starter", "baseref": "main", "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run build" } } ================================================ FILE: ionic-angular/official/sidemenu/src/app/app.component.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { Nav, Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { HomePage } from '../pages/home/home'; import { ListPage } from '../pages/list/list'; @Component({ templateUrl: 'app.html' }) export class MyApp { @ViewChild(Nav) nav: Nav; rootPage: any = HomePage; pages: Array<{title: string, component: any}>; constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen) { this.initializeApp(); // used for an example of ngFor and navigation this.pages = [ { title: 'Home', component: HomePage }, { title: 'List', component: ListPage } ]; } initializeApp() { this.platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.statusBar.styleDefault(); this.splashScreen.hide(); }); } openPage(page) { // Reset the content nav to have just this page // we wouldn't want the back button to show in this scenario this.nav.setRoot(page.component); } } ================================================ FILE: ionic-angular/official/sidemenu/src/app/app.html ================================================ Menu ================================================ FILE: ionic-angular/official/sidemenu/src/app/app.module.ts ================================================ import { BrowserModule } from '@angular/platform-browser'; import { ErrorHandler, NgModule } from '@angular/core'; import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { MyApp } from './app.component'; import { HomePage } from '../pages/home/home'; import { ListPage } from '../pages/list/list'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; @NgModule({ declarations: [ MyApp, HomePage, ListPage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp), ], bootstrap: [IonicApp], entryComponents: [ MyApp, HomePage, ListPage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} ================================================ FILE: ionic-angular/official/sidemenu/src/pages/home/home.html ================================================ Home

Ionic Menu Starter

If you get lost, the docs will show you the way.

================================================ FILE: ionic-angular/official/sidemenu/src/pages/home/home.scss ================================================ page-home { } ================================================ FILE: ionic-angular/official/sidemenu/src/pages/home/home.ts ================================================ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/sidemenu/src/pages/list/list.html ================================================ List
You navigated here from {{selectedItem.title}}
================================================ FILE: ionic-angular/official/sidemenu/src/pages/list/list.scss ================================================ page-list { } ================================================ FILE: ionic-angular/official/sidemenu/src/pages/list/list.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; @Component({ selector: 'page-list', templateUrl: 'list.html' }) export class ListPage { selectedItem: any; icons: string[]; items: Array<{title: string, note: string, icon: string}>; constructor(public navCtrl: NavController, public navParams: NavParams) { // If we navigated to this page, we will have an item available as a nav param this.selectedItem = navParams.get('item'); // Let's populate this page with some filler content for funzies this.icons = ['flask', 'wifi', 'beer', 'football', 'basketball', 'paper-plane', 'american-football', 'boat', 'bluetooth', 'build']; this.items = []; for (let i = 1; i < 11; i++) { this.items.push({ title: 'Item ' + i, note: 'This is item #' + i, icon: this.icons[Math.floor(Math.random() * this.icons.length)] }); } } itemTapped(event, item) { // That's right, we're pushing to ourselves! this.navCtrl.push(ListPage, { item: item }); } } ================================================ FILE: ionic-angular/official/super/README.md ================================================ # The Ionic Super Starter 🎮 The Ionic Super Starter is a batteries-included starter project for Ionic apps complete with pre-built pages, providers, and best practices for Ionic development. The goal of the Super Starter is to get you from zero to app store faster than before, with a set of opinions from the Ionic team around page layout, data/user management, and project structure. The way to use this starter is to pick and choose the various page types you want use, and remove the ones you don't. If you want a blank slate, this starter isn't for you (use the `blank` type instead). One of the big advances in Ionic was moving from a rigid route-based navigation system to a flexible push/pop navigation system modeled off common native SDKs. We've embraced this pattern to provide a set of reusable pages that can be navigated to anywhere in the app. Take a look at the [Settings page](https://github.com/ionic-team/starters/blob/master/ionic-angular/official/super/src/pages/settings/settings.html) for a cool example of a page navigating to itself to provide a different UI without duplicating code. ## Table of Contents 1. [Getting Started](#getting-started) 2. [Pages](#pages) 3. [Providers](#providers) 4. [i18n](#i18n) (adding languages) ## Getting Started To test this starter out, install the latest version of the Ionic CLI and run: ```bash ionic start mySuperApp super ``` ## Pages The Super Starter comes with a variety of ready-made pages. These pages help you assemble common building blocks for your app so you can focus on your unique features and branding. The app loads with the `FirstRunPage` set to `TutorialPage` as the default. If the user has already gone through this page once, it will be skipped the next time they load the app. If the tutorial is skipped but the user hasn't logged in yet, the Welcome page will be displayed which is a "splash" prompting the user to log in or create an account. Once the user is authenticated, the app will load with the `MainPage` which is set to be the `TabsPage` as the default. The entry and main pages can be configured easily by updating the corresponding variables in [src/pages/index.ts](https://github.com/ionic-team/starters/blob/master/ionic-angular/official/super/src/pages/index.ts). Please read the [Pages](https://github.com/ionic-team/starters/tree/master/ionic-angular/official/super/src/pages) readme, and the readme for each page in the source for more documentation on each. ## Providers The Super Starter comes with some basic implementations of common providers. ### User The `User` provider is used to authenticate users through its `login(accountInfo)` and `signup(accountInfo)` methods, which perform `POST` requests to an API endpoint that you will need to configure. ### Api The `Api` provider is a simple CRUD frontend to an API. Simply put the root of your API url in the Api class and call get/post/put/patch/delete ## i18n Ionic Super Starter comes with internationalization (i18n) out of the box with [ngx-translate](https://github.com/ngx-translate/core). This makes it easy to change the text used in the app by modifying only one file. ### Adding Languages To add new languages, add new files to the `src/assets/i18n` directory, following the pattern of LANGCODE.json where LANGCODE is the language/locale code (ex: en/gb/de/es/etc.). ### Changing the Language To change the language of the app, edit `src/app/app.component.ts` and modify `translate.use('en')` to use the LANGCODE from `src/assets/i18n/` ================================================ FILE: ionic-angular/official/super/ionic.starter.json ================================================ { "name": "Ionic Super Starter", "baseref": "main", "welcome": "Welcome to the \u001b[36m\u001b[1mIONIC SUPER STARTER\u001b[22m\u001b[39m!\n\nThe Super Starter comes packed with ready-to-use page designs for common mobile designs like master detail, login/signup, settings, tutorials, and more. Pick and choose which page types you want to use and remove the ones you don't!\n\nFor more details, please see the project README: \u001b[1mhttps://github.com/ionic-team/starters/blob/master/ionic-angular/official/super/README.md\u001b[22m", "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run build" }, "packageJson": { "dependencies": { "@ionic-native/camera": "4.3.3", "@ngx-translate/core": "8.0.0", "@ngx-translate/http-loader": "^2.0.0" } } } ================================================ FILE: ionic-angular/official/super/src/app/app.component.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { SplashScreen } from '@ionic-native/splash-screen'; import { StatusBar } from '@ionic-native/status-bar'; import { TranslateService } from '@ngx-translate/core'; import { Config, Nav, Platform } from 'ionic-angular'; import { FirstRunPage } from '../pages'; import { Settings } from '../providers'; @Component({ template: ` Pages ` }) export class MyApp { rootPage = FirstRunPage; @ViewChild(Nav) nav: Nav; pages: any[] = [ { title: 'Tutorial', component: 'TutorialPage' }, { title: 'Welcome', component: 'WelcomePage' }, { title: 'Tabs', component: 'TabsPage' }, { title: 'Cards', component: 'CardsPage' }, { title: 'Content', component: 'ContentPage' }, { title: 'Login', component: 'LoginPage' }, { title: 'Signup', component: 'SignupPage' }, { title: 'Master Detail', component: 'ListMasterPage' }, { title: 'Menu', component: 'MenuPage' }, { title: 'Settings', component: 'SettingsPage' }, { title: 'Search', component: 'SearchPage' } ] constructor(private translate: TranslateService, platform: Platform, settings: Settings, private config: Config, private statusBar: StatusBar, private splashScreen: SplashScreen) { platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.statusBar.styleDefault(); this.splashScreen.hide(); }); this.initTranslate(); } initTranslate() { // Set the default language for translation strings, and the current language. this.translate.setDefaultLang('en'); const browserLang = this.translate.getBrowserLang(); if (browserLang) { if (browserLang === 'zh') { const browserCultureLang = this.translate.getBrowserCultureLang(); if (browserCultureLang.match(/-CN|CHS|Hans/i)) { this.translate.use('zh-cmn-Hans'); } else if (browserCultureLang.match(/-TW|CHT|Hant/i)) { this.translate.use('zh-cmn-Hant'); } } else { this.translate.use(this.translate.getBrowserLang()); } } else { this.translate.use('en'); // Set your language here } this.translate.get(['BACK_BUTTON_TEXT']).subscribe(values => { this.config.set('ios', 'backButtonText', values.BACK_BUTTON_TEXT); }); } openPage(page) { // Reset the content nav to have just this page // we wouldn't want the back button to show in this scenario this.nav.setRoot(page.component); } } ================================================ FILE: ionic-angular/official/super/src/app/app.module.ts ================================================ import { HttpClient, HttpClientModule } from '@angular/common/http'; import { ErrorHandler, NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { Camera } from '@ionic-native/camera'; import { SplashScreen } from '@ionic-native/splash-screen'; import { StatusBar } from '@ionic-native/status-bar'; import { IonicStorageModule, Storage } from '@ionic/storage'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular'; import { Items } from '../mocks/providers/items'; import { Settings, User, Api } from '../providers'; import { MyApp } from './app.component'; // The translate loader needs to know where to load i18n files // in Ionic's static asset pipeline. export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } export function provideSettings(storage: Storage) { /** * The Settings provider takes a set of default settings for your app. * * You can add new settings options at any time. Once the settings are saved, * these values will not overwrite the saved values (this can be done manually if desired). */ return new Settings(storage, { option1: true, option2: 'Ionitron J. Framework', option3: '3', option4: 'Hello' }); } @NgModule({ declarations: [ MyApp ], imports: [ BrowserModule, HttpClientModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: (createTranslateLoader), deps: [HttpClient] } }), IonicModule.forRoot(MyApp), IonicStorageModule.forRoot() ], bootstrap: [IonicApp], entryComponents: [ MyApp ], providers: [ Api, Items, User, Camera, SplashScreen, StatusBar, { provide: Settings, useFactory: provideSettings, deps: [Storage] }, // Keep this to enable Ionic's runtime error handling during development { provide: ErrorHandler, useClass: IonicErrorHandler } ] }) export class AppModule { } ================================================ FILE: ionic-angular/official/super/src/app/app.scss ================================================ // https://ionicframework.com/docs/v2/theming/ // App Global Sass // -------------------------------------------------- // Put style rules here that you want to apply globally. These // styles are for the entire app and not just one component. // Additionally, this file can be also used as an entry point // to import other Sass files to be included in the output CSS. // // Shared Sass variables, which can be used to adjust Ionic's // default Sass variables, belong in "theme/variables.scss". // // To declare rules for a specific mode, create a child rule // for the .md, .ios, or .wp mode classes. The mode class is // automatically applied to the element in the app. ================================================ FILE: ionic-angular/official/super/src/assets/i18n/ar.json ================================================ { "BACK_BUTTON_TEXT": "رجوع", "NAME": "الاسم", "EMAIL": "البريد الإلكتروني", "USERNAME": "اسم المستخدم", "PASSWORD": "كلمة السر", "LOGIN": "تسجيل الدخول", "SIGNUP": "انشاء الحساب", "TAB1_TITLE": "عناصر", "TAB2_TITLE": "بحث", "TAB3_TITLE": "إعدادات", "MAP_TITLE": "خريطة", "TUTORIAL_SKIP_BUTTON": "تخطى", "TUTORIAL_CONTINUE_BUTTON": "استمر", "TUTORIAL_SLIDE1_TITLE": "مرحبا بكم في عدة البدء Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter عبارة عن عدة لبدء التطوير بواسطة Ionic. وهي تتميز بالعديد من الصفحات وأفضل الممارسات.", "TUTORIAL_SLIDE2_TITLE": "كيفية استخدام Ionic Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "يمكنك تجميع أنواع الصفحات المختلفة التي ترغب بها وإزالة الباقي. وتوفر عدة البدء ​​العديد من تخطيطات الصفحات الاكثر شيوعا في التطبيقات النقالة، مثل صفحات تسجيل الدخول وانشاء الحساب، علامات التبويب، وهذه الصفحة التعليمية.", "TUTORIAL_SLIDE3_TITLE": "كيفية الشروع", "TUTORIAL_SLIDE3_DESCRIPTION": "هل تحتاج إلى مساعدة؟ يمكنك الاطلاع على README لبرنامج تعليمي كامل على Ionic Super Starter", "TUTORIAL_SLIDE4_TITLE": "مستعد للعب؟", "WELCOME_INTRO": "نقطة الانطلاق لتطبيق Ionic العظيم الخاص بك", "SETTINGS_TITLE": "إعدادات", "SETTINGS_OPTION1": "خيار 1", "SETTINGS_OPTION2": "خيار 2", "SETTINGS_OPTION3": "خيار 3", "SETTINGS_OPTION4": "خيار 4", "SETTINGS_PROFILE_BUTTON": "تعديل الملف الشخصي", "SETTINGS_PAGE_PROFILE": "تعديل الملف الشخصي", "WELCOME_TITLE": "مرحبا", "LOGIN_TITLE": "تسجيل الدخول", "LOGIN_ERROR": "تعذر تسجيل الدخول. يرجى التحقق من معلومات حسابك وإعادة المحاولة.", "LOGIN_BUTTON": "تسجيل الدخول", "SIGNUP_TITLE": "انشاء الحساب", "SIGNUP_ERROR": "تعذر إنشاء الحساب. يرجى التحقق من معلومات حسابك وإعادة المحاولة.", "SIGNUP_BUTTON": "انشاء الحساب", "LIST_MASTER_TITLE": "عناصر", "ITEM_CREATE_TITLE": "عنصر جديد", "ITEM_CREATE_CHOOSE_IMAGE": "إضافة صورة", "ITEM_NAME_PLACEHOLDER": "الاسم", "ITEM_ABOUT_PLACEHOLDER": "عن", "DONE_BUTTON": "انهاء", "CANCEL_BUTTON": "الغاء", "DELETE_BUTTON": "حذف", "CARDS_TITLE": "اجتماعي", "SEARCH_TITLE": "بحث", "SEARCH_PLACEHOLDER": "ابحث في قائمة العناصر، مثل \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/bs.json ================================================ { "NAME": "Ime", "PASSWORD": "Šifra", "EMAIL": "E-mail", "LOGIN": "Prijava", "SIGNUP": "Registracija", "TAB1_TITLE": "Stavke", "TAB2_TITLE": "Traži", "TAB3_TITLE": "Postavke", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Dobrodošli u Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter je potpuno funkcionalna početna aplikacija sa mnogim unaprijed pripremljenim stranicama uz korištenje najboljih praksi.", "TUTORIAL_SLIDE2_TITLE": "Kako koristiti Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Sastavite različite vrste stranica koje želite, a uklonite one koje ne želite. Obezbjedili smo vam mnoge uobičajne izglede stranica, kao što su stranice za registraciju i prijavu korisnika, tabulatore, a i ovu stranicu za učenje.", "TUTORIAL_SLIDE3_TITLE": "Počinjemo", "TUTORIAL_SLIDE3_DESCRIPTION": "Trebate pomoć? Pročitajte Super Starter README za cijeli tutorial.", "SETTINGS_TITLE": "Postavke", "SETTINGS_OPTION1": "Opcija 1", "SETTINGS_OPTION2": "Opcija 2", "SETTINGS_OPTION3": "Opcija 3", "SETTINGS_OPTION4": "Opcija 4", "SETTINGS_PAGE_PROFILE": "Uredi profil", "WELCOME_TITLE": "Dobrodošli", "LOGIN_TITLE": "Prijavi se", "LOGIN_ERROR": "Prijava nije uspjela. Molimo provjerite vaše podatke za prijavu, a zatim pokušajte ponovo.", "LOGIN_BUTTON": "Prijava", "SIGNUP_TITLE": "Registruj se", "SIGNUP_ERROR": "Nije moguće kreirati novi korisnički račun. Molimo vas provjerite podatke, a zatim pokušajte ponovo.", "SIGNUP_BUTTON": "Registracija", "LIST_MASTER_TITLE": "Stavke", "ITEM_CREATE_TITLE": "Nova stavka", "ITEM_CREATE_CHOOSE_IMAGE": "Dodaj sliku", "CARDS_TITLE": "Socijalno", "SEARCH_TITLE": "Traži" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/by.json ================================================ { "NAME": "Імя", "EMAIL": "Email", "PASSWORD": "Пароль", "LOGIN": "Увайсці", "SIGNUP": "Зарэгістравацца", "TAB1_TITLE": "Спіс", "TAB2_TITLE": "Пошук", "TAB3_TITLE": "Налады", "MAP_TITLE": "Мапа", "TUTORIAL_SLIDE1_TITLE": "Вітаем ў Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter – гэта паўнавартасны пачатаковы пакет для Ionic са шматлікімі ўзорамі старонак і прыкладамі лепшых практык.", "TUTORIAL_SLIDE2_TITLE": "Як карыстацца", "TUTORIAL_SLIDE2_DESCRIPTION": "Складайце старонкі розных кшталтаў з патрэбных вам элементаў і выдаляйце непатрэбныя. Сярод шматлікіх тыповых макетаў – \"Уваход\" і \"Рэгістрацыя\", старонка з закладкамі і гэтая пачатковая старонка з падказкамі.", "TUTORIAL_SLIDE3_TITLE": "З чаго пачаць", "TUTORIAL_SLIDE3_DESCRIPTION": "Патрэбна дапамога? Кіраўніцтвы ды тлумачэнні можна знайсці ў README-файлах унутры праекту.", "SETTINGS_TITLE": "Налады", "SETTINGS_OPTION1": "Налада 1", "SETTINGS_OPTION2": "Налада 2", "SETTINGS_OPTION3": "Налада 3", "SETTINGS_OPTION4": "Налада 4", "SETTINGS_PAGE_PROFILE": "Профіль", "WELCOME_TITLE": "Прывітанне", "LOGIN_TITLE": "Уваход", "LOGIN_ERROR": "Не атрымалася ўвайсці ў сістэму. Калі ласка, праверце ўведзеныя ўліковыя дадзеныя і паспрабуйце зноў.", "LOGIN_BUTTON": "Увайсці", "SIGNUP_TITLE": "Рэгістрацыя", "SIGNUP_ERROR": "Не атрымалася стварыць уліковы запіс. Калі ласка, праверце ўведзеныя ўліковыя дадзеныя і паспрабуйце зноў.", "SIGNUP_BUTTON": "Зарэгістравацца", "LIST_MASTER_TITLE": "Спіс", "ITEM_CREATE_TITLE": "Дадаць у спіс", "ITEM_CREATE_CHOOSE_IMAGE": "Дадаць выяву", "CARDS_TITLE": "Суполкі", "SEARCH_TITLE": "Пошук" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/da.json ================================================ { "NAME": "Navn", "PASSWORD": "Adgangskode", "EMAIL": "Email", "LOGIN": "Log Ind", "SIGNUP": "Tilmeld", "TAB1_TITLE": "Poster", "TAB2_TITLE": "Søg", "TAB3_TITLE": "Indstillinger", "MAP_TITLE": "Kort", "TUTORIAL_SLIDE1_TITLE": "Velkommen til Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter er en fuldt funktionsdygtig Ionic starter med mange køreklare sidetyper bygget efter best practices.", "TUTORIAL_SLIDE2_TITLE": "Sådan bruges Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Sammensæt de forskellige sidetyper du ønsker at bruge og fjern dem du ikke har behov for. Vi leverer mange gænse mobil app sider, som f.eks. login- og registreringssider, faneblade, og denne introduktionsside.", "TUTORIAL_SLIDE3_TITLE": "Kom i gang", "TUTORIAL_SLIDE3_DESCRIPTION": "Har du brug for hjælp? Kig på Super Starter README for en omfattende forklaring.", "SETTINGS_TITLE": "Indstillinger", "SETTINGS_OPTION1": "Mulighed 1", "SETTINGS_OPTION2": "Mulighed 2", "SETTINGS_OPTION3": "Mulighed 3", "SETTINGS_OPTION4": "Mulighed 4", "SETTINGS_PAGE_PROFILE": "Rediger Profil", "WELCOME_TITLE": "Velkommen", "LOGIN_TITLE": "Log ind", "LOGIN_ERROR": "Fejl ved log ind. Kontroller venligst kontooplysningerne og prøv igen.", "LOGIN_BUTTON": "Log ind", "SIGNUP_TITLE": "Registrer", "SIGNUP_ERROR": "Fejl ved oprettelse. Kontroller venligst kontooplysningerne og prøv igen.", "SIGNUP_BUTTON": "Registrer", "LIST_MASTER_TITLE": "Poster", "ITEM_CREATE_TITLE": "Ny post", "ITEM_CREATE_CHOOSE_IMAGE": "Tilføj billede", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Søg" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/de.json ================================================ { "BACK_BUTTON_TEXT": "Zurück", "NAME": "Name", "PASSWORD": "Passwort", "EMAIL": "Email", "LOGIN": "Anmelden", "SIGNUP": "Registrieren", "CANCEL_BUTTON": "Schließen", "TAB1_TITLE": "Items", "TAB2_TITLE": "Suche", "TAB3_TITLE": "Einstellung", "MAP_TITLE": "Karte", "TUTORIAL_SLIDE1_TITLE": "Hallo Ionic Super Starter App", "TUTORIAL_SLIDE1_DESCRIPTION": "Die Ionic Super Starter App ist eine umfangreiche Starter App mit vielen vorgefertigten Seiten und Best Practices.", "TUTORIAL_SLIDE2_TITLE": "Wie soll man die Super Starter App verwenden", "TUTORIAL_SLIDE2_DESCRIPTION": "Nutze und bearbeite die Funktionen und Seiten die du benötigst und lösche den Rest. Wähle aus einer Vielzahl an Layouts, wie Anmelden, Registrieren, Tabs und einer Tutorial Seite.", "TUTORIAL_SLIDE3_TITLE": "Los gehts", "TUTORIAL_SLIDE3_DESCRIPTION": "Du brauchst Hilfe? Sieh dir das README File an um mehr zu erfahren.", "TUTORIAL_CONTINUE_BUTTON": "Fortfahren", "WELCOME_INTRO": "Der Startpunkt für Deine nächste tolle Ionic App", "SETTINGS_TITLE": "Einstellungen", "SETTINGS_OPTION1": "Option 1", "SETTINGS_OPTION2": "Option 2", "SETTINGS_OPTION3": "Option 3", "SETTINGS_OPTION4": "Option 4", "SETTINGS_PAGE_PROFILE": "Profil ändern", "WELCOME_TITLE": "Willkommen", "LOGIN_TITLE": "Anmelden", "LOGIN_ERROR": "Fehler beim Anmelden, bitte überprüfe deine Informationen und versuche es erneut.", "LOGIN_BUTTON": "Anmelden", "SIGNUP_TITLE": "Registrieren", "SIGNUP_ERROR": "Fehler beim Registrieren, bitte überprüfe deine Informationen und versuche es erneut.", "SIGNUP_BUTTON": "Registrieren", "LIST_MASTER_TITLE": "Artikel", "ITEM_CREATE_TITLE": "Neuer Artikel", "ITEM_CREATE_CHOOSE_IMAGE": "Artikel hinzufügen", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Suche", "SEARCH_PLACEHOLDER": "Suche in der Artikel-Liste, z.B. \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/el.json ================================================ { "NAME": "Όνομα", "PASSWORD": "Κωδικός", "EMAIL": "Email", "LOGIN": "Σύνδεση", "SIGNUP": "Εγγραφή", "TAB1_TITLE": "Αντικείμενα", "TAB2_TITLE": "Αναζήτηση", "TAB3_TITLE": "Ρυθμίσεις", "MAP_TITLE": "Χάρτης", "TUTORIAL_SLIDE1_TITLE": "Καλώς ορίσατε στο Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Το Ionic Super Starter είναι ένα πλήρες βοηθητικό πακέτο εκκίνησης προγραμματισμού με το Ionic και περιέχει πληθώρα έτοιμων, ανεπτυγμένων σελίδων αλλά και βέλτιστων-πρακτικών εφαρμογής του.", "TUTORIAL_SLIDE2_TITLE": "Πως να χρησημοποιήσετε το Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Συγκεντρώστε οποιες σελίδες επιθυμείτε και αφαιρέστε εκείνες που δε σας χρειάζονται. Σας παρέχουμε πολλές συνηθισμένες διατάξεις σελίδων, όπως σελίδες σύνδεσης και εγγραφής, με καρτέλες ή επεξήγησης όπως η παρούσα.", "TUTORIAL_SLIDE3_TITLE": "Ξεκινώντας", "TUTORIAL_SLIDE3_DESCRIPTION": "Χρειάζεστε βοήθεια; Ρίχτε μια ματιά στο Super Starter README αρχείο για την πλήρη επεξήγηση.", "SETTINGS_TITLE": "Ρυθμίσεις", "SETTINGS_OPTION1": "Επιλογή 1", "SETTINGS_OPTION2": "Επιλογή 2", "SETTINGS_OPTION3": "Επιλογή 3", "SETTINGS_OPTION4": "Επιλογή 4", "SETTINGS_PAGE_PROFILE": "Επεξεργασία Προφίλ", "WELCOME_TITLE": "Καλώς ορίσατε", "LOGIN_TITLE": "Σύνδεση", "LOGIN_ERROR": "Η σύνδεση ήταν ανέφικτη. Παρακαλούμε ελέγξτε τις πληροφορίες λογαριασμού σας και ξαναπροσπαθήστε.", "LOGIN_BUTTON": "Σύνδεση", "SIGNUP_TITLE": "Εγγραφή", "SIGNUP_ERROR": "Η δημιουργία λογαριασμού ήταν ανέφικτη. Παρακαλούμε ελέγξτε τις πληροφορίες λογαριασμού σας και ξαναπροσπαθήστε.", "SIGNUP_BUTTON": "Εγγραφή", "LIST_MASTER_TITLE": "Αντικείμενα", "ITEM_CREATE_TITLE": "Νέο Αντικείμενο", "ITEM_CREATE_CHOOSE_IMAGE": "Προσθήκη φωτογραφίας", "CARDS_TITLE": "Κοινωνικά", "SEARCH_TITLE": "Αναζήτηση" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/en.json ================================================ { "BACK_BUTTON_TEXT": "Back", "NAME": "Name", "EMAIL": "Email", "USERNAME": "Username", "PASSWORD": "Password", "LOGIN": "Sign in", "SIGNUP": "Sign up", "TAB1_TITLE": "Items", "TAB2_TITLE": "Search", "TAB3_TITLE": "Settings", "MAP_TITLE": "Map", "TUTORIAL_SKIP_BUTTON": "Skip", "TUTORIAL_CONTINUE_BUTTON": "Continue", "TUTORIAL_SLIDE1_TITLE": "Welcome to the Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "The Ionic Super Starter is a fully-featured Ionic starter with many pre-built pages and best practices.", "TUTORIAL_SLIDE2_TITLE": "How to use the Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Assemble the various page types you want and remove the ones you don't. We've provided many common mobile app page layouts, like login and signup pages, tabs, and this tutorial page.", "TUTORIAL_SLIDE3_TITLE": "Getting Started", "TUTORIAL_SLIDE3_DESCRIPTION": "Need help? Check out the Super Starter README for a full tutorial", "TUTORIAL_SLIDE4_TITLE": "Ready to Play?", "WELCOME_INTRO": "The starting point for your next great Ionic app", "SETTINGS_TITLE": "Settings", "SETTINGS_OPTION1": "Option 1", "SETTINGS_OPTION2": "Option 2", "SETTINGS_OPTION3": "Option 3", "SETTINGS_OPTION4": "Option 4", "SETTINGS_PROFILE_BUTTON": "Edit Profile", "SETTINGS_PAGE_PROFILE": "Edit Profile", "WELCOME_TITLE": "Welcome", "LOGIN_TITLE": "Sign in", "LOGIN_ERROR": "Unable to sign in. Please check your account information and try again.", "LOGIN_BUTTON": "Sign in", "SIGNUP_TITLE": "Sign up", "SIGNUP_ERROR": "Unable to create account. Please check your account information and try again.", "SIGNUP_BUTTON": "Sign up", "LIST_MASTER_TITLE": "Items", "ITEM_CREATE_TITLE": "New Item", "ITEM_CREATE_CHOOSE_IMAGE": "Add Image", "ITEM_NAME_PLACEHOLDER": "Name", "ITEM_ABOUT_PLACEHOLDER": "About", "DONE_BUTTON": "Done", "CANCEL_BUTTON": "Cancel", "DELETE_BUTTON": "Delete", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Search", "SEARCH_PLACEHOLDER": "Search the items list, e.g. \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/es-eu.json ================================================ { "NAME": "Izena", "PASSWORD": "Pasahitza", "EMAIL": "Email Helbidea", "LOGIN": "Saioa Hasi", "SIGNUP": "Izena Eman", "TAB1_TITLE": "Artikuluak", "TAB2_TITLE": "Bilatu", "TAB3_TITLE": "Xehetasunak", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Ongi etorri Ionic Super Starter-era", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter hasierako txantiloi bat da, 'page' askorekin eta ereduak", "TUTORIAL_SLIDE2_TITLE": "Nola erabili Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Sortu gustatzen zaizkizun orrialdeak eta ezabatu besteak. Adibidez: login signup, tabs eta tutorialeak.", "TUTORIAL_SLIDE3_TITLE": "Ikasten", "TUTORIAL_SLIDE3_DESCRIPTION": "Laguntzarik nahi? irakurri README,Super Starter-ren tutorial osoa daukazu", "SETTINGS_TITLE": "Xehetasunak", "SETTINGS_OPTION1": "1 Aukera", "SETTINGS_OPTION2": "2 Aukera", "SETTINGS_OPTION3": "3 Aukera", "SETTINGS_OPTION4": "4 Aukera", "SETTINGS_PAGE_PROFILE": "Zure datual editatu", "WELCOME_TITLE": "Ongi Etorri", "LOGIN_TITLE": "Sesioa Hasi", "LOGIN_ERROR": "Arazoa sesioa hasteko. Mesedez,sahiatu berriz zure datuak idazten.", "LOGIN_BUTTON": "Sesioa Hasi", "SIGNUP_TITLE": "Izena eman", "SIGNUP_ERROR": "Arazoa kontua sortzen.or, Mesedez,sahiatu berriz zure datuak idazten.", "SIGNUP_BUTTON": "Izena Eman", "LIST_MASTER_TITLE": "Artikuluak", "ITEM_CREATE_TITLE": "Artikulu berria", "ITEM_CREATE_CHOOSE_IMAGE": "Argazkia sortu", "CARDS_TITLE": "Sozial", "SEARCH_TITLE": "Bilatu" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/es.json ================================================ { "NAME": "Nombre", "PASSWORD": "Contraseña", "EMAIL": "Email", "LOGIN": "Iniciar sesión", "SIGNUP": "Registrarse", "TAB1_TITLE": "Items", "TAB2_TITLE": "Buscar", "TAB3_TITLE": "Ajustes", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Bienvenido/a al Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "El Ionic Super Starter es un starter de Ionic completo con muchas páginas preconstruidas y mejores prácticas.", "TUTORIAL_SLIDE2_TITLE": "Cómo usar el Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Monta los varios tipos de página que quieras y quita los que no. Hemos incluido muchas estructuras de página comunes en apps móviles, como páginas de inicio de sesión y registro, pestañas, y esta página de tutorial.", "TUTORIAL_SLIDE3_TITLE": "Empezando", "TUTORIAL_SLIDE3_DESCRIPTION": "¿Necesitas ayuda? Échale un vistazo al README del Super Starter para ver el tutorial completo.", "SETTINGS_TITLE": "Ajustes", "SETTINGS_OPTION1": "Opción 1", "SETTINGS_OPTION2": "Opción 2", "SETTINGS_OPTION3": "Opción 3", "SETTINGS_OPTION4": "Opción 4", "SETTINGS_PAGE_PROFILE": "Editar Perfil", "WELCOME_TITLE": "Bienvenido/a", "LOGIN_TITLE": "Iniciar sesión", "LOGIN_ERROR": "No se ha podido iniciar sesión. Por favor revisa la información de la cuenta e inténtalo de nuevo.", "LOGIN_BUTTON": "Iniciar sesión", "SIGNUP_TITLE": "Registro", "SIGNUP_ERROR": "No se ha podido crear la cuenta. Por favor revisa la información de la cuenta e inténtalo de nuevo.", "SIGNUP_BUTTON": "Registrarse", "LIST_MASTER_TITLE": "Items", "ITEM_CREATE_TITLE": "Nuevo Item", "ITEM_CREATE_CHOOSE_IMAGE": "Añadir Imagen", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Buscar" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/fil.json ================================================ { "NAME": "Pangalan", "PASSWORD": "Password", "EMAIL": "Email", "LOGIN": "Sign in", "SIGNUP": "Sign up", "TAB1_TITLE": "Mga Gamit", "TAB2_TITLE": "Hanapin", "TAB3_TITLE": "Mga Setting", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Maligayang Pagdating sa Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Isang kumpletong Ionic starter na may buong mga pahina at pinakamainam na gawi ang Ionic Super Starter", "TUTORIAL_SLIDE2_TITLE": "Paano gamitin ang Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Buoin ang mga page types na gusto mo at tanggalin ang mga ayaw mo. Marami kaming ibinigay na app layouts, tulad ng login at signup, tabs, at itong tutorial page", "TUTORIAL_SLIDE3_TITLE": "Paano magsimula", "TUTORIAL_SLIDE3_DESCRIPTION": "Kailangan ng tulong? Tignan ang README ng Super Starter para sa buong tutorial", "SETTINGS_TITLE": "Mga Setting", "SETTINGS_OPTION1": "Opsyon 1", "SETTINGS_OPTION2": "Opsyon 2", "SETTINGS_OPTION3": "Opsyon 3", "SETTINGS_OPTION4": "Opsyon 4", "SETTINGS_PAGE_PROFILE": "Baguhin ang Profile", "WELCOME_TITLE": "Maligayang Pagdating", "LOGIN_TITLE": "Sign in", "LOGIN_ERROR": "Hindi makapag-sign-in. Paki-kumpirma ang iyong impormasyon at subukan ulit", "LOGIN_BUTTON": "Sign in", "SIGNUP_TITLE": "Sign up", "SIGNUP_ERROR": "Hindi makagawa ng bagong account. Paki-kumpirma ang iyong impormasyon at subukan ulit", "SIGNUP_BUTTON": "Sign up", "LIST_MASTER_TITLE": "Mga Item", "ITEM_CREATE_TITLE": "Bagong Item", "ITEM_CREATE_CHOOSE_IMAGE": "Maglagay ng Imahe", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Hanapin" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/fr.json ================================================ { "NAME": "Nom", "PASSWORD": "Mot de passe", "EMAIL": "E-mail", "LOGIN": "Connexion", "SIGNUP": "Inscription", "TAB1_TITLE": "Items", "TAB2_TITLE": "Recherche", "TAB3_TITLE": "Paramètres", "MAP_TITLE": "Carte", "TUTORIAL_SLIDE1_TITLE": "Bienvenue dans le kit de démarrage Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter est un kit complet pour démarrer sur Ionic. Il repose sur les meilleures pratiques et implémente de nombreux types de pages.", "TUTORIAL_SLIDE2_TITLE": "Comment utiliser le Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Assemblez les types de pages désirés et supprimez les autres. Le kit inclut plusieurs mises en page courantes d’applications mobiles, comme les pages de connexion et d’inscription, les onglets et cette page de tutoriel.", "TUTORIAL_SLIDE3_TITLE": "Pour commencer", "TUTORIAL_SLIDE3_DESCRIPTION": "Si vous avez besoin d’aide, consultez le README du Super Starter pour un tutoriel complet.", "SETTINGS_TITLE": "Paramètres", "SETTINGS_OPTION1": "Option 1", "SETTINGS_OPTION2": "Option 2", "SETTINGS_OPTION3": "Option 3", "SETTINGS_OPTION4": "Option 4", "SETTINGS_PAGE_PROFILE": "Modifier le profil", "WELCOME_TITLE": "Bienvenue", "LOGIN_TITLE": "Connexion", "LOGIN_ERROR": "Connexion impossible. Veuillez vérifier les informations de votre compte et réessayer.", "LOGIN_BUTTON": "Connexion", "SIGNUP_TITLE": "Inscription", "SIGNUP_ERROR": "Inscription impossible. Veuillez vérifier les informations de votre compte et réessayer.", "SIGNUP_BUTTON": "Inscription", "LIST_MASTER_TITLE": "Items", "ITEM_CREATE_TITLE": "Nouvel item", "ITEM_CREATE_CHOOSE_IMAGE": "Ajouter une image", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Recherche" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/he.json ================================================ { "NAME": "שם", "PASSWORD": "סיסמא", "EMAIL": "דואר אלקטרוני", "LOGIN": "התחברות", "SIGNUP": "הרשמה", "TAB1_TITLE": "פריטים", "TAB2_TITLE": "חיפוש", "TAB3_TITLE": "הגדרות", "MAP_TITLE": "מפה", "TUTORIAL_SLIDE1_TITLE": "ברוכים הבאים ל-Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "ה-Ionic Super Starter הוא Starter מלא בתכונות עם הרבה דפים מוכנים ותרגולים הכי טובים.", "TUTORIAL_SLIDE2_TITLE": "איך להשתמש ב-Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Assemble the various page types you want and remove the ones you don't. We've provided many common mobile app page layouts, like login and signup pages, tabs, and this tutorial page.", "TUTORIAL_SLIDE3_TITLE": "התחלה", "TUTORIAL_SLIDE3_DESCRIPTION": "צריך עזרה? תבדקו את ה-README של ה-Super Starter להדרכה מלאה.", "SETTINGS_TITLE": "הגדרות", "SETTINGS_OPTION1": "אופציה 1", "SETTINGS_OPTION2": "אופציה 2", "SETTINGS_OPTION3": "אופציה 3", "SETTINGS_OPTION4": "אופציה 4", "SETTINGS_PAGE_PROFILE": "עריכת פרופיל", "WELCOME_TITLE": "ברוכים הבאים", "LOGIN_TITLE": "התחברות", "LOGIN_ERROR": "לא ניתן להתחבר. אנא בדוק את פרטי ההתחברות ונסה שנית.", "LOGIN_BUTTON": "התחבר", "SIGNUP_TITLE": "הרשמה", "SIGNUP_ERROR": "לא ניתן ליצור חשבון. אנא בדוק את פרטי ההתחברות ונסה שנית.", "SIGNUP_BUTTON": "הירשם", "LIST_MASTER_TITLE": "פריטים", "ITEM_CREATE_TITLE": "פריט חדש", "ITEM_CREATE_CHOOSE_IMAGE": "הוסף תמונה", "CARDS_TITLE": "חברתי", "SEARCH_TITLE": "חיפוש" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/it.json ================================================ { "BACK_BUTTON_TEXT": "Indietro", "NAME": "Nome", "EMAIL": "Email", "USERNAME": "Nome utente", "PASSWORD": "Password", "LOGIN": "Login", "SIGNUP": "Registrati", "TAB1_TITLE": "Elenco", "TAB2_TITLE": "Ricerca", "TAB3_TITLE": "Impostazioni", "MAP_TITLE": "Mappa", "TUTORIAL_SKIP_BUTTON": "Salta", "TUTORIAL_CONTINUE_BUTTON": "Continua", "TUTORIAL_SLIDE1_TITLE": "Benvenuti in Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter è un applicazione di partenza per Ionic che contiene molte pagine di esempio già pronte realizzate seguendo delle best practices.", "TUTORIAL_SLIDE2_TITLE": "Come usare Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Mantenete le pagine che volete e rimuovete quelle che non vi servono. Troverete diverse pagine di uso comune in questa applicazione come le pagine per il login e la registrazione, layout con tabs, e questa pagina di tutorial.", "TUTORIAL_SLIDE3_TITLE": "Come iniziare", "TUTORIAL_SLIDE3_DESCRIPTION": "Serve aiuto? Leggete il README del progetto Super Starter per avere maggiori informazioni sul tutorial completo.", "TUTORIAL_SLIDE4_TITLE": "Pronti ad iniziare?", "WELCOME_INTRO": "Il punto di partenza per la tua prossima applicazione Ionic", "SETTINGS_TITLE": "Impostazioni", "SETTINGS_OPTION1": "Opzione 1", "SETTINGS_OPTION2": "Opzione 2", "SETTINGS_OPTION3": "Opzione 3", "SETTINGS_OPTION4": "Opzione 4", "SETTINGS_PROFILE_BUTTON": "Modifica Profilo", "SETTINGS_PAGE_PROFILE": "Modifica Profilo", "WELCOME_TITLE": "Benvenuto", "LOGIN_TITLE": "Login", "LOGIN_ERROR": "Non è possibile accedere. Ricontrollare le informazioni utente digitate prima di riprovare.", "LOGIN_BUTTON": "Accedi", "SIGNUP_TITLE": "Registrazione", "SIGNUP_ERROR": "Non è possibile creare l'utente. Assicurarsi di aver inserito le informazioni utente correttamente e poi riprovare.", "SIGNUP_BUTTON": "Registrati", "LIST_MASTER_TITLE": "Elenco elementi", "ITEM_CREATE_TITLE": "Nuovo elemento", "ITEM_CREATE_CHOOSE_IMAGE": "Aggiungi immagine", "ITEM_NAME_PLACEHOLDER": "Nome", "ITEM_ABOUT_PLACEHOLDER": "Informazioni", "DONE_BUTTON": "Fatto", "CANCEL_BUTTON": "Annulla", "DELETE_BUTTON": "Elimina", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Ricerca", "SEARCH_PLACEHOLDER": "Trova elementi in lista, ex. \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/ja.json ================================================ { "BACK_BUTTON_TEXT": "戻る", "NAME": "名前", "EMAIL": "Eメール", "USERNAME": "ユーザー名", "PASSWORD": "パスワード", "LOGIN": "サインイン", "SIGNUP": "サインアップ", "TAB1_TITLE": "項目", "TAB2_TITLE": "検索", "TAB3_TITLE": "設定", "MAP_TITLE": "地図", "TUTORIAL_SKIP_BUTTON": "スキップ", "TUTORIAL_CONTINUE_BUTTON": "続ける", "TUTORIAL_SLIDE1_TITLE": "Ionic Super Starterへようこそ", "TUTORIAL_SLIDE1_DESCRIPTION": " Ionic Super Starter は、多くのビルド済ページとベストプラクティスを備えた、完全な機能をもつIonicのスターターです。", "TUTORIAL_SLIDE2_TITLE": "Super Starterの使い方", "TUTORIAL_SLIDE2_DESCRIPTION": "いろいろなページタイプの中から欲しいものを組み合わせて、いらないものを取り除いてください。 ログインページ、サインアップページ、タブ、このチュートリアルページなど、一般的なモバイルアプリのページレイアウトをいろいろと提供しています。", "TUTORIAL_SLIDE3_TITLE": "はじめに", "TUTORIAL_SLIDE3_DESCRIPTION": "ヘルプが必要ですか?完全なチュートリアルについては、Super Starter READMEを参照してください。", "TUTORIAL_SLIDE4_TITLE": "準備ができましたか?", "WELCOME_INTRO": "あなたのすばらしいIonicアプリの出発点", "SETTINGS_TITLE": "設定", "SETTINGS_OPTION1": "オプション 1", "SETTINGS_OPTION2": "オプション 2", "SETTINGS_OPTION3": "オプション 3", "SETTINGS_OPTION4": "オプション 4", "SETTINGS_PROFILE_BUTTON": "プロフィールの編集", "SETTINGS_PAGE_PROFILE": "プロフィールの編集", "WELCOME_TITLE": "ようこそ", "LOGIN_TITLE": "サインイン", "LOGIN_ERROR": "サインインできません。アカウント情報を確認して、もう一度お試しください。", "LOGIN_BUTTON": "サインイン", "SIGNUP_TITLE": "サインアップ", "SIGNUP_ERROR": "アカウントを作成できません。 アカウント情報を確認して、もう一度お試しください。", "SIGNUP_BUTTON": "サインアップ", "LIST_MASTER_TITLE": "項目", "ITEM_CREATE_TITLE": "新しい項目", "ITEM_CREATE_CHOOSE_IMAGE": "画像の追加", "ITEM_NAME_PLACEHOLDER": "名前", "ITEM_ABOUT_PLACEHOLDER": "説明", "DONE_BUTTON": "完了", "CANCEL_BUTTON": "キャンセル", "DELETE_BUTTON": "削除", "CARDS_TITLE": "ソーシャル", "SEARCH_TITLE": "検索", "SEARCH_PLACEHOLDER": "項目一覧を検索 例 \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/nb_NO.json ================================================ { "NAME": "Navn", "PASSWORD": "Passord", "EMAIL": "Email", "LOGIN": "Logg inn", "SIGNUP": "Registrer deg", "TAB1_TITLE": "Innlegg", "TAB2_TITLE": "Søk", "TAB3_TITLE": "Innstillinger", "MAP_TITLE": "Kart", "TUTORIAL_SLIDE1_TITLE": "Velkommen til Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter er en fullverdig startpakke for Ionic med forhåndslagde undersider utviklet etter beste praksis.", "TUTORIAL_SLIDE2_TITLE": "Hvordan bruke Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Ta i bruk undersidene du trenger og fjern de unødvendige. Pakken tilbyr vanlige layouts for mobil-apper slik som innlogging- og registreringssider, faner og denne opplæringssiden.", "TUTORIAL_SLIDE3_TITLE": "Kom i gang", "TUTORIAL_SLIDE3_DESCRIPTION": "Trenger du hjelp? Les Super Starter README-dokumentet for instruksjoner", "SETTINGS_TITLE": "Innstillinger", "SETTINGS_OPTION1": "Alternativ 1", "SETTINGS_OPTION2": "Alternativ 2", "SETTINGS_OPTION3": "Alternativ 3", "SETTINGS_OPTION4": "Alternativ 4", "SETTINGS_PAGE_PROFILE": "Endre Profil", "WELCOME_TITLE": "Velkommen", "LOGIN_TITLE": "Innlogging", "LOGIN_ERROR": "Feil ved innlogging. Bekreft at kontodetaljene er riktig og prøv igjen.", "LOGIN_BUTTON": "Logg inn", "SIGNUP_TITLE": "Registrering", "SIGNUP_ERROR": "Feil ved registrering. Bekreft kontodetaljene og prøv igjen.", "SIGNUP_BUTTON": "Registrer deg", "LIST_MASTER_TITLE": "Innlegg", "ITEM_CREATE_TITLE": "Nytt Innlegg", "ITEM_CREATE_CHOOSE_IMAGE": "Legg Til Bilde", "CARDS_TITLE": "Sosialt", "SEARCH_TITLE": "Søk" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/nl.json ================================================ { "NAME": "Naam", "PASSWORD": "Wachtwoord", "EMAIL": "E-mail", "LOGIN": "Inloggen", "SIGNUP": "Aanmelden", "TAB1_TITLE": "Items", "TAB2_TITLE": "Zoeken", "TAB3_TITLE": "Instellingen", "MAP_TITLE": "Kaart", "TUTORIAL_SLIDE1_TITLE": "Welkom bij de Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "De Ionic Super Starter biedt een volledig functionele basis voor een Ionic applicatie met veel voorgedefinieëerde pagina's en 'best practices'.", "TUTORIAL_SLIDE2_TITLE": "Hoe de Super Starter te gebruiken", "TUTORIAL_SLIDE2_DESCRIPTION": "Stel je applicatie samen door pagina's te combineren en verwijder degenen die je niet wil gebruiken. We bieden je verschillende typen mobiele applicatie pagina's, zoals login- en aanmeld pagina's, tabbladen, en deze handleiding pagina.", "TUTORIAL_SLIDE3_TITLE": "Beginnen", "TUTORIAL_SLIDE3_DESCRIPTION": "Hulp nodig? Check de Super Starter README voor een uitgebreide introductie", "SETTINGS_TITLE": "Instellingen", "SETTINGS_OPTION1": "Optie 1", "SETTINGS_OPTION2": "Optie 2", "SETTINGS_OPTION3": "Optie 3", "SETTINGS_OPTION4": "Optie 4", "SETTINGS_PAGE_PROFILE": "Wijzig Profiel", "WELCOME_TITLE": "Welkom", "LOGIN_TITLE": "Aanmelden", "LOGIN_ERROR": "Inloggen mislukt. Controleer a.u.b. uw account informatie en probeer het nogmaals.", "LOGIN_BUTTON": "Inloggen", "SIGNUP_TITLE": "Aanmelden", "SIGNUP_ERROR": "Aanmelden mislukt. Controleer a.u.b. uw account informatie en probeer het nogmaals.", "SIGNUP_BUTTON": "Aanmelden", "LIST_MASTER_TITLE": "Items", "ITEM_CREATE_TITLE": "Nieuw Item", "ITEM_CREATE_CHOOSE_IMAGE": "Afbeeldingen Toevoegen", "CARDS_TITLE": "Sociaal", "SEARCH_TITLE": "Zoeken" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/pl.json ================================================ { "NAME": "Imię", "PASSWORD": "Hasło", "EMAIL": "Email", "LOGIN": "Zaloguj", "SIGNUP": "Zarejestruj", "TAB1_TITLE": "Pozycje", "TAB2_TITLE": "Szukaj", "TAB3_TITLE": "Ustawienia", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Witaj w Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter jest w pełni funkcjonalnym początkiem przygody z Ionic'iem, złożonym z wielu predefiniowanych szablonów i najlepszych praktyk programistycznych.", "TUTORIAL_SLIDE2_TITLE": "Jak korzystać z Super Startera", "TUTORIAL_SLIDE2_DESCRIPTION": "Pozbieraj różne typy stron, które chcesz usunąć, a także te, których nie chcesz. Mamy do zaoferowania wiele wspólnych stron i szablonów mobilnej aplikacji. Są to między innymi: strona logowania, rejestracji, taby, a także ten oto poradnik.", "TUTORIAL_SLIDE3_TITLE": "Pierwsze kroki", "TUTORIAL_SLIDE3_DESCRIPTION": "Potrzebujesz pomocy? Sprawdź plik README projektu Super Starter dla pełnego poradnika", "SETTINGS_TITLE": "Ustawienia", "SETTINGS_OPTION1": "Opcja 1", "SETTINGS_OPTION2": "Opcja 2", "SETTINGS_OPTION3": "Opcja 3", "SETTINGS_OPTION4": "Opcja 4", "SETTINGS_PAGE_PROFILE": "Edytuj Profil", "WELCOME_TITLE": "Witaj", "LOGIN_TITLE": "Zaloguj", "LOGIN_ERROR": "Nie udało się zalogować. Sprawdź raz jeszcze dane swoje konta i spróbuj ponownie.", "LOGIN_BUTTON": "Zaloguj", "SIGNUP_TITLE": "Zarejestruj", "SIGNUP_ERROR": "Nie udało się stworzyć konta. Sprawdź raz jeszcze dane swoje konta i spróbuj ponownie.", "SIGNUP_BUTTON": "Zarejestruj", "LIST_MASTER_TITLE": "Pozycje", "ITEM_CREATE_TITLE": "Nowa pozycja", "ITEM_CREATE_CHOOSE_IMAGE": "Dodaj obrazek", "CARDS_TITLE": "Społeczność", "SEARCH_TITLE": "Szukaj" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/pt-PT.json ================================================ { "NAME": "Nome", "PASSWORD": "Password", "EMAIL": "Email", "LOGIN": "Entrar", "SIGNUP": "Criar conta", "TAB1_TITLE": "Items", "TAB2_TITLE": "Pesquisa", "TAB3_TITLE": "Configurações", "MAP_TITLE": "Mapa", "TUTORIAL_SLIDE1_TITLE": "Bem-vindo ao Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "O Ionic Super Starter é um pacote Ionic com várias páginas prontas e exemplos de boas práticas.", "TUTORIAL_SLIDE2_TITLE": "Como usar o Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Combine os vários tipos de página que quer usar e remova as desnecessárias. Nós disponibilizamos vários layouts mobile comuns, como páginas de login e registo, tabs, e esta página de tutorial.", "TUTORIAL_SLIDE3_TITLE": "Como começar", "TUTORIAL_SLIDE3_DESCRIPTION": "Precisa de ajuda? Para um tutorial completo leia o README do Super Starter", "SETTINGS_TITLE": "Configurações", "SETTINGS_OPTION1": "Opção 1", "SETTINGS_OPTION2": "Opção 2", "SETTINGS_OPTION3": "Opção 3", "SETTINGS_OPTION4": "Opção 4", "SETTINGS_PAGE_PROFILE": "Editar Perfil", "WELCOME_TITLE": "Bem-vindo", "LOGIN_TITLE": "Entrar", "LOGIN_ERROR": "Não foi possível entrar na sua conta. Por favor confirme os seus dados e tente novamente.", "LOGIN_BUTTON": "Entrar", "SIGNUP_TITLE": "Criar conta", "SIGNUP_ERROR": "Não foi possível criar a sua conta. Por favor confirme os seus dados e tente novamente.", "SIGNUP_BUTTON": "Criar conta", "LIST_MASTER_TITLE": "Items", "ITEM_CREATE_TITLE": "Novo Item", "ITEM_CREATE_CHOOSE_IMAGE": "Adicionar Imagem", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Pesquisa" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/pt-br.json ================================================ { "BACK_BUTTON_TEXT": "Voltar", "NAME": "Nome", "EMAIL": "Email", "USERNAME": "Nome de Usuário", "PASSWORD": "Senha", "LOGIN": "Entrar", "SIGNUP": "Cadastre-se", "TAB1_TITLE": "Itens", "TAB2_TITLE": "Busca", "TAB3_TITLE": "Configurações", "MAP_TITLE": "Mapa", "TUTORIAL_SKIP_BUTTON": "Pular", "TUTORIAL_CONTINUE_BUTTON": "Continuar", "TUTORIAL_SLIDE1_TITLE": "Bem-vindo ao Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "O Ionic Super Starter é um starter para Ionic completo, com diversos componentes e páginas prontas para ser utilizado como guia de melhores práticas.", "TUTORIAL_SLIDE2_TITLE": "Como utilizar o Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Combine os tipos de páginas que você quer e remova aquelas que não precisa. No starter existem muitos casos de uso comuns de layouts e páginas como login, cadastro, abas e de tutorial.", "TUTORIAL_SLIDE3_TITLE": "Iniciando o projeto", "TUTORIAL_SLIDE3_DESCRIPTION": "Precisa de ajuda? Dê uma olhada no README do Super Starter para um tutorial completo", "TUTORIAL_SLIDE4_TITLE": "Pronto para Usar?", "WELCOME_INTRO": "O ponto de partida para seu próximo app feito no Ionic", "SETTINGS_TITLE": "Configurações", "SETTINGS_OPTION1": "Opção 1", "SETTINGS_OPTION2": "Opção 2", "SETTINGS_OPTION3": "Opção 3", "SETTINGS_OPTION4": "Opção 4", "SETTINGS_PROFILE_BUTTON": "Editar Perfil", "SETTINGS_PAGE_PROFILE": "Editar Perfil", "WELCOME_TITLE": "Bem-vindo", "LOGIN_TITLE": "Entrar", "LOGIN_ERROR": "Não foi possível entrar na sua conta. Verifique seus dados e tente novamente.", "LOGIN_BUTTON": "Entrar", "SIGNUP_TITLE": "Cadastre-se", "SIGNUP_ERROR": "Não foi possível criar sua conta. Verifique seus dados e tente novamente.", "SIGNUP_BUTTON": "Cadastre-se", "LIST_MASTER_TITLE": "Itens", "ITEM_CREATE_TITLE": "Novo Item", "ITEM_CREATE_CHOOSE_IMAGE": "Adicionar Imagem", "ITEM_NAME_PLACEHOLDER": "Nome", "ITEM_ABOUT_PLACEHOLDER": "Sobre", "DONE_BUTTON": "Pronto", "CANCEL_BUTTON": "Cancelar", "DELETE_BUTTON": "Apagar", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Busca", "SEARCH_PLACEHOLDER": "Procure um item da lista, ex: \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/ru.json ================================================ { "NAME": "Имя", "PASSWORD": "Пароль", "EMAIL": "Email", "LOGIN": "Вход", "SIGNUP": "Регистрация", "TAB1_TITLE": "Список", "TAB2_TITLE": "Поиск", "TAB3_TITLE": "Настройки", "MAP_TITLE": "Карта", "TUTORIAL_SLIDE1_TITLE": "Добро пожаловать в Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter это полноценный набор примеров Ionic с большим количеством готовых страниц и лучших практик.", "TUTORIAL_SLIDE2_TITLE": "Как использовать Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Сделайте свой набор из многочисленных страниц разного типа. Все лишнее можете выкинуть. Мы предоставили много типовых макетов страниц мобильных приложений, таких как страницы регистрации, вкладки, и страницы с руководством, наподобие этой.", "TUTORIAL_SLIDE3_TITLE": "Начало работы", "TUTORIAL_SLIDE3_DESCRIPTION": "Нужна помощь? Вы найдете полное руководство к Super Starter в файле README", "SETTINGS_TITLE": "Настройки", "SETTINGS_OPTION1": "Опция 1", "SETTINGS_OPTION2": "Опция 2", "SETTINGS_OPTION3": "Опция 3", "SETTINGS_OPTION4": "Опция 4", "SETTINGS_PAGE_PROFILE": "Редактирование профиля", "WELCOME_TITLE": "Добро пожаловать", "LOGIN_TITLE": "Вход", "LOGIN_ERROR": "Невозможно войти. Пожалуйста проверьте информацию о Вашей учетной записи и попробуйте войти еще раз.", "LOGIN_BUTTON": "Войти", "SIGNUP_TITLE": "Регистрация", "SIGNUP_ERROR": "Невозможно создать учетную запись. Пожалуйста проверьте информацию о Вашей учетной записи и попробуйте еще раз.", "SIGNUP_BUTTON": "Регистрация", "LIST_MASTER_TITLE": "Список", "ITEM_CREATE_TITLE": "Новый элемент", "ITEM_CREATE_CHOOSE_IMAGE": "Добавить изображение", "CARDS_TITLE": "Социальный", "SEARCH_TITLE": "Поиск" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/sk.json ================================================ { "BACK_BUTTON_TEXT": "Späť", "NAME": "Meno", "EMAIL": "Email", "USERNAME": "Prihlasovacie meno", "PASSWORD": "Heslo", "LOGIN": "Prihlásiť", "SIGNUP": "Registrovať", "TAB1_TITLE": "Položky", "TAB2_TITLE": "Hľadať", "TAB3_TITLE": "Nastavenia", "MAP_TITLE": "Mapa", "TUTORIAL_SKIP_BUTTON": "Preskočiť", "TUTORIAL_CONTINUE_BUTTON": "Pokračovať", "TUTORIAL_SLIDE1_TITLE": "Vitajte v Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter kompletný Ionic starter projekt s mnohými predkonfigurovanými stránkami a doporučenými postupmi.", "TUTORIAL_SLIDE2_TITLE": "Ako použiť Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Upravte si stránky, ktoré vám vyhovujú a ostatné odstránte. Poskytujeme mnoho šablón mobilných stránok, ako napríklad stránka na prihlásenie, registráciu, záložky a tento návod.", "TUTORIAL_SLIDE3_TITLE": "Začíname", "TUTORIAL_SLIDE3_DESCRIPTION": "Potrebujete pomoc? Prečítajte si Super Starter README, v ktorom je popísaný komplený návod", "TUTORIAL_SLIDE4_TITLE": "Ste pripravený?", "WELCOME_INTRO": "Prvý krok vašej novej Ionic aplikácie.", "SETTINGS_TITLE": "Nastavenia", "SETTINGS_OPTION1": "Možnosť 1", "SETTINGS_OPTION2": "Možnosť 2", "SETTINGS_OPTION3": "Možnosť 3", "SETTINGS_OPTION4": "Možnosť 4", "SETTINGS_PROFILE_BUTTON": "Upraviť profil", "SETTINGS_PAGE_PROFILE": "Profil", "WELCOME_TITLE": "Vitajte", "LOGIN_TITLE": "Prihlásenie", "LOGIN_ERROR": "Nedá sa prihlásiť. Skotrolujte zadané informácie a skuste to znova.", "LOGIN_BUTTON": "Prihlásiť", "SIGNUP_TITLE": "Registrácia", "SIGNUP_ERROR": "Nedá sa vytvoriť konto. Skotrolujte zadané informácie a skuste to znova.", "SIGNUP_BUTTON": "Registrovať", "LIST_MASTER_TITLE": "Položky", "ITEM_CREATE_TITLE": "Nová položka", "ITEM_CREATE_CHOOSE_IMAGE": "Pridať obrázok", "ITEM_NAME_PLACEHOLDER": "Názov", "ITEM_ABOUT_PLACEHOLDER": "O položke", "DONE_BUTTON": "Hotovo", "CANCEL_BUTTON": "Zrušiť", "DELETE_BUTTON": "Vymazať", "CARDS_TITLE": "Soc. siete", "SEARCH_TITLE": "Hľadať", "SEARCH_PLACEHOLDER": "Napíšte hľadaný výraz, e.g. \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/sl.json ================================================ { "NAME": "Ime", "PASSWORD": "Geslo", "EMAIL": "E-mail", "LOGIN": "Prijava", "SIGNUP": "Ustvari račun", "TAB1_TITLE": "Elementi", "TAB2_TITLE": "Iskanje", "TAB3_TITLE": "Nastavitve", "MAP_TITLE": "Zemljevid", "TUTORIAL_SLIDE1_TITLE": "Dobrodošli v Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter je celosten Ionic začetni paket z pestrim naborom funkcionalnosti in uporablja najboljše prakse razvoja Ionic aplikacij.", "TUTORIAL_SLIDE2_TITLE": "Kako uporabljati Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Sestavite poljubne tipe strani in odstranite tiste, ki jih ne potrebujete. Ponujamo vam mnogo različnih oblik strani, npr. stran za prijavo oz. vpis, stran z zavihki in stran tega vodiča.", "TUTORIAL_SLIDE3_TITLE": "Kako začeti?", "TUTORIAL_SLIDE3_DESCRIPTION": "Potrebujete pomoč? Poglejte si Super Starter README datoteko za celoten vodič.", "SETTINGS_TITLE": "Nastavitve", "SETTINGS_OPTION1": "Opcija 1", "SETTINGS_OPTION2": "Opcija 2", "SETTINGS_OPTION3": "Opcija 3", "SETTINGS_OPTION4": "Opcija 4", "SETTINGS_PAGE_PROFILE": "Uredi profil", "WELCOME_TITLE": "Dobrodošli", "LOGIN_TITLE": "Prijava", "LOGIN_ERROR": "Napaka pri prijavi. Prosimo preglejte prijavne podatke računa in poskusite ponovno.", "LOGIN_BUTTON": "Prijava", "SIGNUP_TITLE": "Ustvari račun", "SIGNUP_ERROR": "Napaka pri kreiranju računa. Prosimo preglejte podatke kreiranega računa in poskusite ponovno. ", "SIGNUP_BUTTON": "Ustvari račun", "LIST_MASTER_TITLE": "Elementi", "ITEM_CREATE_TITLE": "Dodaj element", "ITEM_CREATE_CHOOSE_IMAGE": "Dodaj sliko", "CARDS_TITLE": "Socialno", "SEARCH_TITLE": "Iskanje" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/sn.json ================================================ { "BACK_BUTTON_TEXT": "Dzoka Shure", "NAME": "Zita", "EMAIL": "Tsambambozha", "USERNAME": "Zitamushandisi", "PASSWORD": "Chihori", "LOGIN": "Sign mu", "SIGNUP": "Gadzira homwe yejikichidzo", "TAB1_TITLE": "Maaitemu", "TAB2_TITLE": "Tsvaga", "TAB3_TITLE": "Gadziro", "MAP_TITLE": "Mepu", "TUTORIAL_SKIP_BUTTON": "Darika", "TUTORIAL_CONTINUE_BUTTON": "Enderera", "TUTORIAL_SLIDE1_TITLE": "Tinokugachirai ku Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter i Ionic Starter yakarungwa zvakakwanira nemapeji akagadzirwa kare nenzira dzakanaka dzinotenderwa", "TUTORIAL_SLIDE2_TITLE": "Mashandisiro eSuper Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Kororodza mapeji akasiyana siyana aunoda ,uchibvisa ayo ausingadi, Tapa huwarirwa hwakawanda unozivikanwa sokunge mapeji e login ne sign up,tabs uye peji rino rechidzidzo", "TUTORIAL_SLIDE3_TITLE": "Kuvamba matangiro", "TUTORIAL_SLIDE3_DESCRIPTION": "Unotsvaga rubatsiro? Ongorora Super Starter README kuti uwane chidzidzo chizere", "TUTORIAL_SLIDE4_TITLE": "Wagadzirira kutamba?", "WELCOME_INTRO": "Pekutangira kwako kugadzira jikichidzo guru yeIonic", "SETTINGS_TITLE": "Gadziro", "SETTINGS_OPTION1": "Sarudzo yekutanga", "SETTINGS_OPTION2": "Sarudzo yepiri", "SETTINGS_OPTION3": "Sarudzo yechitatu", "SETTINGS_OPTION4": "Sarudzo yechina", "SETTINGS_PROFILE_BUTTON": "Pepeta Profile", "SETTINGS_PAGE_PROFILE": "Pepeta Profile", "WELCOME_TITLE": "Tinokuchingamidza", "LOGIN_TITLE": "Sign mu", "LOGIN_ERROR": "Takundikana kuita sign in. Tinokumbirawo mutarire homwe yenyu yejikichidzo mugoedza zvakare", "LOGIN_BUTTON": "Sign mu", "SIGNUP_TITLE": "Gadzira homwe yejikichidzo", "SIGNUP_ERROR": "Takundikana kugadzira homwe yejikichidzo ,Tinokumbirawo mutarire zvakatarwa pahomwe yenyu yejikichidzo moedza zvakare.", "SIGNUP_BUTTON": "Gadzira homwe yejikichidzo", "LIST_MASTER_TITLE": "maaitemu", "ITEM_CREATE_TITLE": "Aitemu itsva", "ITEM_CREATE_CHOOSE_IMAGE": "Wedzera mufananidzo", "ITEM_NAME_PLACEHOLDER": "Zita", "ITEM_ABOUT_PLACEHOLDER": "Nezve", "DONE_BUTTON": "aita", "CANCEL_BUTTON": "kanzura", "DELETE_BUTTON": "Dzima", "CARDS_TITLE": "Social", "SEARCH_TITLE": "Tsvaga", "SEARCH_PLACEHOLDER": "Tsvaga mumaaitemu sokuti \"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/sv.json ================================================ { "NAME": "Namn", "PASSWORD": "Lösenord", "EMAIL": "E-post", "LOGIN": "Logga in", "SIGNUP": "Skapa konto", "TAB1_TITLE": "Inlägg", "TAB2_TITLE": "Sök", "TAB3_TITLE": "Inställningar", "MAP_TITLE": "Karta", "TUTORIAL_SLIDE1_TITLE": "Välkommen till Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter är ett fullfjädrat startpaket för Ionic med många färdigbyggda sidor skapade med bästa praxis.", "TUTORIAL_SLIDE2_TITLE": "Hur man använder Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Använd de sidor du önskar och ta bort de övriga. Startpaketet innehåller många vanliga vyer för mobilappar, såsom inloggning och kontoregistrering, flikar och denna introduktionsvy.", "TUTORIAL_SLIDE3_TITLE": "Komma igång", "TUTORIAL_SLIDE3_DESCRIPTION": "Behöver du hjälp? Läs README-dokumentet som innehåller en fullständig handledning för Super Starter.", "SETTINGS_TITLE": "Inställningar", "SETTINGS_OPTION1": "Alternativ 1", "SETTINGS_OPTION2": "Alternativ 2", "SETTINGS_OPTION3": "Alternativ 3", "SETTINGS_OPTION4": "Alternativ 4", "SETTINGS_PAGE_PROFILE": "Redigera profil", "WELCOME_TITLE": "Välkommen", "LOGIN_TITLE": "Logga in", "LOGIN_ERROR": "Det gick inte att logga in. Kontrollera inloggningsuppgifterna och försök igen.", "LOGIN_BUTTON": "Logga in", "SIGNUP_TITLE": "Skapa konto", "SIGNUP_ERROR": "Det gick inte att skapa ett konto. Kontrollera dina uppgifter och försök igen.", "SIGNUP_BUTTON": "Skapa konto", "LIST_MASTER_TITLE": "Inlägg", "ITEM_CREATE_TITLE": "Nytt inlägg", "ITEM_CREATE_CHOOSE_IMAGE": "Lägg till bild", "CARDS_TITLE": "Socialt", "SEARCH_TITLE": "Sök" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/th.json ================================================ { "NAME": "ชื่อ", "PASSWORD": "รหัสผ่าน", "EMAIL": "อีเมล์", "LOGIN": "เข้าระบบ", "SIGNUP": "สมัครใช้งาน", "TAB1_TITLE": "รายการ", "TAB2_TITLE": "ค้นหา", "TAB3_TITLE": "ตั้งค่า", "MAP_TITLE": "แผนที่", "TUTORIAL_SLIDE1_TITLE": "ยินดีต้อนรับสู่ the Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "The Ionic Super Starter คือโปรเจคเริ่มต้น Ionic ที่มีหน้าจอพร้อมใช้งานและเขียนแบบ Best practices", "TUTORIAL_SLIDE2_TITLE": "วิธีใช้ Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "เก็บหน้าจอแบบที่ใช้ไว้ ลบที่ไม่ใช้ออก เราเตรียมหน้าจอที่ใช้กันประจำสำหรับแอพมือถือไว้ให้ เช่น หน้าล็อกอิน, หน้าสมัครใช้งาน, แทบ, และหน้าสอนใช้งานนี้", "TUTORIAL_SLIDE3_TITLE": "เริ่มต้นใช้งาน", "TUTORIAL_SLIDE3_DESCRIPTION": "ต้องการความช่วยเหลือ? ลองอ่าน tutorial ฉบับเต็มจากไฟล์ README", "SETTINGS_TITLE": "ตั้งค่า", "SETTINGS_OPTION1": "ตัวเลือก 1", "SETTINGS_OPTION2": "ตัวเลือก 2", "SETTINGS_OPTION3": "ตัวเลือก 3", "SETTINGS_OPTION4": "ตัวเลือก 4", "SETTINGS_PAGE_PROFILE": "แก้ไขข้อมูลส่วนตัว", "WELCOME_TITLE": "ยินดีต้อนรับ", "LOGIN_TITLE": "การเข้าระบบ", "LOGIN_ERROR": "เข้าระบบไม่ได้. ตรวจสอบข้อมูลที่กรอกแล้วกรุณาลองใหม่", "LOGIN_BUTTON": "เข้าระบบ", "SIGNUP_TITLE": "สมัครใช้งาน", "SIGNUP_ERROR": "ไม่สามารถสร้างผู้ใช้ใหม่ กรุณาตรวจสอบข้อมูลที่กรอกแล้วลองใหม่", "SIGNUP_BUTTON": "สมัคร", "LIST_MASTER_TITLE": "รายการ", "ITEM_CREATE_TITLE": "รายการใหม่", "ITEM_CREATE_CHOOSE_IMAGE": "เพิ่มรูปภาพ", "CARDS_TITLE": "โซเชียลเน็ตเวิร์ค", "SEARCH_TITLE": "ค้นหา" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/tr.json ================================================ { "BACK_BUTTON_TEXT": "Geri", "NAME": "İsim", "PASSWORD": "Şifre", "EMAIL": "Email", "LOGIN": "Giriş yap", "SIGNUP": "Kayıt ol", "TAB1_TITLE": "Öğeler", "TAB2_TITLE": "Arama", "TAB3_TITLE": "Ayarlar", "MAP_TITLE": "Harita", "TUTORIAL_SLIDE1_TITLE": "Ionic Super Starter'a Hoşgeldin", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter hazırlanmış sayfalar ve çok iyi örneklerle tam donanımlı bir başlangıç paketidir.", "TUTORIAL_SLIDE2_TITLE": "Super Starter Nasıl Kullanılır?", "TUTORIAL_SLIDE2_DESCRIPTION": "İstediğiniz çeşitte sayfa oluşturun ya da istemediklerinizi kaldırın. Biz sadece giriş ve kayıt sayfası, tab gibi yaygın sayfaları ve bu anlatım sayfasını hazırladık.", "TUTORIAL_SLIDE3_TITLE": "Başlangıç", "TUTORIAL_SLIDE3_DESCRIPTION": "Yardım mı lazım? Super Starter README dosyasını inceleyebilirsin.", "SETTINGS_TITLE": "Ayarlar", "SETTINGS_OPTION1": "Seçenek 1", "SETTINGS_OPTION2": "Seçenek 2", "SETTINGS_OPTION3": "Seçenek 3", "SETTINGS_OPTION4": "Seçenek 4", "SETTINGS_PAGE_PROFILE": "Profilini Düzenle", "WELCOME_TITLE": "Hoşgeldiniz", "LOGIN_TITLE": "Giriş yap", "LOGIN_ERROR": "Giriş yapılamadı. Lütfen hesap bilgilerinizi kontrol edip tekrar deneyin.", "LOGIN_BUTTON": "Giriş yap", "SIGNUP_TITLE": "Kayıt ol", "SIGNUP_ERROR": "Hesap oluşturulamadı. Lütfen hesap bilgilerinizi kontrol edip tekrar deneyin.", "SIGNUP_BUTTON": "Kayıt ol", "LIST_MASTER_TITLE": "Öğeler", "ITEM_CREATE_TITLE": "Yeni Öğe", "ITEM_CREATE_CHOOSE_IMAGE": "Yeni Görsel", "CARDS_TITLE": "Sosyal", "SEARCH_TITLE": "Arama" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/ua.json ================================================ { "NAME": "Ім'я", "PASSWORD": "Пароль", "EMAIL": "Email", "LOGIN": "Вхід", "SIGNUP": "Реєстрація", "TAB1_TITLE": "Список", "TAB2_TITLE": "Пошук", "TAB3_TITLE": "Налаштування", "MAP_TITLE": "Мапа", "TUTORIAL_SLIDE1_TITLE": "Ласкаво просимо до Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter це повноцінний набір прикладів для Ionic з великою кількістю готових сторінок та кращих практик.", "TUTORIAL_SLIDE2_TITLE": "Як використовувати Super Starter", "TUTORIAL_SLIDE2_DESCRIPTION": "Створіть власний набір зі численних сторінок різного типу. Усе зайве можете викинути. Ми підготували багато типових макетів сторінок мобільних додатків, таких як сторінки входу та реєстрації, вкладки та сторінки-приклади, як ця.", "TUTORIAL_SLIDE3_TITLE": "Початок роботи", "TUTORIAL_SLIDE3_DESCRIPTION": "Потрібна допомога? Ви знайдете повноцінну інструкцию до Super Starter у файлі README", "SETTINGS_TITLE": "Налаштування", "SETTINGS_OPTION1": "Варіант 1", "SETTINGS_OPTION2": "Варіант 2", "SETTINGS_OPTION3": "Варіант 3", "SETTINGS_OPTION4": "Варіант 4", "SETTINGS_PAGE_PROFILE": "Редагування профілю", "WELCOME_TITLE": "Ласкаво просимо", "LOGIN_TITLE": "Вхід", "LOGIN_ERROR": "Неможливо увійти. Будь ласка перевірте інформацію Вашого облікового запису та спробуйте увійти ще раз.", "LOGIN_BUTTON": "Увійти", "SIGNUP_TITLE": "Реєстрація", "SIGNUP_ERROR": "Неможливо створити обліковий запис. Будь ласка перевірте інформацію Вашого облікового запису та спробуйте ще раз.", "SIGNUP_BUTTON": "Зареєструвати", "LIST_MASTER_TITLE": "Список", "ITEM_CREATE_TITLE": "Новий елемент", "ITEM_CREATE_CHOOSE_IMAGE": "Додати зображення", "CARDS_TITLE": "Соціальний", "SEARCH_TITLE": "Пошук" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/zh-cmn-Hans.json ================================================ { "BACK_BUTTON_TEXT": "回退", "NAME": "姓名", "EMAIL": "邮箱", "USERNAME": "登录名", "PASSWORD": "口令", "LOGIN": "登 录", "SIGNUP": "注 册", "TAB1_TITLE": "项目", "TAB2_TITLE": "搜索", "TAB3_TITLE": "设置", "MAP_TITLE": "地图", "TUTORIAL_SKIP_BUTTON": "跳过", "TUTORIAL_CONTINUE_BUTTON": "继续", "TUTORIAL_SLIDE1_TITLE": "欢迎来到 Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter 是一个功能全面,内置多个页面以及最佳实践的 Ionic 入门教程。", "TUTORIAL_SLIDE2_TITLE": "如何使用 Super 入门教程", "TUTORIAL_SLIDE2_DESCRIPTION": "使用你需要的多种多样的页面删除你不需要的页面。我们提供许多常见移动 app 页面,如登录、注册页面,tabs 标签页,以及本教程页面。", "TUTORIAL_SLIDE3_TITLE": "开始", "TUTORIAL_SLIDE3_DESCRIPTION": "需要帮助?查看 Super 入门教程的帮助文档,可获得完整教程。", "TUTORIAL_SLIDE4_TITLE": "开始学习?", "WELCOME_INTRO": "出发,你的下一个强大的 Ionic app", "SETTINGS_TITLE": "设置", "SETTINGS_OPTION1": "选项 1", "SETTINGS_OPTION2": "选项 2", "SETTINGS_OPTION3": "选项 3", "SETTINGS_OPTION4": "选项 4", "SETTINGS_PROFILE_BUTTON": "编辑资料", "SETTINGS_PAGE_PROFILE": "编辑资料", "WELCOME_TITLE": "欢迎", "LOGIN_TITLE": "登录", "LOGIN_ERROR": "无法登录。请检查账号信息然后重试。", "LOGIN_BUTTON": "登 录", "SIGNUP_TITLE": "注 册", "SIGNUP_ERROR": "无法创建账号。请检查账户信息然后重试。", "SIGNUP_BUTTON": "注 册", "LIST_MASTER_TITLE": "项目", "ITEM_CREATE_TITLE": "新项目", "ITEM_CREATE_CHOOSE_IMAGE": "添加图片", "ITEM_NAME_PLACEHOLDER": "名称", "ITEM_ABOUT_PLACEHOLDER": "关于", "DONE_BUTTON": "完 成", "CANCEL_BUTTON": "取 消", "DELETE_BUTTON": "删 除", "CARDS_TITLE": "社交", "SEARCH_TITLE": "搜索", "SEARCH_PLACEHOLDER": "搜索项目列表, 比如:\"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/assets/i18n/zh-cmn-Hant.json ================================================ { "BACK_BUTTON_TEXT": "回退", "NAME": "姓名", "EMAIL": "郵箱", "USERNAME": "登錄名", "PASSWORD": "口令", "LOGIN": "登 錄", "SIGNUP": "註 冊", "TAB1_TITLE": "項目", "TAB2_TITLE": "搜索", "TAB3_TITLE": "設置", "MAP_TITLE": "地圖", "TUTORIAL_SKIP_BUTTON": "跳過", "TUTORIAL_CONTINUE_BUTTON": "繼續", "TUTORIAL_SLIDE1_TITLE": "歡迎來到 Ionic Super Starter", "TUTORIAL_SLIDE1_DESCRIPTION": "Ionic Super Starter 是一個功能全面,內置多個頁面以及最佳實踐的 Ionic 入門教程。", "TUTORIAL_SLIDE2_TITLE": "如何使用 Super 入門教程", "TUTORIAL_SLIDE2_DESCRIPTION": "使用你需要的多種多樣的頁面刪除你不需要的頁面。我們提供許多常見移動 app 頁面,如登錄、註冊頁面,tabs 標簽頁,以及本教程頁面。", "TUTORIAL_SLIDE3_TITLE": "開始", "TUTORIAL_SLIDE3_DESCRIPTION": "需要幫助?查看 Super 入門教程的幫助文檔,可獲得完整教程。", "TUTORIAL_SLIDE4_TITLE": "開始學習?", "WELCOME_INTRO": "出發,你的下一個強大的 Ionic app", "SETTINGS_TITLE": "設置", "SETTINGS_OPTION1": "選項 1", "SETTINGS_OPTION2": "選項 2", "SETTINGS_OPTION3": "選項 3", "SETTINGS_OPTION4": "選項 4", "SETTINGS_PROFILE_BUTTON": "編輯資料", "SETTINGS_PAGE_PROFILE": "編輯資料", "WELCOME_TITLE": "歡迎", "LOGIN_TITLE": "登錄", "LOGIN_ERROR": "無法登錄。請檢查賬號信息然後重試。", "LOGIN_BUTTON": "登 錄", "SIGNUP_TITLE": "註 冊", "SIGNUP_ERROR": "無法創建賬號。請檢查賬戶信息然後重試。", "SIGNUP_BUTTON": "註 冊", "LIST_MASTER_TITLE": "項目", "ITEM_CREATE_TITLE": "新項目", "ITEM_CREATE_CHOOSE_IMAGE": "添加圖片", "ITEM_NAME_PLACEHOLDER": "名稱", "ITEM_ABOUT_PLACEHOLDER": "關於", "DONE_BUTTON": "完 成", "CANCEL_BUTTON": "取 消", "DELETE_BUTTON": "刪 除", "CARDS_TITLE": "社交", "SEARCH_TITLE": "搜索", "SEARCH_PLACEHOLDER": "搜索項目列表, 例如:\"Donald Duck\"" } ================================================ FILE: ionic-angular/official/super/src/mocks/providers/items.ts ================================================ import { Injectable } from '@angular/core'; import { Item } from '../../models/item'; @Injectable() export class Items { items: Item[] = []; defaultItem: any = { "name": "Burt Bear", "profilePic": "assets/img/speakers/bear.jpg", "about": "Burt is a Bear.", }; constructor() { let items = [ { "name": "Burt Bear", "profilePic": "assets/img/speakers/bear.jpg", "about": "Burt is a Bear." }, { "name": "Charlie Cheetah", "profilePic": "assets/img/speakers/cheetah.jpg", "about": "Charlie is a Cheetah." }, { "name": "Donald Duck", "profilePic": "assets/img/speakers/duck.jpg", "about": "Donald is a Duck." }, { "name": "Eva Eagle", "profilePic": "assets/img/speakers/eagle.jpg", "about": "Eva is an Eagle." }, { "name": "Ellie Elephant", "profilePic": "assets/img/speakers/elephant.jpg", "about": "Ellie is an Elephant." }, { "name": "Molly Mouse", "profilePic": "assets/img/speakers/mouse.jpg", "about": "Molly is a Mouse." }, { "name": "Paul Puppy", "profilePic": "assets/img/speakers/puppy.jpg", "about": "Paul is a Puppy." } ]; for (let item of items) { this.items.push(new Item(item)); } } query(params?: any) { if (!params) { return this.items; } return this.items.filter((item) => { for (let key in params) { let field = item[key]; if (typeof field == 'string' && field.toLowerCase().indexOf(params[key].toLowerCase()) >= 0) { return item; } else if (field == params[key]) { return item; } } return null; }); } add(item: Item) { this.items.push(item); } delete(item: Item) { this.items.splice(this.items.indexOf(item), 1); } } ================================================ FILE: ionic-angular/official/super/src/models/item.ts ================================================ /** * A generic model that our Master-Detail pages list, create, and delete. * * Change "Item" to the noun your app will use. For example, a "Contact," or a * "Customer," or an "Animal," or something like that. * * The Items service manages creating instances of Item, so go ahead and rename * that something that fits your app as well. */ export class Item { constructor(fields: any) { // Quick and dirty extend/assign fields to this model for (const f in fields) { // @ts-ignore this[f] = fields[f]; } } } export interface Item { [prop: string]: any; } ================================================ FILE: ionic-angular/official/super/src/pages/README.md ================================================ # Pages Each page type available has a corresponding README, take a look by navigating to a page directory above. ================================================ FILE: ionic-angular/official/super/src/pages/cards/README.md ================================================ # Cards The Cards page is a common cards-based layout as seen in such apps as Facebook. ================================================ FILE: ionic-angular/official/super/src/pages/cards/cards.html ================================================ {{ 'CARDS_TITLE' | translate }}

{{item.user.name}}

{{item.date}}

{{item.content}}

11h ago
================================================ FILE: ionic-angular/official/super/src/pages/cards/cards.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { CardsPage } from './cards'; @NgModule({ declarations: [ CardsPage, ], imports: [ IonicPageModule.forChild(CardsPage), TranslateModule.forChild() ], exports: [ CardsPage ] }) export class CardsPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/cards/cards.scss ================================================ page-cards { } ================================================ FILE: ionic-angular/official/super/src/pages/cards/cards.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, NavController } from 'ionic-angular'; @IonicPage() @Component({ selector: 'page-cards', templateUrl: 'cards.html' }) export class CardsPage { cardItems: any[]; constructor(public navCtrl: NavController) { this.cardItems = [ { user: { avatar: 'assets/img/marty-avatar.png', name: 'Marty McFly' }, date: 'November 5, 1955', image: 'assets/img/advance-card-bttf.png', content: 'Wait a minute. Wait a minute, Doc. Uhhh... Are you telling me that you built a time machine... out of a DeLorean?! Whoa. This is heavy.', }, { user: { avatar: 'assets/img/sarah-avatar.png.jpeg', name: 'Sarah Connor' }, date: 'May 12, 1984', image: 'assets/img/advance-card-tmntr.jpg', content: 'I face the unknown future, with a sense of hope. Because if a machine, a Terminator, can learn the value of human life, maybe we can too.' }, { user: { avatar: 'assets/img/ian-avatar.png', name: 'Dr. Ian Malcolm' }, date: 'June 28, 1990', image: 'assets/img/advance-card-jp.jpg', content: 'Your scientists were so preoccupied with whether or not they could, that they didn\'t stop to think if they should.' } ]; } } ================================================ FILE: ionic-angular/official/super/src/pages/content/README.md ================================================ # Content The content page is a simple page meant for text content. ================================================ FILE: ionic-angular/official/super/src/pages/content/content.html ================================================ Content

This is a perfect starting point for a page with primarily text content. The body is padded nicely and ready for prose.

================================================ FILE: ionic-angular/official/super/src/pages/content/content.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { ContentPage } from './content'; @NgModule({ declarations: [ ContentPage, ], imports: [ IonicPageModule.forChild(ContentPage), TranslateModule.forChild() ], exports: [ ContentPage ] }) export class ContentPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/content/content.scss ================================================ page-home { } ================================================ FILE: ionic-angular/official/super/src/pages/content/content.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, NavController } from 'ionic-angular'; @IonicPage() @Component({ selector: 'page-content', templateUrl: 'content.html' }) export class ContentPage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/super/src/pages/index.ts ================================================ // The page the user lands on after opening the app and without a session export const FirstRunPage = 'TutorialPage'; // The main page the user will see as they use the app over a long period of time. // Change this if not using tabs export const MainPage = 'TabsPage'; // The initial root pages for our tabs (remove if not using tabs) export const Tab1Root = 'ListMasterPage'; export const Tab2Root = 'SearchPage'; export const Tab3Root = 'SettingsPage'; ================================================ FILE: ionic-angular/official/super/src/pages/item-create/README.md ================================================ # Item Create The Item Create Page creates new instances of `Item`, and will most commonly be used in a modal window to be presented by `ListMasterPage`. ================================================ FILE: ionic-angular/official/super/src/pages/item-create/item-create.html ================================================ {{ 'ITEM_CREATE_TITLE' | translate }}
{{ 'ITEM_CREATE_CHOOSE_IMAGE' | translate }}
================================================ FILE: ionic-angular/official/super/src/pages/item-create/item-create.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { ItemCreatePage } from './item-create'; @NgModule({ declarations: [ ItemCreatePage, ], imports: [ IonicPageModule.forChild(ItemCreatePage), TranslateModule.forChild() ], exports: [ ItemCreatePage ] }) export class ItemCreatePageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/item-create/item-create.scss ================================================ page-item-create { .profile-image-wrapper { text-align: center; margin: 20px 0; .profile-image { width: 96px; height: 96px; border-radius: 50%; display: inline-block; background-repeat: no-repeat; background-size: cover; background-position: center; } .profile-image-placeholder { display: inline-block; background-color: #eee; width: 96px; height: 96px; border-radius: 50%; font-size: 12px; ion-icon { font-size: 44px; margin-bottom: -10px; margin-top: 10px; } } } } ================================================ FILE: ionic-angular/official/super/src/pages/item-create/item-create.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Camera } from '@ionic-native/camera'; import { IonicPage, NavController, ViewController } from 'ionic-angular'; @IonicPage() @Component({ selector: 'page-item-create', templateUrl: 'item-create.html' }) export class ItemCreatePage { @ViewChild('fileInput') fileInput; isReadyToSave: boolean; item: any; form: FormGroup; constructor(public navCtrl: NavController, public viewCtrl: ViewController, formBuilder: FormBuilder, public camera: Camera) { this.form = formBuilder.group({ profilePic: [''], name: ['', Validators.required], about: [''] }); // Watch the form for changes, and this.form.valueChanges.subscribe((v) => { this.isReadyToSave = this.form.valid; }); } ionViewDidLoad() { } getPicture() { if (Camera['installed']()) { this.camera.getPicture({ destinationType: this.camera.DestinationType.DATA_URL, targetWidth: 96, targetHeight: 96 }).then((data) => { this.form.patchValue({ 'profilePic': 'data:image/jpg;base64,' + data }); }, (err) => { alert('Unable to take photo'); }) } else { this.fileInput.nativeElement.click(); } } processWebImage(event) { let reader = new FileReader(); reader.onload = (readerEvent) => { let imageData = (readerEvent.target as any).result; this.form.patchValue({ 'profilePic': imageData }); }; reader.readAsDataURL(event.target.files[0]); } getProfileImageStyle() { return 'url(' + this.form.controls['profilePic'].value + ')' } /** * The user cancelled, so we dismiss without sending data back. */ cancel() { this.viewCtrl.dismiss(); } /** * The user is done and wants to create the item, so return it * back to the presenter. */ done() { if (!this.form.valid) { return; } this.viewCtrl.dismiss(this.form.value); } } ================================================ FILE: ionic-angular/official/super/src/pages/item-detail/README.md ================================================ # Item Detail The Item Detail Page shows the details of instances of `Item`, and will most commonly be navigated to from `ListMasterPage`. ================================================ FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.html ================================================ {{ item.name }}

{{item.name}}

{{item.about}}

================================================ FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { ItemDetailPage } from './item-detail'; @NgModule({ declarations: [ ItemDetailPage, ], imports: [ IonicPageModule.forChild(ItemDetailPage), TranslateModule.forChild() ], exports: [ ItemDetailPage ] }) export class ItemDetailPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.scss ================================================ page-item-detail { .item-profile { width: 100%; background-position: center center; background-size: cover; height: 250px; } .item-detail { width: 100%; background: white; position: absolute; } } ================================================ FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, NavController, NavParams } from 'ionic-angular'; import { Items } from '../../providers'; @IonicPage() @Component({ selector: 'page-item-detail', templateUrl: 'item-detail.html' }) export class ItemDetailPage { item: any; constructor(public navCtrl: NavController, navParams: NavParams, items: Items) { this.item = navParams.get('item') || items.defaultItem; } } ================================================ FILE: ionic-angular/official/super/src/pages/list-master/README.md ================================================ # List Master The List Master Page shows the details of instances of `Item`, and will most commonly be navigated to from `ListMasterPage`. ================================================ FILE: ionic-angular/official/super/src/pages/list-master/list-master.html ================================================ {{ 'LIST_MASTER_TITLE' | translate }} ================================================ FILE: ionic-angular/official/super/src/pages/list-master/list-master.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { ListMasterPage } from './list-master'; @NgModule({ declarations: [ ListMasterPage, ], imports: [ IonicPageModule.forChild(ListMasterPage), TranslateModule.forChild() ], exports: [ ListMasterPage ] }) export class ListMasterPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/list-master/list-master.scss ================================================ page-list-master { } ================================================ FILE: ionic-angular/official/super/src/pages/list-master/list-master.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, ModalController, NavController } from 'ionic-angular'; import { Item } from '../../models/item'; import { Items } from '../../providers'; @IonicPage() @Component({ selector: 'page-list-master', templateUrl: 'list-master.html' }) export class ListMasterPage { currentItems: Item[]; constructor(public navCtrl: NavController, public items: Items, public modalCtrl: ModalController) { this.currentItems = this.items.query(); } /** * The view loaded, let's query our items for the list */ ionViewDidLoad() { } /** * Prompt the user to add a new item. This shows our ItemCreatePage in a * modal and then adds the new item to our data source if the user created one. */ addItem() { let addModal = this.modalCtrl.create('ItemCreatePage'); addModal.onDidDismiss(item => { if (item) { this.items.add(item); } }) addModal.present(); } /** * Delete an item from the list of items. */ deleteItem(item) { this.items.delete(item); } /** * Navigate to the detail page for this item. */ openItem(item: Item) { this.navCtrl.push('ItemDetailPage', { item: item }); } } ================================================ FILE: ionic-angular/official/super/src/pages/login/README.md ================================================ # Login The Login page renders a login form with email/password by default and an optional username field. ================================================ FILE: ionic-angular/official/super/src/pages/login/login.html ================================================ {{ 'LOGIN_TITLE' | translate }}
{{ 'EMAIL' | translate }} {{ 'PASSWORD' | translate }}
================================================ FILE: ionic-angular/official/super/src/pages/login/login.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { LoginPage } from './login'; @NgModule({ declarations: [ LoginPage, ], imports: [ IonicPageModule.forChild(LoginPage), TranslateModule.forChild() ], exports: [ LoginPage ] }) export class LoginPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/login/login.scss ================================================ page-login { } ================================================ FILE: ionic-angular/official/super/src/pages/login/login.ts ================================================ import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { IonicPage, NavController, ToastController } from 'ionic-angular'; import { User } from '../../providers'; import { MainPage } from '../'; @IonicPage() @Component({ selector: 'page-login', templateUrl: 'login.html' }) export class LoginPage { // The account fields for the login form. // If you're using the username field with or without email, make // sure to add it to the type account: { email: string, password: string } = { email: 'test@example.com', password: 'test' }; // Our translated text strings private loginErrorString: string; constructor(public navCtrl: NavController, public user: User, public toastCtrl: ToastController, public translateService: TranslateService) { this.translateService.get('LOGIN_ERROR').subscribe((value) => { this.loginErrorString = value; }) } // Attempt to login in through our User service doLogin() { this.user.login(this.account).subscribe((resp) => { this.navCtrl.push(MainPage); }, (err) => { this.navCtrl.push(MainPage); // Unable to log in let toast = this.toastCtrl.create({ message: this.loginErrorString, duration: 3000, position: 'top' }); toast.present(); }); } } ================================================ FILE: ionic-angular/official/super/src/pages/menu/README.md ================================================ # Menu The Menu page renders a side menu UI. ================================================ FILE: ionic-angular/official/super/src/pages/menu/menu.html ================================================ ================================================ FILE: ionic-angular/official/super/src/pages/menu/menu.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { MenuPage } from './menu'; @NgModule({ declarations: [ MenuPage, ], imports: [ IonicPageModule.forChild(MenuPage), TranslateModule.forChild() ], exports: [ MenuPage ] }) export class MenuPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/menu/menu.scss ================================================ page-menu { } ================================================ FILE: ionic-angular/official/super/src/pages/menu/menu.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { IonicPage, Nav, NavController } from 'ionic-angular'; interface PageItem { title: string component: any } type PageList = PageItem[] @IonicPage() @Component({ selector: 'page-menu', templateUrl: 'menu.html' }) export class MenuPage { // A reference to the ion-nav in our component @ViewChild(Nav) nav: Nav; rootPage: any = 'ContentPage'; pages: PageList; constructor(public navCtrl: NavController) { // used for an example of ngFor and navigation this.pages = [ { title: 'Sign in', component: 'LoginPage' }, { title: 'Signup', component: 'SignupPage' } ]; } ionViewDidLoad() { console.log('Hello MenuPage Page'); } openPage(page: PageItem) { // Reset the content nav to have just this page // we wouldn't want the back button to show in this scenario this.nav.setRoot(page.component); } } ================================================ FILE: ionic-angular/official/super/src/pages/search/README.md ================================================ # Search The Search page shows a search box and list view for searching instances of `Item`. ================================================ FILE: ionic-angular/official/super/src/pages/search/search.html ================================================ {{ 'SEARCH_TITLE' | translate }} ================================================ FILE: ionic-angular/official/super/src/pages/search/search.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { SearchPage } from './search'; @NgModule({ declarations: [ SearchPage, ], imports: [ IonicPageModule.forChild(SearchPage), TranslateModule.forChild() ], exports: [ SearchPage ] }) export class SearchPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/search/search.scss ================================================ page-search { } ================================================ FILE: ionic-angular/official/super/src/pages/search/search.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, NavController, NavParams } from 'ionic-angular'; import { Item } from '../../models/item'; import { Items } from '../../providers'; @IonicPage() @Component({ selector: 'page-search', templateUrl: 'search.html' }) export class SearchPage { currentItems: any = []; constructor(public navCtrl: NavController, public navParams: NavParams, public items: Items) { } /** * Perform a service for the proper items. */ getItems(ev) { let val = ev.target.value; if (!val || !val.trim()) { this.currentItems = []; return; } this.currentItems = this.items.query({ name: val }); } /** * Navigate to the detail page for this item. */ openItem(item: Item) { this.navCtrl.push('ItemDetailPage', { item: item }); } } ================================================ FILE: ionic-angular/official/super/src/pages/settings/README.md ================================================ # Settings The Settings page shows a settings form that is configurable, along with features for nested options where the user navigates to sub options while still using the same Settings page code. ================================================ FILE: ionic-angular/official/super/src/pages/settings/settings.html ================================================ {{ pageTitle }}
{{ 'SETTINGS_OPTION1' | translate }} {{ 'SETTINGS_OPTION2' | translate }} {{ 'SETTINGS_OPTION3' | translate }} 1 2 3 {{ 'SETTINGS_OPTION4' | translate }}
================================================ FILE: ionic-angular/official/super/src/pages/settings/settings.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { SettingsPage } from './settings'; @NgModule({ declarations: [ SettingsPage, ], imports: [ IonicPageModule.forChild(SettingsPage), TranslateModule.forChild() ], exports: [ SettingsPage ] }) export class SettingsPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/settings/settings.scss ================================================ page-settings { } ================================================ FILE: ionic-angular/official/super/src/pages/settings/settings.ts ================================================ import { Component } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { IonicPage, NavController, NavParams } from 'ionic-angular'; import { Settings } from '../../providers'; /** * The Settings page is a simple form that syncs with a Settings provider * to enable the user to customize settings for the app. * */ @IonicPage() @Component({ selector: 'page-settings', templateUrl: 'settings.html' }) export class SettingsPage { // Our local settings object options: any; settingsReady = false; form: FormGroup; profileSettings = { page: 'profile', pageTitleKey: 'SETTINGS_PAGE_PROFILE' }; page: string = 'main'; pageTitleKey: string = 'SETTINGS_TITLE'; pageTitle: string; subSettings: any = SettingsPage; constructor(public navCtrl: NavController, public settings: Settings, public formBuilder: FormBuilder, public navParams: NavParams, public translate: TranslateService) { } _buildForm() { let group: any = { option1: [this.options.option1], option2: [this.options.option2], option3: [this.options.option3] }; switch (this.page) { case 'main': break; case 'profile': group = { option4: [this.options.option4] }; break; } this.form = this.formBuilder.group(group); // Watch the form for changes, and this.form.valueChanges.subscribe((v) => { this.settings.merge(this.form.value); }); } ionViewDidLoad() { // Build an empty form for the template to render this.form = this.formBuilder.group({}); } ionViewWillEnter() { // Build an empty form for the template to render this.form = this.formBuilder.group({}); this.page = this.navParams.get('page') || this.page; this.pageTitleKey = this.navParams.get('pageTitleKey') || this.pageTitleKey; this.translate.get(this.pageTitleKey).subscribe((res) => { this.pageTitle = res; }) this.settings.load().then(() => { this.settingsReady = true; this.options = this.settings.allSettings; this._buildForm(); }); } ngOnChanges() { console.log('Ng All Changes'); } } ================================================ FILE: ionic-angular/official/super/src/pages/signup/README.md ================================================ # Signup The Signup page renders a signup form with email/password by default and an optional username field. ================================================ FILE: ionic-angular/official/super/src/pages/signup/signup.html ================================================ {{ 'SIGNUP_TITLE' | translate }}
{{ 'NAME' | translate }} {{ 'EMAIL' | translate }} {{ 'PASSWORD' | translate }}
================================================ FILE: ionic-angular/official/super/src/pages/signup/signup.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { SignupPage } from './signup'; @NgModule({ declarations: [ SignupPage, ], imports: [ IonicPageModule.forChild(SignupPage), TranslateModule.forChild() ], exports: [ SignupPage ] }) export class SignupPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/signup/signup.scss ================================================ page-signup { } ================================================ FILE: ionic-angular/official/super/src/pages/signup/signup.ts ================================================ import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { IonicPage, NavController, ToastController } from 'ionic-angular'; import { User } from '../../providers'; import { MainPage } from '../'; @IonicPage() @Component({ selector: 'page-signup', templateUrl: 'signup.html' }) export class SignupPage { // The account fields for the login form. // If you're using the username field with or without email, make // sure to add it to the type account: { name: string, email: string, password: string } = { name: 'Test Human', email: 'test@example.com', password: 'test' }; // Our translated text strings private signupErrorString: string; constructor(public navCtrl: NavController, public user: User, public toastCtrl: ToastController, public translateService: TranslateService) { this.translateService.get('SIGNUP_ERROR').subscribe((value) => { this.signupErrorString = value; }) } doSignup() { // Attempt to login in through our User service this.user.signup(this.account).subscribe((resp) => { this.navCtrl.push(MainPage); }, (err) => { this.navCtrl.push(MainPage); // Unable to sign up let toast = this.toastCtrl.create({ message: this.signupErrorString, duration: 3000, position: 'top' }); toast.present(); }); } } ================================================ FILE: ionic-angular/official/super/src/pages/tabs/README.md ================================================ # Tabs Tabs is a common tabbed layout. ================================================ FILE: ionic-angular/official/super/src/pages/tabs/tabs.html ================================================ ================================================ FILE: ionic-angular/official/super/src/pages/tabs/tabs.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { TabsPage } from './tabs'; @NgModule({ declarations: [ TabsPage, ], imports: [ IonicPageModule.forChild(TabsPage), TranslateModule.forChild() ], exports: [ TabsPage ] }) export class TabsPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/tabs/tabs.scss ================================================ page-tabs { } ================================================ FILE: ionic-angular/official/super/src/pages/tabs/tabs.ts ================================================ import { Component } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { IonicPage, NavController } from 'ionic-angular'; import { Tab1Root, Tab2Root, Tab3Root } from '../'; @IonicPage() @Component({ selector: 'page-tabs', templateUrl: 'tabs.html' }) export class TabsPage { tab1Root: any = Tab1Root; tab2Root: any = Tab2Root; tab3Root: any = Tab3Root; tab1Title = " "; tab2Title = " "; tab3Title = " "; constructor(public navCtrl: NavController, public translateService: TranslateService) { translateService.get(['TAB1_TITLE', 'TAB2_TITLE', 'TAB3_TITLE']).subscribe(values => { this.tab1Title = values['TAB1_TITLE']; this.tab2Title = values['TAB2_TITLE']; this.tab3Title = values['TAB3_TITLE']; }); } } ================================================ FILE: ionic-angular/official/super/src/pages/tutorial/README.md ================================================ # Tutorial The Tutorial page renders a Slides component that lets you swipe through different sections or skip it alltogether. ================================================ FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.html ================================================

{{ 'TUTORIAL_SLIDE4_TITLE' | translate }}

================================================ FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.module.ts ================================================ import { NgModule } from '@angular/core'; import { IonicPageModule } from 'ionic-angular'; import { TutorialPage } from './tutorial'; import { TranslateModule } from '@ngx-translate/core'; @NgModule({ declarations: [ TutorialPage, ], imports: [ IonicPageModule.forChild(TutorialPage), TranslateModule.forChild() ], exports: [ TutorialPage ] }) export class TutorialPageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.scss ================================================ page-tutorial { .toolbar-background { background: transparent; border-color: transparent; } .slide-zoom { height: 100%; } .slide-title { margin-top: 2.8rem; } .slide-image { max-height: 40%; max-width: 60%; margin: 36px 0; } b { font-weight: 500; } p { padding: 0 40px; font-size: 14px; line-height: 1.5; color: #60646B; b { color: #000000; } } } ================================================ FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, MenuController, NavController, Platform } from 'ionic-angular'; import { TranslateService } from '@ngx-translate/core'; export interface Slide { title: string; description: string; image: string; } @IonicPage() @Component({ selector: 'page-tutorial', templateUrl: 'tutorial.html' }) export class TutorialPage { slides: Slide[]; showSkip = true; dir: string = 'ltr'; constructor(public navCtrl: NavController, public menu: MenuController, translate: TranslateService, public platform: Platform) { this.dir = platform.dir(); translate.get(["TUTORIAL_SLIDE1_TITLE", "TUTORIAL_SLIDE1_DESCRIPTION", "TUTORIAL_SLIDE2_TITLE", "TUTORIAL_SLIDE2_DESCRIPTION", "TUTORIAL_SLIDE3_TITLE", "TUTORIAL_SLIDE3_DESCRIPTION", ]).subscribe( (values) => { console.log('Loaded values', values); this.slides = [ { title: values.TUTORIAL_SLIDE1_TITLE, description: values.TUTORIAL_SLIDE1_DESCRIPTION, image: 'assets/img/ica-slidebox-img-1.png', }, { title: values.TUTORIAL_SLIDE2_TITLE, description: values.TUTORIAL_SLIDE2_DESCRIPTION, image: 'assets/img/ica-slidebox-img-2.png', }, { title: values.TUTORIAL_SLIDE3_TITLE, description: values.TUTORIAL_SLIDE3_DESCRIPTION, image: 'assets/img/ica-slidebox-img-3.png', } ]; }); } startApp() { this.navCtrl.setRoot('WelcomePage', {}, { animate: true, direction: 'forward' }); } onSlideChangeStart(slider) { this.showSkip = !slider.isEnd(); } ionViewDidEnter() { // the root left menu should be disabled on the tutorial page this.menu.enable(false); } ionViewWillLeave() { // enable the root left menu when leaving the tutorial page this.menu.enable(true); } } ================================================ FILE: ionic-angular/official/super/src/pages/welcome/README.md ================================================ # Welcome Welcome is a splash screen that displays some info about the app and directs the user to log in our create an account. ================================================ FILE: ionic-angular/official/super/src/pages/welcome/welcome.html ================================================
{{ 'WELCOME_INTRO' | translate }}
================================================ FILE: ionic-angular/official/super/src/pages/welcome/welcome.module.ts ================================================ import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { IonicPageModule } from 'ionic-angular'; import { WelcomePage } from './welcome'; @NgModule({ declarations: [ WelcomePage, ], imports: [ IonicPageModule.forChild(WelcomePage), TranslateModule.forChild() ], exports: [ WelcomePage ] }) export class WelcomePageModule { } ================================================ FILE: ionic-angular/official/super/src/pages/welcome/welcome.scss ================================================ page-welcome { .splash-bg { position: relative; background: url('../assets/img/splashbg.png') no-repeat transparent; background-size: cover; height: 45%; z-index: 1; background-repeat: repeat-x; animation: animatedBackground 40s linear infinite; } @keyframes animatedBackground { from { background-position: 0 0; } to { background-position: 100% 0; } } .splash-info { position: relative; z-index: 2; margin-top: -64px; text-align: center; } .splash-logo { margin: auto; background: url('../assets/img/appicon.png') repeat transparent; background-size: 100%; width: 128px; height: 128px; } .splash-intro { font-size: 18px; font-weight: bold; max-width: 80%; margin: auto; } button.login { margin-top: 25px; background-color: white; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); color: #333; &.activated { background-color: rgb(220, 220, 220); } } } ================================================ FILE: ionic-angular/official/super/src/pages/welcome/welcome.ts ================================================ import { Component } from '@angular/core'; import { IonicPage, NavController } from 'ionic-angular'; /** * The Welcome Page is a splash page that quickly describes the app, * and then directs the user to create an account or log in. * If you'd like to immediately put the user onto a login/signup page, * we recommend not using the Welcome page. */ @IonicPage() @Component({ selector: 'page-welcome', templateUrl: 'welcome.html' }) export class WelcomePage { constructor(public navCtrl: NavController) { } login() { this.navCtrl.push('LoginPage'); } signup() { this.navCtrl.push('SignupPage'); } } ================================================ FILE: ionic-angular/official/super/src/providers/api/api.ts ================================================ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; /** * Api is a generic REST Api handler. Set your API url first. */ @Injectable() export class Api { url: string = 'https://example.com/api/v1'; constructor(public http: HttpClient) { } get(endpoint: string, params?: any, reqOpts?: any) { if (!reqOpts) { reqOpts = { params: new HttpParams() }; } // Support easy query params for GET requests if (params) { reqOpts.params = new HttpParams(); for (let k in params) { reqOpts.params = reqOpts.params.set(k, params[k]); } } return this.http.get(this.url + '/' + endpoint, reqOpts); } post(endpoint: string, body: any, reqOpts?: any) { return this.http.post(this.url + '/' + endpoint, body, reqOpts); } put(endpoint: string, body: any, reqOpts?: any) { return this.http.put(this.url + '/' + endpoint, body, reqOpts); } delete(endpoint: string, reqOpts?: any) { return this.http.delete(this.url + '/' + endpoint, reqOpts); } patch(endpoint: string, body: any, reqOpts?: any) { return this.http.patch(this.url + '/' + endpoint, body, reqOpts); } } ================================================ FILE: ionic-angular/official/super/src/providers/index.ts ================================================ export { Api } from './api/api'; export { Items } from '../mocks/providers/items'; export { Settings } from './settings/settings'; export { User } from './user/user'; ================================================ FILE: ionic-angular/official/super/src/providers/items/items.ts ================================================ import { Injectable } from '@angular/core'; import { Item } from '../../models/item'; import { Api } from '../api/api'; @Injectable() export class Items { constructor(public api: Api) { } query(params?: any) { return this.api.get('/items', params); } add(item: Item) { } delete(item: Item) { } } ================================================ FILE: ionic-angular/official/super/src/providers/settings/settings.ts ================================================ import { Injectable } from '@angular/core'; import { Storage } from '@ionic/storage'; /** * A simple settings/config class for storing key/value pairs with persistence. */ @Injectable() export class Settings { private SETTINGS_KEY: string = '_settings'; settings: any; _defaults: any; _readyPromise: Promise; constructor(public storage: Storage, defaults: any) { this._defaults = defaults; } load() { return this.storage.get(this.SETTINGS_KEY).then((value) => { if (value) { this.settings = value; return this._mergeDefaults(this._defaults); } else { return this.setAll(this._defaults).then((val) => { this.settings = val; }) } }); } _mergeDefaults(defaults: any) { for (let k in defaults) { if (!(k in this.settings)) { this.settings[k] = defaults[k]; } } return this.setAll(this.settings); } merge(settings: any) { for (let k in settings) { this.settings[k] = settings[k]; } return this.save(); } setValue(key: string, value: any) { this.settings[key] = value; return this.storage.set(this.SETTINGS_KEY, this.settings); } setAll(value: any) { return this.storage.set(this.SETTINGS_KEY, value); } getValue(key: string) { return this.storage.get(this.SETTINGS_KEY) .then(settings => { return settings[key]; }); } save() { return this.setAll(this.settings); } get allSettings() { return this.settings; } } ================================================ FILE: ionic-angular/official/super/src/providers/user/user.ts ================================================ import 'rxjs/add/operator/toPromise'; import { Injectable } from '@angular/core'; import { Api } from '../api/api'; /** * Most apps have the concept of a User. This is a simple provider * with stubs for login/signup/etc. * * This User provider makes calls to our API at the `login` and `signup` endpoints. * * By default, it expects `login` and `signup` to return a JSON object of the shape: * * ```json * { * status: 'success', * user: { * // User fields your app needs, like "id", "name", "email", etc. * } * }Ø * ``` * * If the `status` field is not `success`, then an error is detected and returned. */ @Injectable() export class User { _user: any; constructor(public api: Api) { } /** * Send a POST request to our login endpoint with the data * the user entered on the form. */ login(accountInfo: any) { let seq = this.api.post('login', accountInfo).share(); seq.subscribe((res: any) => { // If the API returned a successful response, mark the user as logged in if (res.status == 'success') { this._loggedIn(res); } else { } }, err => { console.error('ERROR', err); }); return seq; } /** * Send a POST request to our signup endpoint with the data * the user entered on the form. */ signup(accountInfo: any) { let seq = this.api.post('signup', accountInfo).share(); seq.subscribe((res: any) => { // If the API returned a successful response, mark the user as logged in if (res.status == 'success') { this._loggedIn(res); } }, err => { console.error('ERROR', err); }); return seq; } /** * Log the user out, which forgets the session */ logout() { this._user = null; } /** * Process a login/signup response to store user data */ _loggedIn(resp) { this._user = resp.user; } } ================================================ FILE: ionic-angular/official/super/src/theme/variables.scss ================================================ // Ionic Variables and Theming. For more info, please see: // https://ionicframework.com/docs/v2/theming/ $font-path: "../assets/fonts"; @import "ionic.globals"; // Shared Variables // -------------------------------------------------- // To customize the look and feel of this app, you can override // the Sass variables found in Ionic's source scss files. // To view all the possible Ionic variables, see: // https://ionicframework.com/docs/v2/theming/overriding-ionic-variables/ $text-color: #000; $background-color: #fff; // Named Color Variables // -------------------------------------------------- // Named colors makes it easy to reuse colors on various components. // It's highly recommended to change the default colors // to match your app's branding. Ionic uses a Sass map of // colors so you can add, rename and remove colors as needed. // The "primary" color is the only required color in the map. $colors: ( primary: #488aff, secondary: #32db64, danger: #f53d3d, light: #f4f4f4, dark: #222 ); // App iOS Variables // -------------------------------------------------- // iOS only Sass variables can go here // App Material Design Variables // -------------------------------------------------- // Material Design only Sass variables can go here // App Windows Variables // -------------------------------------------------- // Windows only Sass variables can go here // App Theme // -------------------------------------------------- // Ionic apps can have different themes applied, which can // then be future customized. This import comes last // so that the above variables are used and Ionic's // default are overridden. @import "ionic.theme.default"; // Ionicons // -------------------------------------------------- // The premium icon font for Ionic. For more info, please see: // https://ionicframework.com/docs/v2/ionicons/ @import "ionic.ionicons"; // Fonts // -------------------------------------------------- @import "roboto"; @import "noto-sans"; ================================================ FILE: ionic-angular/official/super.welcome.js ================================================ const chalk = require('chalk'); const msg = ` Welcome to the ${chalk.cyan.bold('IONIC SUPER STARTER')}! The Super Starter comes packed with ready-to-use page designs for common mobile designs like master detail, login/signup, settings, tutorials, and more. Pick and choose which page types you want to use and remove the ones you don't! For more details, please see the project README: ${chalk.bold('https://github.com/ionic-team/starters/blob/master/ionic-angular/official/super/README.md')} `.trim() console.log(msg); // console.log(JSON.stringify(msg)); ================================================ FILE: ionic-angular/official/tabs/ionic.starter.json ================================================ { "name": "Tabs Starter", "baseref": "main", "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run build" } } ================================================ FILE: ionic-angular/official/tabs/src/app/app.component.ts ================================================ import { Component } from '@angular/core'; import { Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; import { TabsPage } from '../pages/tabs/tabs'; @Component({ templateUrl: 'app.html' }) export class MyApp { rootPage:any = TabsPage; constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. statusBar.styleDefault(); splashScreen.hide(); }); } } ================================================ FILE: ionic-angular/official/tabs/src/app/app.html ================================================ ================================================ FILE: ionic-angular/official/tabs/src/app/app.module.ts ================================================ import { NgModule, ErrorHandler } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; import { MyApp } from './app.component'; import { AboutPage } from '../pages/about/about'; import { ContactPage } from '../pages/contact/contact'; import { HomePage } from '../pages/home/home'; import { TabsPage } from '../pages/tabs/tabs'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; @NgModule({ declarations: [ MyApp, AboutPage, ContactPage, HomePage, TabsPage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ MyApp, AboutPage, ContactPage, HomePage, TabsPage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} ================================================ FILE: ionic-angular/official/tabs/src/pages/about/about.html ================================================ About ================================================ FILE: ionic-angular/official/tabs/src/pages/about/about.scss ================================================ page-about { } ================================================ FILE: ionic-angular/official/tabs/src/pages/about/about.ts ================================================ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-about', templateUrl: 'about.html' }) export class AboutPage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/tabs/src/pages/contact/contact.html ================================================ Contact Follow us on Twitter @ionicframework ================================================ FILE: ionic-angular/official/tabs/src/pages/contact/contact.scss ================================================ page-contact { } ================================================ FILE: ionic-angular/official/tabs/src/pages/contact/contact.ts ================================================ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-contact', templateUrl: 'contact.html' }) export class ContactPage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/tabs/src/pages/home/home.html ================================================ Home

Welcome to Ionic!

This starter project comes with simple tabs-based layout for apps that are going to primarily use a Tabbed UI.

Take a look at the src/pages/ directory to add or change tabs, update any existing page or create new pages.

================================================ FILE: ionic-angular/official/tabs/src/pages/home/home.scss ================================================ page-home { } ================================================ FILE: ionic-angular/official/tabs/src/pages/home/home.ts ================================================ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor(public navCtrl: NavController) { } } ================================================ FILE: ionic-angular/official/tabs/src/pages/tabs/tabs.html ================================================ ================================================ FILE: ionic-angular/official/tabs/src/pages/tabs/tabs.ts ================================================ import { Component } from '@angular/core'; import { AboutPage } from '../about/about'; import { ContactPage } from '../contact/contact'; import { HomePage } from '../home/home'; @Component({ templateUrl: 'tabs.html' }) export class TabsPage { tab1Root = HomePage; tab2Root = AboutPage; tab3Root = ContactPage; constructor() { } } ================================================ FILE: ionic-angular/official/tutorial/ionic.starter.json ================================================ { "name": "Tutorial Starter", "baseref": "main", "tarignore": [ ".sourcemaps", "node_modules", "package-lock.json", "www" ], "scripts": { "test": "npm run build" } } ================================================ FILE: ionic-angular/official/tutorial/src/app/app.component.ts ================================================ import { Component, ViewChild } from '@angular/core'; import { Platform, MenuController, Nav } from 'ionic-angular'; import { HelloIonicPage } from '../pages/hello-ionic/hello-ionic'; import { ListPage } from '../pages/list/list'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; @Component({ templateUrl: 'app.html' }) export class MyApp { @ViewChild(Nav) nav: Nav; // make HelloIonicPage the root (or first) page rootPage = HelloIonicPage; pages: Array<{title: string, component: any}>; constructor( public platform: Platform, public menu: MenuController, public statusBar: StatusBar, public splashScreen: SplashScreen ) { this.initializeApp(); // set our app's pages this.pages = [ { title: 'Hello Ionic', component: HelloIonicPage }, { title: 'My First List', component: ListPage } ]; } initializeApp() { this.platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.statusBar.styleDefault(); this.splashScreen.hide(); }); } openPage(page) { // close the menu when clicking a link from the menu this.menu.close(); // navigate to the new page if it is not the current page this.nav.setRoot(page.component); } } ================================================ FILE: ionic-angular/official/tutorial/src/app/app.html ================================================ Pages ================================================ FILE: ionic-angular/official/tutorial/src/app/app.module.ts ================================================ import { BrowserModule } from '@angular/platform-browser'; import { NgModule, ErrorHandler } from '@angular/core'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; import { MyApp } from './app.component'; import { HelloIonicPage } from '../pages/hello-ionic/hello-ionic'; import { ItemDetailsPage } from '../pages/item-details/item-details'; import { ListPage } from '../pages/list/list'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; @NgModule({ declarations: [ MyApp, HelloIonicPage, ItemDetailsPage, ListPage ], imports: [ BrowserModule, IonicModule.forRoot(MyApp), ], bootstrap: [IonicApp], entryComponents: [ MyApp, HelloIonicPage, ItemDetailsPage, ListPage ], providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler} ] }) export class AppModule {} ================================================ FILE: ionic-angular/official/tutorial/src/pages/hello-ionic/hello-ionic.html ================================================ Hello Ionic

Welcome to your first Ionic app!

This starter project is our way of helping you get a functional app running in record time.

Follow along on the tutorial section of the Ionic docs!

================================================ FILE: ionic-angular/official/tutorial/src/pages/hello-ionic/hello-ionic.scss ================================================ page-hello-ionic { } ================================================ FILE: ionic-angular/official/tutorial/src/pages/hello-ionic/hello-ionic.ts ================================================ import { Component } from '@angular/core'; @Component({ selector: 'page-hello-ionic', templateUrl: 'hello-ionic.html' }) export class HelloIonicPage { constructor() { } } ================================================ FILE: ionic-angular/official/tutorial/src/pages/item-details/item-details.html ================================================ Item Details

{{selectedItem.title}}

You navigated here from {{selectedItem.title}}

================================================ FILE: ionic-angular/official/tutorial/src/pages/item-details/item-details.scss ================================================ page-item-details { } ================================================ FILE: ionic-angular/official/tutorial/src/pages/item-details/item-details.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; @Component({ selector: 'page-item-details', templateUrl: 'item-details.html' }) export class ItemDetailsPage { selectedItem: any; constructor(public navCtrl: NavController, public navParams: NavParams) { // If we navigated to this page, we will have an item available as a nav param this.selectedItem = navParams.get('item'); } } ================================================ FILE: ionic-angular/official/tutorial/src/pages/list/list.html ================================================ My First List ================================================ FILE: ionic-angular/official/tutorial/src/pages/list/list.scss ================================================ page-list { } ================================================ FILE: ionic-angular/official/tutorial/src/pages/list/list.ts ================================================ import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; import { ItemDetailsPage } from '../item-details/item-details'; @Component({ selector: 'page-list', templateUrl: 'list.html' }) export class ListPage { icons: string[]; items: Array<{title: string, note: string, icon: string}>; constructor(public navCtrl: NavController, public navParams: NavParams) { this.icons = ['flask', 'wifi', 'beer', 'football', 'basketball', 'paper-plane', 'american-football', 'boat', 'bluetooth', 'build']; this.items = []; for(let i = 1; i < 11; i++) { this.items.push({ title: 'Item ' + i, note: 'This is item #' + i, icon: this.icons[Math.floor(Math.random() * this.icons.length)] }); } } itemTapped(event, item) { this.navCtrl.push(ItemDetailsPage, { item: item }); } } ================================================ FILE: ionic1/base/.bowerrc ================================================ { "directory": "www/lib" } ================================================ FILE: ionic1/base/.editorconfig ================================================ # http://editorconfig.org root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true [*.md] insert_final_newline = false trim_trailing_whitespace = false ================================================ FILE: ionic1/base/.gitignore ================================================ # Specifies intentionally untracked files to ignore when using Git # http://git-scm.com/docs/gitignore *~ *.sw[mnpcod] .tmp *.tmp *.tmp.* *.sublime-project *.sublime-workspace .DS_Store Thumbs.db UserInterfaceState.xcuserstate $RECYCLE.BIN/ *.log log.txt npm-debug.log* /.idea /.ionic /.sass-cache /.sourcemaps /.versions /.vscode /coverage /dist /node_modules /platforms /plugins /www ================================================ FILE: ionic1/base/bower.json ================================================ { "name": "HelloIonic", "private": "true", "devDependencies": { "ionic": "ionic-team/ionic-bower#1.3.4" } } ================================================ FILE: ionic1/base/gulpfile.js ================================================ var gulp = require('gulp'); var sass = require('gulp-sass'); var cleanCss = require('gulp-clean-css'); var rename = require('gulp-rename'); var paths = { sass: ['./scss/**/*.scss'] }; gulp.task('default', ['sass']); gulp.task('sass', function(done) { gulp.src('./scss/ionic.app.scss') .pipe(sass()) .on('error', sass.logError) .pipe(gulp.dest('./www/css/')) .pipe(cleanCss({ keepSpecialComments: 0 })) .pipe(rename({ extname: '.min.css' })) .pipe(gulp.dest('./www/css/')) .on('end', done); }); gulp.task('watch', ['sass'], function() { gulp.watch(paths.sass, ['sass']); }); ================================================ FILE: ionic1/base/hooks/README.md ================================================ Please read the Cordova [Hooks Guide](https://cordova.apache.org/docs/en/latest/guide/appdev/hooks/) to learn how to hook into Cordova CLI commands. ================================================ FILE: ionic1/base/hooks/after_prepare/010_add_platform_class.js ================================================ #!/usr/bin/env node // Add Platform Class // v1.0 // Automatically adds the platform class to the body tag // after the `prepare` command. By placing the platform CSS classes // directly in the HTML built for the platform, it speeds up // rendering the correct layout/style for the specific platform // instead of waiting for the JS to figure out the correct classes. var fs = require('fs'); var path = require('path'); var rootdir = process.argv[2]; function addPlatformBodyTag(indexPath, platform) { // add the platform class to the body tag try { var platformClass = 'platform-' + platform; var cordovaClass = 'platform-cordova platform-webview'; var html = fs.readFileSync(indexPath, 'utf8'); var bodyTag = findBodyTag(html); if(!bodyTag) return; // no opening body tag, something's wrong if(bodyTag.indexOf(platformClass) > -1) return; // already added var newBodyTag = bodyTag; var classAttr = findClassAttr(bodyTag); if(classAttr) { // body tag has existing class attribute, add the classname var endingQuote = classAttr.substring(classAttr.length-1); var newClassAttr = classAttr.substring(0, classAttr.length-1); newClassAttr += ' ' + platformClass + ' ' + cordovaClass + endingQuote; newBodyTag = bodyTag.replace(classAttr, newClassAttr); } else { // add class attribute to the body tag newBodyTag = bodyTag.replace('>', ' class="' + platformClass + ' ' + cordovaClass + '">'); } html = html.replace(bodyTag, newBodyTag); fs.writeFileSync(indexPath, html, 'utf8'); process.stdout.write('add to body class: ' + platformClass + '\n'); } catch(e) { process.stdout.write(e); } } function findBodyTag(html) { // get the body tag try{ return html.match(/])(.*?)>/gi)[0]; }catch(e){} } function findClassAttr(bodyTag) { // get the body tag's class attribute try{ return bodyTag.match(/ class=["|'](.*?)["|']/gi)[0]; }catch(e){} } if (rootdir) { // go through each of the platform directories that have been prepared var platforms = (process.env.CORDOVA_PLATFORMS ? process.env.CORDOVA_PLATFORMS.split(',') : []); for(var x=0; x

Ionic Blank Starter

================================================ FILE: ionic1/base/www/js/app.js ================================================ // Ionic Starter App // angular.module is a global place for creating, registering and retrieving Angular modules // 'starter' is the name of this angular module example (also set in a attribute in index.html) // the 2nd parameter is an array of 'requires' angular.module('starter', ['ionic']) .run(function($ionicPlatform) { $ionicPlatform.ready(function() { // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard // for form inputs). // The reason we default this to hidden is that native apps don't usually show an accessory bar, at // least on iOS. It's a dead giveaway that an app is using a Web View. However, it's sometimes // useful especially with forms, though we would prefer giving the user a little more room // to interact with the app. if (window.cordova && window.Keyboard) { window.Keyboard.hideKeyboardAccessoryBar(true); } if (window.StatusBar) { // Set the statusbar to use the default style, tweak this to // remove the status bar on iOS or change it to use white instead of dark colors. StatusBar.styleDefault(); } }); }); ================================================ FILE: ionic1/base/www/lib/ionic/.bower.json ================================================ { "name": "ionic", "version": "1.3.4", "codename": "hong kong", "homepage": "https://github.com/ionic-team/ionic", "authors": [ "Max Lynch ", "Adam Bradley ", "Ben Sperry " ], "description": "Advanced HTML5 hybrid mobile app development framework.", "main": [ "css/ionic.css", "fonts/*", "js/ionic.js", "js/ionic-angular.js" ], "keywords": [ "mobile", "html5", "ionic", "cordova", "phonegap", "trigger", "triggerio", "angularjs", "angular" ], "license": "MIT", "private": false, "dependencies": { "angular": "1.5.3", "angular-animate": "1.5.3", "angular-sanitize": "1.5.3", "angular-ui-router": "0.2.13" }, "_release": "1.3.4", "_resolution": { "type": "version", "tag": "v1.3.4", "commit": "f0b8ff4e49bf8adae91307a539e650ae77b13921" }, "_source": "https://github.com/ionic-team/ionic-bower.git", "_target": "1.3.4", "_originalSource": "ionic-team/ionic-bower" } ================================================ FILE: ionic1/base/www/lib/ionic/README.md ================================================ # ionic-bower Bower repository for [Ionic Framework](http://github.com/driftyco/ionic) v1 (Ionic 2+ uses npm) ### Usage Include `js/ionic.bundle.js` to get ionic and all of its dependencies. Alternatively, include the individual ionic files with the dependencies separately. ### Versions To install the latest stable version, `bower install driftyco/ionic-bower#v1.1.1` To install the latest nightly release, `bower install driftyco/ionic-bower#master` ================================================ FILE: ionic1/base/www/lib/ionic/bower.json ================================================ { "name": "ionic", "version": "1.3.4", "codename": "hong kong", "homepage": "https://github.com/ionic-team/ionic", "authors": [ "Max Lynch ", "Adam Bradley ", "Ben Sperry " ], "description": "Advanced HTML5 hybrid mobile app development framework.", "main": [ "css/ionic.css", "fonts/*", "js/ionic.js", "js/ionic-angular.js" ], "keywords": [ "mobile", "html5", "ionic", "cordova", "phonegap", "trigger", "triggerio", "angularjs", "angular" ], "license": "MIT", "private": false, "dependencies": { "angular": "1.5.3", "angular-animate": "1.5.3", "angular-sanitize": "1.5.3", "angular-ui-router": "0.2.13" } } ================================================ FILE: ionic1/base/www/lib/ionic/css/ionic.css ================================================ @charset "UTF-8"; /*! Ionicons, v2.0.1 Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ https://twitter.com/benjsperry https://twitter.com/ionicframework MIT License: https://github.com/ionic-team/ionicons Android-style icons originally built by Google’s Material Design Icons: https://github.com/google/material-design-icons used under CC BY http://creativecommons.org/licenses/by/4.0/ Modified icons to fit ionicon’s grid from original. */ @font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.1"); src: url("../fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.1") format("truetype"), url("../fonts/ionicons.woff?v=2.0.1") format("woff"), url("../fonts/ionicons.woff") format("woff"), url("../fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg"); font-weight: normal; font-style: normal; } .ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .ion-alert:before { content: ""; } .ion-alert-circled:before { content: ""; } .ion-android-add:before { content: ""; } .ion-android-add-circle:before { content: ""; } .ion-android-alarm-clock:before { content: ""; } .ion-android-alert:before { content: ""; } .ion-android-apps:before { content: ""; } .ion-android-archive:before { content: ""; } .ion-android-arrow-back:before { content: ""; } .ion-android-arrow-down:before { content: ""; } .ion-android-arrow-dropdown:before { content: ""; } .ion-android-arrow-dropdown-circle:before { content: ""; } .ion-android-arrow-dropleft:before { content: ""; } .ion-android-arrow-dropleft-circle:before { content: ""; } .ion-android-arrow-dropright:before { content: ""; } .ion-android-arrow-dropright-circle:before { content: ""; } .ion-android-arrow-dropup:before { content: ""; } .ion-android-arrow-dropup-circle:before { content: ""; } .ion-android-arrow-forward:before { content: ""; } .ion-android-arrow-up:before { content: ""; } .ion-android-attach:before { content: ""; } .ion-android-bar:before { content: ""; } .ion-android-bicycle:before { content: ""; } .ion-android-boat:before { content: ""; } .ion-android-bookmark:before { content: ""; } .ion-android-bulb:before { content: ""; } .ion-android-bus:before { content: ""; } .ion-android-calendar:before { content: ""; } .ion-android-call:before { content: ""; } .ion-android-camera:before { content: ""; } .ion-android-cancel:before { content: ""; } .ion-android-car:before { content: ""; } .ion-android-cart:before { content: ""; } .ion-android-chat:before { content: ""; } .ion-android-checkbox:before { content: ""; } .ion-android-checkbox-blank:before { content: ""; } .ion-android-checkbox-outline:before { content: ""; } .ion-android-checkbox-outline-blank:before { content: ""; } .ion-android-checkmark-circle:before { content: ""; } .ion-android-clipboard:before { content: ""; } .ion-android-close:before { content: ""; } .ion-android-cloud:before { content: ""; } .ion-android-cloud-circle:before { content: ""; } .ion-android-cloud-done:before { content: ""; } .ion-android-cloud-outline:before { content: ""; } .ion-android-color-palette:before { content: ""; } .ion-android-compass:before { content: ""; } .ion-android-contact:before { content: ""; } .ion-android-contacts:before { content: ""; } .ion-android-contract:before { content: ""; } .ion-android-create:before { content: ""; } .ion-android-delete:before { content: ""; } .ion-android-desktop:before { content: ""; } .ion-android-document:before { content: ""; } .ion-android-done:before { content: ""; } .ion-android-done-all:before { content: ""; } .ion-android-download:before { content: ""; } .ion-android-drafts:before { content: ""; } .ion-android-exit:before { content: ""; } .ion-android-expand:before { content: ""; } .ion-android-favorite:before { content: ""; } .ion-android-favorite-outline:before { content: ""; } .ion-android-film:before { content: ""; } .ion-android-folder:before { content: ""; } .ion-android-folder-open:before { content: ""; } .ion-android-funnel:before { content: ""; } .ion-android-globe:before { content: ""; } .ion-android-hand:before { content: ""; } .ion-android-hangout:before { content: ""; } .ion-android-happy:before { content: ""; } .ion-android-home:before { content: ""; } .ion-android-image:before { content: ""; } .ion-android-laptop:before { content: ""; } .ion-android-list:before { content: ""; } .ion-android-locate:before { content: ""; } .ion-android-lock:before { content: ""; } .ion-android-mail:before { content: ""; } .ion-android-map:before { content: ""; } .ion-android-menu:before { content: ""; } .ion-android-microphone:before { content: ""; } .ion-android-microphone-off:before { content: ""; } .ion-android-more-horizontal:before { content: ""; } .ion-android-more-vertical:before { content: ""; } .ion-android-navigate:before { content: ""; } .ion-android-notifications:before { content: ""; } .ion-android-notifications-none:before { content: ""; } .ion-android-notifications-off:before { content: ""; } .ion-android-open:before { content: ""; } .ion-android-options:before { content: ""; } .ion-android-people:before { content: ""; } .ion-android-person:before { content: ""; } .ion-android-person-add:before { content: ""; } .ion-android-phone-landscape:before { content: ""; } .ion-android-phone-portrait:before { content: ""; } .ion-android-pin:before { content: ""; } .ion-android-plane:before { content: ""; } .ion-android-playstore:before { content: ""; } .ion-android-print:before { content: ""; } .ion-android-radio-button-off:before { content: ""; } .ion-android-radio-button-on:before { content: ""; } .ion-android-refresh:before { content: ""; } .ion-android-remove:before { content: ""; } .ion-android-remove-circle:before { content: ""; } .ion-android-restaurant:before { content: ""; } .ion-android-sad:before { content: ""; } .ion-android-search:before { content: ""; } .ion-android-send:before { content: ""; } .ion-android-settings:before { content: ""; } .ion-android-share:before { content: ""; } .ion-android-share-alt:before { content: ""; } .ion-android-star:before { content: ""; } .ion-android-star-half:before { content: ""; } .ion-android-star-outline:before { content: ""; } .ion-android-stopwatch:before { content: ""; } .ion-android-subway:before { content: ""; } .ion-android-sunny:before { content: ""; } .ion-android-sync:before { content: ""; } .ion-android-textsms:before { content: ""; } .ion-android-time:before { content: ""; } .ion-android-train:before { content: ""; } .ion-android-unlock:before { content: ""; } .ion-android-upload:before { content: ""; } .ion-android-volume-down:before { content: ""; } .ion-android-volume-mute:before { content: ""; } .ion-android-volume-off:before { content: ""; } .ion-android-volume-up:before { content: ""; } .ion-android-walk:before { content: ""; } .ion-android-warning:before { content: ""; } .ion-android-watch:before { content: ""; } .ion-android-wifi:before { content: ""; } .ion-aperture:before { content: ""; } .ion-archive:before { content: ""; } .ion-arrow-down-a:before { content: ""; } .ion-arrow-down-b:before { content: ""; } .ion-arrow-down-c:before { content: ""; } .ion-arrow-expand:before { content: ""; } .ion-arrow-graph-down-left:before { content: ""; } .ion-arrow-graph-down-right:before { content: ""; } .ion-arrow-graph-up-left:before { content: ""; } .ion-arrow-graph-up-right:before { content: ""; } .ion-arrow-left-a:before { content: ""; } .ion-arrow-left-b:before { content: ""; } .ion-arrow-left-c:before { content: ""; } .ion-arrow-move:before { content: ""; } .ion-arrow-resize:before { content: ""; } .ion-arrow-return-left:before { content: ""; } .ion-arrow-return-right:before { content: ""; } .ion-arrow-right-a:before { content: ""; } .ion-arrow-right-b:before { content: ""; } .ion-arrow-right-c:before { content: ""; } .ion-arrow-shrink:before { content: ""; } .ion-arrow-swap:before { content: ""; } .ion-arrow-up-a:before { content: ""; } .ion-arrow-up-b:before { content: ""; } .ion-arrow-up-c:before { content: ""; } .ion-asterisk:before { content: ""; } .ion-at:before { content: ""; } .ion-backspace:before { content: ""; } .ion-backspace-outline:before { content: ""; } .ion-bag:before { content: ""; } .ion-battery-charging:before { content: ""; } .ion-battery-empty:before { content: ""; } .ion-battery-full:before { content: ""; } .ion-battery-half:before { content: ""; } .ion-battery-low:before { content: ""; } .ion-beaker:before { content: ""; } .ion-beer:before { content: ""; } .ion-bluetooth:before { content: ""; } .ion-bonfire:before { content: ""; } .ion-bookmark:before { content: ""; } .ion-bowtie:before { content: ""; } .ion-briefcase:before { content: ""; } .ion-bug:before { content: ""; } .ion-calculator:before { content: ""; } .ion-calendar:before { content: ""; } .ion-camera:before { content: ""; } .ion-card:before { content: ""; } .ion-cash:before { content: ""; } .ion-chatbox:before { content: ""; } .ion-chatbox-working:before { content: ""; } .ion-chatboxes:before { content: ""; } .ion-chatbubble:before { content: ""; } .ion-chatbubble-working:before { content: ""; } .ion-chatbubbles:before { content: ""; } .ion-checkmark:before { content: ""; } .ion-checkmark-circled:before { content: ""; } .ion-checkmark-round:before { content: ""; } .ion-chevron-down:before { content: ""; } .ion-chevron-left:before { content: ""; } .ion-chevron-right:before { content: ""; } .ion-chevron-up:before { content: ""; } .ion-clipboard:before { content: ""; } .ion-clock:before { content: ""; } .ion-close:before { content: ""; } .ion-close-circled:before { content: ""; } .ion-close-round:before { content: ""; } .ion-closed-captioning:before { content: ""; } .ion-cloud:before { content: ""; } .ion-code:before { content: ""; } .ion-code-download:before { content: ""; } .ion-code-working:before { content: ""; } .ion-coffee:before { content: ""; } .ion-compass:before { content: ""; } .ion-compose:before { content: ""; } .ion-connection-bars:before { content: ""; } .ion-contrast:before { content: ""; } .ion-crop:before { content: ""; } .ion-cube:before { content: ""; } .ion-disc:before { content: ""; } .ion-document:before { content: ""; } .ion-document-text:before { content: ""; } .ion-drag:before { content: ""; } .ion-earth:before { content: ""; } .ion-easel:before { content: ""; } .ion-edit:before { content: ""; } .ion-egg:before { content: ""; } .ion-eject:before { content: ""; } .ion-email:before { content: ""; } .ion-email-unread:before { content: ""; } .ion-erlenmeyer-flask:before { content: ""; } .ion-erlenmeyer-flask-bubbles:before { content: ""; } .ion-eye:before { content: ""; } .ion-eye-disabled:before { content: ""; } .ion-female:before { content: ""; } .ion-filing:before { content: ""; } .ion-film-marker:before { content: ""; } .ion-fireball:before { content: ""; } .ion-flag:before { content: ""; } .ion-flame:before { content: ""; } .ion-flash:before { content: ""; } .ion-flash-off:before { content: ""; } .ion-folder:before { content: ""; } .ion-fork:before { content: ""; } .ion-fork-repo:before { content: ""; } .ion-forward:before { content: ""; } .ion-funnel:before { content: ""; } .ion-gear-a:before { content: ""; } .ion-gear-b:before { content: ""; } .ion-grid:before { content: ""; } .ion-hammer:before { content: ""; } .ion-happy:before { content: ""; } .ion-happy-outline:before { content: ""; } .ion-headphone:before { content: ""; } .ion-heart:before { content: ""; } .ion-heart-broken:before { content: ""; } .ion-help:before { content: ""; } .ion-help-buoy:before { content: ""; } .ion-help-circled:before { content: ""; } .ion-home:before { content: ""; } .ion-icecream:before { content: ""; } .ion-image:before { content: ""; } .ion-images:before { content: ""; } .ion-information:before { content: ""; } .ion-information-circled:before { content: ""; } .ion-ionic:before { content: ""; } .ion-ios-alarm:before { content: ""; } .ion-ios-alarm-outline:before { content: ""; } .ion-ios-albums:before { content: ""; } .ion-ios-albums-outline:before { content: ""; } .ion-ios-americanfootball:before { content: ""; } .ion-ios-americanfootball-outline:before { content: ""; } .ion-ios-analytics:before { content: ""; } .ion-ios-analytics-outline:before { content: ""; } .ion-ios-arrow-back:before { content: ""; } .ion-ios-arrow-down:before { content: ""; } .ion-ios-arrow-forward:before { content: ""; } .ion-ios-arrow-left:before { content: ""; } .ion-ios-arrow-right:before { content: ""; } .ion-ios-arrow-thin-down:before { content: ""; } .ion-ios-arrow-thin-left:before { content: ""; } .ion-ios-arrow-thin-right:before { content: ""; } .ion-ios-arrow-thin-up:before { content: ""; } .ion-ios-arrow-up:before { content: ""; } .ion-ios-at:before { content: ""; } .ion-ios-at-outline:before { content: ""; } .ion-ios-barcode:before { content: ""; } .ion-ios-barcode-outline:before { content: ""; } .ion-ios-baseball:before { content: ""; } .ion-ios-baseball-outline:before { content: ""; } .ion-ios-basketball:before { content: ""; } .ion-ios-basketball-outline:before { content: ""; } .ion-ios-bell:before { content: ""; } .ion-ios-bell-outline:before { content: ""; } .ion-ios-body:before { content: ""; } .ion-ios-body-outline:before { content: ""; } .ion-ios-bolt:before { content: ""; } .ion-ios-bolt-outline:before { content: ""; } .ion-ios-book:before { content: ""; } .ion-ios-book-outline:before { content: ""; } .ion-ios-bookmarks:before { content: ""; } .ion-ios-bookmarks-outline:before { content: ""; } .ion-ios-box:before { content: ""; } .ion-ios-box-outline:before { content: ""; } .ion-ios-briefcase:before { content: ""; } .ion-ios-briefcase-outline:before { content: ""; } .ion-ios-browsers:before { content: ""; } .ion-ios-browsers-outline:before { content: ""; } .ion-ios-calculator:before { content: ""; } .ion-ios-calculator-outline:before { content: ""; } .ion-ios-calendar:before { content: ""; } .ion-ios-calendar-outline:before { content: ""; } .ion-ios-camera:before { content: ""; } .ion-ios-camera-outline:before { content: ""; } .ion-ios-cart:before { content: ""; } .ion-ios-cart-outline:before { content: ""; } .ion-ios-chatboxes:before { content: ""; } .ion-ios-chatboxes-outline:before { content: ""; } .ion-ios-chatbubble:before { content: ""; } .ion-ios-chatbubble-outline:before { content: ""; } .ion-ios-checkmark:before { content: ""; } .ion-ios-checkmark-empty:before { content: ""; } .ion-ios-checkmark-outline:before { content: ""; } .ion-ios-circle-filled:before { content: ""; } .ion-ios-circle-outline:before { content: ""; } .ion-ios-clock:before { content: ""; } .ion-ios-clock-outline:before { content: ""; } .ion-ios-close:before { content: ""; } .ion-ios-close-empty:before { content: ""; } .ion-ios-close-outline:before { content: ""; } .ion-ios-cloud:before { content: ""; } .ion-ios-cloud-download:before { content: ""; } .ion-ios-cloud-download-outline:before { content: ""; } .ion-ios-cloud-outline:before { content: ""; } .ion-ios-cloud-upload:before { content: ""; } .ion-ios-cloud-upload-outline:before { content: ""; } .ion-ios-cloudy:before { content: ""; } .ion-ios-cloudy-night:before { content: ""; } .ion-ios-cloudy-night-outline:before { content: ""; } .ion-ios-cloudy-outline:before { content: ""; } .ion-ios-cog:before { content: ""; } .ion-ios-cog-outline:before { content: ""; } .ion-ios-color-filter:before { content: ""; } .ion-ios-color-filter-outline:before { content: ""; } .ion-ios-color-wand:before { content: ""; } .ion-ios-color-wand-outline:before { content: ""; } .ion-ios-compose:before { content: ""; } .ion-ios-compose-outline:before { content: ""; } .ion-ios-contact:before { content: ""; } .ion-ios-contact-outline:before { content: ""; } .ion-ios-copy:before { content: ""; } .ion-ios-copy-outline:before { content: ""; } .ion-ios-crop:before { content: ""; } .ion-ios-crop-strong:before { content: ""; } .ion-ios-download:before { content: ""; } .ion-ios-download-outline:before { content: ""; } .ion-ios-drag:before { content: ""; } .ion-ios-email:before { content: ""; } .ion-ios-email-outline:before { content: ""; } .ion-ios-eye:before { content: ""; } .ion-ios-eye-outline:before { content: ""; } .ion-ios-fastforward:before { content: ""; } .ion-ios-fastforward-outline:before { content: ""; } .ion-ios-filing:before { content: ""; } .ion-ios-filing-outline:before { content: ""; } .ion-ios-film:before { content: ""; } .ion-ios-film-outline:before { content: ""; } .ion-ios-flag:before { content: ""; } .ion-ios-flag-outline:before { content: ""; } .ion-ios-flame:before { content: ""; } .ion-ios-flame-outline:before { content: ""; } .ion-ios-flask:before { content: ""; } .ion-ios-flask-outline:before { content: ""; } .ion-ios-flower:before { content: ""; } .ion-ios-flower-outline:before { content: ""; } .ion-ios-folder:before { content: ""; } .ion-ios-folder-outline:before { content: ""; } .ion-ios-football:before { content: ""; } .ion-ios-football-outline:before { content: ""; } .ion-ios-game-controller-a:before { content: ""; } .ion-ios-game-controller-a-outline:before { content: ""; } .ion-ios-game-controller-b:before { content: ""; } .ion-ios-game-controller-b-outline:before { content: ""; } .ion-ios-gear:before { content: ""; } .ion-ios-gear-outline:before { content: ""; } .ion-ios-glasses:before { content: ""; } .ion-ios-glasses-outline:before { content: ""; } .ion-ios-grid-view:before { content: ""; } .ion-ios-grid-view-outline:before { content: ""; } .ion-ios-heart:before { content: ""; } .ion-ios-heart-outline:before { content: ""; } .ion-ios-help:before { content: ""; } .ion-ios-help-empty:before { content: ""; } .ion-ios-help-outline:before { content: ""; } .ion-ios-home:before { content: ""; } .ion-ios-home-outline:before { content: ""; } .ion-ios-infinite:before { content: ""; } .ion-ios-infinite-outline:before { content: ""; } .ion-ios-information:before { content: ""; } .ion-ios-information-empty:before { content: ""; } .ion-ios-information-outline:before { content: ""; } .ion-ios-ionic-outline:before { content: ""; } .ion-ios-keypad:before { content: ""; } .ion-ios-keypad-outline:before { content: ""; } .ion-ios-lightbulb:before { content: ""; } .ion-ios-lightbulb-outline:before { content: ""; } .ion-ios-list:before { content: ""; } .ion-ios-list-outline:before { content: ""; } .ion-ios-location:before { content: ""; } .ion-ios-location-outline:before { content: ""; } .ion-ios-locked:before { content: ""; } .ion-ios-locked-outline:before { content: ""; } .ion-ios-loop:before { content: ""; } .ion-ios-loop-strong:before { content: ""; } .ion-ios-medical:before { content: ""; } .ion-ios-medical-outline:before { content: ""; } .ion-ios-medkit:before { content: ""; } .ion-ios-medkit-outline:before { content: ""; } .ion-ios-mic:before { content: ""; } .ion-ios-mic-off:before { content: ""; } .ion-ios-mic-outline:before { content: ""; } .ion-ios-minus:before { content: ""; } .ion-ios-minus-empty:before { content: ""; } .ion-ios-minus-outline:before { content: ""; } .ion-ios-monitor:before { content: ""; } .ion-ios-monitor-outline:before { content: ""; } .ion-ios-moon:before { content: ""; } .ion-ios-moon-outline:before { content: ""; } .ion-ios-more:before { content: ""; } .ion-ios-more-outline:before { content: ""; } .ion-ios-musical-note:before { content: ""; } .ion-ios-musical-notes:before { content: ""; } .ion-ios-navigate:before { content: ""; } .ion-ios-navigate-outline:before { content: ""; } .ion-ios-nutrition:before { content: ""; } .ion-ios-nutrition-outline:before { content: ""; } .ion-ios-paper:before { content: ""; } .ion-ios-paper-outline:before { content: ""; } .ion-ios-paperplane:before { content: ""; } .ion-ios-paperplane-outline:before { content: ""; } .ion-ios-partlysunny:before { content: ""; } .ion-ios-partlysunny-outline:before { content: ""; } .ion-ios-pause:before { content: ""; } .ion-ios-pause-outline:before { content: ""; } .ion-ios-paw:before { content: ""; } .ion-ios-paw-outline:before { content: ""; } .ion-ios-people:before { content: ""; } .ion-ios-people-outline:before { content: ""; } .ion-ios-person:before { content: ""; } .ion-ios-person-outline:before { content: ""; } .ion-ios-personadd:before { content: ""; } .ion-ios-personadd-outline:before { content: ""; } .ion-ios-photos:before { content: ""; } .ion-ios-photos-outline:before { content: ""; } .ion-ios-pie:before { content: ""; } .ion-ios-pie-outline:before { content: ""; } .ion-ios-pint:before { content: ""; } .ion-ios-pint-outline:before { content: ""; } .ion-ios-play:before { content: ""; } .ion-ios-play-outline:before { content: ""; } .ion-ios-plus:before { content: ""; } .ion-ios-plus-empty:before { content: ""; } .ion-ios-plus-outline:before { content: ""; } .ion-ios-pricetag:before { content: ""; } .ion-ios-pricetag-outline:before { content: ""; } .ion-ios-pricetags:before { content: ""; } .ion-ios-pricetags-outline:before { content: ""; } .ion-ios-printer:before { content: ""; } .ion-ios-printer-outline:before { content: ""; } .ion-ios-pulse:before { content: ""; } .ion-ios-pulse-strong:before { content: ""; } .ion-ios-rainy:before { content: ""; } .ion-ios-rainy-outline:before { content: ""; } .ion-ios-recording:before { content: ""; } .ion-ios-recording-outline:before { content: ""; } .ion-ios-redo:before { content: ""; } .ion-ios-redo-outline:before { content: ""; } .ion-ios-refresh:before { content: ""; } .ion-ios-refresh-empty:before { content: ""; } .ion-ios-refresh-outline:before { content: ""; } .ion-ios-reload:before { content: ""; } .ion-ios-reverse-camera:before { content: ""; } .ion-ios-reverse-camera-outline:before { content: ""; } .ion-ios-rewind:before { content: ""; } .ion-ios-rewind-outline:before { content: ""; } .ion-ios-rose:before { content: ""; } .ion-ios-rose-outline:before { content: ""; } .ion-ios-search:before { content: ""; } .ion-ios-search-strong:before { content: ""; } .ion-ios-settings:before { content: ""; } .ion-ios-settings-strong:before { content: ""; } .ion-ios-shuffle:before { content: ""; } .ion-ios-shuffle-strong:before { content: ""; } .ion-ios-skipbackward:before { content: ""; } .ion-ios-skipbackward-outline:before { content: ""; } .ion-ios-skipforward:before { content: ""; } .ion-ios-skipforward-outline:before { content: ""; } .ion-ios-snowy:before { content: ""; } .ion-ios-speedometer:before { content: ""; } .ion-ios-speedometer-outline:before { content: ""; } .ion-ios-star:before { content: ""; } .ion-ios-star-half:before { content: ""; } .ion-ios-star-outline:before { content: ""; } .ion-ios-stopwatch:before { content: ""; } .ion-ios-stopwatch-outline:before { content: ""; } .ion-ios-sunny:before { content: ""; } .ion-ios-sunny-outline:before { content: ""; } .ion-ios-telephone:before { content: ""; } .ion-ios-telephone-outline:before { content: ""; } .ion-ios-tennisball:before { content: ""; } .ion-ios-tennisball-outline:before { content: ""; } .ion-ios-thunderstorm:before { content: ""; } .ion-ios-thunderstorm-outline:before { content: ""; } .ion-ios-time:before { content: ""; } .ion-ios-time-outline:before { content: ""; } .ion-ios-timer:before { content: ""; } .ion-ios-timer-outline:before { content: ""; } .ion-ios-toggle:before { content: ""; } .ion-ios-toggle-outline:before { content: ""; } .ion-ios-trash:before { content: ""; } .ion-ios-trash-outline:before { content: ""; } .ion-ios-undo:before { content: ""; } .ion-ios-undo-outline:before { content: ""; } .ion-ios-unlocked:before { content: ""; } .ion-ios-unlocked-outline:before { content: ""; } .ion-ios-upload:before { content: ""; } .ion-ios-upload-outline:before { content: ""; } .ion-ios-videocam:before { content: ""; } .ion-ios-videocam-outline:before { content: ""; } .ion-ios-volume-high:before { content: ""; } .ion-ios-volume-low:before { content: ""; } .ion-ios-wineglass:before { content: ""; } .ion-ios-wineglass-outline:before { content: ""; } .ion-ios-world:before { content: ""; } .ion-ios-world-outline:before { content: ""; } .ion-ipad:before { content: ""; } .ion-iphone:before { content: ""; } .ion-ipod:before { content: ""; } .ion-jet:before { content: ""; } .ion-key:before { content: ""; } .ion-knife:before { content: ""; } .ion-laptop:before { content: ""; } .ion-leaf:before { content: ""; } .ion-levels:before { content: ""; } .ion-lightbulb:before { content: ""; } .ion-link:before { content: ""; } .ion-load-a:before { content: ""; } .ion-load-b:before { content: ""; } .ion-load-c:before { content: ""; } .ion-load-d:before { content: ""; } .ion-location:before { content: ""; } .ion-lock-combination:before { content: ""; } .ion-locked:before { content: ""; } .ion-log-in:before { content: ""; } .ion-log-out:before { content: ""; } .ion-loop:before { content: ""; } .ion-magnet:before { content: ""; } .ion-male:before { content: ""; } .ion-man:before { content: ""; } .ion-map:before { content: ""; } .ion-medkit:before { content: ""; } .ion-merge:before { content: ""; } .ion-mic-a:before { content: ""; } .ion-mic-b:before { content: ""; } .ion-mic-c:before { content: ""; } .ion-minus:before { content: ""; } .ion-minus-circled:before { content: ""; } .ion-minus-round:before { content: ""; } .ion-model-s:before { content: ""; } .ion-monitor:before { content: ""; } .ion-more:before { content: ""; } .ion-mouse:before { content: ""; } .ion-music-note:before { content: ""; } .ion-navicon:before { content: ""; } .ion-navicon-round:before { content: ""; } .ion-navigate:before { content: ""; } .ion-network:before { content: ""; } .ion-no-smoking:before { content: ""; } .ion-nuclear:before { content: ""; } .ion-outlet:before { content: ""; } .ion-paintbrush:before { content: ""; } .ion-paintbucket:before { content: ""; } .ion-paper-airplane:before { content: ""; } .ion-paperclip:before { content: ""; } .ion-pause:before { content: ""; } .ion-person:before { content: ""; } .ion-person-add:before { content: ""; } .ion-person-stalker:before { content: ""; } .ion-pie-graph:before { content: ""; } .ion-pin:before { content: ""; } .ion-pinpoint:before { content: ""; } .ion-pizza:before { content: ""; } .ion-plane:before { content: ""; } .ion-planet:before { content: ""; } .ion-play:before { content: ""; } .ion-playstation:before { content: ""; } .ion-plus:before { content: ""; } .ion-plus-circled:before { content: ""; } .ion-plus-round:before { content: ""; } .ion-podium:before { content: ""; } .ion-pound:before { content: ""; } .ion-power:before { content: ""; } .ion-pricetag:before { content: ""; } .ion-pricetags:before { content: ""; } .ion-printer:before { content: ""; } .ion-pull-request:before { content: ""; } .ion-qr-scanner:before { content: ""; } .ion-quote:before { content: ""; } .ion-radio-waves:before { content: ""; } .ion-record:before { content: ""; } .ion-refresh:before { content: ""; } .ion-reply:before { content: ""; } .ion-reply-all:before { content: ""; } .ion-ribbon-a:before { content: ""; } .ion-ribbon-b:before { content: ""; } .ion-sad:before { content: ""; } .ion-sad-outline:before { content: ""; } .ion-scissors:before { content: ""; } .ion-search:before { content: ""; } .ion-settings:before { content: ""; } .ion-share:before { content: ""; } .ion-shuffle:before { content: ""; } .ion-skip-backward:before { content: ""; } .ion-skip-forward:before { content: ""; } .ion-social-android:before { content: ""; } .ion-social-android-outline:before { content: ""; } .ion-social-angular:before { content: ""; } .ion-social-angular-outline:before { content: ""; } .ion-social-apple:before { content: ""; } .ion-social-apple-outline:before { content: ""; } .ion-social-bitcoin:before { content: ""; } .ion-social-bitcoin-outline:before { content: ""; } .ion-social-buffer:before { content: ""; } .ion-social-buffer-outline:before { content: ""; } .ion-social-chrome:before { content: ""; } .ion-social-chrome-outline:before { content: ""; } .ion-social-codepen:before { content: ""; } .ion-social-codepen-outline:before { content: ""; } .ion-social-css3:before { content: ""; } .ion-social-css3-outline:before { content: ""; } .ion-social-designernews:before { content: ""; } .ion-social-designernews-outline:before { content: ""; } .ion-social-dribbble:before { content: ""; } .ion-social-dribbble-outline:before { content: ""; } .ion-social-dropbox:before { content: ""; } .ion-social-dropbox-outline:before { content: ""; } .ion-social-euro:before { content: ""; } .ion-social-euro-outline:before { content: ""; } .ion-social-facebook:before { content: ""; } .ion-social-facebook-outline:before { content: ""; } .ion-social-foursquare:before { content: ""; } .ion-social-foursquare-outline:before { content: ""; } .ion-social-freebsd-devil:before { content: ""; } .ion-social-github:before { content: ""; } .ion-social-github-outline:before { content: ""; } .ion-social-google:before { content: ""; } .ion-social-google-outline:before { content: ""; } .ion-social-googleplus:before { content: ""; } .ion-social-googleplus-outline:before { content: ""; } .ion-social-hackernews:before { content: ""; } .ion-social-hackernews-outline:before { content: ""; } .ion-social-html5:before { content: ""; } .ion-social-html5-outline:before { content: ""; } .ion-social-instagram:before { content: ""; } .ion-social-instagram-outline:before { content: ""; } .ion-social-javascript:before { content: ""; } .ion-social-javascript-outline:before { content: ""; } .ion-social-linkedin:before { content: ""; } .ion-social-linkedin-outline:before { content: ""; } .ion-social-markdown:before { content: ""; } .ion-social-nodejs:before { content: ""; } .ion-social-octocat:before { content: ""; } .ion-social-pinterest:before { content: ""; } .ion-social-pinterest-outline:before { content: ""; } .ion-social-python:before { content: ""; } .ion-social-reddit:before { content: ""; } .ion-social-reddit-outline:before { content: ""; } .ion-social-rss:before { content: ""; } .ion-social-rss-outline:before { content: ""; } .ion-social-sass:before { content: ""; } .ion-social-skype:before { content: ""; } .ion-social-skype-outline:before { content: ""; } .ion-social-snapchat:before { content: ""; } .ion-social-snapchat-outline:before { content: ""; } .ion-social-tumblr:before { content: ""; } .ion-social-tumblr-outline:before { content: ""; } .ion-social-tux:before { content: ""; } .ion-social-twitch:before { content: ""; } .ion-social-twitch-outline:before { content: ""; } .ion-social-twitter:before { content: ""; } .ion-social-twitter-outline:before { content: ""; } .ion-social-usd:before { content: ""; } .ion-social-usd-outline:before { content: ""; } .ion-social-vimeo:before { content: ""; } .ion-social-vimeo-outline:before { content: ""; } .ion-social-whatsapp:before { content: ""; } .ion-social-whatsapp-outline:before { content: ""; } .ion-social-windows:before { content: ""; } .ion-social-windows-outline:before { content: ""; } .ion-social-wordpress:before { content: ""; } .ion-social-wordpress-outline:before { content: ""; } .ion-social-yahoo:before { content: ""; } .ion-social-yahoo-outline:before { content: ""; } .ion-social-yen:before { content: ""; } .ion-social-yen-outline:before { content: ""; } .ion-social-youtube:before { content: ""; } .ion-social-youtube-outline:before { content: ""; } .ion-soup-can:before { content: ""; } .ion-soup-can-outline:before { content: ""; } .ion-speakerphone:before { content: ""; } .ion-speedometer:before { content: ""; } .ion-spoon:before { content: ""; } .ion-star:before { content: ""; } .ion-stats-bars:before { content: ""; } .ion-steam:before { content: ""; } .ion-stop:before { content: ""; } .ion-thermometer:before { content: ""; } .ion-thumbsdown:before { content: ""; } .ion-thumbsup:before { content: ""; } .ion-toggle:before { content: ""; } .ion-toggle-filled:before { content: ""; } .ion-transgender:before { content: ""; } .ion-trash-a:before { content: ""; } .ion-trash-b:before { content: ""; } .ion-trophy:before { content: ""; } .ion-tshirt:before { content: ""; } .ion-tshirt-outline:before { content: ""; } .ion-umbrella:before { content: ""; } .ion-university:before { content: ""; } .ion-unlocked:before { content: ""; } .ion-upload:before { content: ""; } .ion-usb:before { content: ""; } .ion-videocamera:before { content: ""; } .ion-volume-high:before { content: ""; } .ion-volume-low:before { content: ""; } .ion-volume-medium:before { content: ""; } .ion-volume-mute:before { content: ""; } .ion-wand:before { content: ""; } .ion-waterdrop:before { content: ""; } .ion-wifi:before { content: ""; } .ion-wineglass:before { content: ""; } .ion-woman:before { content: ""; } .ion-wrench:before { content: ""; } .ion-xbox:before { content: ""; } /** * Resets * -------------------------------------------------- * Adapted from normalize.css and some reset.css. We don't care even one * bit about old IE, so we don't need any hacks for that in here. * * There are probably other things we could remove here, as well. * * normalize.css v2.1.2 | MIT License | git.io/normalize * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) * http://cssreset.com */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, i, u, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, fieldset, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; vertical-align: baseline; font: inherit; font-size: 100%; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } /** * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /** * Hide the `template` element in IE, Safari, and Firefox < 22. */ [hidden], template { display: none; } script { display: none !important; } /* ========================================================================== Base ========================================================================== */ /** * 1. Set default font family to sans-serif. * 2. Prevent iOS text size adjust after orientation change, without disabling * user zoom. */ html { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; font-family: sans-serif; /* 1 */ -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /** * Remove default margin. */ body { margin: 0; line-height: 1; } /** * Remove default outlines. */ a, button, :focus, a:focus, button:focus, a:active, a:hover { outline: 0; } /* * * Remove tap highlight color */ a { -webkit-user-drag: none; -webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent; } a[href]:hover { cursor: pointer; } /* ========================================================================== Typography ========================================================================== */ /** * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ b, strong { font-weight: bold; } /** * Address styling not present in Safari 5 and Chrome. */ dfn { font-style: italic; } /** * Address differences between Firefox and other browsers. */ hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } /** * Correct font family set oddly in Safari 5 and Chrome. */ code, kbd, pre, samp { font-size: 1em; font-family: monospace, serif; } /** * Improve readability of pre-formatted text in all browsers. */ pre { white-space: pre-wrap; } /** * Set consistent quote types. */ q { quotes: "\201C" "\201D" "\2018" "\2019"; } /** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { position: relative; vertical-align: baseline; font-size: 75%; line-height: 0; } sup { top: -0.5em; } sub { bottom: -0.25em; } /** * Define consistent border, margin, and padding. */ fieldset { margin: 0 2px; padding: 0.35em 0.625em 0.75em; border: 1px solid #c0c0c0; } /** * 1. Correct `color` not being inherited in IE 8/9. * 2. Remove padding so people aren't caught out if they zero out fieldsets. */ legend { padding: 0; /* 2 */ border: 0; /* 1 */ } /** * 1. Correct font family not being inherited in all browsers. * 2. Correct font size not being inherited in all browsers. * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. * 4. Remove any default :focus styles * 5. Make sure webkit font smoothing is being inherited * 6. Remove default gradient in Android Firefox / FirefoxOS */ button, input, select, textarea { margin: 0; /* 3 */ font-size: 100%; /* 2 */ font-family: inherit; /* 1 */ outline-offset: 0; /* 4 */ outline-style: none; /* 4 */ outline-width: 0; /* 4 */ -webkit-font-smoothing: inherit; /* 5 */ background-image: none; /* 6 */ } /** * Address Firefox 4+ setting `line-height` on `input` using `importnt` in * the UA stylesheet. */ button, input { line-height: normal; } /** * Address inconsistent `text-transform` inheritance for `button` and `select`. * All other form control elements do not inherit `text-transform` values. * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. * Correct `select` style inheritance in Firefox 4+ and Opera. */ button, select { text-transform: none; } /** * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * and `video` controls. * 2. Correct inability to style clickable `input` types in iOS. * 3. Improve usability and consistency of cursor style between image-type * `input` and others. */ button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; /* 3 */ -webkit-appearance: button; /* 2 */ } /** * Re-set default cursor for disabled elements. */ button[disabled], html input[disabled] { cursor: default; } /** * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome * (include `-moz` to future-proof). */ input[type="search"] { -webkit-box-sizing: content-box; /* 2 */ -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; /* 1 */ } /** * Remove inner padding and search cancel button in Safari 5 and Chrome * on OS X. */ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * Remove inner padding and border in Firefox 4+. */ button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } /** * 1. Remove default vertical scrollbar in IE 8/9. * 2. Improve readability and alignment in all browsers. */ textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } img { -webkit-user-drag: none; } /* ========================================================================== Tables ========================================================================== */ /** * Remove most spacing between table cells. */ table { border-spacing: 0; border-collapse: collapse; } /** * Scaffolding * -------------------------------------------------- */ *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { overflow: hidden; -ms-touch-action: pan-y; touch-action: pan-y; } body, .ionic-body { -webkit-touch-callout: none; -webkit-font-smoothing: antialiased; font-smoothing: antialiased; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; -webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; top: 0; right: 0; bottom: 0; left: 0; overflow: hidden; margin: 0; padding: 0; color: #000; word-wrap: break-word; font-size: 14px; font-family: -apple-system; font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; line-height: 20px; text-rendering: optimizeLegibility; -webkit-backface-visibility: hidden; -webkit-user-drag: none; -ms-content-zooming: none; } body.grade-b, body.grade-c { text-rendering: auto; } .content { position: relative; } .scroll-content { position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow: hidden; margin-top: -1px; padding-top: 1px; margin-bottom: -1px; width: auto; height: auto; } .menu .scroll-content.scroll-content-false { z-index: 11; } .scroll-view { position: relative; display: block; overflow: hidden; margin-top: -1px; } .scroll-view.overflow-scroll { position: relative; } .scroll-view.scroll-x { overflow-x: scroll; overflow-y: hidden; } .scroll-view.scroll-y { overflow-x: hidden; overflow-y: scroll; } .scroll-view.scroll-xy { overflow-x: scroll; overflow-y: scroll; } /** * Scroll is the scroll view component available for complex and custom * scroll view functionality. */ .scroll { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; -webkit-transform-origin: left top; transform-origin: left top; } /** * Set ms-viewport to prevent MS "page squish" and allow fluid scrolling * https://msdn.microsoft.com/en-us/library/ie/hh869615(v=vs.85).aspx */ @-ms-viewport { width: device-width; } .scroll-bar { position: absolute; z-index: 9999; } .ng-animate .scroll-bar { visibility: hidden; } .scroll-bar-h { right: 2px; bottom: 3px; left: 2px; height: 3px; } .scroll-bar-h .scroll-bar-indicator { height: 100%; } .scroll-bar-v { top: 2px; right: 3px; bottom: 2px; width: 3px; } .scroll-bar-v .scroll-bar-indicator { width: 100%; } .scroll-bar-indicator { position: absolute; border-radius: 4px; background: rgba(0, 0, 0, 0.3); opacity: 1; -webkit-transition: opacity 0.3s linear; transition: opacity 0.3s linear; } .scroll-bar-indicator.scroll-bar-fade-out { opacity: 0; } .platform-android .scroll-bar-indicator { border-radius: 0; } .grade-b .scroll-bar-indicator, .grade-c .scroll-bar-indicator { background: #aaa; } .grade-b .scroll-bar-indicator.scroll-bar-fade-out, .grade-c .scroll-bar-indicator.scroll-bar-fade-out { -webkit-transition: none; transition: none; } ion-infinite-scroll { height: 60px; width: 100%; display: block; display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-direction: normal; -webkit-box-orient: horizontal; -webkit-flex-direction: row; -moz-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; -moz-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; } ion-infinite-scroll .icon { color: #666666; font-size: 30px; color: #666666; } ion-infinite-scroll:not(.active) .spinner, ion-infinite-scroll:not(.active) .icon:before { display: none; } .overflow-scroll { overflow-x: hidden; overflow-y: scroll; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; top: 0; right: 0; bottom: 0; left: 0; position: absolute; } .overflow-scroll.pane { overflow-x: hidden; overflow-y: scroll; } .overflow-scroll .scroll { position: static; height: 100%; -webkit-transform: translate3d(0, 0, 0); } /* If you change these, change platform.scss as well */ .has-header { top: 44px; } .no-header { top: 0; } .has-subheader { top: 88px; } .has-tabs-top { top: 93px; } .has-header.has-subheader.has-tabs-top { top: 137px; } .has-footer { bottom: 44px; } .has-subfooter { bottom: 88px; } .has-tabs, .bar-footer.has-tabs { bottom: 49px; } .has-tabs.pane, .bar-footer.has-tabs.pane { bottom: 49px; height: auto; } .bar-subfooter.has-tabs { bottom: 93px; } .has-footer.has-tabs { bottom: 93px; } .pane { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition-duration: 0; transition-duration: 0; z-index: 1; } .view { z-index: 1; } .pane, .view { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; background-color: #fff; overflow: hidden; } .view-container { position: absolute; display: block; width: 100%; height: 100%; } /** * Typography * -------------------------------------------------- */ p { margin: 0 0 10px; } small { font-size: 85%; } cite { font-style: normal; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: #000; font-weight: 500; font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; line-height: 1.2; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small { font-weight: normal; line-height: 1; } h1, .h1, h2, .h2, h3, .h3 { margin-top: 20px; margin-bottom: 10px; } h1:first-child, .h1:first-child, h2:first-child, .h2:first-child, h3:first-child, .h3:first-child { margin-top: 0; } h1 + h1, h1 + .h1, h1 + h2, h1 + .h2, h1 + h3, h1 + .h3, .h1 + h1, .h1 + .h1, .h1 + h2, .h1 + .h2, .h1 + h3, .h1 + .h3, h2 + h1, h2 + .h1, h2 + h2, h2 + .h2, h2 + h3, h2 + .h3, .h2 + h1, .h2 + .h1, .h2 + h2, .h2 + .h2, .h2 + h3, .h2 + .h3, h3 + h1, h3 + .h1, h3 + h2, h3 + .h2, h3 + h3, h3 + .h3, .h3 + h1, .h3 + .h1, .h3 + h2, .h3 + .h2, .h3 + h3, .h3 + .h3 { margin-top: 10px; } h4, .h4, h5, .h5, h6, .h6 { margin-top: 10px; margin-bottom: 10px; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } h1 small, .h1 small { font-size: 24px; } h2 small, .h2 small { font-size: 18px; } h3 small, .h3 small, h4 small, .h4 small { font-size: 14px; } dl { margin-bottom: 20px; } dt, dd { line-height: 1.42857; } dt { font-weight: bold; } blockquote { margin: 0 0 20px; padding: 10px 20px; border-left: 5px solid gray; } blockquote p { font-weight: 300; font-size: 17.5px; line-height: 1.25; } blockquote p:last-child { margin-bottom: 0; } blockquote small { display: block; line-height: 1.42857; } blockquote small:before { content: '\2014 \00A0'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 1.42857; } a { color: #387ef5; } a.subdued { padding-right: 10px; color: #888; text-decoration: none; } a.subdued:hover { text-decoration: none; } a.subdued:last-child { padding-right: 0; } /** * Action Sheets * -------------------------------------------------- */ .action-sheet-backdrop { -webkit-transition: background-color 150ms ease-in-out; transition: background-color 150ms ease-in-out; position: fixed; top: 0; left: 0; z-index: 11; width: 100%; height: 100%; background-color: transparent; } .action-sheet-backdrop.active { background-color: rgba(0, 0, 0, 0.4); } .action-sheet-wrapper { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); -webkit-transition: all cubic-bezier(0.36, 0.66, 0.04, 1) 500ms; transition: all cubic-bezier(0.36, 0.66, 0.04, 1) 500ms; position: absolute; bottom: 0; left: 0; right: 0; width: 100%; max-width: 500px; margin: auto; } .action-sheet-up { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .action-sheet { margin-left: 8px; margin-right: 8px; width: auto; z-index: 11; overflow: hidden; } .action-sheet .button { display: block; padding: 1px; width: 100%; border-radius: 0; border-color: #d1d3d6; background-color: transparent; color: #007aff; font-size: 21px; } .action-sheet .button:hover { color: #007aff; } .action-sheet .button.destructive { color: #ff3b30; } .action-sheet .button.destructive:hover { color: #ff3b30; } .action-sheet .button.active, .action-sheet .button.activated { box-shadow: none; border-color: #d1d3d6; color: #007aff; background: #e4e5e7; } .action-sheet-has-icons .icon { position: absolute; left: 16px; } .action-sheet-title { padding: 16px; color: #8f8f8f; text-align: center; font-size: 13px; } .action-sheet-group { margin-bottom: 8px; border-radius: 4px; background-color: #fff; overflow: hidden; } .action-sheet-group .button { border-width: 1px 0px 0px 0px; } .action-sheet-group .button:first-child:last-child { border-width: 0; } .action-sheet-options { background: #f1f2f3; } .action-sheet-cancel .button { font-weight: 500; } .action-sheet-open { pointer-events: none; } .action-sheet-open.modal-open .modal { pointer-events: none; } .action-sheet-open .action-sheet-backdrop { pointer-events: auto; } .platform-android .action-sheet-backdrop.active { background-color: rgba(0, 0, 0, 0.2); } .platform-android .action-sheet { margin: 0; } .platform-android .action-sheet .action-sheet-title, .platform-android .action-sheet .button { text-align: left; border-color: transparent; font-size: 16px; color: inherit; } .platform-android .action-sheet .action-sheet-title { font-size: 14px; padding: 16px; color: #666; } .platform-android .action-sheet .button.active, .platform-android .action-sheet .button.activated { background: #e8e8e8; } .platform-android .action-sheet-group { margin: 0; border-radius: 0; background-color: #fafafa; } .platform-android .action-sheet-cancel { display: none; } .platform-android .action-sheet-has-icons .button { padding-left: 56px; } .backdrop { position: fixed; top: 0; left: 0; z-index: 11; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.4); visibility: hidden; opacity: 0; -webkit-transition: 0.1s opacity linear; transition: 0.1s opacity linear; } .backdrop.visible { visibility: visible; } .backdrop.active { opacity: 1; } /** * Bar (Headers and Footers) * -------------------------------------------------- */ .bar { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; position: absolute; right: 0; left: 0; z-index: 9; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 5px; width: 100%; height: 44px; border-width: 0; border-style: solid; border-top: 1px solid transparent; border-bottom: 1px solid #ddd; background-color: white; /* border-width: 1px will actually create 2 device pixels on retina */ /* this nifty trick sets an actual 1px border on hi-res displays */ background-size: 0; } @media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi), (min-resolution: 1.5dppx) { .bar { border: none; background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); background-position: bottom; background-size: 100% 1px; background-repeat: no-repeat; } } .bar.bar-clear { border: none; background: none; color: #fff; } .bar.bar-clear .button { color: #fff; } .bar.bar-clear .title { color: #fff; } .bar.item-input-inset .item-input-wrapper { margin-top: -1px; } .bar.item-input-inset .item-input-wrapper input { padding-left: 8px; width: 94%; height: 28px; background: transparent; } .bar.bar-light { border-color: #ddd; background-color: white; background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); color: #444; } .bar.bar-light .title { color: #444; } .bar.bar-light.bar-footer { background-image: linear-gradient(180deg, #ddd, #ddd 50%, transparent 50%); } .bar.bar-stable { border-color: #b2b2b2; background-color: #f8f8f8; background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); color: #444; } .bar.bar-stable .title { color: #444; } .bar.bar-stable.bar-footer { background-image: linear-gradient(180deg, #b2b2b2, #b2b2b2 50%, transparent 50%); } .bar.bar-positive { border-color: #0c60ee; background-color: #387ef5; background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); color: #fff; } .bar.bar-positive .title { color: #fff; } .bar.bar-positive.bar-footer { background-image: linear-gradient(180deg, #0c60ee, #0c60ee 50%, transparent 50%); } .bar.bar-calm { border-color: #0a9dc7; background-color: #11c1f3; background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); color: #fff; } .bar.bar-calm .title { color: #fff; } .bar.bar-calm.bar-footer { background-image: linear-gradient(180deg, #0a9dc7, #0a9dc7 50%, transparent 50%); } .bar.bar-assertive { border-color: #e42112; background-color: #ef473a; background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); color: #fff; } .bar.bar-assertive .title { color: #fff; } .bar.bar-assertive.bar-footer { background-image: linear-gradient(180deg, #e42112, #e42112 50%, transparent 50%); } .bar.bar-balanced { border-color: #28a54c; background-color: #33cd5f; background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); color: #fff; } .bar.bar-balanced .title { color: #fff; } .bar.bar-balanced.bar-footer { background-image: linear-gradient(180deg, #28a54c, #28a54c 50%, transparent 50%); } .bar.bar-energized { border-color: #e6b500; background-color: #ffc900; background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); color: #fff; } .bar.bar-energized .title { color: #fff; } .bar.bar-energized.bar-footer { background-image: linear-gradient(180deg, #e6b500, #e6b500 50%, transparent 50%); } .bar.bar-royal { border-color: #6b46e5; background-color: #886aea; background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); color: #fff; } .bar.bar-royal .title { color: #fff; } .bar.bar-royal.bar-footer { background-image: linear-gradient(180deg, #6b46e5, #6b46e5 50%, transparent 50%); } .bar.bar-dark { border-color: #111; background-color: #444444; background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); color: #fff; } .bar.bar-dark .title { color: #fff; } .bar.bar-dark.bar-footer { background-image: linear-gradient(180deg, #111, #111 50%, transparent 50%); } .bar .title { display: block; position: absolute; top: 0; right: 0; left: 0; z-index: 0; overflow: hidden; margin: 0 10px; min-width: 30px; height: 43px; text-align: center; text-overflow: ellipsis; white-space: nowrap; font-size: 17px; font-weight: 500; line-height: 44px; } .bar .title.title-left { text-align: left; } .bar .title.title-right { text-align: right; } .bar .title a { color: inherit; } .bar .button, .bar button { z-index: 1; padding: 0 8px; min-width: initial; min-height: 31px; font-weight: 400; font-size: 13px; line-height: 32px; } .bar .button.button-icon:before, .bar .button .icon:before, .bar .button.icon:before, .bar .button.icon-left:before, .bar .button.icon-right:before, .bar button.button-icon:before, .bar button .icon:before, .bar button.icon:before, .bar button.icon-left:before, .bar button.icon-right:before { padding-right: 2px; padding-left: 2px; font-size: 20px; line-height: 32px; } .bar .button.button-icon, .bar button.button-icon { font-size: 17px; } .bar .button.button-icon .icon:before, .bar .button.button-icon:before, .bar .button.button-icon.icon-left:before, .bar .button.button-icon.icon-right:before, .bar button.button-icon .icon:before, .bar button.button-icon:before, .bar button.button-icon.icon-left:before, .bar button.button-icon.icon-right:before { vertical-align: top; font-size: 32px; line-height: 32px; } .bar .button.button-clear, .bar button.button-clear { padding-right: 2px; padding-left: 2px; font-weight: 300; font-size: 17px; } .bar .button.button-clear .icon:before, .bar .button.button-clear.icon:before, .bar .button.button-clear.icon-left:before, .bar .button.button-clear.icon-right:before, .bar button.button-clear .icon:before, .bar button.button-clear.icon:before, .bar button.button-clear.icon-left:before, .bar button.button-clear.icon-right:before { font-size: 32px; line-height: 32px; } .bar .button.back-button, .bar button.back-button { display: block; margin-right: 5px; padding: 0; white-space: nowrap; font-weight: 400; } .bar .button.back-button.active, .bar .button.back-button.activated, .bar button.back-button.active, .bar button.back-button.activated { opacity: 0.2; } .bar .button-bar > .button, .bar .buttons > .button { min-height: 31px; line-height: 32px; } .bar .button-bar + .button, .bar .button + .button-bar { margin-left: 5px; } .bar .buttons, .bar .buttons.primary-buttons, .bar .buttons.secondary-buttons { display: inherit; } .bar .buttons span { display: inline-block; } .bar .buttons-left span { margin-right: 5px; display: inherit; } .bar .buttons-right span { margin-left: 5px; display: inherit; } .bar .title + .button:last-child, .bar > .button + .button:last-child, .bar > .button.pull-right, .bar .buttons.pull-right, .bar .title + .buttons { position: absolute; top: 5px; right: 5px; bottom: 5px; } .platform-android .nav-bar-has-subheader .bar { background-image: none; } .platform-android .bar .back-button .icon:before { font-size: 24px; } .platform-android .bar .title { font-size: 19px; line-height: 44px; } .bar-light .button { border-color: #ddd; background-color: white; color: #444; } .bar-light .button:hover { color: #444; text-decoration: none; } .bar-light .button.active, .bar-light .button.activated { border-color: #ccc; background-color: #fafafa; } .bar-light .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #444; font-size: 17px; } .bar-light .button.button-icon { border-color: transparent; background: none; } .bar-stable .button { border-color: #b2b2b2; background-color: #f8f8f8; color: #444; } .bar-stable .button:hover { color: #444; text-decoration: none; } .bar-stable .button.active, .bar-stable .button.activated { border-color: #a2a2a2; background-color: #e5e5e5; } .bar-stable .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #444; font-size: 17px; } .bar-stable .button.button-icon { border-color: transparent; background: none; } .bar-positive .button { border-color: #0c60ee; background-color: #387ef5; color: #fff; } .bar-positive .button:hover { color: #fff; text-decoration: none; } .bar-positive .button.active, .bar-positive .button.activated { border-color: #0c60ee; background-color: #0c60ee; } .bar-positive .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-positive .button.button-icon { border-color: transparent; background: none; } .bar-calm .button { border-color: #0a9dc7; background-color: #11c1f3; color: #fff; } .bar-calm .button:hover { color: #fff; text-decoration: none; } .bar-calm .button.active, .bar-calm .button.activated { border-color: #0a9dc7; background-color: #0a9dc7; } .bar-calm .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-calm .button.button-icon { border-color: transparent; background: none; } .bar-assertive .button { border-color: #e42112; background-color: #ef473a; color: #fff; } .bar-assertive .button:hover { color: #fff; text-decoration: none; } .bar-assertive .button.active, .bar-assertive .button.activated { border-color: #e42112; background-color: #e42112; } .bar-assertive .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-assertive .button.button-icon { border-color: transparent; background: none; } .bar-balanced .button { border-color: #28a54c; background-color: #33cd5f; color: #fff; } .bar-balanced .button:hover { color: #fff; text-decoration: none; } .bar-balanced .button.active, .bar-balanced .button.activated { border-color: #28a54c; background-color: #28a54c; } .bar-balanced .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-balanced .button.button-icon { border-color: transparent; background: none; } .bar-energized .button { border-color: #e6b500; background-color: #ffc900; color: #fff; } .bar-energized .button:hover { color: #fff; text-decoration: none; } .bar-energized .button.active, .bar-energized .button.activated { border-color: #e6b500; background-color: #e6b500; } .bar-energized .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-energized .button.button-icon { border-color: transparent; background: none; } .bar-royal .button { border-color: #6b46e5; background-color: #886aea; color: #fff; } .bar-royal .button:hover { color: #fff; text-decoration: none; } .bar-royal .button.active, .bar-royal .button.activated { border-color: #6b46e5; background-color: #6b46e5; } .bar-royal .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-royal .button.button-icon { border-color: transparent; background: none; } .bar-dark .button { border-color: #111; background-color: #444444; color: #fff; } .bar-dark .button:hover { color: #fff; text-decoration: none; } .bar-dark .button.active, .bar-dark .button.activated { border-color: #000; background-color: #262626; } .bar-dark .button.button-clear { border-color: transparent; background: none; box-shadow: none; color: #fff; font-size: 17px; } .bar-dark .button.button-icon { border-color: transparent; background: none; } .bar-header { top: 0; border-top-width: 0; border-bottom-width: 1px; } .bar-header.has-tabs-top { border-bottom-width: 0px; background-image: none; } .tabs-top .bar-header { border-bottom-width: 0px; background-image: none; } .bar-footer { bottom: 0; border-top-width: 1px; border-bottom-width: 0; background-position: top; height: 44px; } .bar-footer.item-input-inset { position: absolute; } .bar-footer .title { height: 43px; line-height: 44px; } .bar-tabs { padding: 0; } .bar-subheader { top: 44px; height: 44px; } .bar-subheader .title { height: 43px; line-height: 44px; } .bar-subfooter { bottom: 44px; height: 44px; } .bar-subfooter .title { height: 43px; line-height: 44px; } .nav-bar-block { position: absolute; top: 0; right: 0; left: 0; z-index: 9; } .bar .back-button.hide, .bar .buttons .hide { display: none; } .nav-bar-tabs-top .bar { background-image: none; } /** * Tabs * -------------------------------------------------- * A navigation bar with any number of tab items supported. */ .tabs { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-direction: normal; -webkit-box-orient: horizontal; -webkit-flex-direction: horizontal; -moz-flex-direction: horizontal; -ms-flex-direction: horizontal; flex-direction: horizontal; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; -moz-justify-content: center; justify-content: center; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); border-color: #b2b2b2; background-color: #f8f8f8; background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); color: #444; position: absolute; bottom: 0; z-index: 5; width: 100%; height: 49px; border-style: solid; border-top-width: 1px; background-size: 0; line-height: 49px; } .tabs .tab-item .badge { background-color: #444; color: #f8f8f8; } @media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi), (min-resolution: 1.5dppx) { .tabs { padding-top: 2px; border-top: none !important; border-bottom: none; background-position: top; background-size: 100% 1px; background-repeat: no-repeat; } } /* Allow parent element of tabs to define color, or just the tab itself */ .tabs-light > .tabs, .tabs.tabs-light { border-color: #ddd; background-color: #fff; background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); color: #444; } .tabs-light > .tabs .tab-item .badge, .tabs.tabs-light .tab-item .badge { background-color: #444; color: #fff; } .tabs-stable > .tabs, .tabs.tabs-stable { border-color: #b2b2b2; background-color: #f8f8f8; background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); color: #444; } .tabs-stable > .tabs .tab-item .badge, .tabs.tabs-stable .tab-item .badge { background-color: #444; color: #f8f8f8; } .tabs-positive > .tabs, .tabs.tabs-positive { border-color: #0c60ee; background-color: #387ef5; background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); color: #fff; } .tabs-positive > .tabs .tab-item .badge, .tabs.tabs-positive .tab-item .badge { background-color: #fff; color: #387ef5; } .tabs-calm > .tabs, .tabs.tabs-calm { border-color: #0a9dc7; background-color: #11c1f3; background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); color: #fff; } .tabs-calm > .tabs .tab-item .badge, .tabs.tabs-calm .tab-item .badge { background-color: #fff; color: #11c1f3; } .tabs-assertive > .tabs, .tabs.tabs-assertive { border-color: #e42112; background-color: #ef473a; background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); color: #fff; } .tabs-assertive > .tabs .tab-item .badge, .tabs.tabs-assertive .tab-item .badge { background-color: #fff; color: #ef473a; } .tabs-balanced > .tabs, .tabs.tabs-balanced { border-color: #28a54c; background-color: #33cd5f; background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); color: #fff; } .tabs-balanced > .tabs .tab-item .badge, .tabs.tabs-balanced .tab-item .badge { background-color: #fff; color: #33cd5f; } .tabs-energized > .tabs, .tabs.tabs-energized { border-color: #e6b500; background-color: #ffc900; background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); color: #fff; } .tabs-energized > .tabs .tab-item .badge, .tabs.tabs-energized .tab-item .badge { background-color: #fff; color: #ffc900; } .tabs-royal > .tabs, .tabs.tabs-royal { border-color: #6b46e5; background-color: #886aea; background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); color: #fff; } .tabs-royal > .tabs .tab-item .badge, .tabs.tabs-royal .tab-item .badge { background-color: #fff; color: #886aea; } .tabs-dark > .tabs, .tabs.tabs-dark { border-color: #111; background-color: #444; background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); color: #fff; } .tabs-dark > .tabs .tab-item .badge, .tabs.tabs-dark .tab-item .badge { background-color: #fff; color: #444; } .tabs-striped .tabs { background-color: white; background-image: none; border: none; border-bottom: 1px solid #ddd; padding-top: 2px; } .tabs-striped .tab-item.tab-item-active, .tabs-striped .tab-item.active, .tabs-striped .tab-item.activated { margin-top: -2px; border-style: solid; border-width: 2px 0 0 0; border-color: #444; } .tabs-striped .tab-item.tab-item-active .badge, .tabs-striped .tab-item.active .badge, .tabs-striped .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-light .tabs { background-color: #fff; } .tabs-striped.tabs-light .tab-item { color: rgba(68, 68, 68, 0.4); opacity: 1; } .tabs-striped.tabs-light .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-light .tab-item.tab-item-active, .tabs-striped.tabs-light .tab-item.active, .tabs-striped.tabs-light .tab-item.activated { margin-top: -2px; color: #444; border-style: solid; border-width: 2px 0 0 0; border-color: #444; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-stable .tabs { background-color: #f8f8f8; } .tabs-striped.tabs-stable .tab-item { color: rgba(68, 68, 68, 0.4); opacity: 1; } .tabs-striped.tabs-stable .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-stable .tab-item.tab-item-active, .tabs-striped.tabs-stable .tab-item.active, .tabs-striped.tabs-stable .tab-item.activated { margin-top: -2px; color: #444; border-style: solid; border-width: 2px 0 0 0; border-color: #444; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-positive .tabs { background-color: #387ef5; } .tabs-striped.tabs-positive .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-positive .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-positive .tab-item.tab-item-active, .tabs-striped.tabs-positive .tab-item.active, .tabs-striped.tabs-positive .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-calm .tabs { background-color: #11c1f3; } .tabs-striped.tabs-calm .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-calm .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-calm .tab-item.tab-item-active, .tabs-striped.tabs-calm .tab-item.active, .tabs-striped.tabs-calm .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-assertive .tabs { background-color: #ef473a; } .tabs-striped.tabs-assertive .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-assertive .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-assertive .tab-item.tab-item-active, .tabs-striped.tabs-assertive .tab-item.active, .tabs-striped.tabs-assertive .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-balanced .tabs { background-color: #33cd5f; } .tabs-striped.tabs-balanced .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-balanced .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-balanced .tab-item.tab-item-active, .tabs-striped.tabs-balanced .tab-item.active, .tabs-striped.tabs-balanced .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-energized .tabs { background-color: #ffc900; } .tabs-striped.tabs-energized .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-energized .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-energized .tab-item.tab-item-active, .tabs-striped.tabs-energized .tab-item.active, .tabs-striped.tabs-energized .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-royal .tabs { background-color: #886aea; } .tabs-striped.tabs-royal .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-royal .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-royal .tab-item.tab-item-active, .tabs-striped.tabs-royal .tab-item.active, .tabs-striped.tabs-royal .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-dark .tabs { background-color: #444; } .tabs-striped.tabs-dark .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-dark .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-dark .tab-item.tab-item-active, .tabs-striped.tabs-dark .tab-item.active, .tabs-striped.tabs-dark .tab-item.activated { margin-top: -2px; color: #fff; border-style: solid; border-width: 2px 0 0 0; border-color: #fff; } .tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-striped.tabs-background-light .tabs { background-color: #fff; background-image: none; } .tabs-striped.tabs-background-stable .tabs { background-color: #f8f8f8; background-image: none; } .tabs-striped.tabs-background-positive .tabs { background-color: #387ef5; background-image: none; } .tabs-striped.tabs-background-calm .tabs { background-color: #11c1f3; background-image: none; } .tabs-striped.tabs-background-assertive .tabs { background-color: #ef473a; background-image: none; } .tabs-striped.tabs-background-balanced .tabs { background-color: #33cd5f; background-image: none; } .tabs-striped.tabs-background-energized .tabs { background-color: #ffc900; background-image: none; } .tabs-striped.tabs-background-royal .tabs { background-color: #886aea; background-image: none; } .tabs-striped.tabs-background-dark .tabs { background-color: #444; background-image: none; } .tabs-striped.tabs-color-light .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-striped.tabs-color-light .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-light .tab-item.tab-item-active, .tabs-striped.tabs-color-light .tab-item.active, .tabs-striped.tabs-color-light .tab-item.activated { margin-top: -2px; color: #fff; border: 0 solid #fff; border-top-width: 2px; } .tabs-striped.tabs-color-light .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-light .tab-item.active .badge, .tabs-striped.tabs-color-light .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-stable .tab-item { color: rgba(248, 248, 248, 0.4); opacity: 1; } .tabs-striped.tabs-color-stable .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-stable .tab-item.tab-item-active, .tabs-striped.tabs-color-stable .tab-item.active, .tabs-striped.tabs-color-stable .tab-item.activated { margin-top: -2px; color: #f8f8f8; border: 0 solid #f8f8f8; border-top-width: 2px; } .tabs-striped.tabs-color-stable .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-stable .tab-item.active .badge, .tabs-striped.tabs-color-stable .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-positive .tab-item { color: rgba(56, 126, 245, 0.4); opacity: 1; } .tabs-striped.tabs-color-positive .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-positive .tab-item.tab-item-active, .tabs-striped.tabs-color-positive .tab-item.active, .tabs-striped.tabs-color-positive .tab-item.activated { margin-top: -2px; color: #387ef5; border: 0 solid #387ef5; border-top-width: 2px; } .tabs-striped.tabs-color-positive .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-positive .tab-item.active .badge, .tabs-striped.tabs-color-positive .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-calm .tab-item { color: rgba(17, 193, 243, 0.4); opacity: 1; } .tabs-striped.tabs-color-calm .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-calm .tab-item.tab-item-active, .tabs-striped.tabs-color-calm .tab-item.active, .tabs-striped.tabs-color-calm .tab-item.activated { margin-top: -2px; color: #11c1f3; border: 0 solid #11c1f3; border-top-width: 2px; } .tabs-striped.tabs-color-calm .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-calm .tab-item.active .badge, .tabs-striped.tabs-color-calm .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-assertive .tab-item { color: rgba(239, 71, 58, 0.4); opacity: 1; } .tabs-striped.tabs-color-assertive .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-assertive .tab-item.tab-item-active, .tabs-striped.tabs-color-assertive .tab-item.active, .tabs-striped.tabs-color-assertive .tab-item.activated { margin-top: -2px; color: #ef473a; border: 0 solid #ef473a; border-top-width: 2px; } .tabs-striped.tabs-color-assertive .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-assertive .tab-item.active .badge, .tabs-striped.tabs-color-assertive .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-balanced .tab-item { color: rgba(51, 205, 95, 0.4); opacity: 1; } .tabs-striped.tabs-color-balanced .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-balanced .tab-item.tab-item-active, .tabs-striped.tabs-color-balanced .tab-item.active, .tabs-striped.tabs-color-balanced .tab-item.activated { margin-top: -2px; color: #33cd5f; border: 0 solid #33cd5f; border-top-width: 2px; } .tabs-striped.tabs-color-balanced .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-balanced .tab-item.active .badge, .tabs-striped.tabs-color-balanced .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-energized .tab-item { color: rgba(255, 201, 0, 0.4); opacity: 1; } .tabs-striped.tabs-color-energized .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-energized .tab-item.tab-item-active, .tabs-striped.tabs-color-energized .tab-item.active, .tabs-striped.tabs-color-energized .tab-item.activated { margin-top: -2px; color: #ffc900; border: 0 solid #ffc900; border-top-width: 2px; } .tabs-striped.tabs-color-energized .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-energized .tab-item.active .badge, .tabs-striped.tabs-color-energized .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-royal .tab-item { color: rgba(136, 106, 234, 0.4); opacity: 1; } .tabs-striped.tabs-color-royal .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-royal .tab-item.tab-item-active, .tabs-striped.tabs-color-royal .tab-item.active, .tabs-striped.tabs-color-royal .tab-item.activated { margin-top: -2px; color: #886aea; border: 0 solid #886aea; border-top-width: 2px; } .tabs-striped.tabs-color-royal .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-royal .tab-item.active .badge, .tabs-striped.tabs-color-royal .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-striped.tabs-color-dark .tab-item { color: rgba(68, 68, 68, 0.4); opacity: 1; } .tabs-striped.tabs-color-dark .tab-item .badge { opacity: 0.4; } .tabs-striped.tabs-color-dark .tab-item.tab-item-active, .tabs-striped.tabs-color-dark .tab-item.active, .tabs-striped.tabs-color-dark .tab-item.activated { margin-top: -2px; color: #444; border: 0 solid #444; border-top-width: 2px; } .tabs-striped.tabs-color-dark .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-dark .tab-item.active .badge, .tabs-striped.tabs-color-dark .tab-item.activated .badge { top: 2px; opacity: 1; } .tabs-background-light .tabs, .tabs-background-light > .tabs { background-color: #fff; background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); border-color: #ddd; } .tabs-background-stable .tabs, .tabs-background-stable > .tabs { background-color: #f8f8f8; background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); border-color: #b2b2b2; } .tabs-background-positive .tabs, .tabs-background-positive > .tabs { background-color: #387ef5; background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); border-color: #0c60ee; } .tabs-background-calm .tabs, .tabs-background-calm > .tabs { background-color: #11c1f3; background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); border-color: #0a9dc7; } .tabs-background-assertive .tabs, .tabs-background-assertive > .tabs { background-color: #ef473a; background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); border-color: #e42112; } .tabs-background-balanced .tabs, .tabs-background-balanced > .tabs { background-color: #33cd5f; background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); border-color: #28a54c; } .tabs-background-energized .tabs, .tabs-background-energized > .tabs { background-color: #ffc900; background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); border-color: #e6b500; } .tabs-background-royal .tabs, .tabs-background-royal > .tabs { background-color: #886aea; background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); border-color: #6b46e5; } .tabs-background-dark .tabs, .tabs-background-dark > .tabs { background-color: #444; background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); border-color: #111; } .tabs-color-light .tab-item { color: rgba(255, 255, 255, 0.4); opacity: 1; } .tabs-color-light .tab-item .badge { opacity: 0.4; } .tabs-color-light .tab-item.tab-item-active, .tabs-color-light .tab-item.active, .tabs-color-light .tab-item.activated { color: #fff; border: 0 solid #fff; } .tabs-color-light .tab-item.tab-item-active .badge, .tabs-color-light .tab-item.active .badge, .tabs-color-light .tab-item.activated .badge { opacity: 1; } .tabs-color-stable .tab-item { color: rgba(248, 248, 248, 0.4); opacity: 1; } .tabs-color-stable .tab-item .badge { opacity: 0.4; } .tabs-color-stable .tab-item.tab-item-active, .tabs-color-stable .tab-item.active, .tabs-color-stable .tab-item.activated { color: #f8f8f8; border: 0 solid #f8f8f8; } .tabs-color-stable .tab-item.tab-item-active .badge, .tabs-color-stable .tab-item.active .badge, .tabs-color-stable .tab-item.activated .badge { opacity: 1; } .tabs-color-positive .tab-item { color: rgba(56, 126, 245, 0.4); opacity: 1; } .tabs-color-positive .tab-item .badge { opacity: 0.4; } .tabs-color-positive .tab-item.tab-item-active, .tabs-color-positive .tab-item.active, .tabs-color-positive .tab-item.activated { color: #387ef5; border: 0 solid #387ef5; } .tabs-color-positive .tab-item.tab-item-active .badge, .tabs-color-positive .tab-item.active .badge, .tabs-color-positive .tab-item.activated .badge { opacity: 1; } .tabs-color-calm .tab-item { color: rgba(17, 193, 243, 0.4); opacity: 1; } .tabs-color-calm .tab-item .badge { opacity: 0.4; } .tabs-color-calm .tab-item.tab-item-active, .tabs-color-calm .tab-item.active, .tabs-color-calm .tab-item.activated { color: #11c1f3; border: 0 solid #11c1f3; } .tabs-color-calm .tab-item.tab-item-active .badge, .tabs-color-calm .tab-item.active .badge, .tabs-color-calm .tab-item.activated .badge { opacity: 1; } .tabs-color-assertive .tab-item { color: rgba(239, 71, 58, 0.4); opacity: 1; } .tabs-color-assertive .tab-item .badge { opacity: 0.4; } .tabs-color-assertive .tab-item.tab-item-active, .tabs-color-assertive .tab-item.active, .tabs-color-assertive .tab-item.activated { color: #ef473a; border: 0 solid #ef473a; } .tabs-color-assertive .tab-item.tab-item-active .badge, .tabs-color-assertive .tab-item.active .badge, .tabs-color-assertive .tab-item.activated .badge { opacity: 1; } .tabs-color-balanced .tab-item { color: rgba(51, 205, 95, 0.4); opacity: 1; } .tabs-color-balanced .tab-item .badge { opacity: 0.4; } .tabs-color-balanced .tab-item.tab-item-active, .tabs-color-balanced .tab-item.active, .tabs-color-balanced .tab-item.activated { color: #33cd5f; border: 0 solid #33cd5f; } .tabs-color-balanced .tab-item.tab-item-active .badge, .tabs-color-balanced .tab-item.active .badge, .tabs-color-balanced .tab-item.activated .badge { opacity: 1; } .tabs-color-energized .tab-item { color: rgba(255, 201, 0, 0.4); opacity: 1; } .tabs-color-energized .tab-item .badge { opacity: 0.4; } .tabs-color-energized .tab-item.tab-item-active, .tabs-color-energized .tab-item.active, .tabs-color-energized .tab-item.activated { color: #ffc900; border: 0 solid #ffc900; } .tabs-color-energized .tab-item.tab-item-active .badge, .tabs-color-energized .tab-item.active .badge, .tabs-color-energized .tab-item.activated .badge { opacity: 1; } .tabs-color-royal .tab-item { color: rgba(136, 106, 234, 0.4); opacity: 1; } .tabs-color-royal .tab-item .badge { opacity: 0.4; } .tabs-color-royal .tab-item.tab-item-active, .tabs-color-royal .tab-item.active, .tabs-color-royal .tab-item.activated { color: #886aea; border: 0 solid #886aea; } .tabs-color-royal .tab-item.tab-item-active .badge, .tabs-color-royal .tab-item.active .badge, .tabs-color-royal .tab-item.activated .badge { opacity: 1; } .tabs-color-dark .tab-item { color: rgba(68, 68, 68, 0.4); opacity: 1; } .tabs-color-dark .tab-item .badge { opacity: 0.4; } .tabs-color-dark .tab-item.tab-item-active, .tabs-color-dark .tab-item.active, .tabs-color-dark .tab-item.activated { color: #444; border: 0 solid #444; } .tabs-color-dark .tab-item.tab-item-active .badge, .tabs-color-dark .tab-item.active .badge, .tabs-color-dark .tab-item.activated .badge { opacity: 1; } ion-tabs.tabs-color-active-light .tab-item { color: #444; } ion-tabs.tabs-color-active-light .tab-item.tab-item-active, ion-tabs.tabs-color-active-light .tab-item.active, ion-tabs.tabs-color-active-light .tab-item.activated { color: #fff; } ion-tabs.tabs-striped.tabs-color-active-light .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-light .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-light .tab-item.activated { border-color: #fff; color: #fff; } ion-tabs.tabs-color-active-stable .tab-item { color: #444; } ion-tabs.tabs-color-active-stable .tab-item.tab-item-active, ion-tabs.tabs-color-active-stable .tab-item.active, ion-tabs.tabs-color-active-stable .tab-item.activated { color: #f8f8f8; } ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.activated { border-color: #f8f8f8; color: #f8f8f8; } ion-tabs.tabs-color-active-positive .tab-item { color: #444; } ion-tabs.tabs-color-active-positive .tab-item.tab-item-active, ion-tabs.tabs-color-active-positive .tab-item.active, ion-tabs.tabs-color-active-positive .tab-item.activated { color: #387ef5; } ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.activated { border-color: #387ef5; color: #387ef5; } ion-tabs.tabs-color-active-calm .tab-item { color: #444; } ion-tabs.tabs-color-active-calm .tab-item.tab-item-active, ion-tabs.tabs-color-active-calm .tab-item.active, ion-tabs.tabs-color-active-calm .tab-item.activated { color: #11c1f3; } ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.activated { border-color: #11c1f3; color: #11c1f3; } ion-tabs.tabs-color-active-assertive .tab-item { color: #444; } ion-tabs.tabs-color-active-assertive .tab-item.tab-item-active, ion-tabs.tabs-color-active-assertive .tab-item.active, ion-tabs.tabs-color-active-assertive .tab-item.activated { color: #ef473a; } ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.activated { border-color: #ef473a; color: #ef473a; } ion-tabs.tabs-color-active-balanced .tab-item { color: #444; } ion-tabs.tabs-color-active-balanced .tab-item.tab-item-active, ion-tabs.tabs-color-active-balanced .tab-item.active, ion-tabs.tabs-color-active-balanced .tab-item.activated { color: #33cd5f; } ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.activated { border-color: #33cd5f; color: #33cd5f; } ion-tabs.tabs-color-active-energized .tab-item { color: #444; } ion-tabs.tabs-color-active-energized .tab-item.tab-item-active, ion-tabs.tabs-color-active-energized .tab-item.active, ion-tabs.tabs-color-active-energized .tab-item.activated { color: #ffc900; } ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.activated { border-color: #ffc900; color: #ffc900; } ion-tabs.tabs-color-active-royal .tab-item { color: #444; } ion-tabs.tabs-color-active-royal .tab-item.tab-item-active, ion-tabs.tabs-color-active-royal .tab-item.active, ion-tabs.tabs-color-active-royal .tab-item.activated { color: #886aea; } ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.activated { border-color: #886aea; color: #886aea; } ion-tabs.tabs-color-active-dark .tab-item { color: #fff; } ion-tabs.tabs-color-active-dark .tab-item.tab-item-active, ion-tabs.tabs-color-active-dark .tab-item.active, ion-tabs.tabs-color-active-dark .tab-item.activated { color: #444; } ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.activated { border-color: #444; color: #444; } .tabs-top.tabs-striped { padding-bottom: 0; } .tabs-top.tabs-striped .tab-item { background: transparent; -webkit-transition: color .1s ease; -moz-transition: color .1s ease; -ms-transition: color .1s ease; -o-transition: color .1s ease; transition: color .1s ease; } .tabs-top.tabs-striped .tab-item.tab-item-active, .tabs-top.tabs-striped .tab-item.active, .tabs-top.tabs-striped .tab-item.activated { margin-top: 1px; border-width: 0px 0px 2px 0px !important; border-style: solid; } .tabs-top.tabs-striped .tab-item.tab-item-active > .badge, .tabs-top.tabs-striped .tab-item.tab-item-active > i, .tabs-top.tabs-striped .tab-item.active > .badge, .tabs-top.tabs-striped .tab-item.active > i, .tabs-top.tabs-striped .tab-item.activated > .badge, .tabs-top.tabs-striped .tab-item.activated > i { margin-top: -1px; } .tabs-top.tabs-striped .tab-item .badge { -webkit-transition: color .2s ease; -moz-transition: color .2s ease; -ms-transition: color .2s ease; -o-transition: color .2s ease; transition: color .2s ease; } .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active i, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active i, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated i { display: block; margin-top: -1px; } .tabs-top.tabs-striped.tabs-icon-left .tab-item { margin-top: 1px; } .tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active i, .tabs-top.tabs-striped.tabs-icon-left .tab-item.active .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.active i, .tabs-top.tabs-striped.tabs-icon-left .tab-item.activated .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.activated i { margin-top: -0.1em; } /* Allow parent element to have tabs-top */ /* If you change this, change platform.scss as well */ .tabs-top > .tabs, .tabs.tabs-top { top: 44px; padding-top: 0; background-position: bottom; border-top-width: 0; border-bottom-width: 1px; } .tabs-top > .tabs .tab-item.tab-item-active .badge, .tabs-top > .tabs .tab-item.active .badge, .tabs-top > .tabs .tab-item.activated .badge, .tabs.tabs-top .tab-item.tab-item-active .badge, .tabs.tabs-top .tab-item.active .badge, .tabs.tabs-top .tab-item.activated .badge { top: 4%; } .tabs-top ~ .bar-header { border-bottom-width: 0; } .tab-item { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; display: block; overflow: hidden; max-width: 150px; height: 100%; color: inherit; text-align: center; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; font-size: 14px; font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; opacity: 0.7; } .tab-item:hover { cursor: pointer; } .tab-item.tab-hidden { display: none; } .tabs-item-hide > .tabs, .tabs.tabs-item-hide { display: none; } .tabs-icon-top > .tabs .tab-item, .tabs-icon-top.tabs .tab-item, .tabs-icon-bottom > .tabs .tab-item, .tabs-icon-bottom.tabs .tab-item { font-size: 10px; line-height: 14px; } .tab-item .icon { display: block; margin: 0 auto; height: 32px; font-size: 32px; } .tabs-icon-left.tabs .tab-item, .tabs-icon-left > .tabs .tab-item, .tabs-icon-right.tabs .tab-item, .tabs-icon-right > .tabs .tab-item { font-size: 10px; } .tabs-icon-left.tabs .tab-item .icon, .tabs-icon-left.tabs .tab-item .tab-title, .tabs-icon-left > .tabs .tab-item .icon, .tabs-icon-left > .tabs .tab-item .tab-title, .tabs-icon-right.tabs .tab-item .icon, .tabs-icon-right.tabs .tab-item .tab-title, .tabs-icon-right > .tabs .tab-item .icon, .tabs-icon-right > .tabs .tab-item .tab-title { display: inline-block; vertical-align: top; margin-top: -.1em; } .tabs-icon-left.tabs .tab-item .icon:before, .tabs-icon-left.tabs .tab-item .tab-title:before, .tabs-icon-left > .tabs .tab-item .icon:before, .tabs-icon-left > .tabs .tab-item .tab-title:before, .tabs-icon-right.tabs .tab-item .icon:before, .tabs-icon-right.tabs .tab-item .tab-title:before, .tabs-icon-right > .tabs .tab-item .icon:before, .tabs-icon-right > .tabs .tab-item .tab-title:before { font-size: 24px; line-height: 49px; } .tabs-icon-left > .tabs .tab-item .icon, .tabs-icon-left.tabs .tab-item .icon { padding-right: 3px; } .tabs-icon-right > .tabs .tab-item .icon, .tabs-icon-right.tabs .tab-item .icon { padding-left: 3px; } .tabs-icon-only > .tabs .icon, .tabs-icon-only.tabs .icon { line-height: inherit; } .tab-item.has-badge { position: relative; } .tab-item .badge { position: absolute; top: 4%; right: 33%; right: calc(50% - 26px); padding: 1px 6px; height: auto; font-size: 12px; line-height: 16px; } /* Navigational tab */ /* Active state for tab */ .tab-item.tab-item-active, .tab-item.active, .tab-item.activated { opacity: 1; } .tab-item.tab-item-active.tab-item-light, .tab-item.active.tab-item-light, .tab-item.activated.tab-item-light { color: #fff; } .tab-item.tab-item-active.tab-item-stable, .tab-item.active.tab-item-stable, .tab-item.activated.tab-item-stable { color: #f8f8f8; } .tab-item.tab-item-active.tab-item-positive, .tab-item.active.tab-item-positive, .tab-item.activated.tab-item-positive { color: #387ef5; } .tab-item.tab-item-active.tab-item-calm, .tab-item.active.tab-item-calm, .tab-item.activated.tab-item-calm { color: #11c1f3; } .tab-item.tab-item-active.tab-item-assertive, .tab-item.active.tab-item-assertive, .tab-item.activated.tab-item-assertive { color: #ef473a; } .tab-item.tab-item-active.tab-item-balanced, .tab-item.active.tab-item-balanced, .tab-item.activated.tab-item-balanced { color: #33cd5f; } .tab-item.tab-item-active.tab-item-energized, .tab-item.active.tab-item-energized, .tab-item.activated.tab-item-energized { color: #ffc900; } .tab-item.tab-item-active.tab-item-royal, .tab-item.active.tab-item-royal, .tab-item.activated.tab-item-royal { color: #886aea; } .tab-item.tab-item-active.tab-item-dark, .tab-item.active.tab-item-dark, .tab-item.activated.tab-item-dark { color: #444; } .item.tabs { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; padding: 0; } .item.tabs .icon:before { position: relative; } .tab-item.disabled, .tab-item[disabled] { opacity: .4; cursor: default; pointer-events: none; } .nav-bar-tabs-top.hide ~ .view-container .tabs-top .tabs { top: 0; } .pane[hide-nav-bar="true"] .has-tabs-top { top: 49px; } /** * Menus * -------------------------------------------------- * Side panel structure */ .menu { position: absolute; top: 0; bottom: 0; z-index: 0; overflow: hidden; min-height: 100%; max-height: 100%; width: 275px; background-color: #fff; } .menu .scroll-content { z-index: 10; } .menu .bar-header { z-index: 11; } .menu-content { -webkit-transform: none; transform: none; box-shadow: -1px 0px 2px rgba(0, 0, 0, 0.2), 1px 0px 2px rgba(0, 0, 0, 0.2); } .menu-open .menu-content .pane, .menu-open .menu-content .scroll-content { pointer-events: none; } .menu-open .menu-content .scroll-content .scroll { pointer-events: none; } .menu-open .menu-content .scroll-content:not(.overflow-scroll) { overflow: hidden; } .grade-b .menu-content, .grade-c .menu-content { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; right: -1px; left: -1px; border-right: 1px solid #ccc; border-left: 1px solid #ccc; box-shadow: none; } .menu-left { left: 0; } .menu-right { right: 0; } .aside-open.aside-resizing .menu-right { display: none; } .menu-animated { -webkit-transition: -webkit-transform 200ms ease; transition: transform 200ms ease; } /** * Modals * -------------------------------------------------- * Modals are independent windows that slide in from off-screen. */ .modal-backdrop, .modal-backdrop-bg { position: fixed; top: 0; left: 0; z-index: 10; width: 100%; height: 100%; } .modal-backdrop-bg { pointer-events: none; } .modal { display: block; position: absolute; top: 0; z-index: 10; overflow: hidden; min-height: 100%; width: 100%; background-color: #fff; } @media (min-width: 680px) { .modal { top: 20%; right: 20%; bottom: 20%; left: 20%; min-height: 240px; width: 60%; } .modal.ng-leave-active { bottom: 0; } .platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader) { height: 44px; } .platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader) > * { margin-top: 0; } .platform-ios.platform-cordova .modal-wrapper .modal .tabs-top > .tabs, .platform-ios.platform-cordova .modal-wrapper .modal .tabs.tabs-top { top: 44px; } .platform-ios.platform-cordova .modal-wrapper .modal .has-header, .platform-ios.platform-cordova .modal-wrapper .modal .bar-subheader { top: 44px; } .platform-ios.platform-cordova .modal-wrapper .modal .has-subheader { top: 88px; } .platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-tabs-top { top: 93px; } .platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-subheader.has-tabs-top { top: 137px; } .modal-backdrop-bg { -webkit-transition: opacity 300ms ease-in-out; transition: opacity 300ms ease-in-out; background-color: #000; opacity: 0; } .active .modal-backdrop-bg { opacity: 0.5; } } .modal-open { pointer-events: none; } .modal-open .modal, .modal-open .modal-backdrop { pointer-events: auto; } .modal-open.loading-active .modal, .modal-open.loading-active .modal-backdrop { pointer-events: none; } /** * Popovers * -------------------------------------------------- * Popovers are independent views which float over content */ .popover-backdrop { position: fixed; top: 0; left: 0; z-index: 10; width: 100%; height: 100%; background-color: transparent; } .popover-backdrop.active { background-color: rgba(0, 0, 0, 0.1); } .popover { position: absolute; top: 25%; left: 50%; z-index: 10; display: block; margin-top: 12px; margin-left: -110px; height: 280px; width: 220px; background-color: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); opacity: 0; } .popover .item:first-child { border-top: 0; } .popover .item:last-child { border-bottom: 0; } .popover.popover-bottom { margin-top: -12px; } .popover, .popover .bar-header { border-radius: 2px; } .popover .scroll-content { z-index: 1; margin: 2px 0; } .popover .bar-header { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .popover .has-header { border-top-right-radius: 0; border-top-left-radius: 0; } .popover-arrow { display: none; } .platform-ios .popover { box-shadow: 0 0 40px rgba(0, 0, 0, 0.08); border-radius: 10px; } .platform-ios .popover .bar-header { -webkit-border-top-right-radius: 10px; border-top-right-radius: 10px; -webkit-border-top-left-radius: 10px; border-top-left-radius: 10px; } .platform-ios .popover .scroll-content { margin: 8px 0; border-radius: 10px; } .platform-ios .popover .scroll-content.has-header { margin-top: 0; } .platform-ios .popover-arrow { position: absolute; display: block; top: -17px; width: 30px; height: 19px; overflow: hidden; } .platform-ios .popover-arrow:after { position: absolute; top: 12px; left: 5px; width: 20px; height: 20px; background-color: #fff; border-radius: 3px; content: ''; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .platform-ios .popover-bottom .popover-arrow { top: auto; bottom: -10px; } .platform-ios .popover-bottom .popover-arrow:after { top: -6px; } .platform-android .popover { margin-top: -32px; background-color: #fafafa; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); } .platform-android .popover .item { border-color: #fafafa; background-color: #fafafa; color: #4d4d4d; } .platform-android .popover.popover-bottom { margin-top: 32px; } .platform-android .popover-backdrop, .platform-android .popover-backdrop.active { background-color: transparent; } .popover-open { pointer-events: none; } .popover-open .popover, .popover-open .popover-backdrop { pointer-events: auto; } .popover-open.loading-active .popover, .popover-open.loading-active .popover-backdrop { pointer-events: none; } @media (min-width: 680px) { .popover { width: 360px; margin-left: -180px; } } /** * Popups * -------------------------------------------------- */ .popup-container { position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: transparent; display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; -moz-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; z-index: 12; visibility: hidden; } .popup-container.popup-showing { visibility: visible; } .popup-container.popup-hidden .popup { -webkit-animation-name: scaleOut; animation-name: scaleOut; -webkit-animation-duration: 0.1s; animation-duration: 0.1s; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .popup-container.active .popup { -webkit-animation-name: superScaleIn; animation-name: superScaleIn; -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .popup-container .popup { width: 250px; max-width: 100%; max-height: 90%; border-radius: 0px; background-color: rgba(255, 255, 255, 0.9); display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-direction: normal; -webkit-box-orient: vertical; -webkit-flex-direction: column; -moz-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .popup-container input, .popup-container textarea { width: 100%; } .popup-head { padding: 15px 10px; border-bottom: 1px solid #eee; text-align: center; } .popup-title { margin: 0; padding: 0; font-size: 15px; } .popup-sub-title { margin: 5px 0 0 0; padding: 0; font-weight: normal; font-size: 11px; } .popup-body { padding: 10px; overflow: auto; } .popup-buttons { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-direction: normal; -webkit-box-orient: horizontal; -webkit-flex-direction: row; -moz-flex-direction: row; -ms-flex-direction: row; flex-direction: row; padding: 10px; min-height: 65px; } .popup-buttons .button { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; display: block; min-height: 45px; border-radius: 2px; line-height: 20px; margin-right: 5px; } .popup-buttons .button:last-child { margin-right: 0px; } .popup-open { pointer-events: none; } .popup-open.modal-open .modal { pointer-events: none; } .popup-open .popup-backdrop, .popup-open .popup { pointer-events: auto; } /** * Loading * -------------------------------------------------- */ .loading-container { position: absolute; left: 0; top: 0; right: 0; bottom: 0; z-index: 13; display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; -moz-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; -webkit-transition: 0.2s opacity linear; transition: 0.2s opacity linear; visibility: hidden; opacity: 0; } .loading-container:not(.visible) .icon, .loading-container:not(.visible) .spinner { display: none; } .loading-container.visible { visibility: visible; } .loading-container.active { opacity: 1; } .loading-container .loading { padding: 20px; border-radius: 5px; background-color: rgba(0, 0, 0, 0.7); color: #fff; text-align: center; text-overflow: ellipsis; font-size: 15px; } .loading-container .loading h1, .loading-container .loading h2, .loading-container .loading h3, .loading-container .loading h4, .loading-container .loading h5, .loading-container .loading h6 { color: #fff; } /** * Items * -------------------------------------------------- */ .item { border-color: #ddd; background-color: #fff; color: #444; position: relative; z-index: 2; display: block; margin: -1px; padding: 16px; border-width: 1px; border-style: solid; font-size: 16px; } .item h2 { margin: 0 0 2px 0; font-size: 16px; font-weight: normal; } .item h3 { margin: 0 0 4px 0; font-size: 14px; } .item h4 { margin: 0 0 4px 0; font-size: 12px; } .item h5, .item h6 { margin: 0 0 3px 0; font-size: 10px; } .item p { color: #666; font-size: 14px; margin-bottom: 2px; } .item h1:last-child, .item h2:last-child, .item h3:last-child, .item h4:last-child, .item h5:last-child, .item h6:last-child, .item p:last-child { margin-bottom: 0; } .item .badge { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; position: absolute; top: 16px; right: 32px; } .item.item-button-right .badge { right: 67px; } .item.item-divider .badge { top: 8px; } .item .badge + .badge { margin-right: 5px; } .item.item-light { border-color: #ddd; background-color: #fff; color: #444; } .item.item-stable { border-color: #b2b2b2; background-color: #f8f8f8; color: #444; } .item.item-positive { border-color: #0c60ee; background-color: #387ef5; color: #fff; } .item.item-calm { border-color: #0a9dc7; background-color: #11c1f3; color: #fff; } .item.item-assertive { border-color: #e42112; background-color: #ef473a; color: #fff; } .item.item-balanced { border-color: #28a54c; background-color: #33cd5f; color: #fff; } .item.item-energized { border-color: #e6b500; background-color: #ffc900; color: #fff; } .item.item-royal { border-color: #6b46e5; background-color: #886aea; color: #fff; } .item.item-dark { border-color: #111; background-color: #444; color: #fff; } .item[ng-click]:hover { cursor: pointer; } .list-borderless .item, .item-borderless { border-width: 0; } .item.active, .item.activated, .item-complex.active .item-content, .item-complex.activated .item-content, .item .item-content.active, .item .item-content.activated { border-color: #ccc; background-color: #D9D9D9; } .item.active.item-complex > .item-content, .item.activated.item-complex > .item-content, .item-complex.active .item-content.item-complex > .item-content, .item-complex.activated .item-content.item-complex > .item-content, .item .item-content.active.item-complex > .item-content, .item .item-content.activated.item-complex > .item-content { border-color: #ccc; background-color: #D9D9D9; } .item.active.item-light, .item.activated.item-light, .item-complex.active .item-content.item-light, .item-complex.activated .item-content.item-light, .item .item-content.active.item-light, .item .item-content.activated.item-light { border-color: #ccc; background-color: #fafafa; } .item.active.item-light.item-complex > .item-content, .item.activated.item-light.item-complex > .item-content, .item-complex.active .item-content.item-light.item-complex > .item-content, .item-complex.activated .item-content.item-light.item-complex > .item-content, .item .item-content.active.item-light.item-complex > .item-content, .item .item-content.activated.item-light.item-complex > .item-content { border-color: #ccc; background-color: #fafafa; } .item.active.item-stable, .item.activated.item-stable, .item-complex.active .item-content.item-stable, .item-complex.activated .item-content.item-stable, .item .item-content.active.item-stable, .item .item-content.activated.item-stable { border-color: #a2a2a2; background-color: #e5e5e5; } .item.active.item-stable.item-complex > .item-content, .item.activated.item-stable.item-complex > .item-content, .item-complex.active .item-content.item-stable.item-complex > .item-content, .item-complex.activated .item-content.item-stable.item-complex > .item-content, .item .item-content.active.item-stable.item-complex > .item-content, .item .item-content.activated.item-stable.item-complex > .item-content { border-color: #a2a2a2; background-color: #e5e5e5; } .item.active.item-positive, .item.activated.item-positive, .item-complex.active .item-content.item-positive, .item-complex.activated .item-content.item-positive, .item .item-content.active.item-positive, .item .item-content.activated.item-positive { border-color: #0c60ee; background-color: #0c60ee; } .item.active.item-positive.item-complex > .item-content, .item.activated.item-positive.item-complex > .item-content, .item-complex.active .item-content.item-positive.item-complex > .item-content, .item-complex.activated .item-content.item-positive.item-complex > .item-content, .item .item-content.active.item-positive.item-complex > .item-content, .item .item-content.activated.item-positive.item-complex > .item-content { border-color: #0c60ee; background-color: #0c60ee; } .item.active.item-calm, .item.activated.item-calm, .item-complex.active .item-content.item-calm, .item-complex.activated .item-content.item-calm, .item .item-content.active.item-calm, .item .item-content.activated.item-calm { border-color: #0a9dc7; background-color: #0a9dc7; } .item.active.item-calm.item-complex > .item-content, .item.activated.item-calm.item-complex > .item-content, .item-complex.active .item-content.item-calm.item-complex > .item-content, .item-complex.activated .item-content.item-calm.item-complex > .item-content, .item .item-content.active.item-calm.item-complex > .item-content, .item .item-content.activated.item-calm.item-complex > .item-content { border-color: #0a9dc7; background-color: #0a9dc7; } .item.active.item-assertive, .item.activated.item-assertive, .item-complex.active .item-content.item-assertive, .item-complex.activated .item-content.item-assertive, .item .item-content.active.item-assertive, .item .item-content.activated.item-assertive { border-color: #e42112; background-color: #e42112; } .item.active.item-assertive.item-complex > .item-content, .item.activated.item-assertive.item-complex > .item-content, .item-complex.active .item-content.item-assertive.item-complex > .item-content, .item-complex.activated .item-content.item-assertive.item-complex > .item-content, .item .item-content.active.item-assertive.item-complex > .item-content, .item .item-content.activated.item-assertive.item-complex > .item-content { border-color: #e42112; background-color: #e42112; } .item.active.item-balanced, .item.activated.item-balanced, .item-complex.active .item-content.item-balanced, .item-complex.activated .item-content.item-balanced, .item .item-content.active.item-balanced, .item .item-content.activated.item-balanced { border-color: #28a54c; background-color: #28a54c; } .item.active.item-balanced.item-complex > .item-content, .item.activated.item-balanced.item-complex > .item-content, .item-complex.active .item-content.item-balanced.item-complex > .item-content, .item-complex.activated .item-content.item-balanced.item-complex > .item-content, .item .item-content.active.item-balanced.item-complex > .item-content, .item .item-content.activated.item-balanced.item-complex > .item-content { border-color: #28a54c; background-color: #28a54c; } .item.active.item-energized, .item.activated.item-energized, .item-complex.active .item-content.item-energized, .item-complex.activated .item-content.item-energized, .item .item-content.active.item-energized, .item .item-content.activated.item-energized { border-color: #e6b500; background-color: #e6b500; } .item.active.item-energized.item-complex > .item-content, .item.activated.item-energized.item-complex > .item-content, .item-complex.active .item-content.item-energized.item-complex > .item-content, .item-complex.activated .item-content.item-energized.item-complex > .item-content, .item .item-content.active.item-energized.item-complex > .item-content, .item .item-content.activated.item-energized.item-complex > .item-content { border-color: #e6b500; background-color: #e6b500; } .item.active.item-royal, .item.activated.item-royal, .item-complex.active .item-content.item-royal, .item-complex.activated .item-content.item-royal, .item .item-content.active.item-royal, .item .item-content.activated.item-royal { border-color: #6b46e5; background-color: #6b46e5; } .item.active.item-royal.item-complex > .item-content, .item.activated.item-royal.item-complex > .item-content, .item-complex.active .item-content.item-royal.item-complex > .item-content, .item-complex.activated .item-content.item-royal.item-complex > .item-content, .item .item-content.active.item-royal.item-complex > .item-content, .item .item-content.activated.item-royal.item-complex > .item-content { border-color: #6b46e5; background-color: #6b46e5; } .item.active.item-dark, .item.activated.item-dark, .item-complex.active .item-content.item-dark, .item-complex.activated .item-content.item-dark, .item .item-content.active.item-dark, .item .item-content.activated.item-dark { border-color: #000; background-color: #262626; } .item.active.item-dark.item-complex > .item-content, .item.activated.item-dark.item-complex > .item-content, .item-complex.active .item-content.item-dark.item-complex > .item-content, .item-complex.activated .item-content.item-dark.item-complex > .item-content, .item .item-content.active.item-dark.item-complex > .item-content, .item .item-content.activated.item-dark.item-complex > .item-content { border-color: #000; background-color: #262626; } .item, .item h1, .item h2, .item h3, .item h4, .item h5, .item h6, .item p, .item-content, .item-content h1, .item-content h2, .item-content h3, .item-content h4, .item-content h5, .item-content h6, .item-content p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } a.item { color: inherit; text-decoration: none; } a.item:hover, a.item:focus { text-decoration: none; } /** * Complex Items * -------------------------------------------------- * Adding .item-complex allows the .item to be slidable and * have options underneath the button, but also requires an * additional .item-content element inside .item. * Basically .item-complex removes any default settings which * .item added, so that .item-content looks them as just .item. */ .item-complex, a.item.item-complex, button.item.item-complex { padding: 0; } .item-complex .item-content, .item-radio .item-content { position: relative; z-index: 2; padding: 16px 49px 16px 16px; border: none; background-color: #fff; } a.item-content { display: block; color: inherit; text-decoration: none; } .item-text-wrap .item, .item-text-wrap .item-content, .item-text-wrap, .item-text-wrap h1, .item-text-wrap h2, .item-text-wrap h3, .item-text-wrap h4, .item-text-wrap h5, .item-text-wrap h6, .item-text-wrap p, .item-complex.item-text-wrap .item-content, .item-body h1, .item-body h2, .item-body h3, .item-body h4, .item-body h5, .item-body h6, .item-body p { overflow: visible; white-space: normal; } .item-complex.item-text-wrap, .item-complex.item-text-wrap h1, .item-complex.item-text-wrap h2, .item-complex.item-text-wrap h3, .item-complex.item-text-wrap h4, .item-complex.item-text-wrap h5, .item-complex.item-text-wrap h6, .item-complex.item-text-wrap p { overflow: visible; white-space: normal; } .item-complex.item-light > .item-content { border-color: #ddd; background-color: #fff; color: #444; } .item-complex.item-light > .item-content.active, .item-complex.item-light > .item-content:active { border-color: #ccc; background-color: #fafafa; } .item-complex.item-light > .item-content.active.item-complex > .item-content, .item-complex.item-light > .item-content:active.item-complex > .item-content { border-color: #ccc; background-color: #fafafa; } .item-complex.item-stable > .item-content { border-color: #b2b2b2; background-color: #f8f8f8; color: #444; } .item-complex.item-stable > .item-content.active, .item-complex.item-stable > .item-content:active { border-color: #a2a2a2; background-color: #e5e5e5; } .item-complex.item-stable > .item-content.active.item-complex > .item-content, .item-complex.item-stable > .item-content:active.item-complex > .item-content { border-color: #a2a2a2; background-color: #e5e5e5; } .item-complex.item-positive > .item-content { border-color: #0c60ee; background-color: #387ef5; color: #fff; } .item-complex.item-positive > .item-content.active, .item-complex.item-positive > .item-content:active { border-color: #0c60ee; background-color: #0c60ee; } .item-complex.item-positive > .item-content.active.item-complex > .item-content, .item-complex.item-positive > .item-content:active.item-complex > .item-content { border-color: #0c60ee; background-color: #0c60ee; } .item-complex.item-calm > .item-content { border-color: #0a9dc7; background-color: #11c1f3; color: #fff; } .item-complex.item-calm > .item-content.active, .item-complex.item-calm > .item-content:active { border-color: #0a9dc7; background-color: #0a9dc7; } .item-complex.item-calm > .item-content.active.item-complex > .item-content, .item-complex.item-calm > .item-content:active.item-complex > .item-content { border-color: #0a9dc7; background-color: #0a9dc7; } .item-complex.item-assertive > .item-content { border-color: #e42112; background-color: #ef473a; color: #fff; } .item-complex.item-assertive > .item-content.active, .item-complex.item-assertive > .item-content:active { border-color: #e42112; background-color: #e42112; } .item-complex.item-assertive > .item-content.active.item-complex > .item-content, .item-complex.item-assertive > .item-content:active.item-complex > .item-content { border-color: #e42112; background-color: #e42112; } .item-complex.item-balanced > .item-content { border-color: #28a54c; background-color: #33cd5f; color: #fff; } .item-complex.item-balanced > .item-content.active, .item-complex.item-balanced > .item-content:active { border-color: #28a54c; background-color: #28a54c; } .item-complex.item-balanced > .item-content.active.item-complex > .item-content, .item-complex.item-balanced > .item-content:active.item-complex > .item-content { border-color: #28a54c; background-color: #28a54c; } .item-complex.item-energized > .item-content { border-color: #e6b500; background-color: #ffc900; color: #fff; } .item-complex.item-energized > .item-content.active, .item-complex.item-energized > .item-content:active { border-color: #e6b500; background-color: #e6b500; } .item-complex.item-energized > .item-content.active.item-complex > .item-content, .item-complex.item-energized > .item-content:active.item-complex > .item-content { border-color: #e6b500; background-color: #e6b500; } .item-complex.item-royal > .item-content { border-color: #6b46e5; background-color: #886aea; color: #fff; } .item-complex.item-royal > .item-content.active, .item-complex.item-royal > .item-content:active { border-color: #6b46e5; background-color: #6b46e5; } .item-complex.item-royal > .item-content.active.item-complex > .item-content, .item-complex.item-royal > .item-content:active.item-complex > .item-content { border-color: #6b46e5; background-color: #6b46e5; } .item-complex.item-dark > .item-content { border-color: #111; background-color: #444; color: #fff; } .item-complex.item-dark > .item-content.active, .item-complex.item-dark > .item-content:active { border-color: #000; background-color: #262626; } .item-complex.item-dark > .item-content.active.item-complex > .item-content, .item-complex.item-dark > .item-content:active.item-complex > .item-content { border-color: #000; background-color: #262626; } /** * Item Icons * -------------------------------------------------- */ .item-icon-left .icon, .item-icon-right .icon { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: absolute; top: 0; height: 100%; font-size: 32px; } .item-icon-left .icon:before, .item-icon-right .icon:before { display: block; width: 32px; text-align: center; } .item .fill-icon { min-width: 30px; min-height: 30px; font-size: 28px; } .item-icon-left { padding-left: 54px; } .item-icon-left .icon { left: 11px; } .item-complex.item-icon-left { padding-left: 0; } .item-complex.item-icon-left .item-content { padding-left: 54px; } .item-icon-right { padding-right: 54px; } .item-icon-right .icon { right: 11px; } .item-complex.item-icon-right { padding-right: 0; } .item-complex.item-icon-right .item-content { padding-right: 54px; } .item-icon-left.item-icon-right .icon:first-child { right: auto; } .item-icon-left.item-icon-right .icon:last-child, .item-icon-left .item-delete .icon { left: auto; } .item-icon-left .icon-accessory, .item-icon-right .icon-accessory { color: #ccc; font-size: 16px; } .item-icon-left .icon-accessory { left: 3px; } .item-icon-right .icon-accessory { right: 3px; } /** * Item Button * -------------------------------------------------- * An item button is a child button inside an .item (not the entire .item) */ .item-button-left { padding-left: 72px; } .item-button-left > .button, .item-button-left .item-content > .button { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: absolute; top: 8px; left: 11px; min-width: 34px; min-height: 34px; font-size: 18px; line-height: 32px; } .item-button-left > .button .icon:before, .item-button-left .item-content > .button .icon:before { position: relative; left: auto; width: auto; line-height: 31px; } .item-button-left > .button > .button, .item-button-left .item-content > .button > .button { margin: 0px 2px; min-height: 34px; font-size: 18px; line-height: 32px; } .item-button-right, a.item.item-button-right, button.item.item-button-right { padding-right: 80px; } .item-button-right > .button, .item-button-right .item-content > .button, .item-button-right > .buttons, .item-button-right .item-content > .buttons { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: absolute; top: 8px; right: 16px; min-width: 34px; min-height: 34px; font-size: 18px; line-height: 32px; } .item-button-right > .button .icon:before, .item-button-right .item-content > .button .icon:before, .item-button-right > .buttons .icon:before, .item-button-right .item-content > .buttons .icon:before { position: relative; left: auto; width: auto; line-height: 31px; } .item-button-right > .button > .button, .item-button-right .item-content > .button > .button, .item-button-right > .buttons > .button, .item-button-right .item-content > .buttons > .button { margin: 0px 2px; min-width: 34px; min-height: 34px; font-size: 18px; line-height: 32px; } .item-button-left.item-button-right .button:first-child { right: auto; } .item-button-left.item-button-right .button:last-child { left: auto; } .item-avatar, .item-avatar .item-content, .item-avatar-left, .item-avatar-left .item-content { padding-left: 72px; min-height: 72px; } .item-avatar > img:first-child, .item-avatar .item-image, .item-avatar .item-content > img:first-child, .item-avatar .item-content .item-image, .item-avatar-left > img:first-child, .item-avatar-left .item-image, .item-avatar-left .item-content > img:first-child, .item-avatar-left .item-content .item-image { position: absolute; top: 16px; left: 16px; max-width: 40px; max-height: 40px; width: 100%; height: 100%; border-radius: 50%; } .item-avatar-right, .item-avatar-right .item-content { padding-right: 72px; min-height: 72px; } .item-avatar-right > img:first-child, .item-avatar-right .item-image, .item-avatar-right .item-content > img:first-child, .item-avatar-right .item-content .item-image { position: absolute; top: 16px; right: 16px; max-width: 40px; max-height: 40px; width: 100%; height: 100%; border-radius: 50%; } .item-thumbnail-left, .item-thumbnail-left .item-content { padding-top: 8px; padding-left: 106px; min-height: 100px; } .item-thumbnail-left > img:first-child, .item-thumbnail-left .item-image, .item-thumbnail-left .item-content > img:first-child, .item-thumbnail-left .item-content .item-image { position: absolute; top: 10px; left: 10px; max-width: 80px; max-height: 80px; width: 100%; height: 100%; } .item-avatar.item-complex, .item-avatar-left.item-complex, .item-thumbnail-left.item-complex { padding-top: 0; padding-left: 0; } .item-thumbnail-right, .item-thumbnail-right .item-content { padding-top: 8px; padding-right: 106px; min-height: 100px; } .item-thumbnail-right > img:first-child, .item-thumbnail-right .item-image, .item-thumbnail-right .item-content > img:first-child, .item-thumbnail-right .item-content .item-image { position: absolute; top: 10px; right: 10px; max-width: 80px; max-height: 80px; width: 100%; height: 100%; } .item-avatar-right.item-complex, .item-thumbnail-right.item-complex { padding-top: 0; padding-right: 0; } .item-image { padding: 0; text-align: center; } .item-image img:first-child, .item-image .list-img { width: 100%; vertical-align: middle; } .item-body { overflow: auto; padding: 16px; text-overflow: inherit; white-space: normal; } .item-body h1, .item-body h2, .item-body h3, .item-body h4, .item-body h5, .item-body h6, .item-body p { margin-top: 16px; margin-bottom: 16px; } .item-divider { padding-top: 8px; padding-bottom: 8px; min-height: 30px; background-color: #f5f5f5; color: #222; font-weight: 500; } .platform-ios .item-divider-platform, .item-divider-ios { padding-top: 26px; text-transform: uppercase; font-weight: 300; font-size: 13px; background-color: #efeff4; color: #555; } .platform-android .item-divider-platform, .item-divider-android { font-weight: 300; font-size: 13px; } .item-note { float: right; color: #aaa; font-size: 14px; } .item-left-editable .item-content, .item-right-editable .item-content { -webkit-transition-duration: 250ms; transition-duration: 250ms; -webkit-transition-timing-function: ease-in-out; transition-timing-function: ease-in-out; -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; transition-property: transform; } .list-left-editing .item-left-editable .item-content, .item-left-editing.item-left-editable .item-content { -webkit-transform: translate3d(50px, 0, 0); transform: translate3d(50px, 0, 0); } .item-remove-animate.ng-leave { -webkit-transition-duration: 300ms; transition-duration: 300ms; } .item-remove-animate.ng-leave .item-content, .item-remove-animate.ng-leave:last-of-type { -webkit-transition-duration: 300ms; transition-duration: 300ms; -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; -webkit-transition-property: all; transition-property: all; } .item-remove-animate.ng-leave.ng-leave-active .item-content { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0) !important; transform: translate3d(-100%, 0, 0) !important; } .item-remove-animate.ng-leave.ng-leave-active:last-of-type { opacity: 0; } .item-remove-animate.ng-leave.ng-leave-active ~ ion-item:not(.ng-leave) { -webkit-transform: translate3d(0, -webkit-calc(-100% + 1px), 0); transform: translate3d(0, calc(-100% + 1px), 0); -webkit-transition-duration: 300ms; transition-duration: 300ms; -webkit-transition-timing-function: cubic-bezier(0.25, 0.81, 0.24, 1); transition-timing-function: cubic-bezier(0.25, 0.81, 0.24, 1); -webkit-transition-property: all; transition-property: all; } .item-left-edit { -webkit-transition: all ease-in-out 125ms; transition: all ease-in-out 125ms; position: absolute; top: 0; left: 0; z-index: 0; width: 50px; height: 100%; line-height: 100%; display: none; opacity: 0; -webkit-transform: translate3d(-21px, 0, 0); transform: translate3d(-21px, 0, 0); } .item-left-edit .button { height: 100%; } .item-left-edit .button.icon { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: absolute; top: 0; height: 100%; } .item-left-edit.visible { display: block; } .item-left-edit.visible.active { opacity: 1; -webkit-transform: translate3d(8px, 0, 0); transform: translate3d(8px, 0, 0); } .list-left-editing .item-left-edit { -webkit-transition-delay: 125ms; transition-delay: 125ms; } .item-delete .button.icon { color: #ef473a; font-size: 24px; } .item-delete .button.icon:hover { opacity: .7; } .item-right-edit { -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; position: absolute; top: 0; right: 0; z-index: 3; width: 75px; height: 100%; background: inherit; padding-left: 20px; display: block; opacity: 0; -webkit-transform: translate3d(75px, 0, 0); transform: translate3d(75px, 0, 0); } .item-right-edit .button { min-width: 50px; height: 100%; } .item-right-edit .button.icon { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: absolute; top: 0; height: 100%; font-size: 32px; } .item-right-edit.visible { display: block; } .item-right-edit.visible.active { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .item-reorder .button.icon { color: #444; font-size: 32px; } .item-reordering { position: absolute; left: 0; top: 0; z-index: 9; width: 100%; box-shadow: 0px 0px 10px 0px #aaa; } .item-reordering .item-reorder { z-index: 9; } .item-placeholder { opacity: 0.7; } /** * The hidden right-side buttons that can be exposed under a list item * with dragging. */ .item-options { position: absolute; top: 0; right: 0; z-index: 1; height: 100%; } .item-options .button { height: 100%; border: none; border-radius: 0; display: -webkit-inline-box; display: -webkit-inline-flex; display: -moz-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; } .item-options .button:before { margin: 0 auto; } .item-options ion-option-button:last-child { padding-right: calc(constant(safe-area-inset-right) + 12px); padding-right: calc(env(safe-area-inset-right) + 12px); } /** * Lists * -------------------------------------------------- */ .list { position: relative; padding-top: 1px; padding-bottom: 1px; padding-left: 0; margin-bottom: 20px; } .list:last-child { margin-bottom: 0px; } .list:last-child.card { margin-bottom: 40px; } /** * List Header * -------------------------------------------------- */ .list-header { margin-top: 20px; padding: 5px 15px; background-color: transparent; color: #222; font-weight: bold; } .card.list .list-item { padding-right: 1px; padding-left: 1px; } /** * Cards and Inset Lists * -------------------------------------------------- * A card and list-inset are close to the same thing, except a card as a box shadow. */ .card, .list-inset { overflow: hidden; margin: 20px 10px; border-radius: 2px; background-color: #fff; } .card { padding-top: 1px; padding-bottom: 1px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } .card .item { border-left: 0; border-right: 0; } .card .item:first-child { border-top: 0; } .card .item:last-child { border-bottom: 0; } .padding .card, .padding .list-inset { margin-left: 0; margin-right: 0; } .card .item:first-child, .list-inset .item:first-child, .padding > .list .item:first-child { border-top-left-radius: 2px; border-top-right-radius: 2px; } .card .item:first-child .item-content, .list-inset .item:first-child .item-content, .padding > .list .item:first-child .item-content { border-top-left-radius: 2px; border-top-right-radius: 2px; } .card .item:last-child, .list-inset .item:last-child, .padding > .list .item:last-child { border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; } .card .item:last-child .item-content, .list-inset .item:last-child .item-content, .padding > .list .item:last-child .item-content { border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; } .card .item:last-child, .list-inset .item:last-child { margin-bottom: -1px; } .card .item, .list-inset .item, .padding > .list .item, .padding-horizontal > .list .item { margin-right: 0; margin-left: 0; } .card .item.item-input input, .list-inset .item.item-input input, .padding > .list .item.item-input input, .padding-horizontal > .list .item.item-input input { padding-right: 44px; } .padding-left > .list .item { margin-left: 0; } .padding-right > .list .item { margin-right: 0; } /** * Badges * -------------------------------------------------- */ .badge { background-color: transparent; color: #AAAAAA; z-index: 1; display: inline-block; padding: 3px 8px; min-width: 10px; border-radius: 10px; vertical-align: baseline; text-align: center; white-space: nowrap; font-weight: bold; font-size: 14px; line-height: 16px; } .badge:empty { display: none; } .tabs .tab-item .badge.badge-light, .badge.badge-light { background-color: #fff; color: #444; } .tabs .tab-item .badge.badge-stable, .badge.badge-stable { background-color: #f8f8f8; color: #444; } .tabs .tab-item .badge.badge-positive, .badge.badge-positive { background-color: #387ef5; color: #fff; } .tabs .tab-item .badge.badge-calm, .badge.badge-calm { background-color: #11c1f3; color: #fff; } .tabs .tab-item .badge.badge-assertive, .badge.badge-assertive { background-color: #ef473a; color: #fff; } .tabs .tab-item .badge.badge-balanced, .badge.badge-balanced { background-color: #33cd5f; color: #fff; } .tabs .tab-item .badge.badge-energized, .badge.badge-energized { background-color: #ffc900; color: #fff; } .tabs .tab-item .badge.badge-royal, .badge.badge-royal { background-color: #886aea; color: #fff; } .tabs .tab-item .badge.badge-dark, .badge.badge-dark { background-color: #444; color: #fff; } .button .badge { position: relative; top: -1px; } /** * Slide Box * -------------------------------------------------- */ .slider { position: relative; visibility: hidden; overflow: hidden; } .slider-slides { position: relative; height: 100%; } .slider-slide { position: relative; display: block; float: left; width: 100%; height: 100%; vertical-align: top; } .slider-slide-image > img { width: 100%; } .slider-pager { position: absolute; bottom: 20px; z-index: 1; width: 100%; height: 15px; text-align: center; } .slider-pager .slider-pager-page { display: inline-block; margin: 0px 3px; width: 15px; color: #000; text-decoration: none; opacity: 0.3; } .slider-pager .slider-pager-page.active { -webkit-transition: opacity 0.4s ease-in; transition: opacity 0.4s ease-in; opacity: 1; } .slider-slide.ng-enter, .slider-slide.ng-leave, .slider-slide.ng-animate, .slider-pager-page.ng-enter, .slider-pager-page.ng-leave, .slider-pager-page.ng-animate { -webkit-transition: none !important; transition: none !important; } .slider-slide.ng-animate, .slider-pager-page.ng-animate { -webkit-animation: none 0s; animation: none 0s; } /** * Swiper 3.2.7 * Most modern mobile touch slider and framework with hardware accelerated transitions * * http://www.idangero.us/swiper/ * * Copyright 2015, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under MIT * * Released on: December 7, 2015 */ .swiper-container { margin: 0 auto; position: relative; overflow: hidden; /* Fix of Webkit flickering */ z-index: 1; } .swiper-container-no-flexbox .swiper-slide { float: left; } .swiper-container-vertical > .swiper-wrapper { -webkit-box-orient: vertical; -moz-box-orient: vertical; -ms-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; } .swiper-wrapper { position: relative; width: 100%; height: 100%; z-index: 1; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; -o-transition-property: -o-transform; -ms-transition-property: -ms-transform; transition-property: transform; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } .swiper-container-android .swiper-slide, .swiper-wrapper { -webkit-transform: translate3d(0px, 0, 0); -moz-transform: translate3d(0px, 0, 0); -o-transform: translate(0px, 0px); -ms-transform: translate3d(0px, 0, 0); transform: translate3d(0px, 0, 0); } .swiper-container-multirow > .swiper-wrapper { -webkit-box-lines: multiple; -moz-box-lines: multiple; -ms-flex-wrap: wrap; -webkit-flex-wrap: wrap; flex-wrap: wrap; } .swiper-container-free-mode > .swiper-wrapper { -webkit-transition-timing-function: ease-out; -moz-transition-timing-function: ease-out; -ms-transition-timing-function: ease-out; -o-transition-timing-function: ease-out; transition-timing-function: ease-out; margin: 0 auto; } .swiper-slide { display: block; -webkit-flex-shrink: 0; -ms-flex: 0 0 auto; flex-shrink: 0; width: 100%; height: 100%; position: relative; } /* Auto Height */ .swiper-container-autoheight, .swiper-container-autoheight .swiper-slide { height: auto; } .swiper-container-autoheight .swiper-wrapper { -webkit-box-align: start; -ms-flex-align: start; -webkit-align-items: flex-start; align-items: flex-start; -webkit-transition-property: -webkit-transform, height; -moz-transition-property: -moz-transform; -o-transition-property: -o-transform; -ms-transition-property: -ms-transform; transition-property: transform, height; } /* a11y */ .swiper-container .swiper-notification { position: absolute; left: 0; top: 0; pointer-events: none; opacity: 0; z-index: -1000; } /* IE10 Windows Phone 8 Fixes */ .swiper-wp8-horizontal { -ms-touch-action: pan-y; touch-action: pan-y; } .swiper-wp8-vertical { -ms-touch-action: pan-x; touch-action: pan-x; } /* Arrows */ .swiper-button-prev, .swiper-button-next { position: absolute; top: 50%; width: 27px; height: 44px; margin-top: -22px; z-index: 10; cursor: pointer; -moz-background-size: 27px 44px; -webkit-background-size: 27px 44px; background-size: 27px 44px; background-position: center; background-repeat: no-repeat; } .swiper-button-prev.swiper-button-disabled, .swiper-button-next.swiper-button-disabled { opacity: 0.35; cursor: auto; pointer-events: none; } .swiper-button-prev, .swiper-container-rtl .swiper-button-next { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); left: 10px; right: auto; } .swiper-button-prev.swiper-button-black, .swiper-container-rtl .swiper-button-next.swiper-button-black { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); } .swiper-button-prev.swiper-button-white, .swiper-container-rtl .swiper-button-next.swiper-button-white { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); } .swiper-button-next, .swiper-container-rtl .swiper-button-prev { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); right: 10px; left: auto; } .swiper-button-next.swiper-button-black, .swiper-container-rtl .swiper-button-prev.swiper-button-black { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); } .swiper-button-next.swiper-button-white, .swiper-container-rtl .swiper-button-prev.swiper-button-white { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); } /* Pagination Styles */ .swiper-pagination { position: absolute; text-align: center; -webkit-transition: 300ms; -moz-transition: 300ms; -o-transition: 300ms; transition: 300ms; -webkit-transform: translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); -o-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); z-index: 10; } .swiper-pagination.swiper-pagination-hidden { opacity: 0; } .swiper-pagination-bullet { width: 8px; height: 8px; display: inline-block; border-radius: 100%; background: #000; opacity: 0.2; } button.swiper-pagination-bullet { border: none; margin: 0; padding: 0; box-shadow: none; -moz-appearance: none; -ms-appearance: none; -webkit-appearance: none; appearance: none; } .swiper-pagination-clickable .swiper-pagination-bullet { cursor: pointer; } .swiper-pagination-white .swiper-pagination-bullet { background: #fff; } .swiper-pagination-bullet-active { opacity: 1; } .swiper-pagination-white .swiper-pagination-bullet-active { background: #fff; } .swiper-pagination-black .swiper-pagination-bullet-active { background: #000; } .swiper-container-vertical > .swiper-pagination { right: 10px; top: 50%; -webkit-transform: translate3d(0px, -50%, 0); -moz-transform: translate3d(0px, -50%, 0); -o-transform: translate(0px, -50%); -ms-transform: translate3d(0px, -50%, 0); transform: translate3d(0px, -50%, 0); } .swiper-container-vertical > .swiper-pagination .swiper-pagination-bullet { margin: 5px 0; display: block; } .swiper-container-horizontal > .swiper-pagination { bottom: 10px; left: 0; width: 100%; } .swiper-container-horizontal > .swiper-pagination .swiper-pagination-bullet { margin: 0 5px; } /* 3D Container */ .swiper-container-3d { -webkit-perspective: 1200px; -moz-perspective: 1200px; -o-perspective: 1200px; perspective: 1200px; } .swiper-container-3d .swiper-wrapper, .swiper-container-3d .swiper-slide, .swiper-container-3d .swiper-slide-shadow-left, .swiper-container-3d .swiper-slide-shadow-right, .swiper-container-3d .swiper-slide-shadow-top, .swiper-container-3d .swiper-slide-shadow-bottom, .swiper-container-3d .swiper-cube-shadow { -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; transform-style: preserve-3d; } .swiper-container-3d .swiper-slide-shadow-left, .swiper-container-3d .swiper-slide-shadow-right, .swiper-container-3d .swiper-slide-shadow-top, .swiper-container-3d .swiper-slide-shadow-bottom { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 10; } .swiper-container-3d .swiper-slide-shadow-left { background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(transparent)); /* Safari 4+, Chrome */ background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); /* Chrome 10+, Safari 5.1+, iOS 5+ */ background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); /* Firefox 3.6-15 */ background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); /* Opera 11.10-12.00 */ background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent); /* Firefox 16+, IE10, Opera 12.50+ */ } .swiper-container-3d .swiper-slide-shadow-right { background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(transparent)); /* Safari 4+, Chrome */ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); /* Chrome 10+, Safari 5.1+, iOS 5+ */ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); /* Firefox 3.6-15 */ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); /* Opera 11.10-12.00 */ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent); /* Firefox 16+, IE10, Opera 12.50+ */ } .swiper-container-3d .swiper-slide-shadow-top { background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(transparent)); /* Safari 4+, Chrome */ background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); /* Chrome 10+, Safari 5.1+, iOS 5+ */ background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); /* Firefox 3.6-15 */ background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); /* Opera 11.10-12.00 */ background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), transparent); /* Firefox 16+, IE10, Opera 12.50+ */ } .swiper-container-3d .swiper-slide-shadow-bottom { background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(transparent)); /* Safari 4+, Chrome */ background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); /* Chrome 10+, Safari 5.1+, iOS 5+ */ background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); /* Firefox 3.6-15 */ background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); /* Opera 11.10-12.00 */ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), transparent); /* Firefox 16+, IE10, Opera 12.50+ */ } /* Coverflow */ .swiper-container-coverflow .swiper-wrapper { /* Windows 8 IE 10 fix */ -ms-perspective: 1200px; } /* Fade */ .swiper-container-fade.swiper-container-free-mode .swiper-slide { -webkit-transition-timing-function: ease-out; -moz-transition-timing-function: ease-out; -ms-transition-timing-function: ease-out; -o-transition-timing-function: ease-out; transition-timing-function: ease-out; } .swiper-container-fade .swiper-slide { pointer-events: none; } .swiper-container-fade .swiper-slide .swiper-slide { pointer-events: none; } .swiper-container-fade .swiper-slide-active, .swiper-container-fade .swiper-slide-active .swiper-slide-active { pointer-events: auto; } /* Cube */ .swiper-container-cube { overflow: visible; } .swiper-container-cube .swiper-slide { pointer-events: none; visibility: hidden; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; transform-origin: 0 0; -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; -ms-backface-visibility: hidden; backface-visibility: hidden; width: 100%; height: 100%; z-index: 1; } .swiper-container-cube.swiper-container-rtl .swiper-slide { -webkit-transform-origin: 100% 0; -moz-transform-origin: 100% 0; -ms-transform-origin: 100% 0; transform-origin: 100% 0; } .swiper-container-cube .swiper-slide-active, .swiper-container-cube .swiper-slide-next, .swiper-container-cube .swiper-slide-prev, .swiper-container-cube .swiper-slide-next + .swiper-slide { pointer-events: auto; visibility: visible; } .swiper-container-cube .swiper-slide-shadow-top, .swiper-container-cube .swiper-slide-shadow-bottom, .swiper-container-cube .swiper-slide-shadow-left, .swiper-container-cube .swiper-slide-shadow-right { z-index: 0; -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; -ms-backface-visibility: hidden; backface-visibility: hidden; } .swiper-container-cube .swiper-cube-shadow { position: absolute; left: 0; bottom: 0px; width: 100%; height: 100%; background: #000; opacity: 0.6; -webkit-filter: blur(50px); filter: blur(50px); z-index: 0; } /* Scrollbar */ .swiper-scrollbar { border-radius: 10px; position: relative; -ms-touch-action: none; background: rgba(0, 0, 0, 0.1); } .swiper-container-horizontal > .swiper-scrollbar { position: absolute; left: 1%; bottom: 3px; z-index: 50; height: 5px; width: 98%; } .swiper-container-vertical > .swiper-scrollbar { position: absolute; right: 3px; top: 1%; z-index: 50; width: 5px; height: 98%; } .swiper-scrollbar-drag { height: 100%; width: 100%; position: relative; background: rgba(0, 0, 0, 0.5); border-radius: 10px; left: 0; top: 0; } .swiper-scrollbar-cursor-drag { cursor: move; } /* Preloader */ .swiper-lazy-preloader { width: 42px; height: 42px; position: absolute; left: 50%; top: 50%; margin-left: -21px; margin-top: -21px; z-index: 10; -webkit-transform-origin: 50%; -moz-transform-origin: 50%; transform-origin: 50%; -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; animation: swiper-preloader-spin 1s steps(12, end) infinite; } .swiper-lazy-preloader:after { display: block; content: ""; width: 100%; height: 100%; background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); background-position: 50%; -webkit-background-size: 100%; background-size: 100%; background-repeat: no-repeat; } .swiper-lazy-preloader-white:after { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } @-webkit-keyframes swiper-preloader-spin { 100% { -webkit-transform: rotate(360deg); } } @keyframes swiper-preloader-spin { 100% { transform: rotate(360deg); } } ion-slides { width: 100%; height: 100%; display: block; } .slide-zoom { display: block; width: 100%; text-align: center; } .swiper-container { width: 100%; height: 100%; padding: 0; overflow: hidden; } .swiper-wrapper { position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0; } .swiper-slide { width: 100%; height: 100%; box-sizing: border-box; /* Center slide text vertically */ } .swiper-slide img { width: auto; height: auto; max-width: 100%; max-height: 100%; } .scroll-refresher { position: absolute; top: -60px; right: 0; left: 0; overflow: hidden; margin: auto; height: 60px; } .scroll-refresher .ionic-refresher-content { position: absolute; bottom: 15px; left: 0; width: 100%; color: #666666; text-align: center; font-size: 30px; } .scroll-refresher .ionic-refresher-content .text-refreshing, .scroll-refresher .ionic-refresher-content .text-pulling { font-size: 16px; line-height: 16px; } .scroll-refresher .ionic-refresher-content.ionic-refresher-with-text { bottom: 10px; } .scroll-refresher .icon-refreshing, .scroll-refresher .icon-pulling { width: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .scroll-refresher .icon-pulling { -webkit-animation-name: refresh-spin-back; animation-name: refresh-spin-back; -webkit-animation-duration: 200ms; animation-duration: 200ms; -webkit-animation-timing-function: linear; animation-timing-function: linear; -webkit-animation-fill-mode: none; animation-fill-mode: none; -webkit-transform: translate3d(0, 0, 0) rotate(0deg); transform: translate3d(0, 0, 0) rotate(0deg); } .scroll-refresher .icon-refreshing, .scroll-refresher .text-refreshing { display: none; } .scroll-refresher .icon-refreshing { -webkit-animation-duration: 1.5s; animation-duration: 1.5s; } .scroll-refresher.active .icon-pulling:not(.pulling-rotation-disabled) { -webkit-animation-name: refresh-spin; animation-name: refresh-spin; -webkit-transform: translate3d(0, 0, 0) rotate(-180deg); transform: translate3d(0, 0, 0) rotate(-180deg); } .scroll-refresher.active.refreshing { -webkit-transition: -webkit-transform 0.2s; transition: -webkit-transform 0.2s; -webkit-transition: transform 0.2s; transition: transform 0.2s; -webkit-transform: scale(1, 1); transform: scale(1, 1); } .scroll-refresher.active.refreshing .icon-pulling, .scroll-refresher.active.refreshing .text-pulling { display: none; } .scroll-refresher.active.refreshing .icon-refreshing, .scroll-refresher.active.refreshing .text-refreshing { display: block; } .scroll-refresher.active.refreshing.refreshing-tail { -webkit-transform: scale(0, 0); transform: scale(0, 0); } .overflow-scroll > .scroll { -webkit-overflow-scrolling: touch; width: 100%; } .overflow-scroll > .scroll.overscroll { position: fixed; right: 0; left: 0; } .overflow-scroll.padding > .scroll.overscroll { padding: 10px; } @-webkit-keyframes refresh-spin { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(0); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(180deg); } } @keyframes refresh-spin { 0% { transform: translate3d(0, 0, 0) rotate(0); } 100% { transform: translate3d(0, 0, 0) rotate(180deg); } } @-webkit-keyframes refresh-spin-back { 0% { -webkit-transform: translate3d(0, 0, 0) rotate(180deg); } 100% { -webkit-transform: translate3d(0, 0, 0) rotate(0); } } @keyframes refresh-spin-back { 0% { transform: translate3d(0, 0, 0) rotate(180deg); } 100% { transform: translate3d(0, 0, 0) rotate(0); } } /** * Spinners * -------------------------------------------------- */ .spinner { stroke: #444; fill: #444; } .spinner svg { width: 28px; height: 28px; } .spinner.spinner-light { stroke: #fff; fill: #fff; } .spinner.spinner-stable { stroke: #f8f8f8; fill: #f8f8f8; } .spinner.spinner-positive { stroke: #387ef5; fill: #387ef5; } .spinner.spinner-calm { stroke: #11c1f3; fill: #11c1f3; } .spinner.spinner-balanced { stroke: #33cd5f; fill: #33cd5f; } .spinner.spinner-assertive { stroke: #ef473a; fill: #ef473a; } .spinner.spinner-energized { stroke: #ffc900; fill: #ffc900; } .spinner.spinner-royal { stroke: #886aea; fill: #886aea; } .spinner.spinner-dark { stroke: #444; fill: #444; } .spinner-android { stroke: #4b8bf4; } .spinner-ios, .spinner-ios-small { stroke: #69717d; } .spinner-spiral .stop1 { stop-color: #fff; stop-opacity: 0; } .spinner-spiral.spinner-light .stop1 { stop-color: #444; } .spinner-spiral.spinner-light .stop2 { stop-color: #fff; } .spinner-spiral.spinner-stable .stop2 { stop-color: #f8f8f8; } .spinner-spiral.spinner-positive .stop2 { stop-color: #387ef5; } .spinner-spiral.spinner-calm .stop2 { stop-color: #11c1f3; } .spinner-spiral.spinner-balanced .stop2 { stop-color: #33cd5f; } .spinner-spiral.spinner-assertive .stop2 { stop-color: #ef473a; } .spinner-spiral.spinner-energized .stop2 { stop-color: #ffc900; } .spinner-spiral.spinner-royal .stop2 { stop-color: #886aea; } .spinner-spiral.spinner-dark .stop2 { stop-color: #444; } /** * Forms * -------------------------------------------------- */ form { margin: 0 0 1.42857; } legend { display: block; margin-bottom: 1.42857; padding: 0; width: 100%; border: 1px solid #ddd; color: #444; font-size: 21px; line-height: 2.85714; } legend small { color: #f8f8f8; font-size: 1.07143; } label, input, button, select, textarea { font-weight: normal; font-size: 14px; line-height: 1.42857; } input, button, select, textarea { font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; } .item-input { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: relative; overflow: hidden; padding: 6px 0 5px 16px; } .item-input input { -webkit-border-radius: 0; border-radius: 0; -webkit-box-flex: 1; -webkit-flex: 1 220px; -moz-box-flex: 1; -moz-flex: 1 220px; -ms-flex: 1 220px; flex: 1 220px; -webkit-appearance: none; -moz-appearance: none; appearance: none; margin: 0; padding-right: 24px; background-color: transparent; } .item-input .button .icon { -webkit-box-flex: 0; -webkit-flex: 0 0 24px; -moz-box-flex: 0; -moz-flex: 0 0 24px; -ms-flex: 0 0 24px; flex: 0 0 24px; position: static; display: inline-block; height: auto; text-align: center; font-size: 16px; } .item-input .button-bar { -webkit-border-radius: 0; border-radius: 0; -webkit-box-flex: 1; -webkit-flex: 1 0 220px; -moz-box-flex: 1; -moz-flex: 1 0 220px; -ms-flex: 1 0 220px; flex: 1 0 220px; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .item-input .icon { min-width: 14px; } .platform-windowsphone .item-input input { flex-shrink: 1; } .item-input-inset { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; position: relative; overflow: hidden; padding: 10.66667px; } .item-input-wrapper { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -webkit-flex: 1 0; -moz-box-flex: 1; -moz-flex: 1 0; -ms-flex: 1 0; flex: 1 0; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; -webkit-border-radius: 4px; border-radius: 4px; padding-right: 8px; padding-left: 8px; background: #eee; } .item-input-inset .item-input-wrapper input { padding-left: 4px; height: 29px; background: transparent; line-height: 18px; } .item-input-wrapper ~ .button { margin-left: 10.66667px; } .input-label { display: table; padding: 7px 10px 7px 0px; max-width: 200px; width: 35%; color: #444; font-size: 16px; } .placeholder-icon { color: #aaa; } .placeholder-icon:first-child { padding-right: 6px; } .placeholder-icon:last-child { padding-left: 6px; } .item-stacked-label { display: block; background-color: transparent; box-shadow: none; } .item-stacked-label .input-label, .item-stacked-label .icon { display: inline-block; padding: 4px 0 0 0px; vertical-align: middle; } .item-stacked-label input, .item-stacked-label textarea { -webkit-border-radius: 2px; border-radius: 2px; padding: 4px 8px 3px 0; border: none; background-color: #fff; } .item-stacked-label input { overflow: hidden; height: 46px; } .item-select.item-stacked-label select { position: relative; padding: 0px; max-width: 90%; direction: ltr; white-space: pre-wrap; margin: -3px; } .item-floating-label { display: block; background-color: transparent; box-shadow: none; } .item-floating-label .input-label { position: relative; padding: 5px 0 0 0; opacity: 0; top: 10px; -webkit-transition: opacity 0.15s ease-in, top 0.2s linear; transition: opacity 0.15s ease-in, top 0.2s linear; } .item-floating-label .input-label.has-input { opacity: 1; top: 0; -webkit-transition: opacity 0.15s ease-in, top 0.2s linear; transition: opacity 0.15s ease-in, top 0.2s linear; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"] { display: block; padding-top: 2px; padding-left: 0; height: 34px; color: #111; vertical-align: middle; font-size: 14px; line-height: 16px; } .platform-ios input[type="datetime-local"], .platform-ios input[type="date"], .platform-ios input[type="month"], .platform-ios input[type="time"], .platform-ios input[type="week"], .platform-android input[type="datetime-local"], .platform-android input[type="date"], .platform-android input[type="month"], .platform-android input[type="time"], .platform-android input[type="week"] { padding-top: 8px; } .item-input input, .item-input textarea { width: 100%; } textarea { padding-left: 0; } textarea::-moz-placeholder { color: #aaaaaa; } textarea:-ms-input-placeholder { color: #aaaaaa; } textarea::-webkit-input-placeholder { color: #aaaaaa; text-indent: -3px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"] { border: 0; } input[type="radio"], input[type="checkbox"] { margin: 0; line-height: normal; } .item-input input[type="file"], .item-input input[type="image"], .item-input input[type="submit"], .item-input input[type="reset"], .item-input input[type="button"], .item-input input[type="radio"], .item-input input[type="checkbox"] { width: auto; } input[type="file"] { line-height: 34px; } .previous-input-focus, .cloned-text-input + input, .cloned-text-input + textarea { position: absolute !important; left: -9999px; width: 200px; } input::-moz-placeholder, textarea::-moz-placeholder { color: #aaaaaa; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #aaaaaa; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #aaaaaa; text-indent: 0; } input[disabled], select[disabled], textarea[disabled], input[readonly]:not(.cloned-text-input), textarea[readonly]:not(.cloned-text-input), select[readonly] { background-color: #f8f8f8; cursor: not-allowed; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } /** * Checkbox * -------------------------------------------------- */ .checkbox { position: relative; display: inline-block; padding: 7px 7px; cursor: pointer; } .checkbox input:before, .checkbox .checkbox-icon:before { border-color: #ddd; } .checkbox input:checked:before, .checkbox input:checked + .checkbox-icon:before { background: #387ef5; border-color: #387ef5; } .checkbox-light input:before, .checkbox-light .checkbox-icon:before { border-color: #ddd; } .checkbox-light input:checked:before, .checkbox-light input:checked + .checkbox-icon:before { background: #ddd; border-color: #ddd; } .checkbox-stable input:before, .checkbox-stable .checkbox-icon:before { border-color: #b2b2b2; } .checkbox-stable input:checked:before, .checkbox-stable input:checked + .checkbox-icon:before { background: #b2b2b2; border-color: #b2b2b2; } .checkbox-positive input:before, .checkbox-positive .checkbox-icon:before { border-color: #387ef5; } .checkbox-positive input:checked:before, .checkbox-positive input:checked + .checkbox-icon:before { background: #387ef5; border-color: #387ef5; } .checkbox-calm input:before, .checkbox-calm .checkbox-icon:before { border-color: #11c1f3; } .checkbox-calm input:checked:before, .checkbox-calm input:checked + .checkbox-icon:before { background: #11c1f3; border-color: #11c1f3; } .checkbox-assertive input:before, .checkbox-assertive .checkbox-icon:before { border-color: #ef473a; } .checkbox-assertive input:checked:before, .checkbox-assertive input:checked + .checkbox-icon:before { background: #ef473a; border-color: #ef473a; } .checkbox-balanced input:before, .checkbox-balanced .checkbox-icon:before { border-color: #33cd5f; } .checkbox-balanced input:checked:before, .checkbox-balanced input:checked + .checkbox-icon:before { background: #33cd5f; border-color: #33cd5f; } .checkbox-energized input:before, .checkbox-energized .checkbox-icon:before { border-color: #ffc900; } .checkbox-energized input:checked:before, .checkbox-energized input:checked + .checkbox-icon:before { background: #ffc900; border-color: #ffc900; } .checkbox-royal input:before, .checkbox-royal .checkbox-icon:before { border-color: #886aea; } .checkbox-royal input:checked:before, .checkbox-royal input:checked + .checkbox-icon:before { background: #886aea; border-color: #886aea; } .checkbox-dark input:before, .checkbox-dark .checkbox-icon:before { border-color: #444; } .checkbox-dark input:checked:before, .checkbox-dark input:checked + .checkbox-icon:before { background: #444; border-color: #444; } .checkbox input:disabled:before, .checkbox input:disabled + .checkbox-icon:before { border-color: #ddd; } .checkbox input:disabled:checked:before, .checkbox input:disabled:checked + .checkbox-icon:before { background: #ddd; } .checkbox.checkbox-input-hidden input { display: none !important; } .checkbox input, .checkbox-icon { position: relative; width: 28px; height: 28px; display: block; border: 0; background: transparent; cursor: pointer; -webkit-appearance: none; } .checkbox input:before, .checkbox-icon:before { display: table; width: 100%; height: 100%; border-width: 1px; border-style: solid; border-radius: 28px; background: #fff; content: ' '; -webkit-transition: background-color 20ms ease-in-out; transition: background-color 20ms ease-in-out; } .checkbox input:checked:before, input:checked + .checkbox-icon:before { border-width: 2px; } .checkbox input:after, .checkbox-icon:after { -webkit-transition: opacity 0.05s ease-in-out; transition: opacity 0.05s ease-in-out; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); position: absolute; top: 33%; left: 25%; display: table; width: 14px; height: 6px; border: 1px solid #fff; border-top: 0; border-right: 0; content: ' '; opacity: 0; } .platform-android .checkbox-platform input:before, .platform-android .checkbox-platform .checkbox-icon:before, .checkbox-square input:before, .checkbox-square .checkbox-icon:before { border-radius: 2px; width: 72%; height: 72%; margin-top: 14%; margin-left: 14%; border-width: 2px; } .platform-android .checkbox-platform input:after, .platform-android .checkbox-platform .checkbox-icon:after, .checkbox-square input:after, .checkbox-square .checkbox-icon:after { border-width: 2px; top: 19%; left: 25%; width: 13px; height: 7px; } .platform-android .item-checkbox-right .checkbox-square .checkbox-icon::after { top: 31%; } .grade-c .checkbox input:after, .grade-c .checkbox-icon:after { -webkit-transform: rotate(0); transform: rotate(0); top: 3px; left: 4px; border: none; color: #fff; content: '\2713'; font-weight: bold; font-size: 20px; } .checkbox input:checked:after, input:checked + .checkbox-icon:after { opacity: 1; } .item-checkbox { padding-left: 60px; } .item-checkbox.active { box-shadow: none; } .item-checkbox .checkbox { position: absolute; top: 50%; right: 8px; left: 8px; z-index: 3; margin-top: -21px; } .item-checkbox.item-checkbox-right { padding-right: 60px; padding-left: 16px; } .item-checkbox-right .checkbox input, .item-checkbox-right .checkbox-icon { float: right; } /** * Toggle * -------------------------------------------------- */ .item-toggle { pointer-events: none; } .toggle { position: relative; display: inline-block; pointer-events: auto; margin: -5px; padding: 5px; } .toggle input:checked + .track { border-color: #4cd964; background-color: #4cd964; } .toggle.dragging .handle { background-color: #f2f2f2 !important; } .toggle.toggle-light input:checked + .track { border-color: #ddd; background-color: #ddd; } .toggle.toggle-stable input:checked + .track { border-color: #b2b2b2; background-color: #b2b2b2; } .toggle.toggle-positive input:checked + .track { border-color: #387ef5; background-color: #387ef5; } .toggle.toggle-calm input:checked + .track { border-color: #11c1f3; background-color: #11c1f3; } .toggle.toggle-assertive input:checked + .track { border-color: #ef473a; background-color: #ef473a; } .toggle.toggle-balanced input:checked + .track { border-color: #33cd5f; background-color: #33cd5f; } .toggle.toggle-energized input:checked + .track { border-color: #ffc900; background-color: #ffc900; } .toggle.toggle-royal input:checked + .track { border-color: #886aea; background-color: #886aea; } .toggle.toggle-dark input:checked + .track { border-color: #444; background-color: #444; } .toggle input { display: none; } /* the track appearance when the toggle is "off" */ .toggle .track { -webkit-transition-timing-function: ease-in-out; transition-timing-function: ease-in-out; -webkit-transition-duration: 0.3s; transition-duration: 0.3s; -webkit-transition-property: background-color, border; transition-property: background-color, border; display: inline-block; box-sizing: border-box; width: 51px; height: 31px; border: solid 2px #e6e6e6; border-radius: 20px; background-color: #fff; content: ' '; cursor: pointer; pointer-events: none; } /* Fix to avoid background color bleeding */ /* (occurred on (at least) Android 4.2, Asus MeMO Pad HD7 ME173X) */ .platform-android4_2 .toggle .track { -webkit-background-clip: padding-box; } /* the handle (circle) thats inside the toggle's track area */ /* also the handle's appearance when it is "off" */ .toggle .handle { -webkit-transition: 0.3s cubic-bezier(0, 1.1, 1, 1.1); transition: 0.3s cubic-bezier(0, 1.1, 1, 1.1); -webkit-transition-property: background-color, transform; transition-property: background-color, transform; position: absolute; display: block; width: 27px; height: 27px; border-radius: 27px; background-color: #fff; top: 7px; left: 7px; box-shadow: 0 2px 7px rgba(0, 0, 0, 0.35), 0 1px 1px rgba(0, 0, 0, 0.15); } .toggle .handle:before { position: absolute; top: -4px; left: -21.5px; padding: 18.5px 34px; content: " "; } .toggle input:checked + .track .handle { -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); background-color: #fff; } .item-toggle.active { box-shadow: none; } .item-toggle, .item-toggle.item-complex .item-content { padding-right: 99px; } .item-toggle.item-complex { padding-right: 0; } .item-toggle .toggle { position: absolute; top: 10px; right: 16px; z-index: 3; } .toggle input:disabled + .track { opacity: .6; } .toggle-small .track { border: 0; width: 34px; height: 15px; background: #9e9e9e; } .toggle-small input:checked + .track { background: rgba(0, 150, 137, 0.5); } .toggle-small .handle { top: 2px; left: 4px; width: 21px; height: 21px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); } .toggle-small input:checked + .track .handle { -webkit-transform: translate3d(16px, 0, 0); transform: translate3d(16px, 0, 0); background: #009689; } .toggle-small.item-toggle .toggle { top: 19px; } .toggle-small .toggle-light input:checked + .track { background-color: rgba(221, 221, 221, 0.5); } .toggle-small .toggle-light input:checked + .track .handle { background-color: #ddd; } .toggle-small .toggle-stable input:checked + .track { background-color: rgba(178, 178, 178, 0.5); } .toggle-small .toggle-stable input:checked + .track .handle { background-color: #b2b2b2; } .toggle-small .toggle-positive input:checked + .track { background-color: rgba(56, 126, 245, 0.5); } .toggle-small .toggle-positive input:checked + .track .handle { background-color: #387ef5; } .toggle-small .toggle-calm input:checked + .track { background-color: rgba(17, 193, 243, 0.5); } .toggle-small .toggle-calm input:checked + .track .handle { background-color: #11c1f3; } .toggle-small .toggle-assertive input:checked + .track { background-color: rgba(239, 71, 58, 0.5); } .toggle-small .toggle-assertive input:checked + .track .handle { background-color: #ef473a; } .toggle-small .toggle-balanced input:checked + .track { background-color: rgba(51, 205, 95, 0.5); } .toggle-small .toggle-balanced input:checked + .track .handle { background-color: #33cd5f; } .toggle-small .toggle-energized input:checked + .track { background-color: rgba(255, 201, 0, 0.5); } .toggle-small .toggle-energized input:checked + .track .handle { background-color: #ffc900; } .toggle-small .toggle-royal input:checked + .track { background-color: rgba(136, 106, 234, 0.5); } .toggle-small .toggle-royal input:checked + .track .handle { background-color: #886aea; } .toggle-small .toggle-dark input:checked + .track { background-color: rgba(68, 68, 68, 0.5); } .toggle-small .toggle-dark input:checked + .track .handle { background-color: #444; } /** * Radio Button Inputs * -------------------------------------------------- */ .item-radio { padding: 0; } .item-radio:hover { cursor: pointer; } .item-radio .item-content { /* give some room to the right for the checkmark icon */ padding-right: 64px; } .item-radio .radio-icon { /* checkmark icon will be hidden by default */ position: absolute; top: 0; right: 0; z-index: 3; visibility: hidden; padding: 14px; height: 100%; font-size: 24px; } .item-radio input { /* hide any radio button inputs elements (the ugly circles) */ position: absolute; left: -9999px; } .item-radio input:checked + .radio-content .item-content { /* style the item content when its checked */ background: #f7f7f7; } .item-radio input:checked + .radio-content .radio-icon { /* show the checkmark icon when its checked */ visibility: visible; } /** * Range * -------------------------------------------------- */ .range input { display: inline-block; overflow: hidden; margin-top: 5px; margin-bottom: 5px; padding-right: 2px; padding-left: 1px; width: auto; height: 43px; outline: none; background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccc), color-stop(100%, #ccc)); background: linear-gradient(to right, #ccc 0%, #ccc 100%); background-position: center; background-size: 99% 2px; background-repeat: no-repeat; -webkit-appearance: none; /* &::-ms-track{ background: transparent; border-color: transparent; border-width: 11px 0 16px; color:transparent; margin-top:20px; } &::-ms-thumb { width: $range-slider-width; height: $range-slider-height; border-radius: $range-slider-border-radius; background-color: $toggle-handle-off-bg-color; border-color:$toggle-handle-off-bg-color; box-shadow: $range-slider-box-shadow; margin-left:1px; margin-right:1px; outline:none; } &::-ms-fill-upper { height: $range-track-height; background:$range-default-track-bg; } */ } .range input::-moz-focus-outer { /* hide the focus outline in Firefox */ border: 0; } .range input::-webkit-slider-thumb { position: relative; width: 28px; height: 28px; border-radius: 50%; background-color: #fff; box-shadow: 0 0 2px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2); cursor: pointer; -webkit-appearance: none; border: 0; } .range input::-webkit-slider-thumb:before { /* what creates the colorful line on the left side of the slider */ position: absolute; top: 13px; left: -2001px; width: 2000px; height: 2px; background: #444; content: ' '; } .range input::-webkit-slider-thumb:after { /* create a larger (but hidden) hit area */ position: absolute; top: -15px; left: -15px; padding: 30px; content: ' '; } .range input::-ms-fill-lower { height: 2px; background: #444; } .range { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; padding: 2px 11px; } .range.range-light input::-webkit-slider-thumb:before { background: #ddd; } .range.range-light input::-ms-fill-lower { background: #ddd; } .range.range-stable input::-webkit-slider-thumb:before { background: #b2b2b2; } .range.range-stable input::-ms-fill-lower { background: #b2b2b2; } .range.range-positive input::-webkit-slider-thumb:before { background: #387ef5; } .range.range-positive input::-ms-fill-lower { background: #387ef5; } .range.range-calm input::-webkit-slider-thumb:before { background: #11c1f3; } .range.range-calm input::-ms-fill-lower { background: #11c1f3; } .range.range-balanced input::-webkit-slider-thumb:before { background: #33cd5f; } .range.range-balanced input::-ms-fill-lower { background: #33cd5f; } .range.range-assertive input::-webkit-slider-thumb:before { background: #ef473a; } .range.range-assertive input::-ms-fill-lower { background: #ef473a; } .range.range-energized input::-webkit-slider-thumb:before { background: #ffc900; } .range.range-energized input::-ms-fill-lower { background: #ffc900; } .range.range-royal input::-webkit-slider-thumb:before { background: #886aea; } .range.range-royal input::-ms-fill-lower { background: #886aea; } .range.range-dark input::-webkit-slider-thumb:before { background: #444; } .range.range-dark input::-ms-fill-lower { background: #444; } .range .icon { -webkit-box-flex: 0; -webkit-flex: 0; -moz-box-flex: 0; -moz-flex: 0; -ms-flex: 0; flex: 0; display: block; min-width: 24px; text-align: center; font-size: 24px; } .range input { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; display: block; margin-right: 10px; margin-left: 10px; } .range-label { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -moz-box-flex: 0; -moz-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; display: block; white-space: nowrap; } .range-label:first-child { padding-left: 5px; } .range input + .range-label { padding-right: 5px; padding-left: 0; } .platform-windowsphone .range input { height: auto; } /** * Select * -------------------------------------------------- */ .item-select { position: relative; } .item-select select { -webkit-appearance: none; -moz-appearance: none; appearance: none; position: absolute; top: 0; bottom: 0; right: 0; padding: 0 48px 0 16px; max-width: 65%; border: none; background: #fff; color: #333; text-indent: .01px; text-overflow: ''; white-space: nowrap; font-size: 14px; cursor: pointer; direction: rtl; } .item-select select::-ms-expand { display: none; } .item-select option { direction: ltr; } .item-select:after { position: absolute; top: 50%; right: 16px; margin-top: -3px; width: 0; height: 0; border-top: 5px solid; border-right: 5px solid transparent; border-left: 5px solid transparent; color: #999; content: ""; pointer-events: none; } .item-select.item-light select { background: #fff; color: #444; } .item-select.item-stable select { background: #f8f8f8; color: #444; } .item-select.item-stable:after, .item-select.item-stable .input-label { color: #666666; } .item-select.item-positive select { background: #387ef5; color: #fff; } .item-select.item-positive:after, .item-select.item-positive .input-label { color: #fff; } .item-select.item-calm select { background: #11c1f3; color: #fff; } .item-select.item-calm:after, .item-select.item-calm .input-label { color: #fff; } .item-select.item-assertive select { background: #ef473a; color: #fff; } .item-select.item-assertive:after, .item-select.item-assertive .input-label { color: #fff; } .item-select.item-balanced select { background: #33cd5f; color: #fff; } .item-select.item-balanced:after, .item-select.item-balanced .input-label { color: #fff; } .item-select.item-energized select { background: #ffc900; color: #fff; } .item-select.item-energized:after, .item-select.item-energized .input-label { color: #fff; } .item-select.item-royal select { background: #886aea; color: #fff; } .item-select.item-royal:after, .item-select.item-royal .input-label { color: #fff; } .item-select.item-dark select { background: #444; color: #fff; } .item-select.item-dark:after, .item-select.item-dark .input-label { color: #fff; } select[multiple], select[size] { height: auto; } /** * Progress * -------------------------------------------------- */ progress { display: block; margin: 15px auto; width: 100%; } /** * Buttons * -------------------------------------------------- */ .button { border-color: transparent; background-color: #f8f8f8; color: #444; position: relative; display: inline-block; margin: 0; padding: 0 12px; min-width: 52px; min-height: 47px; border-width: 1px; border-style: solid; border-radius: 4px; vertical-align: top; text-align: center; text-overflow: ellipsis; font-size: 16px; line-height: 42px; cursor: pointer; } .button:hover { color: #444; text-decoration: none; } .button.active, .button.activated { border-color: #a2a2a2; background-color: #e5e5e5; } .button:after { position: absolute; top: -6px; right: -6px; bottom: -6px; left: -6px; content: ' '; } .button .icon { vertical-align: top; pointer-events: none; } .button .icon:before, .button.icon:before, .button.icon-left:before, .button.icon-right:before { display: inline-block; padding: 0 0 1px 0; vertical-align: inherit; font-size: 24px; line-height: 41px; pointer-events: none; } .button.icon-left:before { float: left; padding-right: .2em; padding-left: 0; } .button.icon-right:before { float: right; padding-right: 0; padding-left: .2em; } .button.button-block, .button.button-full { margin-top: 10px; margin-bottom: 10px; } .button.button-light { border-color: transparent; background-color: #fff; color: #444; } .button.button-light:hover { color: #444; text-decoration: none; } .button.button-light.active, .button.button-light.activated { border-color: #a2a2a2; background-color: #fafafa; } .button.button-light.button-clear { border-color: transparent; background: none; box-shadow: none; color: #ddd; } .button.button-light.button-icon { border-color: transparent; background: none; } .button.button-light.button-outline { border-color: #ddd; background: transparent; color: #ddd; } .button.button-light.button-outline.active, .button.button-light.button-outline.activated { background-color: #ddd; box-shadow: none; color: #fff; } .button.button-stable { border-color: transparent; background-color: #f8f8f8; color: #444; } .button.button-stable:hover { color: #444; text-decoration: none; } .button.button-stable.active, .button.button-stable.activated { border-color: #a2a2a2; background-color: #e5e5e5; } .button.button-stable.button-clear { border-color: transparent; background: none; box-shadow: none; color: #b2b2b2; } .button.button-stable.button-icon { border-color: transparent; background: none; } .button.button-stable.button-outline { border-color: #b2b2b2; background: transparent; color: #b2b2b2; } .button.button-stable.button-outline.active, .button.button-stable.button-outline.activated { background-color: #b2b2b2; box-shadow: none; color: #fff; } .button.button-positive { border-color: transparent; background-color: #387ef5; color: #fff; } .button.button-positive:hover { color: #fff; text-decoration: none; } .button.button-positive.active, .button.button-positive.activated { border-color: #a2a2a2; background-color: #0c60ee; } .button.button-positive.button-clear { border-color: transparent; background: none; box-shadow: none; color: #387ef5; } .button.button-positive.button-icon { border-color: transparent; background: none; } .button.button-positive.button-outline { border-color: #387ef5; background: transparent; color: #387ef5; } .button.button-positive.button-outline.active, .button.button-positive.button-outline.activated { background-color: #387ef5; box-shadow: none; color: #fff; } .button.button-calm { border-color: transparent; background-color: #11c1f3; color: #fff; } .button.button-calm:hover { color: #fff; text-decoration: none; } .button.button-calm.active, .button.button-calm.activated { border-color: #a2a2a2; background-color: #0a9dc7; } .button.button-calm.button-clear { border-color: transparent; background: none; box-shadow: none; color: #11c1f3; } .button.button-calm.button-icon { border-color: transparent; background: none; } .button.button-calm.button-outline { border-color: #11c1f3; background: transparent; color: #11c1f3; } .button.button-calm.button-outline.active, .button.button-calm.button-outline.activated { background-color: #11c1f3; box-shadow: none; color: #fff; } .button.button-assertive { border-color: transparent; background-color: #ef473a; color: #fff; } .button.button-assertive:hover { color: #fff; text-decoration: none; } .button.button-assertive.active, .button.button-assertive.activated { border-color: #a2a2a2; background-color: #e42112; } .button.button-assertive.button-clear { border-color: transparent; background: none; box-shadow: none; color: #ef473a; } .button.button-assertive.button-icon { border-color: transparent; background: none; } .button.button-assertive.button-outline { border-color: #ef473a; background: transparent; color: #ef473a; } .button.button-assertive.button-outline.active, .button.button-assertive.button-outline.activated { background-color: #ef473a; box-shadow: none; color: #fff; } .button.button-balanced { border-color: transparent; background-color: #33cd5f; color: #fff; } .button.button-balanced:hover { color: #fff; text-decoration: none; } .button.button-balanced.active, .button.button-balanced.activated { border-color: #a2a2a2; background-color: #28a54c; } .button.button-balanced.button-clear { border-color: transparent; background: none; box-shadow: none; color: #33cd5f; } .button.button-balanced.button-icon { border-color: transparent; background: none; } .button.button-balanced.button-outline { border-color: #33cd5f; background: transparent; color: #33cd5f; } .button.button-balanced.button-outline.active, .button.button-balanced.button-outline.activated { background-color: #33cd5f; box-shadow: none; color: #fff; } .button.button-energized { border-color: transparent; background-color: #ffc900; color: #fff; } .button.button-energized:hover { color: #fff; text-decoration: none; } .button.button-energized.active, .button.button-energized.activated { border-color: #a2a2a2; background-color: #e6b500; } .button.button-energized.button-clear { border-color: transparent; background: none; box-shadow: none; color: #ffc900; } .button.button-energized.button-icon { border-color: transparent; background: none; } .button.button-energized.button-outline { border-color: #ffc900; background: transparent; color: #ffc900; } .button.button-energized.button-outline.active, .button.button-energized.button-outline.activated { background-color: #ffc900; box-shadow: none; color: #fff; } .button.button-royal { border-color: transparent; background-color: #886aea; color: #fff; } .button.button-royal:hover { color: #fff; text-decoration: none; } .button.button-royal.active, .button.button-royal.activated { border-color: #a2a2a2; background-color: #6b46e5; } .button.button-royal.button-clear { border-color: transparent; background: none; box-shadow: none; color: #886aea; } .button.button-royal.button-icon { border-color: transparent; background: none; } .button.button-royal.button-outline { border-color: #886aea; background: transparent; color: #886aea; } .button.button-royal.button-outline.active, .button.button-royal.button-outline.activated { background-color: #886aea; box-shadow: none; color: #fff; } .button.button-dark { border-color: transparent; background-color: #444; color: #fff; } .button.button-dark:hover { color: #fff; text-decoration: none; } .button.button-dark.active, .button.button-dark.activated { border-color: #a2a2a2; background-color: #262626; } .button.button-dark.button-clear { border-color: transparent; background: none; box-shadow: none; color: #444; } .button.button-dark.button-icon { border-color: transparent; background: none; } .button.button-dark.button-outline { border-color: #444; background: transparent; color: #444; } .button.button-dark.button-outline.active, .button.button-dark.button-outline.activated { background-color: #444; box-shadow: none; color: #fff; } .button-small { padding: 2px 4px 1px; min-width: 28px; min-height: 30px; font-size: 12px; line-height: 26px; } .button-small .icon:before, .button-small.icon:before, .button-small.icon-left:before, .button-small.icon-right:before { font-size: 16px; line-height: 19px; margin-top: 3px; } .button-large { padding: 0 16px; min-width: 68px; min-height: 59px; font-size: 20px; line-height: 53px; } .button-large .icon:before, .button-large.icon:before, .button-large.icon-left:before, .button-large.icon-right:before { padding-bottom: 2px; font-size: 32px; line-height: 51px; } .button-icon { -webkit-transition: opacity 0.1s; transition: opacity 0.1s; padding: 0 6px; min-width: initial; border-color: transparent; background: none; } .button-icon.button.active, .button-icon.button.activated { border-color: transparent; background: none; box-shadow: none; opacity: 0.3; } .button-icon .icon:before, .button-icon.icon:before { font-size: 32px; } .button-clear { -webkit-transition: opacity 0.1s; transition: opacity 0.1s; padding: 0 6px; max-height: 42px; border-color: transparent; background: none; box-shadow: none; } .button-clear.button-clear { border-color: transparent; background: none; box-shadow: none; color: transparent; } .button-clear.button-icon { border-color: transparent; background: none; } .button-clear.active, .button-clear.activated { opacity: 0.3; } .button-outline { -webkit-transition: opacity 0.1s; transition: opacity 0.1s; background: none; box-shadow: none; } .button-outline.button-outline { border-color: transparent; background: transparent; color: transparent; } .button-outline.button-outline.active, .button-outline.button-outline.activated { background-color: transparent; box-shadow: none; color: #fff; } .padding > .button.button-block:first-child { margin-top: 0; } .button-block { display: block; clear: both; } .button-block:after { clear: both; } .button-full, .button-full > .button { display: block; margin-right: 0; margin-left: 0; border-right-width: 0; border-left-width: 0; border-radius: 0; } button.button-block, button.button-full, .button-full > button.button, input.button.button-block { width: 100%; } a.button { text-decoration: none; } a.button .icon:before, a.button.icon:before, a.button.icon-left:before, a.button.icon-right:before { margin-top: 2px; } .button.disabled, .button[disabled] { opacity: .4; cursor: default !important; pointer-events: none; } /** * Button Bar * -------------------------------------------------- */ .button-bar { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; width: 100%; } .button-bar.button-bar-inline { display: block; width: auto; *zoom: 1; } .button-bar.button-bar-inline:before, .button-bar.button-bar-inline:after { display: table; content: ""; line-height: 0; } .button-bar.button-bar-inline:after { clear: both; } .button-bar.button-bar-inline > .button { width: auto; display: inline-block; float: left; } .button-bar.bar-light > .button { border-color: #ddd; } .button-bar.bar-stable > .button { border-color: #b2b2b2; } .button-bar.bar-positive > .button { border-color: #0c60ee; } .button-bar.bar-calm > .button { border-color: #0a9dc7; } .button-bar.bar-assertive > .button { border-color: #e42112; } .button-bar.bar-balanced > .button { border-color: #28a54c; } .button-bar.bar-energized > .button { border-color: #e6b500; } .button-bar.bar-royal > .button { border-color: #6b46e5; } .button-bar.bar-dark > .button { border-color: #111; } .button-bar > .button { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; display: block; overflow: hidden; padding: 0 16px; width: 0; border-width: 1px 0px 1px 1px; border-radius: 0; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .button-bar > .button:before, .button-bar > .button .icon:before { line-height: 44px; } .button-bar > .button:first-child { border-radius: 4px 0px 0px 4px; } .button-bar > .button:last-child { border-right-width: 1px; border-radius: 0px 4px 4px 0px; } .button-bar > .button:only-child { border-radius: 4px; } .button-bar > .button-small:before, .button-bar > .button-small .icon:before { line-height: 28px; } /** * Grid * -------------------------------------------------- * Using flexbox for the grid, inspired by Philip Walton: * http://philipwalton.github.io/solved-by-flexbox/demos/grids/ * By default each .col within a .row will evenly take up * available width, and the height of each .col with take * up the height of the tallest .col in the same .row. */ .row { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -moz-flex; display: -ms-flexbox; display: flex; padding: 5px; width: 100%; } .row-wrap { -webkit-flex-wrap: wrap; -moz-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; } .row-no-padding { padding: 0; } .row-no-padding > .col { padding: 0; } .row + .row { margin-top: -5px; padding-top: 0; } .col { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; display: block; padding: 5px; width: 100%; } /* Vertically Align Columns */ /* .row-* vertically aligns every .col in the .row */ .row-top { -webkit-box-align: start; -ms-flex-align: start; -webkit-align-items: flex-start; -moz-align-items: flex-start; align-items: flex-start; } .row-bottom { -webkit-box-align: end; -ms-flex-align: end; -webkit-align-items: flex-end; -moz-align-items: flex-end; align-items: flex-end; } .row-center { -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; -moz-align-items: center; align-items: center; } .row-stretch { -webkit-box-align: stretch; -ms-flex-align: stretch; -webkit-align-items: stretch; -moz-align-items: stretch; align-items: stretch; } .row-baseline { -webkit-box-align: baseline; -ms-flex-align: baseline; -webkit-align-items: baseline; -moz-align-items: baseline; align-items: baseline; } /* .col-* vertically aligns an individual .col */ .col-top { -webkit-align-self: flex-start; -moz-align-self: flex-start; -ms-flex-item-align: start; align-self: flex-start; } .col-bottom { -webkit-align-self: flex-end; -moz-align-self: flex-end; -ms-flex-item-align: end; align-self: flex-end; } .col-center { -webkit-align-self: center; -moz-align-self: center; -ms-flex-item-align: center; align-self: center; } /* Column Offsets */ .col-offset-10 { margin-left: 10%; } .col-offset-20 { margin-left: 20%; } .col-offset-25 { margin-left: 25%; } .col-offset-33, .col-offset-34 { margin-left: 33.3333%; } .col-offset-50 { margin-left: 50%; } .col-offset-66, .col-offset-67 { margin-left: 66.6666%; } .col-offset-75 { margin-left: 75%; } .col-offset-80 { margin-left: 80%; } .col-offset-90 { margin-left: 90%; } /* Explicit Column Percent Sizes */ /* By default each grid column will evenly distribute */ /* across the grid. However, you can specify individual */ /* columns to take up a certain size of the available area */ .col-10 { -webkit-box-flex: 0; -webkit-flex: 0 0 10%; -moz-box-flex: 0; -moz-flex: 0 0 10%; -ms-flex: 0 0 10%; flex: 0 0 10%; max-width: 10%; } .col-20 { -webkit-box-flex: 0; -webkit-flex: 0 0 20%; -moz-box-flex: 0; -moz-flex: 0 0 20%; -ms-flex: 0 0 20%; flex: 0 0 20%; max-width: 20%; } .col-25 { -webkit-box-flex: 0; -webkit-flex: 0 0 25%; -moz-box-flex: 0; -moz-flex: 0 0 25%; -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-33, .col-34 { -webkit-box-flex: 0; -webkit-flex: 0 0 33.3333%; -moz-box-flex: 0; -moz-flex: 0 0 33.3333%; -ms-flex: 0 0 33.3333%; flex: 0 0 33.3333%; max-width: 33.3333%; } .col-40 { -webkit-box-flex: 0; -webkit-flex: 0 0 40%; -moz-box-flex: 0; -moz-flex: 0 0 40%; -ms-flex: 0 0 40%; flex: 0 0 40%; max-width: 40%; } .col-50 { -webkit-box-flex: 0; -webkit-flex: 0 0 50%; -moz-box-flex: 0; -moz-flex: 0 0 50%; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-60 { -webkit-box-flex: 0; -webkit-flex: 0 0 60%; -moz-box-flex: 0; -moz-flex: 0 0 60%; -ms-flex: 0 0 60%; flex: 0 0 60%; max-width: 60%; } .col-66, .col-67 { -webkit-box-flex: 0; -webkit-flex: 0 0 66.6666%; -moz-box-flex: 0; -moz-flex: 0 0 66.6666%; -ms-flex: 0 0 66.6666%; flex: 0 0 66.6666%; max-width: 66.6666%; } .col-75 { -webkit-box-flex: 0; -webkit-flex: 0 0 75%; -moz-box-flex: 0; -moz-flex: 0 0 75%; -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-80 { -webkit-box-flex: 0; -webkit-flex: 0 0 80%; -moz-box-flex: 0; -moz-flex: 0 0 80%; -ms-flex: 0 0 80%; flex: 0 0 80%; max-width: 80%; } .col-90 { -webkit-box-flex: 0; -webkit-flex: 0 0 90%; -moz-box-flex: 0; -moz-flex: 0 0 90%; -ms-flex: 0 0 90%; flex: 0 0 90%; max-width: 90%; } /* Responsive Grid Classes */ /* Adding a class of responsive-X to a row */ /* will trigger the flex-direction to */ /* change to column and add some margin */ /* to any columns in the row for clearity */ @media (max-width: 567px) { .responsive-sm { -webkit-box-direction: normal; -moz-box-direction: normal; -webkit-box-orient: vertical; -moz-box-orient: vertical; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .responsive-sm .col, .responsive-sm .col-10, .responsive-sm .col-20, .responsive-sm .col-25, .responsive-sm .col-33, .responsive-sm .col-34, .responsive-sm .col-50, .responsive-sm .col-66, .responsive-sm .col-67, .responsive-sm .col-75, .responsive-sm .col-80, .responsive-sm .col-90 { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; margin-bottom: 15px; margin-left: 0; max-width: 100%; width: 100%; } } @media (max-width: 767px) { .responsive-md { -webkit-box-direction: normal; -moz-box-direction: normal; -webkit-box-orient: vertical; -moz-box-orient: vertical; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .responsive-md .col, .responsive-md .col-10, .responsive-md .col-20, .responsive-md .col-25, .responsive-md .col-33, .responsive-md .col-34, .responsive-md .col-50, .responsive-md .col-66, .responsive-md .col-67, .responsive-md .col-75, .responsive-md .col-80, .responsive-md .col-90 { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; margin-bottom: 15px; margin-left: 0; max-width: 100%; width: 100%; } } @media (max-width: 1023px) { .responsive-lg { -webkit-box-direction: normal; -moz-box-direction: normal; -webkit-box-orient: vertical; -moz-box-orient: vertical; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .responsive-lg .col, .responsive-lg .col-10, .responsive-lg .col-20, .responsive-lg .col-25, .responsive-lg .col-33, .responsive-lg .col-34, .responsive-lg .col-50, .responsive-lg .col-66, .responsive-lg .col-67, .responsive-lg .col-75, .responsive-lg .col-80, .responsive-lg .col-90 { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -moz-flex: 1; -ms-flex: 1; flex: 1; margin-bottom: 15px; margin-left: 0; max-width: 100%; width: 100%; } } /** * Utility Classes * -------------------------------------------------- */ .hide { display: none; } .opacity-hide { opacity: 0; } .grade-b .opacity-hide, .grade-c .opacity-hide { opacity: 1; display: none; } .show { display: block; } .opacity-show { opacity: 1; } .invisible { visibility: hidden; } .keyboard-open .hide-on-keyboard-open { display: none; } .keyboard-open .tabs.hide-on-keyboard-open + .pane .has-tabs, .keyboard-open .bar-footer.hide-on-keyboard-open + .pane .has-footer { bottom: 0; } .inline { display: inline-block; } .disable-pointer-events { pointer-events: none; } .enable-pointer-events { pointer-events: auto; } .disable-user-behavior { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent; -webkit-user-drag: none; -ms-touch-action: none; -ms-content-zooming: none; } .click-block { position: absolute; top: 0; right: 0; bottom: 0; left: 0; opacity: 0; z-index: 99999; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); overflow: hidden; } .click-block-hide { -webkit-transform: translate3d(-9999px, 0, 0); transform: translate3d(-9999px, 0, 0); } .no-resize { resize: none; } .block { display: block; clear: both; } .block:after { display: block; visibility: hidden; clear: both; height: 0; content: "."; } .full-image { width: 100%; } .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } /** * Content Padding * -------------------------------------------------- */ .padding { padding: 10px; } .padding-top, .padding-vertical { padding-top: 10px; } .padding-right, .padding-horizontal { padding-right: 10px; } .padding-bottom, .padding-vertical { padding-bottom: 10px; } .padding-left, .padding-horizontal { padding-left: 10px; } /** * Scrollable iFrames * -------------------------------------------------- */ .iframe-wrapper { position: fixed; -webkit-overflow-scrolling: touch; overflow: scroll; } .iframe-wrapper iframe { height: 100%; width: 100%; } /** * Rounded * -------------------------------------------------- */ .rounded { border-radius: 4px; } /** * Utility Colors * -------------------------------------------------- * Utility colors are added to help set a naming convention. You'll * notice we purposely do not use words like "red" or "blue", but * instead have colors which represent an emotion or generic theme. */ .light, a.light { color: #fff; } .light-bg { background-color: #fff; } .light-border { border-color: #ddd; } .stable, a.stable { color: #f8f8f8; } .stable-bg { background-color: #f8f8f8; } .stable-border { border-color: #b2b2b2; } .positive, a.positive { color: #387ef5; } .positive-bg { background-color: #387ef5; } .positive-border { border-color: #0c60ee; } .calm, a.calm { color: #11c1f3; } .calm-bg { background-color: #11c1f3; } .calm-border { border-color: #0a9dc7; } .assertive, a.assertive { color: #ef473a; } .assertive-bg { background-color: #ef473a; } .assertive-border { border-color: #e42112; } .balanced, a.balanced { color: #33cd5f; } .balanced-bg { background-color: #33cd5f; } .balanced-border { border-color: #28a54c; } .energized, a.energized { color: #ffc900; } .energized-bg { background-color: #ffc900; } .energized-border { border-color: #e6b500; } .royal, a.royal { color: #886aea; } .royal-bg { background-color: #886aea; } .royal-border { border-color: #6b46e5; } .dark, a.dark { color: #444; } .dark-bg { background-color: #444; } .dark-border { border-color: #111; } [collection-repeat] { /* Position is set by transforms */ left: 0 !important; top: 0 !important; position: absolute !important; z-index: 1; } .collection-repeat-container { position: relative; z-index: 1; } .collection-repeat-after-container { z-index: 0; display: block; /* when scrolling horizontally, make sure the after container doesn't take up 100% width */ } .collection-repeat-after-container.horizontal { display: inline-block; } [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak, .ng-hide:not(.ng-hide-animate) { display: none !important; } /** * Platform * -------------------------------------------------- * Platform specific tweaks */ .platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader) { height: 64px; height: calc(constant(safe-area-inset-top) + 44px); height: calc(env(safe-area-inset-top) + 44px); } .platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper { margin-top: 19px !important; } .platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader) > * { margin-top: 20px; margin-top: constant(safe-area-inset-top); margin-top: env(safe-area-inset-top); } .platform-ios.platform-cordova:not(.fullscreen) .bar-header { padding-left: calc( constant(safe-area-inset-left) + 5px); padding-left: calc(env(safe-area-inset-left) + 5px); padding-right: calc( constant(safe-area-inset-right) + 5px); padding-right: calc( env(safe-area-inset-right) + 5px); } .platform-ios.platform-cordova:not(.fullscreen) .bar-header .buttons:last-child { right: calc(constant(safe-area-inset-right) + 5px); right: calc(env(safe-area-inset-right) + 5px); } .platform-ios.platform-cordova:not(.fullscreen) .has-tabs, .platform-ios.platform-cordova:not(.fullscreen) .bar-footer.has-tabs { bottom: calc(constant(safe-area-inset-bottom) + 49px); bottom: calc(env(safe-area-inset-bottom) + 49px); } .platform-ios.platform-cordova:not(.fullscreen) .tabs-top > .tabs, .platform-ios.platform-cordova:not(.fullscreen) .tabs.tabs-top { top: 64px; } .platform-ios.platform-cordova:not(.fullscreen) .tabs { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); height: calc(constant(safe-area-inset-bottom) + 49px); height: calc(env(safe-area-inset-bottom) + 49px); } .platform-ios.platform-cordova:not(.fullscreen) .has-header, .platform-ios.platform-cordova:not(.fullscreen) .bar-subheader { top: 64px; top: calc(constant(safe-area-inset-top) + 44px); top: calc(env(safe-area-inset-top) + 44px); } .platform-ios.platform-cordova:not(.fullscreen) .has-subheader { top: 108px; top: calc(constant(safe-area-inset-top) + 88px); top: calc(env(safe-area-inset-top) + 88px); } .platform-ios.platform-cordova:not(.fullscreen) .has-header.has-tabs-top { top: 113px; top: calc(93px + constant(safe-area-inset-top)); top: calc(93px + env(safe-area-inset-top)); } .platform-ios.platform-cordova:not(.fullscreen) .has-header.has-subheader.has-tabs-top { top: 157px; top: calc(137px + constant(safe-area-inset-right)); top: calc(137px + env(safe-area-inset-right)); } .platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader) { height: 44px; } .platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper { margin-top: -1px; } .platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader) > * { margin-top: 0; } .platform-ios.platform-cordova .popover .has-header, .platform-ios.platform-cordova .popover .bar-subheader { top: 44px; } .platform-ios.platform-cordova .popover .has-subheader { top: 88px; } .platform-ios.platform-cordova.status-bar-hide { margin-bottom: 20px; } @media (orientation: landscape) { .item { padding: 16px calc(constant(safe-area-inset-right) + 16px); } .item .badge { right: calc(constant(safe-area-inset-right) + 32px); } .item-icon-left { padding-left: calc(constant(safe-area-inset-left) + 54px); } .item-icon-left .icon { left: calc(constant(safe-area-inset-left) + 11px); } .item-icon-right { padding-right: calc(constant(safe-area-inset-right) + 54px); } .item-icon-right .icon { right: calc(constant(safe-area-inset-right) + 11px); } .item-complex, a.item.item-complex, button.item.item-complex { padding: 0; } .item-complex .item-content, a.item.item-complex .item-content, button.item.item-complex .item-content { padding: 16px calc(constant(safe-area-inset-right) + 49px) 16px calc(constant(safe-area-inset-left) + 16px); } .item-left-edit.visible.active { -webkit-transform: translate3d(calc(constant(safe-area-inset-left) + 8px), 0, 0); transform: translate3d(calc(constant(safe-area-inset-left) + 8px), 0, 0); } .list-left-editing .item-left-editable .item-content, .item-left-editing.item-left-editable .item-content { -webkit-transform: translate3d(calc(constant(safe-area-inset-left) + 50px), 0, 0); transform: translate3d(calc(constant(safe-area-inset-left) + 50px), 0, 0); } .item-right-edit { right: constant(safe-area-inset-right); right: env(safe-area-inset-right); } .platform-ios.platform-browser.platform-ipad { position: fixed; } } .platform-c:not(.enable-transitions) * { -webkit-transition: none !important; transition: none !important; } .slide-in-up { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } .slide-in-up.ng-enter, .slide-in-up > .ng-enter { -webkit-transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms; transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms; } .slide-in-up.ng-enter-active, .slide-in-up > .ng-enter-active { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .slide-in-up.ng-leave, .slide-in-up > .ng-leave { -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } @-webkit-keyframes scaleOut { from { -webkit-transform: scale(1); opacity: 1; } to { -webkit-transform: scale(0.8); opacity: 0; } } @keyframes scaleOut { from { transform: scale(1); opacity: 1; } to { transform: scale(0.8); opacity: 0; } } @-webkit-keyframes superScaleIn { from { -webkit-transform: scale(1.2); opacity: 0; } to { -webkit-transform: scale(1); opacity: 1; } } @keyframes superScaleIn { from { transform: scale(1.2); opacity: 0; } to { transform: scale(1); opacity: 1; } } [nav-view-transition="ios"] [nav-view="entering"], [nav-view-transition="ios"] [nav-view="leaving"] { -webkit-transition-duration: 500ms; transition-duration: 500ms; -webkit-transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); -webkit-transition-property: opacity, -webkit-transform, box-shadow; transition-property: opacity, transform, box-shadow; } [nav-view-transition="ios"][nav-view-direction="forward"], [nav-view-transition="ios"][nav-view-direction="back"] { background-color: #000; } [nav-view-transition="ios"] [nav-view="active"], [nav-view-transition="ios"][nav-view-direction="forward"] [nav-view="entering"], [nav-view-transition="ios"][nav-view-direction="back"] [nav-view="leaving"] { z-index: 3; } [nav-view-transition="ios"][nav-view-direction="back"] [nav-view="entering"], [nav-view-transition="ios"][nav-view-direction="forward"] [nav-view="leaving"] { z-index: 2; } [nav-bar-transition="ios"] .title, [nav-bar-transition="ios"] .buttons, [nav-bar-transition="ios"] .back-text { -webkit-transition-duration: 500ms; transition-duration: 500ms; -webkit-transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); -webkit-transition-property: opacity, -webkit-transform; transition-property: opacity, transform; } [nav-bar-transition="ios"] [nav-bar="active"], [nav-bar-transition="ios"] [nav-bar="entering"] { z-index: 10; } [nav-bar-transition="ios"] [nav-bar="active"] .bar, [nav-bar-transition="ios"] [nav-bar="entering"] .bar { background: transparent; } [nav-bar-transition="ios"] [nav-bar="cached"] { display: block; } [nav-bar-transition="ios"] [nav-bar="cached"] .header-item { display: none; } [nav-view-transition="android"] [nav-view="entering"], [nav-view-transition="android"] [nav-view="leaving"] { -webkit-transition-duration: 200ms; transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); -webkit-transition-property: -webkit-transform; transition-property: transform; } [nav-view-transition="android"] [nav-view="active"], [nav-view-transition="android"][nav-view-direction="forward"] [nav-view="entering"], [nav-view-transition="android"][nav-view-direction="back"] [nav-view="leaving"] { z-index: 3; } [nav-view-transition="android"][nav-view-direction="back"] [nav-view="entering"], [nav-view-transition="android"][nav-view-direction="forward"] [nav-view="leaving"] { z-index: 2; } [nav-bar-transition="android"] .title, [nav-bar-transition="android"] .buttons { -webkit-transition-duration: 200ms; transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); -webkit-transition-property: opacity; transition-property: opacity; } [nav-bar-transition="android"] [nav-bar="active"], [nav-bar-transition="android"] [nav-bar="entering"] { z-index: 10; } [nav-bar-transition="android"] [nav-bar="active"] .bar, [nav-bar-transition="android"] [nav-bar="entering"] .bar { background: transparent; } [nav-bar-transition="android"] [nav-bar="cached"] { display: block; } [nav-bar-transition="android"] [nav-bar="cached"] .header-item { display: none; } [nav-swipe="fast"] [nav-view], [nav-swipe="fast"] .title, [nav-swipe="fast"] .buttons, [nav-swipe="fast"] .back-text { -webkit-transition-duration: 50ms; transition-duration: 50ms; -webkit-transition-timing-function: linear; transition-timing-function: linear; } [nav-swipe="slow"] [nav-view], [nav-swipe="slow"] .title, [nav-swipe="slow"] .buttons, [nav-swipe="slow"] .back-text { -webkit-transition-duration: 160ms; transition-duration: 160ms; -webkit-transition-timing-function: linear; transition-timing-function: linear; } [nav-view="cached"], [nav-bar="cached"] { display: none; } [nav-view="stage"] { opacity: 0; -webkit-transition-duration: 0; transition-duration: 0; } [nav-bar="stage"] .title, [nav-bar="stage"] .buttons, [nav-bar="stage"] .back-text { position: absolute; opacity: 0; -webkit-transition-duration: 0s; transition-duration: 0s; } ================================================ FILE: ionic1/base/www/lib/ionic/js/ionic-angular.js ================================================ /*! * Copyright 2015 Drifty Co. * http://drifty.com/ * * Ionic, v1.3.4 * A powerful HTML5 mobile app framework. * http://ionicframework.com/ * * By @maxlynch, @benjsperry, @adamdbradley <3 * * Licensed under the MIT license. Please see LICENSE for more information. * */ (function() { /* eslint no-unused-vars:0 */ var IonicModule = angular.module('ionic', ['ngAnimate', 'ngSanitize', 'ui.router', 'ngIOS9UIWebViewPatch']), extend = angular.extend, forEach = angular.forEach, isDefined = angular.isDefined, isNumber = angular.isNumber, isString = angular.isString, jqLite = angular.element, noop = angular.noop; /** * @ngdoc service * @name $ionicActionSheet * @module ionic * @description * The Action Sheet is a slide-up pane that lets the user choose from a set of options. * Dangerous options are highlighted in red and made obvious. * * There are easy ways to cancel out of the action sheet, such as tapping the backdrop or even * hitting escape on the keyboard for desktop testing. * * ![Action Sheet](http://ionicframework.com.s3.amazonaws.com/docs/controllers/actionSheet.gif) * * @usage * To trigger an Action Sheet in your code, use the $ionicActionSheet service in your angular controllers: * * ```js * angular.module('mySuperApp', ['ionic']) * .controller(function($scope, $ionicActionSheet, $timeout) { * * // Triggered on a button click, or some other target * $scope.show = function() { * * // Show the action sheet * var hideSheet = $ionicActionSheet.show({ * buttons: [ * { text: 'Share This' }, * { text: 'Move' } * ], * destructiveText: 'Delete', * titleText: 'Modify your album', * cancelText: 'Cancel', * cancel: function() { // add cancel code.. }, * buttonClicked: function(index) { * return true; * } * }); * * // For example's sake, hide the sheet after two seconds * $timeout(function() { * hideSheet(); * }, 2000); * * }; * }); * ``` * */ IonicModule .factory('$ionicActionSheet', [ '$rootScope', '$compile', '$animate', '$timeout', '$ionicTemplateLoader', '$ionicPlatform', '$ionicBody', 'IONIC_BACK_PRIORITY', function($rootScope, $compile, $animate, $timeout, $ionicTemplateLoader, $ionicPlatform, $ionicBody, IONIC_BACK_PRIORITY) { return { show: actionSheet }; /** * @ngdoc method * @name $ionicActionSheet#show * @description * Load and return a new action sheet. * * A new isolated scope will be created for the * action sheet and the new element will be appended into the body. * * @param {object} options The options for this ActionSheet. Properties: * * - `[Object]` `buttons` Which buttons to show. Each button is an object with a `text` field. * - `{string}` `titleText` The title to show on the action sheet. * - `{string=}` `cancelText` the text for a 'cancel' button on the action sheet. * - `{string=}` `destructiveText` The text for a 'danger' on the action sheet. * - `{function=}` `cancel` Called if the cancel button is pressed, the backdrop is tapped or * the hardware back button is pressed. * - `{function=}` `buttonClicked` Called when one of the non-destructive buttons is clicked, * with the index of the button that was clicked and the button object. Return true to close * the action sheet, or false to keep it opened. * - `{function=}` `destructiveButtonClicked` Called when the destructive button is clicked. * Return true to close the action sheet, or false to keep it opened. * - `{boolean=}` `cancelOnStateChange` Whether to cancel the actionSheet when navigating * to a new state. Default true. * - `{string}` `cssClass` The custom CSS class name. * * @returns {function} `hideSheet` A function which, when called, hides & cancels the action sheet. */ function actionSheet(opts) { var scope = $rootScope.$new(true); extend(scope, { cancel: noop, destructiveButtonClicked: noop, buttonClicked: noop, $deregisterBackButton: noop, buttons: [], cancelOnStateChange: true }, opts || {}); function textForIcon(text) { if (text && /icon/.test(text)) { scope.$actionSheetHasIcon = true; } } for (var x = 0; x < scope.buttons.length; x++) { textForIcon(scope.buttons[x].text); } textForIcon(scope.cancelText); textForIcon(scope.destructiveText); // Compile the template var element = scope.element = $compile('')(scope); // Grab the sheet element for animation var sheetEl = jqLite(element[0].querySelector('.action-sheet-wrapper')); var stateChangeListenDone = scope.cancelOnStateChange ? $rootScope.$on('$stateChangeSuccess', function() { scope.cancel(); }) : noop; // removes the actionSheet from the screen scope.removeSheet = function(done) { if (scope.removed) return; scope.removed = true; sheetEl.removeClass('action-sheet-up'); $timeout(function() { // wait to remove this due to a 300ms delay native // click which would trigging whatever was underneath this $ionicBody.removeClass('action-sheet-open'); }, 400); scope.$deregisterBackButton(); stateChangeListenDone(); $animate.removeClass(element, 'active').then(function() { scope.$destroy(); element.remove(); // scope.cancel.$scope is defined near the bottom scope.cancel.$scope = sheetEl = null; (done || noop)(opts.buttons); }); }; scope.showSheet = function(done) { if (scope.removed) return; $ionicBody.append(element) .addClass('action-sheet-open'); $animate.addClass(element, 'active').then(function() { if (scope.removed) return; (done || noop)(); }); $timeout(function() { if (scope.removed) return; sheetEl.addClass('action-sheet-up'); }, 20, false); }; // registerBackButtonAction returns a callback to deregister the action scope.$deregisterBackButton = $ionicPlatform.registerBackButtonAction( function() { $timeout(scope.cancel); }, IONIC_BACK_PRIORITY.actionSheet ); // called when the user presses the cancel button scope.cancel = function() { // after the animation is out, call the cancel callback scope.removeSheet(opts.cancel); }; scope.buttonClicked = function(index) { // Check if the button click event returned true, which means // we can close the action sheet if (opts.buttonClicked(index, opts.buttons[index]) === true) { scope.removeSheet(); } }; scope.destructiveButtonClicked = function() { // Check if the destructive button click event returned true, which means // we can close the action sheet if (opts.destructiveButtonClicked() === true) { scope.removeSheet(); } }; scope.showSheet(); // Expose the scope on $ionicActionSheet's return value for the sake // of testing it. scope.cancel.$scope = scope; return scope.cancel; } }]); jqLite.prototype.addClass = function(cssClasses) { var x, y, cssClass, el, splitClasses, existingClasses; if (cssClasses && cssClasses != 'ng-scope' && cssClasses != 'ng-isolate-scope') { for (x = 0; x < this.length; x++) { el = this[x]; if (el.setAttribute) { if (cssClasses.indexOf(' ') < 0 && el.classList.add) { el.classList.add(cssClasses); } else { existingClasses = (' ' + (el.getAttribute('class') || '') + ' ') .replace(/[\n\t]/g, " "); splitClasses = cssClasses.split(' '); for (y = 0; y < splitClasses.length; y++) { cssClass = splitClasses[y].trim(); if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) { existingClasses += cssClass + ' '; } } el.setAttribute('class', existingClasses.trim()); } } } } return this; }; jqLite.prototype.removeClass = function(cssClasses) { var x, y, splitClasses, cssClass, el; if (cssClasses) { for (x = 0; x < this.length; x++) { el = this[x]; if (el.getAttribute) { if (cssClasses.indexOf(' ') < 0 && el.classList.remove) { el.classList.remove(cssClasses); } else { splitClasses = cssClasses.split(' '); for (y = 0; y < splitClasses.length; y++) { cssClass = splitClasses[y]; el.setAttribute('class', ( (" " + (el.getAttribute('class') || '') + " ") .replace(/[\n\t]/g, " ") .replace(" " + cssClass.trim() + " ", " ")).trim() ); } } } } } return this; }; /** * @ngdoc service * @name $ionicBackdrop * @module ionic * @description * Shows and hides a backdrop over the UI. Appears behind popups, loading, * and other overlays. * * Often, multiple UI components require a backdrop, but only one backdrop is * ever needed in the DOM at a time. * * Therefore, each component that requires the backdrop to be shown calls * `$ionicBackdrop.retain()` when it wants the backdrop, then `$ionicBackdrop.release()` * when it is done with the backdrop. * * For each time `retain` is called, the backdrop will be shown until `release` is called. * * For example, if `retain` is called three times, the backdrop will be shown until `release` * is called three times. * * **Notes:** * - The backdrop service will broadcast 'backdrop.shown' and 'backdrop.hidden' events from the root scope, * this is useful for alerting native components not in html. * * @usage * * ```js * function MyController($scope, $ionicBackdrop, $timeout, $rootScope) { * //Show a backdrop for one second * $scope.action = function() { * $ionicBackdrop.retain(); * $timeout(function() { * $ionicBackdrop.release(); * }, 1000); * }; * * // Execute action on backdrop disappearing * $scope.$on('backdrop.hidden', function() { * // Execute action * }); * * // Execute action on backdrop appearing * $scope.$on('backdrop.shown', function() { * // Execute action * }); * * } * ``` */ IonicModule .factory('$ionicBackdrop', [ '$document', '$timeout', '$$rAF', '$rootScope', function($document, $timeout, $$rAF, $rootScope) { var el = jqLite('
'); var backdropHolds = 0; $document[0].body.appendChild(el[0]); return { /** * @ngdoc method * @name $ionicBackdrop#retain * @description Retains the backdrop. */ retain: retain, /** * @ngdoc method * @name $ionicBackdrop#release * @description * Releases the backdrop. */ release: release, getElement: getElement, // exposed for testing _element: el }; function retain() { backdropHolds++; if (backdropHolds === 1) { el.addClass('visible'); $rootScope.$broadcast('backdrop.shown'); $$rAF(function() { // If we're still at >0 backdropHolds after async... if (backdropHolds >= 1) el.addClass('active'); }); } } function release() { if (backdropHolds === 1) { el.removeClass('active'); $rootScope.$broadcast('backdrop.hidden'); $timeout(function() { // If we're still at 0 backdropHolds after async... if (backdropHolds === 0) el.removeClass('visible'); }, 400, false); } backdropHolds = Math.max(0, backdropHolds - 1); } function getElement() { return el; } }]); /** * @private */ IonicModule .factory('$ionicBind', ['$parse', '$interpolate', function($parse, $interpolate) { var LOCAL_REGEXP = /^\s*([@=&])(\??)\s*(\w*)\s*$/; return function(scope, attrs, bindDefinition) { forEach(bindDefinition || {}, function(definition, scopeName) { //Adapted from angular.js $compile var match = definition.match(LOCAL_REGEXP) || [], attrName = match[3] || scopeName, mode = match[1], // @, =, or & parentGet, unwatch; switch (mode) { case '@': if (!attrs[attrName]) { return; } attrs.$observe(attrName, function(value) { scope[scopeName] = value; }); // we trigger an interpolation to ensure // the value is there for use immediately if (attrs[attrName]) { scope[scopeName] = $interpolate(attrs[attrName])(scope); } break; case '=': if (!attrs[attrName]) { return; } unwatch = scope.$watch(attrs[attrName], function(value) { scope[scopeName] = value; }); //Destroy parent scope watcher when this scope is destroyed scope.$on('$destroy', unwatch); break; case '&': /* jshint -W044 */ if (attrs[attrName] && attrs[attrName].match(RegExp(scopeName + '\(.*?\)'))) { throw new Error('& expression binding "' + scopeName + '" looks like it will recursively call "' + attrs[attrName] + '" and cause a stack overflow! Please choose a different scopeName.'); } parentGet = $parse(attrs[attrName]); scope[scopeName] = function(locals) { return parentGet(scope, locals); }; break; } }); }; }]); /** * @ngdoc service * @name $ionicBody * @module ionic * @description An angular utility service to easily and efficiently * add and remove CSS classes from the document's body element. */ IonicModule .factory('$ionicBody', ['$document', function($document) { return { /** * @ngdoc method * @name $ionicBody#addClass * @description Add a class to the document's body element. * @param {string} class Each argument will be added to the body element. * @returns {$ionicBody} The $ionicBody service so methods can be chained. */ addClass: function() { for (var x = 0; x < arguments.length; x++) { $document[0].body.classList.add(arguments[x]); } return this; }, /** * @ngdoc method * @name $ionicBody#removeClass * @description Remove a class from the document's body element. * @param {string} class Each argument will be removed from the body element. * @returns {$ionicBody} The $ionicBody service so methods can be chained. */ removeClass: function() { for (var x = 0; x < arguments.length; x++) { $document[0].body.classList.remove(arguments[x]); } return this; }, /** * @ngdoc method * @name $ionicBody#enableClass * @description Similar to the `add` method, except the first parameter accepts a boolean * value determining if the class should be added or removed. Rather than writing user code, * such as "if true then add the class, else then remove the class", this method can be * given a true or false value which reduces redundant code. * @param {boolean} shouldEnableClass A true/false value if the class should be added or removed. * @param {string} class Each remaining argument would be added or removed depending on * the first argument. * @returns {$ionicBody} The $ionicBody service so methods can be chained. */ enableClass: function(shouldEnableClass) { var args = Array.prototype.slice.call(arguments).slice(1); if (shouldEnableClass) { this.addClass.apply(this, args); } else { this.removeClass.apply(this, args); } return this; }, /** * @ngdoc method * @name $ionicBody#append * @description Append a child to the document's body. * @param {element} element The element to be appended to the body. The passed in element * can be either a jqLite element, or a DOM element. * @returns {$ionicBody} The $ionicBody service so methods can be chained. */ append: function(ele) { $document[0].body.appendChild(ele.length ? ele[0] : ele); return this; }, /** * @ngdoc method * @name $ionicBody#get * @description Get the document's body element. * @returns {element} Returns the document's body element. */ get: function() { return $document[0].body; } }; }]); IonicModule .factory('$ionicClickBlock', [ '$document', '$ionicBody', '$timeout', function($document, $ionicBody, $timeout) { var CSS_HIDE = 'click-block-hide'; var cbEle, fallbackTimer, pendingShow; function preventClick(ev) { ev.preventDefault(); ev.stopPropagation(); } function addClickBlock() { if (pendingShow) { if (cbEle) { cbEle.classList.remove(CSS_HIDE); } else { cbEle = $document[0].createElement('div'); cbEle.className = 'click-block'; $ionicBody.append(cbEle); cbEle.addEventListener('touchstart', preventClick); cbEle.addEventListener('mousedown', preventClick); } pendingShow = false; } } function removeClickBlock() { cbEle && cbEle.classList.add(CSS_HIDE); } return { show: function(autoExpire) { pendingShow = true; $timeout.cancel(fallbackTimer); fallbackTimer = $timeout(this.hide, autoExpire || 310, false); addClickBlock(); }, hide: function() { pendingShow = false; $timeout.cancel(fallbackTimer); removeClickBlock(); } }; }]); /** * @ngdoc service * @name $ionicGesture * @module ionic * @description An angular service exposing ionic * {@link ionic.utility:ionic.EventController}'s gestures. */ IonicModule .factory('$ionicGesture', [function() { return { /** * @ngdoc method * @name $ionicGesture#on * @description Add an event listener for a gesture on an element. See {@link ionic.utility:ionic.EventController#onGesture}. * @param {string} eventType The gesture event to listen for. * @param {function(e)} callback The function to call when the gesture * happens. * @param {element} $element The angular element to listen for the event on. * @param {object} options object. * @returns {ionic.Gesture} The gesture object (use this to remove the gesture later on). */ on: function(eventType, cb, $element, options) { return window.ionic.onGesture(eventType, cb, $element[0], options); }, /** * @ngdoc method * @name $ionicGesture#off * @description Remove an event listener for a gesture on an element. See {@link ionic.utility:ionic.EventController#offGesture}. * @param {ionic.Gesture} gesture The gesture that should be removed. * @param {string} eventType The gesture event to remove the listener for. * @param {function(e)} callback The listener to remove. */ off: function(gesture, eventType, cb) { return window.ionic.offGesture(gesture, eventType, cb); } }; }]); /** * @ngdoc service * @name $ionicHistory * @module ionic * @description * $ionicHistory keeps track of views as the user navigates through an app. Similar to the way a * browser behaves, an Ionic app is able to keep track of the previous view, the current view, and * the forward view (if there is one). However, a typical web browser only keeps track of one * history stack in a linear fashion. * * Unlike a traditional browser environment, apps and webapps have parallel independent histories, * such as with tabs. Should a user navigate few pages deep on one tab, and then switch to a new * tab and back, the back button relates not to the previous tab, but to the previous pages * visited within _that_ tab. * * `$ionicHistory` facilitates this parallel history architecture. */ IonicModule .factory('$ionicHistory', [ '$rootScope', '$state', '$location', '$window', '$timeout', '$ionicViewSwitcher', '$ionicNavViewDelegate', function($rootScope, $state, $location, $window, $timeout, $ionicViewSwitcher, $ionicNavViewDelegate) { // history actions while navigating views var ACTION_INITIAL_VIEW = 'initialView'; var ACTION_NEW_VIEW = 'newView'; var ACTION_MOVE_BACK = 'moveBack'; var ACTION_MOVE_FORWARD = 'moveForward'; // direction of navigation var DIRECTION_BACK = 'back'; var DIRECTION_FORWARD = 'forward'; var DIRECTION_ENTER = 'enter'; var DIRECTION_EXIT = 'exit'; var DIRECTION_SWAP = 'swap'; var DIRECTION_NONE = 'none'; var stateChangeCounter = 0; var lastStateId, nextViewOptions, deregisterStateChangeListener, nextViewExpireTimer, forcedNav; var viewHistory = { histories: { root: { historyId: 'root', parentHistoryId: null, stack: [], cursor: -1 } }, views: {}, backView: null, forwardView: null, currentView: null }; var View = function() {}; View.prototype.initialize = function(data) { if (data) { for (var name in data) this[name] = data[name]; return this; } return null; }; View.prototype.go = function() { if (this.stateName) { return $state.go(this.stateName, this.stateParams); } if (this.url && this.url !== $location.url()) { if (viewHistory.backView === this) { return $window.history.go(-1); } else if (viewHistory.forwardView === this) { return $window.history.go(1); } $location.url(this.url); } return null; }; View.prototype.destroy = function() { if (this.scope) { this.scope.$destroy && this.scope.$destroy(); this.scope = null; } }; function getViewById(viewId) { return (viewId ? viewHistory.views[ viewId ] : null); } function getBackView(view) { return (view ? getViewById(view.backViewId) : null); } function getForwardView(view) { return (view ? getViewById(view.forwardViewId) : null); } function getHistoryById(historyId) { return (historyId ? viewHistory.histories[ historyId ] : null); } function getHistory(scope) { var histObj = getParentHistoryObj(scope); if (!viewHistory.histories[ histObj.historyId ]) { // this history object exists in parent scope, but doesn't // exist in the history data yet viewHistory.histories[ histObj.historyId ] = { historyId: histObj.historyId, parentHistoryId: getParentHistoryObj(histObj.scope.$parent).historyId, stack: [], cursor: -1 }; } return getHistoryById(histObj.historyId); } function getParentHistoryObj(scope) { var parentScope = scope; while (parentScope) { if (parentScope.hasOwnProperty('$historyId')) { // this parent scope has a historyId return { historyId: parentScope.$historyId, scope: parentScope }; } // nothing found keep climbing up parentScope = parentScope.$parent; } // no history for the parent, use the root return { historyId: 'root', scope: $rootScope }; } function setNavViews(viewId) { viewHistory.currentView = getViewById(viewId); viewHistory.backView = getBackView(viewHistory.currentView); viewHistory.forwardView = getForwardView(viewHistory.currentView); } function getCurrentStateId() { var id; if ($state && $state.current && $state.current.name) { id = $state.current.name; if ($state.params) { for (var key in $state.params) { if ($state.params.hasOwnProperty(key) && $state.params[key]) { id += "_" + key + "=" + $state.params[key]; } } } return id; } // if something goes wrong make sure its got a unique stateId return ionic.Utils.nextUid(); } function getCurrentStateParams() { var rtn; if ($state && $state.params) { for (var key in $state.params) { if ($state.params.hasOwnProperty(key)) { rtn = rtn || {}; rtn[key] = $state.params[key]; } } } return rtn; } return { register: function(parentScope, viewLocals) { var currentStateId = getCurrentStateId(), hist = getHistory(parentScope), currentView = viewHistory.currentView, backView = viewHistory.backView, forwardView = viewHistory.forwardView, viewId = null, action = null, direction = DIRECTION_NONE, historyId = hist.historyId, url = $location.url(), tmp, x, ele; if (lastStateId !== currentStateId) { lastStateId = currentStateId; stateChangeCounter++; } if (forcedNav) { // we've previously set exactly what to do viewId = forcedNav.viewId; action = forcedNav.action; direction = forcedNav.direction; forcedNav = null; } else if (backView && backView.stateId === currentStateId) { // they went back one, set the old current view as a forward view viewId = backView.viewId; historyId = backView.historyId; action = ACTION_MOVE_BACK; if (backView.historyId === currentView.historyId) { // went back in the same history direction = DIRECTION_BACK; } else if (currentView) { direction = DIRECTION_EXIT; tmp = getHistoryById(backView.historyId); if (tmp && tmp.parentHistoryId === currentView.historyId) { direction = DIRECTION_ENTER; } else { tmp = getHistoryById(currentView.historyId); if (tmp && tmp.parentHistoryId === hist.parentHistoryId) { direction = DIRECTION_SWAP; } } } } else if (forwardView && forwardView.stateId === currentStateId) { // they went to the forward one, set the forward view to no longer a forward view viewId = forwardView.viewId; historyId = forwardView.historyId; action = ACTION_MOVE_FORWARD; if (forwardView.historyId === currentView.historyId) { direction = DIRECTION_FORWARD; } else if (currentView) { direction = DIRECTION_EXIT; if (currentView.historyId === hist.parentHistoryId) { direction = DIRECTION_ENTER; } else { tmp = getHistoryById(currentView.historyId); if (tmp && tmp.parentHistoryId === hist.parentHistoryId) { direction = DIRECTION_SWAP; } } } tmp = getParentHistoryObj(parentScope); if (forwardView.historyId && tmp.scope) { // if a history has already been created by the forward view then make sure it stays the same tmp.scope.$historyId = forwardView.historyId; historyId = forwardView.historyId; } } else if (currentView && currentView.historyId !== historyId && hist.cursor > -1 && hist.stack.length > 0 && hist.cursor < hist.stack.length && hist.stack[hist.cursor].stateId === currentStateId) { // they just changed to a different history and the history already has views in it var switchToView = hist.stack[hist.cursor]; viewId = switchToView.viewId; historyId = switchToView.historyId; action = ACTION_MOVE_BACK; direction = DIRECTION_SWAP; tmp = getHistoryById(currentView.historyId); if (tmp && tmp.parentHistoryId === historyId) { direction = DIRECTION_EXIT; } else { tmp = getHistoryById(historyId); if (tmp && tmp.parentHistoryId === currentView.historyId) { direction = DIRECTION_ENTER; } } // if switching to a different history, and the history of the view we're switching // to has an existing back view from a different history than itself, then // it's back view would be better represented using the current view as its back view tmp = getViewById(switchToView.backViewId); if (tmp && switchToView.historyId !== tmp.historyId) { // the new view is being removed from it's old position in the history and being placed at the top, // so we need to update any views that reference it as a backview, otherwise there will be infinitely loops var viewIds = Object.keys(viewHistory.views); viewIds.forEach(function(viewId) { var view = viewHistory.views[viewId]; if ((view.backViewId === switchToView.viewId) && (view.historyId !== switchToView.historyId)) { view.backViewId = null; } }); hist.stack[hist.cursor].backViewId = currentView.viewId; } } else { // create an element from the viewLocals template ele = $ionicViewSwitcher.createViewEle(viewLocals); if (this.isAbstractEle(ele, viewLocals)) { return { action: 'abstractView', direction: DIRECTION_NONE, ele: ele }; } // set a new unique viewId viewId = ionic.Utils.nextUid(); if (currentView) { // set the forward view if there is a current view (ie: if its not the first view) currentView.forwardViewId = viewId; action = ACTION_NEW_VIEW; // check if there is a new forward view within the same history if (forwardView && currentView.stateId !== forwardView.stateId && currentView.historyId === forwardView.historyId) { // they navigated to a new view but the stack already has a forward view // since its a new view remove any forwards that existed tmp = getHistoryById(forwardView.historyId); if (tmp) { // the forward has a history for (x = tmp.stack.length - 1; x >= forwardView.index; x--) { // starting from the end destroy all forwards in this history from this point var stackItem = tmp.stack[x]; stackItem && stackItem.destroy && stackItem.destroy(); tmp.stack.splice(x); } historyId = forwardView.historyId; } } // its only moving forward if its in the same history if (hist.historyId === currentView.historyId) { direction = DIRECTION_FORWARD; } else if (currentView.historyId !== hist.historyId) { // DB: this is a new view in a different tab direction = DIRECTION_ENTER; tmp = getHistoryById(currentView.historyId); if (tmp && tmp.parentHistoryId === hist.parentHistoryId) { direction = DIRECTION_SWAP; } else { tmp = getHistoryById(tmp.parentHistoryId); if (tmp && tmp.historyId === hist.historyId) { direction = DIRECTION_EXIT; } } } } else { // there's no current view, so this must be the initial view action = ACTION_INITIAL_VIEW; } if (stateChangeCounter < 2) { // views that were spun up on the first load should not animate direction = DIRECTION_NONE; } // add the new view viewHistory.views[viewId] = this.createView({ viewId: viewId, index: hist.stack.length, historyId: hist.historyId, backViewId: (currentView && currentView.viewId ? currentView.viewId : null), forwardViewId: null, stateId: currentStateId, stateName: this.currentStateName(), stateParams: getCurrentStateParams(), url: url, canSwipeBack: canSwipeBack(ele, viewLocals) }); // add the new view to this history's stack hist.stack.push(viewHistory.views[viewId]); } deregisterStateChangeListener && deregisterStateChangeListener(); $timeout.cancel(nextViewExpireTimer); if (nextViewOptions) { if (nextViewOptions.disableAnimate) direction = DIRECTION_NONE; if (nextViewOptions.disableBack) viewHistory.views[viewId].backViewId = null; if (nextViewOptions.historyRoot) { for (x = 0; x < hist.stack.length; x++) { if (hist.stack[x].viewId === viewId) { hist.stack[x].index = 0; hist.stack[x].backViewId = hist.stack[x].forwardViewId = null; } else { delete viewHistory.views[hist.stack[x].viewId]; } } hist.stack = [viewHistory.views[viewId]]; } nextViewOptions = null; } setNavViews(viewId); if (viewHistory.backView && historyId == viewHistory.backView.historyId && currentStateId == viewHistory.backView.stateId && url == viewHistory.backView.url) { for (x = 0; x < hist.stack.length; x++) { if (hist.stack[x].viewId == viewId) { action = 'dupNav'; direction = DIRECTION_NONE; if (x > 0) { hist.stack[x - 1].forwardViewId = null; } viewHistory.forwardView = null; viewHistory.currentView.index = viewHistory.backView.index; viewHistory.currentView.backViewId = viewHistory.backView.backViewId; viewHistory.backView = getBackView(viewHistory.backView); hist.stack.splice(x, 1); break; } } } hist.cursor = viewHistory.currentView.index; return { viewId: viewId, action: action, direction: direction, historyId: historyId, enableBack: this.enabledBack(viewHistory.currentView), isHistoryRoot: (viewHistory.currentView.index === 0), ele: ele }; }, registerHistory: function(scope) { scope.$historyId = ionic.Utils.nextUid(); }, createView: function(data) { var newView = new View(); return newView.initialize(data); }, getViewById: getViewById, /** * @ngdoc method * @name $ionicHistory#viewHistory * @description The app's view history data, such as all the views and histories, along * with how they are ordered and linked together within the navigation stack. * @returns {object} Returns an object containing the apps view history data. */ viewHistory: function() { return viewHistory; }, /** * @ngdoc method * @name $ionicHistory#currentView * @description The app's current view. * @returns {object} Returns the current view. */ currentView: function(view) { if (arguments.length) { viewHistory.currentView = view; } return viewHistory.currentView; }, /** * @ngdoc method * @name $ionicHistory#currentHistoryId * @description The ID of the history stack which is the parent container of the current view. * @returns {string} Returns the current history ID. */ currentHistoryId: function() { return viewHistory.currentView ? viewHistory.currentView.historyId : null; }, /** * @ngdoc method * @name $ionicHistory#currentTitle * @description Gets and sets the current view's title. * @param {string=} val The title to update the current view with. * @returns {string} Returns the current view's title. */ currentTitle: function(val) { if (viewHistory.currentView) { if (arguments.length) { viewHistory.currentView.title = val; } return viewHistory.currentView.title; } }, /** * @ngdoc method * @name $ionicHistory#backView * @description Returns the view that was before the current view in the history stack. * If the user navigated from View A to View B, then View A would be the back view, and * View B would be the current view. * @returns {object} Returns the back view. */ backView: function(view) { if (arguments.length) { viewHistory.backView = view; } return viewHistory.backView; }, /** * @ngdoc method * @name $ionicHistory#backTitle * @description Gets the back view's title. * @returns {string} Returns the back view's title. */ backTitle: function(view) { var backView = (view && getViewById(view.backViewId)) || viewHistory.backView; return backView && backView.title; }, /** * @ngdoc method * @name $ionicHistory#forwardView * @description Returns the view that was in front of the current view in the history stack. * A forward view would exist if the user navigated from View A to View B, then * navigated back to View A. At this point then View B would be the forward view, and View * A would be the current view. * @returns {object} Returns the forward view. */ forwardView: function(view) { if (arguments.length) { viewHistory.forwardView = view; } return viewHistory.forwardView; }, /** * @ngdoc method * @name $ionicHistory#currentStateName * @description Returns the current state name. * @returns {string} */ currentStateName: function() { return ($state && $state.current ? $state.current.name : null); }, isCurrentStateNavView: function(navView) { return !!($state && $state.current && $state.current.views && $state.current.views[navView]); }, goToHistoryRoot: function(historyId) { if (historyId) { var hist = getHistoryById(historyId); if (hist && hist.stack.length) { if (viewHistory.currentView && viewHistory.currentView.viewId === hist.stack[0].viewId) { return; } forcedNav = { viewId: hist.stack[0].viewId, action: ACTION_MOVE_BACK, direction: DIRECTION_BACK }; hist.stack[0].go(); } } }, /** * @ngdoc method * @name $ionicHistory#goBack * @param {number=} backCount Optional negative integer setting how many views to go * back. By default it'll go back one view by using the value `-1`. To go back two * views you would use `-2`. If the number goes farther back than the number of views * in the current history's stack then it'll go to the first view in the current history's * stack. If the number is zero or greater then it'll do nothing. It also does not * cross history stacks, meaning it can only go as far back as the current history. * @description Navigates the app to the back view, if a back view exists. */ goBack: function(backCount) { if (isDefined(backCount) && backCount !== -1) { if (backCount > -1) return; var currentHistory = viewHistory.histories[this.currentHistoryId()]; var newCursor = currentHistory.cursor + backCount + 1; if (newCursor < 1) { newCursor = 1; } currentHistory.cursor = newCursor; setNavViews(currentHistory.stack[newCursor].viewId); var cursor = newCursor - 1; var clearStateIds = []; var fwdView = getViewById(currentHistory.stack[cursor].forwardViewId); while (fwdView) { clearStateIds.push(fwdView.stateId || fwdView.viewId); cursor++; if (cursor >= currentHistory.stack.length) break; fwdView = getViewById(currentHistory.stack[cursor].forwardViewId); } var self = this; if (clearStateIds.length) { $timeout(function() { self.clearCache(clearStateIds); }, 300); } } viewHistory.backView && viewHistory.backView.go(); }, /** * @ngdoc method * @name $ionicHistory#removeBackView * @description Remove the previous view from the history completely, including the * cached element and scope (if they exist). */ removeBackView: function() { var self = this; var currentHistory = viewHistory.histories[this.currentHistoryId()]; var currentCursor = currentHistory.cursor; var currentView = currentHistory.stack[currentCursor]; var backView = currentHistory.stack[currentCursor - 1]; var replacementView = currentHistory.stack[currentCursor - 2]; // fail if we dont have enough views in the history if (!backView || !replacementView) { return; } // remove the old backView and the cached element/scope currentHistory.stack.splice(currentCursor - 1, 1); self.clearCache([backView.viewId]); // make the replacementView and currentView point to each other (bypass the old backView) currentView.backViewId = replacementView.viewId; currentView.index = currentView.index - 1; replacementView.forwardViewId = currentView.viewId; // update the cursor and set new backView viewHistory.backView = replacementView; currentHistory.currentCursor += -1; }, enabledBack: function(view) { var backView = getBackView(view); return !!(backView && backView.historyId === view.historyId); }, /** * @ngdoc method * @name $ionicHistory#clearHistory * @description Clears out the app's entire history, except for the current view. */ clearHistory: function() { var histories = viewHistory.histories, currentView = viewHistory.currentView; if (histories) { for (var historyId in histories) { if (histories[historyId].stack) { histories[historyId].stack = []; histories[historyId].cursor = -1; } if (currentView && currentView.historyId === historyId) { currentView.backViewId = currentView.forwardViewId = null; histories[historyId].stack.push(currentView); } else if (histories[historyId].destroy) { histories[historyId].destroy(); } } } for (var viewId in viewHistory.views) { if (viewId !== currentView.viewId) { delete viewHistory.views[viewId]; } } if (currentView) { setNavViews(currentView.viewId); } }, /** * @ngdoc method * @name $ionicHistory#clearCache * @return promise * @description Removes all cached views within every {@link ionic.directive:ionNavView}. * This both removes the view element from the DOM, and destroy it's scope. */ clearCache: function(stateIds) { return $timeout(function() { $ionicNavViewDelegate._instances.forEach(function(instance) { instance.clearCache(stateIds); }); }); }, /** * @ngdoc method * @name $ionicHistory#nextViewOptions * @description Sets options for the next view. This method can be useful to override * certain view/transition defaults right before a view transition happens. For example, * the {@link ionic.directive:menuClose} directive uses this method internally to ensure * an animated view transition does not happen when a side menu is open, and also sets * the next view as the root of its history stack. After the transition these options * are set back to null. * * Available options: * * * `disableAnimate`: Do not animate the next transition. * * `disableBack`: The next view should forget its back view, and set it to null. * * `historyRoot`: The next view should become the root view in its history stack. * * ```js * $ionicHistory.nextViewOptions({ * disableAnimate: true, * disableBack: true * }); * ``` */ nextViewOptions: function(opts) { deregisterStateChangeListener && deregisterStateChangeListener(); if (arguments.length) { $timeout.cancel(nextViewExpireTimer); if (opts === null) { nextViewOptions = opts; } else { nextViewOptions = nextViewOptions || {}; extend(nextViewOptions, opts); if (nextViewOptions.expire) { deregisterStateChangeListener = $rootScope.$on('$stateChangeSuccess', function() { nextViewExpireTimer = $timeout(function() { nextViewOptions = null; }, nextViewOptions.expire); }); } } } return nextViewOptions; }, isAbstractEle: function(ele, viewLocals) { if (viewLocals && viewLocals.$$state && viewLocals.$$state.self['abstract']) { return true; } return !!(ele && (isAbstractTag(ele) || isAbstractTag(ele.children()))); }, isActiveScope: function(scope) { if (!scope) return false; var climbScope = scope; var currentHistoryId = this.currentHistoryId(); var foundHistoryId; while (climbScope) { if (climbScope.$$disconnected) { return false; } if (!foundHistoryId && climbScope.hasOwnProperty('$historyId')) { foundHistoryId = true; } if (currentHistoryId) { if (climbScope.hasOwnProperty('$historyId') && currentHistoryId == climbScope.$historyId) { return true; } if (climbScope.hasOwnProperty('$activeHistoryId')) { if (currentHistoryId == climbScope.$activeHistoryId) { if (climbScope.hasOwnProperty('$historyId')) { return true; } if (!foundHistoryId) { return true; } } } } if (foundHistoryId && climbScope.hasOwnProperty('$activeHistoryId')) { foundHistoryId = false; } climbScope = climbScope.$parent; } return currentHistoryId ? currentHistoryId == 'root' : true; } }; function isAbstractTag(ele) { return ele && ele.length && /ion-side-menus|ion-tabs/i.test(ele[0].tagName); } function canSwipeBack(ele, viewLocals) { if (viewLocals && viewLocals.$$state && viewLocals.$$state.self.canSwipeBack === false) { return false; } if (ele && ele.attr('can-swipe-back') === 'false') { return false; } var eleChild = ele.find('ion-view'); if (eleChild && eleChild.attr('can-swipe-back') === 'false') { return false; } return true; } }]) .run([ '$rootScope', '$state', '$location', '$document', '$ionicPlatform', '$ionicHistory', 'IONIC_BACK_PRIORITY', function($rootScope, $state, $location, $document, $ionicPlatform, $ionicHistory, IONIC_BACK_PRIORITY) { // always reset the keyboard state when change stage $rootScope.$on('$ionicView.beforeEnter', function() { ionic.keyboard && ionic.keyboard.hide && ionic.keyboard.hide(); }); $rootScope.$on('$ionicHistory.change', function(e, data) { if (!data) return null; var viewHistory = $ionicHistory.viewHistory(); var hist = (data.historyId ? viewHistory.histories[ data.historyId ] : null); if (hist && hist.cursor > -1 && hist.cursor < hist.stack.length) { // the history they're going to already exists // go to it's last view in its stack var view = hist.stack[ hist.cursor ]; return view.go(data); } // this history does not have a URL, but it does have a uiSref // figure out its URL from the uiSref if (!data.url && data.uiSref) { data.url = $state.href(data.uiSref); } if (data.url) { // don't let it start with a #, messes with $location.url() if (data.url.indexOf('#') === 0) { data.url = data.url.replace('#', ''); } if (data.url !== $location.url()) { // we've got a good URL, ready GO! $location.url(data.url); } } }); $rootScope.$ionicGoBack = function(backCount) { $ionicHistory.goBack(backCount); }; // Set the document title when a new view is shown $rootScope.$on('$ionicView.afterEnter', function(ev, data) { if (data && data.title) { $document[0].title = data.title; } }); // Triggered when devices with a hardware back button (Android) is clicked by the user // This is a Cordova/Phonegap platform specifc method function onHardwareBackButton(e) { var backView = $ionicHistory.backView(); if (backView) { // there is a back view, go to it backView.go(); } else { // there is no back view, so close the app instead ionic.Platform.exitApp(); } e.preventDefault(); return false; } $ionicPlatform.registerBackButtonAction( onHardwareBackButton, IONIC_BACK_PRIORITY.view ); }]); /** * @ngdoc provider * @name $ionicConfigProvider * @module ionic * @description * Ionic automatically takes platform configurations into account to adjust things like what * transition style to use and whether tab icons should show on the top or bottom. For example, * iOS will move forward by transitioning the entering view from right to center and the leaving * view from center to left. However, Android will transition with the entering view going from * bottom to center, covering the previous view, which remains stationary. It should be noted * that when a platform is not iOS or Android, then it'll default to iOS. So if you are * developing on a desktop browser, it's going to take on iOS default configs. * * These configs can be changed using the `$ionicConfigProvider` during the configuration phase * of your app. Additionally, `$ionicConfig` can also set and get config values during the run * phase and within the app itself. * * By default, all base config variables are set to `'platform'`, which means it'll take on the * default config of the platform on which it's running. Config variables can be set at this * level so all platforms follow the same setting, rather than its platform config. * The following code would set the same config variable for all platforms: * * ```js * $ionicConfigProvider.views.maxCache(10); * ``` * * Additionally, each platform can have its own config within the `$ionicConfigProvider.platform` * property. The config below would only apply to Android devices. * * ```js * $ionicConfigProvider.platform.android.views.maxCache(5); * ``` * * @usage * ```js * var myApp = angular.module('reallyCoolApp', ['ionic']); * * myApp.config(function($ionicConfigProvider) { * $ionicConfigProvider.views.maxCache(5); * * // note that you can also chain configs * $ionicConfigProvider.backButton.text('Go Back').icon('ion-chevron-left'); * }); * ``` */ /** * @ngdoc method * @name $ionicConfigProvider#views.transition * @description Animation style when transitioning between views. Default `platform`. * * @param {string} transition Which style of view transitioning to use. * * * `platform`: Dynamically choose the correct transition style depending on the platform * the app is running from. If the platform is not `ios` or `android` then it will default * to `ios`. * * `ios`: iOS style transition. * * `android`: Android style transition. * * `none`: Do not perform animated transitions. * * @returns {string} value */ /** * @ngdoc method * @name $ionicConfigProvider#views.maxCache * @description Maximum number of view elements to cache in the DOM. When the max number is * exceeded, the view with the longest time period since it was accessed is removed. Views that * stay in the DOM cache the view's scope, current state, and scroll position. The scope is * disconnected from the `$watch` cycle when it is cached and reconnected when it enters again. * When the maximum cache is `0`, the leaving view's element will be removed from the DOM after * each view transition, and the next time the same view is shown, it will have to re-compile, * attach to the DOM, and link the element again. This disables caching, in effect. * @param {number} maxNumber Maximum number of views to retain. Default `10`. * @returns {number} How many views Ionic will hold onto until the a view is removed. */ /** * @ngdoc method * @name $ionicConfigProvider#views.forwardCache * @description By default, when navigating, views that were recently visited are cached, and * the same instance data and DOM elements are referenced when navigating back. However, when * navigating back in the history, the "forward" views are removed from the cache. If you * navigate forward to the same view again, it'll create a new DOM element and controller * instance. Basically, any forward views are reset each time. Set this config to `true` to have * forward views cached and not reset on each load. * @param {boolean} value * @returns {boolean} */ /** * @ngdoc method * @name $ionicConfigProvider#views.swipeBackEnabled * @description By default on iOS devices, swipe to go back functionality is enabled by default. * This method can be used to disable it globally, or on a per-view basis. * Note: This functionality is only supported on iOS. * @param {boolean} value * @returns {boolean} */ /** * @ngdoc method * @name $ionicConfigProvider#scrolling.jsScrolling * @description Whether to use JS or Native scrolling. Defaults to native scrolling. Setting this to * `true` has the same effect as setting each `ion-content` to have `overflow-scroll='false'`. * @param {boolean} value Defaults to `false` as of Ionic 1.2 * @returns {boolean} */ /** * @ngdoc method * @name $ionicConfigProvider#backButton.icon * @description Back button icon. * @param {string} value * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#backButton.text * @description Back button text. * @param {string} value Defaults to `Back`. * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#backButton.previousTitleText * @description If the previous title text should become the back button text. This * is the default for iOS. * @param {boolean} value * @returns {boolean} */ /** * @ngdoc method * @name $ionicConfigProvider#form.checkbox * @description Checkbox style. Android defaults to `square` and iOS defaults to `circle`. * @param {string} value * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#form.toggle * @description Toggle item style. Android defaults to `small` and iOS defaults to `large`. * @param {string} value * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#spinner.icon * @description Default spinner icon to use. * @param {string} value Can be: `android`, `ios`, `ios-small`, `bubbles`, `circles`, `crescent`, * `dots`, `lines`, `ripple`, or `spiral`. * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#tabs.style * @description Tab style. Android defaults to `striped` and iOS defaults to `standard`. * @param {string} value Available values include `striped` and `standard`. * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#tabs.position * @description Tab position. Android defaults to `top` and iOS defaults to `bottom`. * @param {string} value Available values include `top` and `bottom`. * @returns {string} */ /** * @ngdoc method * @name $ionicConfigProvider#templates.maxPrefetch * @description Sets the maximum number of templates to prefetch from the templateUrls defined in * $stateProvider.state. If set to `0`, the user will have to wait * for a template to be fetched the first time when navigating to a new page. Default `30`. * @param {integer} value Max number of template to prefetch from the templateUrls defined in * `$stateProvider.state()`. * @returns {integer} */ /** * @ngdoc method * @name $ionicConfigProvider#navBar.alignTitle * @description Which side of the navBar to align the title. Default `center`. * * @param {string} value side of the navBar to align the title. * * * `platform`: Dynamically choose the correct title style depending on the platform * the app is running from. If the platform is `ios`, it will default to `center`. * If the platform is `android`, it will default to `left`. If the platform is not * `ios` or `android`, it will default to `center`. * * * `left`: Left align the title in the navBar * * `center`: Center align the title in the navBar * * `right`: Right align the title in the navBar. * * @returns {string} value */ /** * @ngdoc method * @name $ionicConfigProvider#navBar.positionPrimaryButtons * @description Which side of the navBar to align the primary navBar buttons. Default `left`. * * @param {string} value side of the navBar to align the primary navBar buttons. * * * `platform`: Dynamically choose the correct title style depending on the platform * the app is running from. If the platform is `ios`, it will default to `left`. * If the platform is `android`, it will default to `right`. If the platform is not * `ios` or `android`, it will default to `left`. * * * `left`: Left align the primary navBar buttons in the navBar * * `right`: Right align the primary navBar buttons in the navBar. * * @returns {string} value */ /** * @ngdoc method * @name $ionicConfigProvider#navBar.positionSecondaryButtons * @description Which side of the navBar to align the secondary navBar buttons. Default `right`. * * @param {string} value side of the navBar to align the secondary navBar buttons. * * * `platform`: Dynamically choose the correct title style depending on the platform * the app is running from. If the platform is `ios`, it will default to `right`. * If the platform is `android`, it will default to `right`. If the platform is not * `ios` or `android`, it will default to `right`. * * * `left`: Left align the secondary navBar buttons in the navBar * * `right`: Right align the secondary navBar buttons in the navBar. * * @returns {string} value */ IonicModule .provider('$ionicConfig', function() { var provider = this; provider.platform = {}; var PLATFORM = 'platform'; var configProperties = { views: { maxCache: PLATFORM, forwardCache: PLATFORM, transition: PLATFORM, swipeBackEnabled: PLATFORM, swipeBackHitWidth: PLATFORM }, navBar: { alignTitle: PLATFORM, positionPrimaryButtons: PLATFORM, positionSecondaryButtons: PLATFORM, transition: PLATFORM }, backButton: { icon: PLATFORM, text: PLATFORM, previousTitleText: PLATFORM }, form: { checkbox: PLATFORM, toggle: PLATFORM }, scrolling: { jsScrolling: PLATFORM }, spinner: { icon: PLATFORM }, tabs: { style: PLATFORM, position: PLATFORM }, templates: { maxPrefetch: PLATFORM }, platform: {} }; createConfig(configProperties, provider, ''); // Default // ------------------------- setPlatformConfig('default', { views: { maxCache: 10, forwardCache: false, transition: 'ios', swipeBackEnabled: true, swipeBackHitWidth: 45 }, navBar: { alignTitle: 'center', positionPrimaryButtons: 'left', positionSecondaryButtons: 'right', transition: 'view' }, backButton: { icon: 'ion-ios-arrow-back', text: 'Back', previousTitleText: true }, form: { checkbox: 'circle', toggle: 'large' }, scrolling: { jsScrolling: true }, spinner: { icon: 'ios' }, tabs: { style: 'standard', position: 'bottom' }, templates: { maxPrefetch: 30 } }); // iOS (it is the default already) // ------------------------- setPlatformConfig('ios', {}); // Android // ------------------------- setPlatformConfig('android', { views: { transition: 'android', swipeBackEnabled: false }, navBar: { alignTitle: 'left', positionPrimaryButtons: 'right', positionSecondaryButtons: 'right' }, backButton: { icon: 'ion-android-arrow-back', text: false, previousTitleText: false }, form: { checkbox: 'square', toggle: 'small' }, spinner: { icon: 'android' }, tabs: { style: 'striped', position: 'top' }, scrolling: { jsScrolling: false } }); // Windows Phone // ------------------------- setPlatformConfig('windowsphone', { //scrolling: { // jsScrolling: false //} spinner: { icon: 'android' } }); provider.transitions = { views: {}, navBar: {} }; // iOS Transitions // ----------------------- provider.transitions.views.ios = function(enteringEle, leavingEle, direction, shouldAnimate) { function setStyles(ele, opacity, x, boxShadowOpacity) { var css = {}; css[ionic.CSS.TRANSITION_DURATION] = d.shouldAnimate ? '' : 0; css.opacity = opacity; if (boxShadowOpacity > -1) { css.boxShadow = '0 0 10px rgba(0,0,0,' + (d.shouldAnimate ? boxShadowOpacity * 0.45 : 0.3) + ')'; } css[ionic.CSS.TRANSFORM] = 'translate3d(' + x + '%,0,0)'; ionic.DomUtil.cachedStyles(ele, css); } var d = { run: function(step) { if (direction == 'forward') { setStyles(enteringEle, 1, (1 - step) * 99, 1 - step); // starting at 98% prevents a flicker setStyles(leavingEle, (1 - 0.1 * step), step * -33, -1); } else if (direction == 'back') { setStyles(enteringEle, (1 - 0.1 * (1 - step)), (1 - step) * -33, -1); setStyles(leavingEle, 1, step * 100, 1 - step); } else { // swap, enter, exit setStyles(enteringEle, 1, 0, -1); setStyles(leavingEle, 0, 0, -1); } }, shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back') }; return d; }; provider.transitions.navBar.ios = function(enteringHeaderBar, leavingHeaderBar, direction, shouldAnimate) { function setStyles(ctrl, opacity, titleX, backTextX) { var css = {}; css[ionic.CSS.TRANSITION_DURATION] = d.shouldAnimate ? '' : '0ms'; css.opacity = opacity === 1 ? '' : opacity; ctrl.setCss('buttons-left', css); ctrl.setCss('buttons-right', css); ctrl.setCss('back-button', css); css[ionic.CSS.TRANSFORM] = 'translate3d(' + backTextX + 'px,0,0)'; ctrl.setCss('back-text', css); css[ionic.CSS.TRANSFORM] = 'translate3d(' + titleX + 'px,0,0)'; ctrl.setCss('title', css); } function enter(ctrlA, ctrlB, step) { if (!ctrlA || !ctrlB) return; var titleX = (ctrlA.titleTextX() + ctrlA.titleWidth()) * (1 - step); var backTextX = (ctrlB && (ctrlB.titleTextX() - ctrlA.backButtonTextLeft()) * (1 - step)) || 0; setStyles(ctrlA, step, titleX, backTextX); } function leave(ctrlA, ctrlB, step) { if (!ctrlA || !ctrlB) return; var titleX = (-(ctrlA.titleTextX() - ctrlB.backButtonTextLeft()) - (ctrlA.titleLeftRight())) * step; setStyles(ctrlA, 1 - step, titleX, 0); } var d = { run: function(step) { var enteringHeaderCtrl = enteringHeaderBar.controller(); var leavingHeaderCtrl = leavingHeaderBar && leavingHeaderBar.controller(); if (d.direction == 'back') { leave(enteringHeaderCtrl, leavingHeaderCtrl, 1 - step); enter(leavingHeaderCtrl, enteringHeaderCtrl, 1 - step); } else { enter(enteringHeaderCtrl, leavingHeaderCtrl, step); leave(leavingHeaderCtrl, enteringHeaderCtrl, step); } }, direction: direction, shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back') }; return d; }; // Android Transitions // ----------------------- provider.transitions.views.android = function(enteringEle, leavingEle, direction, shouldAnimate) { shouldAnimate = shouldAnimate && (direction == 'forward' || direction == 'back'); function setStyles(ele, x, opacity) { var css = {}; css[ionic.CSS.TRANSITION_DURATION] = d.shouldAnimate ? '' : 0; css[ionic.CSS.TRANSFORM] = 'translate3d(' + x + '%,0,0)'; css.opacity = opacity; ionic.DomUtil.cachedStyles(ele, css); } var d = { run: function(step) { if (direction == 'forward') { setStyles(enteringEle, (1 - step) * 99, 1); // starting at 98% prevents a flicker setStyles(leavingEle, step * -100, 1); } else if (direction == 'back') { setStyles(enteringEle, (1 - step) * -100, 1); setStyles(leavingEle, step * 100, 1); } else { // swap, enter, exit setStyles(enteringEle, 0, 1); setStyles(leavingEle, 0, 0); } }, shouldAnimate: shouldAnimate }; return d; }; provider.transitions.navBar.android = function(enteringHeaderBar, leavingHeaderBar, direction, shouldAnimate) { function setStyles(ctrl, opacity) { if (!ctrl) return; var css = {}; css.opacity = opacity === 1 ? '' : opacity; ctrl.setCss('buttons-left', css); ctrl.setCss('buttons-right', css); ctrl.setCss('back-button', css); ctrl.setCss('back-text', css); ctrl.setCss('title', css); } return { run: function(step) { setStyles(enteringHeaderBar.controller(), step); setStyles(leavingHeaderBar && leavingHeaderBar.controller(), 1 - step); }, shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back') }; }; // No Transition // ----------------------- provider.transitions.views.none = function(enteringEle, leavingEle) { return { run: function(step) { provider.transitions.views.android(enteringEle, leavingEle, false, false).run(step); }, shouldAnimate: false }; }; provider.transitions.navBar.none = function(enteringHeaderBar, leavingHeaderBar) { return { run: function(step) { provider.transitions.navBar.ios(enteringHeaderBar, leavingHeaderBar, false, false).run(step); provider.transitions.navBar.android(enteringHeaderBar, leavingHeaderBar, false, false).run(step); }, shouldAnimate: false }; }; // private: used to set platform configs function setPlatformConfig(platformName, platformConfigs) { configProperties.platform[platformName] = platformConfigs; provider.platform[platformName] = {}; addConfig(configProperties, configProperties.platform[platformName]); createConfig(configProperties.platform[platformName], provider.platform[platformName], ''); } // private: used to recursively add new platform configs function addConfig(configObj, platformObj) { for (var n in configObj) { if (n != PLATFORM && configObj.hasOwnProperty(n)) { if (angular.isObject(configObj[n])) { if (!isDefined(platformObj[n])) { platformObj[n] = {}; } addConfig(configObj[n], platformObj[n]); } else if (!isDefined(platformObj[n])) { platformObj[n] = null; } } } } // private: create methods for each config to get/set function createConfig(configObj, providerObj, platformPath) { forEach(configObj, function(value, namespace) { if (angular.isObject(configObj[namespace])) { // recursively drill down the config object so we can create a method for each one providerObj[namespace] = {}; createConfig(configObj[namespace], providerObj[namespace], platformPath + '.' + namespace); } else { // create a method for the provider/config methods that will be exposed providerObj[namespace] = function(newValue) { if (arguments.length) { configObj[namespace] = newValue; return providerObj; } if (configObj[namespace] == PLATFORM) { // if the config is set to 'platform', then get this config's platform value var platformConfig = stringObj(configProperties.platform, ionic.Platform.platform() + platformPath + '.' + namespace); if (platformConfig || platformConfig === false) { return platformConfig; } // didnt find a specific platform config, now try the default return stringObj(configProperties.platform, 'default' + platformPath + '.' + namespace); } return configObj[namespace]; }; } }); } function stringObj(obj, str) { str = str.split("."); for (var i = 0; i < str.length; i++) { if (obj && isDefined(obj[str[i]])) { obj = obj[str[i]]; } else { return null; } } return obj; } provider.setPlatformConfig = setPlatformConfig; // private: Service definition for internal Ionic use /** * @ngdoc service * @name $ionicConfig * @module ionic * @private */ provider.$get = function() { return provider; }; }) // Fix for URLs in Cordova apps on Windows Phone // http://blogs.msdn.com/b/msdn_answers/archive/2015/02/10/ // running-cordova-apps-on-windows-and-windows-phone-8-1-using-ionic-angularjs-and-other-frameworks.aspx .config(['$compileProvider', function($compileProvider) { $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|sms|tel|geo|ftp|mailto|file|ghttps?|ms-appx-web|ms-appx|x-wmapp0):/); $compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|content|blob|ms-appx|ms-appx-web|x-wmapp0):|data:image\//); }]); var LOADING_TPL = '
' + '
' + '
' + '
'; /** * @ngdoc service * @name $ionicLoading * @module ionic * @description * An overlay that can be used to indicate activity while blocking user * interaction. * * @usage * ```js * angular.module('LoadingApp', ['ionic']) * .controller('LoadingCtrl', function($scope, $ionicLoading) { * $scope.show = function() { * $ionicLoading.show({ * template: 'Loading...', * duration: 3000 * }).then(function(){ * console.log("The loading indicator is now displayed"); * }); * }; * $scope.hide = function(){ * $ionicLoading.hide().then(function(){ * console.log("The loading indicator is now hidden"); * }); * }; * }); * ``` */ /** * @ngdoc object * @name $ionicLoadingConfig * @module ionic * @description * Set the default options to be passed to the {@link ionic.service:$ionicLoading} service. * * @usage * ```js * var app = angular.module('myApp', ['ionic']) * app.constant('$ionicLoadingConfig', { * template: 'Default Loading Template...' * }); * app.controller('AppCtrl', function($scope, $ionicLoading) { * $scope.showLoading = function() { * //options default to values in $ionicLoadingConfig * $ionicLoading.show().then(function(){ * console.log("The loading indicator is now displayed"); * }); * }; * }); * ``` */ IonicModule .constant('$ionicLoadingConfig', { template: '' }) .factory('$ionicLoading', [ '$ionicLoadingConfig', '$ionicBody', '$ionicTemplateLoader', '$ionicBackdrop', '$timeout', '$q', '$log', '$compile', '$ionicPlatform', '$rootScope', 'IONIC_BACK_PRIORITY', function($ionicLoadingConfig, $ionicBody, $ionicTemplateLoader, $ionicBackdrop, $timeout, $q, $log, $compile, $ionicPlatform, $rootScope, IONIC_BACK_PRIORITY) { var loaderInstance; //default values var deregisterBackAction = noop; var deregisterStateListener1 = noop; var deregisterStateListener2 = noop; var loadingShowDelay = $q.when(); return { /** * @ngdoc method * @name $ionicLoading#show * @description Shows a loading indicator. If the indicator is already shown, * it will set the options given and keep the indicator shown. * @returns {promise} A promise which is resolved when the loading indicator is presented. * @param {object} opts The options for the loading indicator. Available properties: * - `{string=}` `template` The html content of the indicator. * - `{string=}` `templateUrl` The url of an html template to load as the content of the indicator. * - `{object=}` `scope` The scope to be a child of. Default: creates a child of $rootScope. * - `{boolean=}` `noBackdrop` Whether to hide the backdrop. By default it will be shown. * - `{boolean=}` `hideOnStateChange` Whether to hide the loading spinner when navigating * to a new state. Default false. * - `{number=}` `delay` How many milliseconds to delay showing the indicator. By default there is no delay. * - `{number=}` `duration` How many milliseconds to wait until automatically * hiding the indicator. By default, the indicator will be shown until `.hide()` is called. */ show: showLoader, /** * @ngdoc method * @name $ionicLoading#hide * @description Hides the loading indicator, if shown. * @returns {promise} A promise which is resolved when the loading indicator is hidden. */ hide: hideLoader, /** * @private for testing */ _getLoader: getLoader }; function getLoader() { if (!loaderInstance) { loaderInstance = $ionicTemplateLoader.compile({ template: LOADING_TPL, appendTo: $ionicBody.get() }) .then(function(self) { self.show = function(options) { var templatePromise = options.templateUrl ? $ionicTemplateLoader.load(options.templateUrl) : //options.content: deprecated $q.when(options.template || options.content || ''); self.scope = options.scope || self.scope; if (!self.isShown) { //options.showBackdrop: deprecated self.hasBackdrop = !options.noBackdrop && options.showBackdrop !== false; if (self.hasBackdrop) { $ionicBackdrop.retain(); $ionicBackdrop.getElement().addClass('backdrop-loading'); } } if (options.duration) { $timeout.cancel(self.durationTimeout); self.durationTimeout = $timeout( angular.bind(self, self.hide), +options.duration ); } deregisterBackAction(); //Disable hardware back button while loading deregisterBackAction = $ionicPlatform.registerBackButtonAction( noop, IONIC_BACK_PRIORITY.loading ); templatePromise.then(function(html) { if (html) { var loading = self.element.children(); loading.html(html); $compile(loading.contents())(self.scope); } //Don't show until template changes if (self.isShown) { self.element.addClass('visible'); ionic.requestAnimationFrame(function() { if (self.isShown) { self.element.addClass('active'); $ionicBody.addClass('loading-active'); } }); } }); self.isShown = true; }; self.hide = function() { deregisterBackAction(); if (self.isShown) { if (self.hasBackdrop) { $ionicBackdrop.release(); $ionicBackdrop.getElement().removeClass('backdrop-loading'); } self.element.removeClass('active'); $ionicBody.removeClass('loading-active'); self.element.removeClass('visible'); ionic.requestAnimationFrame(function() { !self.isShown && self.element.removeClass('visible'); }); } $timeout.cancel(self.durationTimeout); self.isShown = false; var loading = self.element.children(); loading.html(""); }; return self; }); } return loaderInstance; } function showLoader(options) { options = extend({}, $ionicLoadingConfig || {}, options || {}); // use a default delay of 100 to avoid some issues reported on github // https://github.com/ionic-team/ionic/issues/3717 var delay = options.delay || options.showDelay || 0; deregisterStateListener1(); deregisterStateListener2(); if (options.hideOnStateChange) { deregisterStateListener1 = $rootScope.$on('$stateChangeSuccess', hideLoader); deregisterStateListener2 = $rootScope.$on('$stateChangeError', hideLoader); } //If loading.show() was called previously, cancel it and show with our new options $timeout.cancel(loadingShowDelay); loadingShowDelay = $timeout(noop, delay); return loadingShowDelay.then(getLoader).then(function(loader) { return loader.show(options); }); } function hideLoader() { deregisterStateListener1(); deregisterStateListener2(); $timeout.cancel(loadingShowDelay); return getLoader().then(function(loader) { return loader.hide(); }); } }]); /** * @ngdoc service * @name $ionicModal * @module ionic * @codepen gblny * @description * * Related: {@link ionic.controller:ionicModal ionicModal controller}. * * The Modal is a content pane that can go over the user's main view * temporarily. Usually used for making a choice or editing an item. * * Put the content of the modal inside of an `` element. * * **Notes:** * - A modal will broadcast 'modal.shown', 'modal.hidden', and 'modal.removed' events from its originating * scope, passing in itself as an event argument. Both the modal.removed and modal.hidden events are * called when the modal is removed. * * - This example assumes your modal is in your main index file or another template file. If it is in its own * template file, remove the script tags and call it by file name. * * @usage * ```html * * ``` * ```js * angular.module('testApp', ['ionic']) * .controller('MyController', function($scope, $ionicModal) { * $ionicModal.fromTemplateUrl('my-modal.html', { * scope: $scope, * animation: 'slide-in-up' * }).then(function(modal) { * $scope.modal = modal; * }); * $scope.openModal = function() { * $scope.modal.show(); * }; * $scope.closeModal = function() { * $scope.modal.hide(); * }; * // Cleanup the modal when we're done with it! * $scope.$on('$destroy', function() { * $scope.modal.remove(); * }); * // Execute action on hide modal * $scope.$on('modal.hidden', function() { * // Execute action * }); * // Execute action on remove modal * $scope.$on('modal.removed', function() { * // Execute action * }); * }); * ``` */ IonicModule .factory('$ionicModal', [ '$rootScope', '$ionicBody', '$compile', '$timeout', '$ionicPlatform', '$ionicTemplateLoader', '$$q', '$log', '$ionicClickBlock', '$window', 'IONIC_BACK_PRIORITY', function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTemplateLoader, $$q, $log, $ionicClickBlock, $window, IONIC_BACK_PRIORITY) { /** * @ngdoc controller * @name ionicModal * @module ionic * @description * Instantiated by the {@link ionic.service:$ionicModal} service. * * Be sure to call [remove()](#remove) when you are done with each modal * to clean it up and avoid memory leaks. * * Note: a modal will broadcast 'modal.shown', 'modal.hidden', and 'modal.removed' events from its originating * scope, passing in itself as an event argument. Note: both modal.removed and modal.hidden are * called when the modal is removed. */ var ModalView = ionic.views.Modal.inherit({ /** * @ngdoc method * @name ionicModal#initialize * @description Creates a new modal controller instance. * @param {object} options An options object with the following properties: * - `{object=}` `scope` The scope to be a child of. * Default: creates a child of $rootScope. * - `{string=}` `animation` The animation to show & hide with. * Default: 'slide-in-up' * - `{boolean=}` `focusFirstInput` Whether to autofocus the first input of * the modal when shown. Will only show the keyboard on iOS, to force the keyboard to show * on Android, please use the [Ionic keyboard plugin](https://github.com/ionic-team/ionic-plugin-keyboard#keyboardshow). * Default: false. * - `{boolean=}` `backdropClickToClose` Whether to close the modal on clicking the backdrop. * Default: true. * - `{boolean=}` `hardwareBackButtonClose` Whether the modal can be closed using the hardware * back button on Android and similar devices. Default: true. */ initialize: function(opts) { ionic.views.Modal.prototype.initialize.call(this, opts); this.animation = opts.animation || 'slide-in-up'; }, /** * @ngdoc method * @name ionicModal#show * @description Show this modal instance. * @returns {promise} A promise which is resolved when the modal is finished animating in. */ show: function(target) { var self = this; if (self.scope.$$destroyed) { $log.error('Cannot call ' + self.viewType + '.show() after remove(). Please create a new ' + self.viewType + ' instance.'); return $$q.when(); } // on iOS, clicks will sometimes bleed through/ghost click on underlying // elements $ionicClickBlock.show(600); stack.add(self); var modalEl = jqLite(self.modalEl); self.el.classList.remove('hide'); $timeout(function() { if (!self._isShown) return; $ionicBody.addClass(self.viewType + '-open'); }, 400, false); if (!self.el.parentElement) { modalEl.addClass(self.animation); $ionicBody.append(self.el); } // if modal was closed while the keyboard was up, reset scroll view on // next show since we can only resize it once it's visible var scrollCtrl = modalEl.data('$$ionicScrollController'); scrollCtrl && scrollCtrl.resize(); if (target && self.positionView) { self.positionView(target, modalEl); // set up a listener for in case the window size changes self._onWindowResize = function() { if (self._isShown) self.positionView(target, modalEl); }; ionic.on('resize', self._onWindowResize, window); } modalEl.addClass('ng-enter active') .removeClass('ng-leave ng-leave-active'); self._isShown = true; self._deregisterBackButton = $ionicPlatform.registerBackButtonAction( self.hardwareBackButtonClose ? angular.bind(self, self.hide) : noop, IONIC_BACK_PRIORITY.modal ); ionic.views.Modal.prototype.show.call(self); $timeout(function() { if (!self._isShown) return; modalEl.addClass('ng-enter-active'); ionic.trigger('resize'); self.scope.$parent && self.scope.$parent.$broadcast(self.viewType + '.shown', self); self.el.classList.add('active'); self.scope.$broadcast('$ionicHeader.align'); self.scope.$broadcast('$ionicFooter.align'); self.scope.$broadcast('$ionic.modalPresented'); }, 20); return $timeout(function() { if (!self._isShown) return; self.$el.on('touchmove', function(e) { //Don't allow scrolling while open by dragging on backdrop var isInScroll = ionic.DomUtil.getParentOrSelfWithClass(e.target, 'scroll'); if (!isInScroll) { e.preventDefault(); } }); //After animating in, allow hide on backdrop click self.$el.on('click', function(e) { if (self.backdropClickToClose && e.target === self.el && stack.isHighest(self)) { self.hide(); } }); }, 400); }, /** * @ngdoc method * @name ionicModal#hide * @description Hide this modal instance. * @returns {promise} A promise which is resolved when the modal is finished animating out. */ hide: function() { var self = this; var modalEl = jqLite(self.modalEl); // on iOS, clicks will sometimes bleed through/ghost click on underlying // elements $ionicClickBlock.show(600); stack.remove(self); self.el.classList.remove('active'); modalEl.addClass('ng-leave'); $timeout(function() { if (self._isShown) return; modalEl.addClass('ng-leave-active') .removeClass('ng-enter ng-enter-active active'); self.scope.$broadcast('$ionic.modalRemoved'); }, 20, false); self.$el.off('click'); self._isShown = false; self.scope.$parent && self.scope.$parent.$broadcast(self.viewType + '.hidden', self); self._deregisterBackButton && self._deregisterBackButton(); ionic.views.Modal.prototype.hide.call(self); // clean up event listeners if (self.positionView) { ionic.off('resize', self._onWindowResize, window); } return $timeout(function() { if (!modalStack.length) { $ionicBody.removeClass(self.viewType + '-open'); } self.el.classList.add('hide'); }, self.hideDelay || 320); }, /** * @ngdoc method * @name ionicModal#remove * @description Remove this modal instance from the DOM and clean up. * @returns {promise} A promise which is resolved when the modal is finished animating out. */ remove: function() { var self = this, deferred, promise; self.scope.$parent && self.scope.$parent.$broadcast(self.viewType + '.removed', self); // Only hide modal, when it is actually shown! // The hide function shows a click-block-div for a split second, because on iOS, // clicks will sometimes bleed through/ghost click on underlying elements. // However, this will make the app unresponsive for short amount of time. // We don't want that, if the modal window is already hidden. if (self._isShown) { promise = self.hide(); } else { deferred = $$q.defer(); deferred.resolve(); promise = deferred.promise; } return promise.then(function() { self.scope.$destroy(); self.$el.remove(); }); }, /** * @ngdoc method * @name ionicModal#isShown * @returns boolean Whether this modal is currently shown. */ isShown: function() { return !!this._isShown; } }); var createModal = function(templateString, options) { // Create a new scope for the modal var scope = options.scope && options.scope.$new() || $rootScope.$new(true); options.viewType = options.viewType || 'modal'; extend(scope, { $hasHeader: false, $hasSubheader: false, $hasFooter: false, $hasSubfooter: false, $hasTabs: false, $hasTabsTop: false }); // Compile the template var element = $compile('' + templateString + '')(scope); options.$el = element; options.el = element[0]; options.modalEl = options.el.querySelector('.' + options.viewType); var modal = new ModalView(options); modal.scope = scope; // If this wasn't a defined scope, we can assign the viewType to the isolated scope // we created if (!options.scope) { scope[ options.viewType ] = modal; } return modal; }; var modalStack = []; var stack = { add: function(modal) { modalStack.push(modal); }, remove: function(modal) { var index = modalStack.indexOf(modal); if (index > -1 && index < modalStack.length) { modalStack.splice(index, 1); } }, isHighest: function(modal) { var index = modalStack.indexOf(modal); return (index > -1 && index === modalStack.length - 1); } }; return { /** * @ngdoc method * @name $ionicModal#fromTemplate * @param {string} templateString The template string to use as the modal's * content. * @param {object} options Options to be passed {@link ionic.controller:ionicModal#initialize ionicModal#initialize} method. * @returns {object} An instance of an {@link ionic.controller:ionicModal} * controller. */ fromTemplate: function(templateString, options) { var modal = createModal(templateString, options || {}); return modal; }, /** * @ngdoc method * @name $ionicModal#fromTemplateUrl * @param {string} templateUrl The url to load the template from. * @param {object} options Options to be passed {@link ionic.controller:ionicModal#initialize ionicModal#initialize} method. * options object. * @returns {promise} A promise that will be resolved with an instance of * an {@link ionic.controller:ionicModal} controller. */ fromTemplateUrl: function(url, options, _) { var cb; //Deprecated: allow a callback as second parameter. Now we return a promise. if (angular.isFunction(options)) { cb = options; options = _; } return $ionicTemplateLoader.load(url).then(function(templateString) { var modal = createModal(templateString, options || {}); cb && cb(modal); return modal; }); }, stack: stack }; }]); /** * @ngdoc service * @name $ionicNavBarDelegate * @module ionic * @description * Delegate for controlling the {@link ionic.directive:ionNavBar} directive. * * @usage * * ```html * * * * * * ``` * ```js * function MyCtrl($scope, $ionicNavBarDelegate) { * $scope.setNavTitle = function(title) { * $ionicNavBarDelegate.title(title); * } * } * ``` */ IonicModule .service('$ionicNavBarDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicNavBarDelegate#align * @description Aligns the title with the buttons in a given direction. * @param {string=} direction The direction to the align the title text towards. * Available: 'left', 'right', 'center'. Default: 'center'. */ 'align', /** * @ngdoc method * @name $ionicNavBarDelegate#showBackButton * @description * Set/get whether the {@link ionic.directive:ionNavBackButton} is shown * (if it exists and there is a previous view that can be navigated to). * @param {boolean=} show Whether to show the back button. * @returns {boolean} Whether the back button is shown. */ 'showBackButton', /** * @ngdoc method * @name $ionicNavBarDelegate#showBar * @description * Set/get whether the {@link ionic.directive:ionNavBar} is shown. * @param {boolean} show Whether to show the bar. * @returns {boolean} Whether the bar is shown. */ 'showBar', /** * @ngdoc method * @name $ionicNavBarDelegate#title * @description * Set the title for the {@link ionic.directive:ionNavBar}. * @param {string} title The new title to show. */ 'title', // DEPRECATED, as of v1.0.0-beta14 ------- 'changeTitle', 'setTitle', 'getTitle', 'back', 'getPreviousTitle' // END DEPRECATED ------- ])); IonicModule .service('$ionicNavViewDelegate', ionic.DelegateService([ 'clearCache' ])); /** * @ngdoc service * @name $ionicPlatform * @module ionic * @description * An angular abstraction of {@link ionic.utility:ionic.Platform}. * * Used to detect the current platform, as well as do things like override the * Android back button in PhoneGap/Cordova. */ IonicModule .constant('IONIC_BACK_PRIORITY', { view: 100, sideMenu: 150, modal: 200, actionSheet: 300, popup: 400, loading: 500 }) .provider('$ionicPlatform', function() { return { $get: ['$q', '$ionicScrollDelegate', function($q, $ionicScrollDelegate) { var self = { /** * @ngdoc method * @name $ionicPlatform#onHardwareBackButton * @description * Some platforms have a hardware back button, so this is one way to * bind to it. * @param {function} callback the callback to trigger when this event occurs */ onHardwareBackButton: function(cb) { ionic.Platform.ready(function() { document.addEventListener('backbutton', cb, false); }); }, /** * @ngdoc method * @name $ionicPlatform#offHardwareBackButton * @description * Remove an event listener for the backbutton. * @param {function} callback The listener function that was * originally bound. */ offHardwareBackButton: function(fn) { ionic.Platform.ready(function() { document.removeEventListener('backbutton', fn); }); }, /** * @ngdoc method * @name $ionicPlatform#registerBackButtonAction * @description * Register a hardware back button action. Only one action will execute * when the back button is clicked, so this method decides which of * the registered back button actions has the highest priority. * * For example, if an actionsheet is showing, the back button should * close the actionsheet, but it should not also go back a page view * or close a modal which may be open. * * The priorities for the existing back button hooks are as follows: * Return to previous view = 100 * Close side menu = 150 * Dismiss modal = 200 * Close action sheet = 300 * Dismiss popup = 400 * Dismiss loading overlay = 500 * * Your back button action will override each of the above actions * whose priority is less than the priority you provide. For example, * an action assigned a priority of 101 will override the 'return to * previous view' action, but not any of the other actions. * * @param {function} callback Called when the back button is pressed, * if this listener is the highest priority. * @param {number} priority Only the highest priority will execute. * @param {*=} actionId The id to assign this action. Default: a * random unique id. * @returns {function} A function that, when called, will deregister * this backButtonAction. */ $backButtonActions: {}, registerBackButtonAction: function(fn, priority, actionId) { if (!self._hasBackButtonHandler) { // add a back button listener if one hasn't been setup yet self.$backButtonActions = {}; self.onHardwareBackButton(self.hardwareBackButtonClick); self._hasBackButtonHandler = true; } var action = { id: (actionId ? actionId : ionic.Utils.nextUid()), priority: (priority ? priority : 0), fn: fn }; self.$backButtonActions[action.id] = action; // return a function to de-register this back button action return function() { delete self.$backButtonActions[action.id]; }; }, /** * @private */ hardwareBackButtonClick: function(e) { // loop through all the registered back button actions // and only run the last one of the highest priority var priorityAction, actionId; for (actionId in self.$backButtonActions) { if (!priorityAction || self.$backButtonActions[actionId].priority >= priorityAction.priority) { priorityAction = self.$backButtonActions[actionId]; } } if (priorityAction) { priorityAction.fn(e); return priorityAction; } }, is: function(type) { return ionic.Platform.is(type); }, /** * @ngdoc method * @name $ionicPlatform#on * @description * Add Cordova event listeners, such as `pause`, `resume`, `volumedownbutton`, `batterylow`, * `offline`, etc. More information about available event types can be found in * [Cordova's event documentation](https://cordova.apache.org/docs/en/latest/cordova/events/events.html). * @param {string} type Cordova [event type](https://cordova.apache.org/docs/en/latest/cordova/events/events.html). * @param {function} callback Called when the Cordova event is fired. * @returns {function} Returns a deregistration function to remove the event listener. */ on: function(type, cb) { ionic.Platform.ready(function() { document.addEventListener(type, cb, false); }); return function() { ionic.Platform.ready(function() { document.removeEventListener(type, cb); }); }; }, /** * @ngdoc method * @name $ionicPlatform#ready * @description * Trigger a callback once the device is ready, * or immediately if the device is already ready. * @param {function=} callback The function to call. * @returns {promise} A promise which is resolved when the device is ready. */ ready: function(cb) { var q = $q.defer(); ionic.Platform.ready(function() { window.addEventListener('statusTap', function() { $ionicScrollDelegate.scrollTop(true); }); q.resolve(); cb && cb(); }); return q.promise; } }; return self; }] }; }); /** * @ngdoc service * @name $ionicPopover * @module ionic * @description * * Related: {@link ionic.controller:ionicPopover ionicPopover controller}. * * The Popover is a view that floats above an app’s content. Popovers provide an * easy way to present or gather information from the user and are * commonly used in the following situations: * * - Show more info about the current view * - Select a commonly used tool or configuration * - Present a list of actions to perform inside one of your views * * Put the content of the popover inside of an `` element. * * @usage * ```html *

* *

* * * ``` * ```js * angular.module('testApp', ['ionic']) * .controller('MyController', function($scope, $ionicPopover) { * * // .fromTemplate() method * var template = '

My Popover Title

Hello!
'; * * $scope.popover = $ionicPopover.fromTemplate(template, { * scope: $scope * }); * * // .fromTemplateUrl() method * $ionicPopover.fromTemplateUrl('my-popover.html', { * scope: $scope * }).then(function(popover) { * $scope.popover = popover; * }); * * * $scope.openPopover = function($event) { * $scope.popover.show($event); * }; * $scope.closePopover = function() { * $scope.popover.hide(); * }; * //Cleanup the popover when we're done with it! * $scope.$on('$destroy', function() { * $scope.popover.remove(); * }); * // Execute action on hidden popover * $scope.$on('popover.hidden', function() { * // Execute action * }); * // Execute action on remove popover * $scope.$on('popover.removed', function() { * // Execute action * }); * }); * ``` */ IonicModule .factory('$ionicPopover', ['$ionicModal', '$ionicPosition', '$document', '$window', function($ionicModal, $ionicPosition, $document, $window) { var POPOVER_BODY_PADDING = 6; var POPOVER_OPTIONS = { viewType: 'popover', hideDelay: 1, animation: 'none', positionView: positionView }; function positionView(target, popoverEle) { var targetEle = jqLite(target.target || target); var buttonOffset = $ionicPosition.offset(targetEle); var popoverWidth = popoverEle.prop('offsetWidth'); var popoverHeight = popoverEle.prop('offsetHeight'); // Use innerWidth and innerHeight, because clientWidth and clientHeight // doesn't work consistently for body on all platforms var bodyWidth = $window.innerWidth; var bodyHeight = $window.innerHeight; var popoverCSS = { left: buttonOffset.left + buttonOffset.width / 2 - popoverWidth / 2 }; var arrowEle = jqLite(popoverEle[0].querySelector('.popover-arrow')); if (popoverCSS.left < POPOVER_BODY_PADDING) { popoverCSS.left = POPOVER_BODY_PADDING; } else if (popoverCSS.left + popoverWidth + POPOVER_BODY_PADDING > bodyWidth) { popoverCSS.left = bodyWidth - popoverWidth - POPOVER_BODY_PADDING; } // If the popover when popped down stretches past bottom of screen, // make it pop up if there's room above if (buttonOffset.top + buttonOffset.height + popoverHeight > bodyHeight && buttonOffset.top - popoverHeight > 0) { popoverCSS.top = buttonOffset.top - popoverHeight; popoverEle.addClass('popover-bottom'); } else { popoverCSS.top = buttonOffset.top + buttonOffset.height; popoverEle.removeClass('popover-bottom'); } arrowEle.css({ left: buttonOffset.left + buttonOffset.width / 2 - arrowEle.prop('offsetWidth') / 2 - popoverCSS.left + 'px' }); popoverEle.css({ top: popoverCSS.top + 'px', left: popoverCSS.left + 'px', marginLeft: '0', opacity: '1' }); } /** * @ngdoc controller * @name ionicPopover * @module ionic * @description * Instantiated by the {@link ionic.service:$ionicPopover} service. * * Be sure to call [remove()](#remove) when you are done with each popover * to clean it up and avoid memory leaks. * * Note: a popover will broadcast 'popover.shown', 'popover.hidden', and 'popover.removed' events from its originating * scope, passing in itself as an event argument. Both the popover.removed and popover.hidden events are * called when the popover is removed. */ /** * @ngdoc method * @name ionicPopover#initialize * @description Creates a new popover controller instance. * @param {object} options An options object with the following properties: * - `{object=}` `scope` The scope to be a child of. * Default: creates a child of $rootScope. * - `{boolean=}` `focusFirstInput` Whether to autofocus the first input of * the popover when shown. Default: false. * - `{boolean=}` `backdropClickToClose` Whether to close the popover on clicking the backdrop. * Default: true. * - `{boolean=}` `hardwareBackButtonClose` Whether the popover can be closed using the hardware * back button on Android and similar devices. Default: true. */ /** * @ngdoc method * @name ionicPopover#show * @description Show this popover instance. * @param {$event} $event The $event or target element which the popover should align * itself next to. * @returns {promise} A promise which is resolved when the popover is finished animating in. */ /** * @ngdoc method * @name ionicPopover#hide * @description Hide this popover instance. * @returns {promise} A promise which is resolved when the popover is finished animating out. */ /** * @ngdoc method * @name ionicPopover#remove * @description Remove this popover instance from the DOM and clean up. * @returns {promise} A promise which is resolved when the popover is finished animating out. */ /** * @ngdoc method * @name ionicPopover#isShown * @returns boolean Whether this popover is currently shown. */ return { /** * @ngdoc method * @name $ionicPopover#fromTemplate * @param {string} templateString The template string to use as the popovers's * content. * @param {object} options Options to be passed to the initialize method. * @returns {object} An instance of an {@link ionic.controller:ionicPopover} * controller (ionicPopover is built on top of $ionicPopover). */ fromTemplate: function(templateString, options) { return $ionicModal.fromTemplate(templateString, ionic.Utils.extend({}, POPOVER_OPTIONS, options)); }, /** * @ngdoc method * @name $ionicPopover#fromTemplateUrl * @param {string} templateUrl The url to load the template from. * @param {object} options Options to be passed to the initialize method. * @returns {promise} A promise that will be resolved with an instance of * an {@link ionic.controller:ionicPopover} controller (ionicPopover is built on top of $ionicPopover). */ fromTemplateUrl: function(url, options) { return $ionicModal.fromTemplateUrl(url, ionic.Utils.extend({}, POPOVER_OPTIONS, options)); } }; }]); var POPUP_TPL = ''; /** * @ngdoc service * @name $ionicPopup * @module ionic * @restrict E * @codepen zkmhJ * @description * * The Ionic Popup service allows programmatically creating and showing popup * windows that require the user to respond in order to continue. * * The popup system has support for more flexible versions of the built in `alert()`, `prompt()`, * and `confirm()` functions that users are used to, in addition to allowing popups with completely * custom content and look. * * An input can be given an `autofocus` attribute so it automatically receives focus when * the popup first shows. However, depending on certain use-cases this can cause issues with * the tap/click system, which is why Ionic prefers using the `autofocus` attribute as * an opt-in feature and not the default. * * @usage * A few basic examples, see below for details about all of the options available. * * ```js *angular.module('mySuperApp', ['ionic']) *.controller('PopupCtrl',function($scope, $ionicPopup, $timeout) { * * // Triggered on a button click, or some other target * $scope.showPopup = function() { * $scope.data = {}; * * // An elaborate, custom popup * var myPopup = $ionicPopup.show({ * template: '', * title: 'Enter Wi-Fi Password', * subTitle: 'Please use normal things', * scope: $scope, * buttons: [ * { text: 'Cancel' }, * { * text: 'Save', * type: 'button-positive', * onTap: function(e) { * if (!$scope.data.wifi) { * //don't allow the user to close unless he enters wifi password * e.preventDefault(); * } else { * return $scope.data.wifi; * } * } * } * ] * }); * * myPopup.then(function(res) { * console.log('Tapped!', res); * }); * * $timeout(function() { * myPopup.close(); //close the popup after 3 seconds for some reason * }, 3000); * }; * * // A confirm dialog * $scope.showConfirm = function() { * var confirmPopup = $ionicPopup.confirm({ * title: 'Consume Ice Cream', * template: 'Are you sure you want to eat this ice cream?' * }); * * confirmPopup.then(function(res) { * if(res) { * console.log('You are sure'); * } else { * console.log('You are not sure'); * } * }); * }; * * // An alert dialog * $scope.showAlert = function() { * var alertPopup = $ionicPopup.alert({ * title: 'Don\'t eat that!', * template: 'It might taste good' * }); * * alertPopup.then(function(res) { * console.log('Thank you for not eating my delicious ice cream cone'); * }); * }; *}); *``` */ IonicModule .factory('$ionicPopup', [ '$ionicTemplateLoader', '$ionicBackdrop', '$q', '$timeout', '$rootScope', '$ionicBody', '$compile', '$ionicPlatform', '$ionicModal', 'IONIC_BACK_PRIORITY', function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicBody, $compile, $ionicPlatform, $ionicModal, IONIC_BACK_PRIORITY) { //TODO allow this to be configured var config = { stackPushDelay: 75 }; var popupStack = []; var $ionicPopup = { /** * @ngdoc method * @description * Show a complex popup. This is the master show function for all popups. * * A complex popup has a `buttons` array, with each button having a `text` and `type` * field, in addition to an `onTap` function. The `onTap` function, called when * the corresponding button on the popup is tapped, will by default close the popup * and resolve the popup promise with its return value. If you wish to prevent the * default and keep the popup open on button tap, call `event.preventDefault()` on the * passed in tap event. Details below. * * @name $ionicPopup#show * @param {object} options The options for the new popup, of the form: * * ``` * { * title: '', // String. The title of the popup. * cssClass: '', // String, The custom CSS class name * subTitle: '', // String (optional). The sub-title of the popup. * template: '', // String (optional). The html template to place in the popup body. * templateUrl: '', // String (optional). The URL of an html template to place in the popup body. * scope: null, // Scope (optional). A scope to link to the popup content. * buttons: [{ // Array[Object] (optional). Buttons to place in the popup footer. * text: 'Cancel', * type: 'button-default', * onTap: function(e) { * // e.preventDefault() will stop the popup from closing when tapped. * e.preventDefault(); * } * }, { * text: 'OK', * type: 'button-positive', * onTap: function(e) { * // Returning a value will cause the promise to resolve with the given value. * return scope.data.response; * } * }] * } * ``` * * @returns {object} A promise which is resolved when the popup is closed. Has an additional * `close` function, which can be used to programmatically close the popup. */ show: showPopup, /** * @ngdoc method * @name $ionicPopup#alert * @description Show a simple alert popup with a message and one button that the user can * tap to close the popup. * * @param {object} options The options for showing the alert, of the form: * * ``` * { * title: '', // String. The title of the popup. * cssClass: '', // String, The custom CSS class name * subTitle: '', // String (optional). The sub-title of the popup. * template: '', // String (optional). The html template to place in the popup body. * templateUrl: '', // String (optional). The URL of an html template to place in the popup body. * okText: '', // String (default: 'OK'). The text of the OK button. * okType: '', // String (default: 'button-positive'). The type of the OK button. * } * ``` * * @returns {object} A promise which is resolved when the popup is closed. Has one additional * function `close`, which can be called with any value to programmatically close the popup * with the given value. */ alert: showAlert, /** * @ngdoc method * @name $ionicPopup#confirm * @description * Show a simple confirm popup with a Cancel and OK button. * * Resolves the promise with true if the user presses the OK button, and false if the * user presses the Cancel button. * * @param {object} options The options for showing the confirm popup, of the form: * * ``` * { * title: '', // String. The title of the popup. * cssClass: '', // String, The custom CSS class name * subTitle: '', // String (optional). The sub-title of the popup. * template: '', // String (optional). The html template to place in the popup body. * templateUrl: '', // String (optional). The URL of an html template to place in the popup body. * cancelText: '', // String (default: 'Cancel'). The text of the Cancel button. * cancelType: '', // String (default: 'button-default'). The type of the Cancel button. * okText: '', // String (default: 'OK'). The text of the OK button. * okType: '', // String (default: 'button-positive'). The type of the OK button. * } * ``` * * @returns {object} A promise which is resolved when the popup is closed. Has one additional * function `close`, which can be called with any value to programmatically close the popup * with the given value. */ confirm: showConfirm, /** * @ngdoc method * @name $ionicPopup#prompt * @description Show a simple prompt popup, which has an input, OK button, and Cancel button. * Resolves the promise with the value of the input if the user presses OK, and with undefined * if the user presses Cancel. * * ```javascript * $ionicPopup.prompt({ * title: 'Password Check', * template: 'Enter your secret password', * inputType: 'password', * inputPlaceholder: 'Your password' * }).then(function(res) { * console.log('Your password is', res); * }); * ``` * @param {object} options The options for showing the prompt popup, of the form: * * ``` * { * title: '', // String. The title of the popup. * cssClass: '', // String, The custom CSS class name * subTitle: '', // String (optional). The sub-title of the popup. * template: '', // String (optional). The html template to place in the popup body. * templateUrl: '', // String (optional). The URL of an html template to place in the popup body. * inputType: // String (default: 'text'). The type of input to use * defaultText: // String (default: ''). The initial value placed into the input. * maxLength: // Integer (default: null). Specify a maxlength attribute for the input. * inputPlaceholder: // String (default: ''). A placeholder to use for the input. * cancelText: // String (default: 'Cancel'. The text of the Cancel button. * cancelType: // String (default: 'button-default'). The type of the Cancel button. * okText: // String (default: 'OK'). The text of the OK button. * okType: // String (default: 'button-positive'). The type of the OK button. * } * ``` * * @returns {object} A promise which is resolved when the popup is closed. Has one additional * function `close`, which can be called with any value to programmatically close the popup * with the given value. */ prompt: showPrompt, /** * @private for testing */ _createPopup: createPopup, _popupStack: popupStack }; return $ionicPopup; function createPopup(options) { options = extend({ scope: null, title: '', buttons: [] }, options || {}); var self = {}; self.scope = (options.scope || $rootScope).$new(); self.element = jqLite(POPUP_TPL); self.responseDeferred = $q.defer(); $ionicBody.get().appendChild(self.element[0]); $compile(self.element)(self.scope); extend(self.scope, { title: options.title, buttons: options.buttons, subTitle: options.subTitle, cssClass: options.cssClass, $buttonTapped: function(button, event) { var result = (button.onTap || noop).apply(self, [event]); event = event.originalEvent || event; //jquery events if (!event.defaultPrevented) { self.responseDeferred.resolve(result); } } }); $q.when( options.templateUrl ? $ionicTemplateLoader.load(options.templateUrl) : (options.template || options.content || '') ).then(function(template) { var popupBody = jqLite(self.element[0].querySelector('.popup-body')); if (template) { popupBody.html(template); $compile(popupBody.contents())(self.scope); } else { popupBody.remove(); } }); self.show = function() { if (self.isShown || self.removed) return; $ionicModal.stack.add(self); self.isShown = true; ionic.requestAnimationFrame(function() { //if hidden while waiting for raf, don't show if (!self.isShown) return; self.element.removeClass('popup-hidden'); self.element.addClass('popup-showing active'); focusInput(self.element); }); }; self.hide = function(callback) { callback = callback || noop; if (!self.isShown) return callback(); $ionicModal.stack.remove(self); self.isShown = false; self.element.removeClass('active'); self.element.addClass('popup-hidden'); $timeout(callback, 250, false); }; self.remove = function() { if (self.removed) return; self.hide(function() { self.element.remove(); self.scope.$destroy(); }); self.removed = true; }; return self; } function onHardwareBackButton() { var last = popupStack[popupStack.length - 1]; last && last.responseDeferred.resolve(); } function showPopup(options) { var popup = $ionicPopup._createPopup(options); var showDelay = 0; if (popupStack.length > 0) { showDelay = config.stackPushDelay; $timeout(popupStack[popupStack.length - 1].hide, showDelay, false); } else { //Add popup-open & backdrop if this is first popup $ionicBody.addClass('popup-open'); $ionicBackdrop.retain(); //only show the backdrop on the first popup $ionicPopup._backButtonActionDone = $ionicPlatform.registerBackButtonAction( onHardwareBackButton, IONIC_BACK_PRIORITY.popup ); } // Expose a 'close' method on the returned promise popup.responseDeferred.promise.close = function popupClose(result) { if (!popup.removed) popup.responseDeferred.resolve(result); }; //DEPRECATED: notify the promise with an object with a close method popup.responseDeferred.notify({ close: popup.responseDeferred.close }); doShow(); return popup.responseDeferred.promise; function doShow() { popupStack.push(popup); $timeout(popup.show, showDelay, false); popup.responseDeferred.promise.then(function(result) { var index = popupStack.indexOf(popup); if (index !== -1) { popupStack.splice(index, 1); } popup.remove(); if (popupStack.length > 0) { popupStack[popupStack.length - 1].show(); } else { $ionicBackdrop.release(); //Remove popup-open & backdrop if this is last popup $timeout(function() { // wait to remove this due to a 300ms delay native // click which would trigging whatever was underneath this if (!popupStack.length) { $ionicBody.removeClass('popup-open'); } }, 400, false); ($ionicPopup._backButtonActionDone || noop)(); } return result; }); } } function focusInput(element) { var focusOn = element[0].querySelector('[autofocus]'); if (focusOn) { focusOn.focus(); } } function showAlert(opts) { return showPopup(extend({ buttons: [{ text: opts.okText || 'OK', type: opts.okType || 'button-positive', onTap: function() { return true; } }] }, opts || {})); } function showConfirm(opts) { return showPopup(extend({ buttons: [{ text: opts.cancelText || 'Cancel', type: opts.cancelType || 'button-default', onTap: function() { return false; } }, { text: opts.okText || 'OK', type: opts.okType || 'button-positive', onTap: function() { return true; } }] }, opts || {})); } function showPrompt(opts) { var scope = $rootScope.$new(true); scope.data = {}; scope.data.fieldtype = opts.inputType ? opts.inputType : 'text'; scope.data.response = opts.defaultText ? opts.defaultText : ''; scope.data.placeholder = opts.inputPlaceholder ? opts.inputPlaceholder : ''; scope.data.maxlength = opts.maxLength ? parseInt(opts.maxLength) : ''; var text = ''; if (opts.template && /<[a-z][\s\S]*>/i.test(opts.template) === false) { text = '' + opts.template + ''; delete opts.template; } return showPopup(extend({ template: text + '', scope: scope, buttons: [{ text: opts.cancelText || 'Cancel', type: opts.cancelType || 'button-default', onTap: function() {} }, { text: opts.okText || 'OK', type: opts.okType || 'button-positive', onTap: function() { return scope.data.response || ''; } }] }, opts || {})); } }]); /** * @ngdoc service * @name $ionicPosition * @module ionic * @description * A set of utility methods that can be use to retrieve position of DOM elements. * It is meant to be used where we need to absolute-position DOM elements in * relation to other, existing elements (this is the case for tooltips, popovers, etc.). * * Adapted from [AngularUI Bootstrap](https://github.com/angular-ui/bootstrap/blob/master/src/position/position.js), * ([license](https://github.com/angular-ui/bootstrap/blob/master/LICENSE)) */ IonicModule .factory('$ionicPosition', ['$document', '$window', function($document, $window) { function getStyle(el, cssprop) { if (el.currentStyle) { //IE return el.currentStyle[cssprop]; } else if ($window.getComputedStyle) { return $window.getComputedStyle(el)[cssprop]; } // finally try and get inline style return el.style[cssprop]; } /** * Checks if a given element is statically positioned * @param element - raw DOM element */ function isStaticPositioned(element) { return (getStyle(element, 'position') || 'static') === 'static'; } /** * returns the closest, non-statically positioned parentOffset of a given element * @param element */ var parentOffsetEl = function(element) { var docDomEl = $document[0]; var offsetParent = element.offsetParent || docDomEl; while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent)) { offsetParent = offsetParent.offsetParent; } return offsetParent || docDomEl; }; return { /** * @ngdoc method * @name $ionicPosition#position * @description Get the current coordinates of the element, relative to the offset parent. * Read-only equivalent of [jQuery's position function](http://api.jquery.com/position/). * @param {element} element The element to get the position of. * @returns {object} Returns an object containing the properties top, left, width and height. */ position: function(element) { var elBCR = this.offset(element); var offsetParentBCR = { top: 0, left: 0 }; var offsetParentEl = parentOffsetEl(element[0]); if (offsetParentEl != $document[0]) { offsetParentBCR = this.offset(jqLite(offsetParentEl)); offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop; offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft; } var boundingClientRect = element[0].getBoundingClientRect(); return { width: boundingClientRect.width || element.prop('offsetWidth'), height: boundingClientRect.height || element.prop('offsetHeight'), top: elBCR.top - offsetParentBCR.top, left: elBCR.left - offsetParentBCR.left }; }, /** * @ngdoc method * @name $ionicPosition#offset * @description Get the current coordinates of the element, relative to the document. * Read-only equivalent of [jQuery's offset function](http://api.jquery.com/offset/). * @param {element} element The element to get the offset of. * @returns {object} Returns an object containing the properties top, left, width and height. */ offset: function(element) { var boundingClientRect = element[0].getBoundingClientRect(); return { width: boundingClientRect.width || element.prop('offsetWidth'), height: boundingClientRect.height || element.prop('offsetHeight'), top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop), left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft) }; } }; }]); /** * @ngdoc service * @name $ionicScrollDelegate * @module ionic * @description * Delegate for controlling scrollViews (created by * {@link ionic.directive:ionContent} and * {@link ionic.directive:ionScroll} directives). * * Methods called directly on the $ionicScrollDelegate service will control all scroll * views. Use the {@link ionic.service:$ionicScrollDelegate#$getByHandle $getByHandle} * method to control specific scrollViews. * * @usage * * ```html * * * * * * ``` * ```js * function MainCtrl($scope, $ionicScrollDelegate) { * $scope.scrollTop = function() { * $ionicScrollDelegate.scrollTop(); * }; * } * ``` * * Example of advanced usage, with two scroll areas using `delegate-handle` * for fine control. * * ```html * * * * * * * * * ``` * ```js * function MainCtrl($scope, $ionicScrollDelegate) { * $scope.scrollMainToTop = function() { * $ionicScrollDelegate.$getByHandle('mainScroll').scrollTop(); * }; * $scope.scrollSmallToTop = function() { * $ionicScrollDelegate.$getByHandle('small').scrollTop(); * }; * } * ``` */ IonicModule .service('$ionicScrollDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicScrollDelegate#resize * @description Tell the scrollView to recalculate the size of its container. */ 'resize', /** * @ngdoc method * @name $ionicScrollDelegate#scrollTop * @param {boolean=} shouldAnimate Whether the scroll should animate. */ 'scrollTop', /** * @ngdoc method * @name $ionicScrollDelegate#scrollBottom * @param {boolean=} shouldAnimate Whether the scroll should animate. */ 'scrollBottom', /** * @ngdoc method * @name $ionicScrollDelegate#scrollTo * @param {number} left The x-value to scroll to. * @param {number} top The y-value to scroll to. * @param {boolean=} shouldAnimate Whether the scroll should animate. */ 'scrollTo', /** * @ngdoc method * @name $ionicScrollDelegate#scrollBy * @param {number} left The x-offset to scroll by. * @param {number} top The y-offset to scroll by. * @param {boolean=} shouldAnimate Whether the scroll should animate. */ 'scrollBy', /** * @ngdoc method * @name $ionicScrollDelegate#zoomTo * @param {number} level Level to zoom to. * @param {boolean=} animate Whether to animate the zoom. * @param {number=} originLeft Zoom in at given left coordinate. * @param {number=} originTop Zoom in at given top coordinate. */ 'zoomTo', /** * @ngdoc method * @name $ionicScrollDelegate#zoomBy * @param {number} factor The factor to zoom by. * @param {boolean=} animate Whether to animate the zoom. * @param {number=} originLeft Zoom in at given left coordinate. * @param {number=} originTop Zoom in at given top coordinate. */ 'zoomBy', /** * @ngdoc method * @name $ionicScrollDelegate#getScrollPosition * @returns {object} The scroll position of this view, with the following properties: * - `{number}` `left` The distance the user has scrolled from the left (starts at 0). * - `{number}` `top` The distance the user has scrolled from the top (starts at 0). * - `{number}` `zoom` The current zoom level. */ 'getScrollPosition', /** * @ngdoc method * @name $ionicScrollDelegate#anchorScroll * @description Tell the scrollView to scroll to the element with an id * matching window.location.hash. * * If no matching element is found, it will scroll to top. * * @param {boolean=} shouldAnimate Whether the scroll should animate. */ 'anchorScroll', /** * @ngdoc method * @name $ionicScrollDelegate#freezeScroll * @description Does not allow this scroll view to scroll either x or y. * @param {boolean=} shouldFreeze Should this scroll view be prevented from scrolling or not. * @returns {boolean} If the scroll view is being prevented from scrolling or not. */ 'freezeScroll', /** * @ngdoc method * @name $ionicScrollDelegate#freezeAllScrolls * @description Does not allow any of the app's scroll views to scroll either x or y. * @param {boolean=} shouldFreeze Should all app scrolls be prevented from scrolling or not. */ 'freezeAllScrolls', /** * @ngdoc method * @name $ionicScrollDelegate#getScrollView * @returns {object} The scrollView associated with this delegate. */ 'getScrollView' /** * @ngdoc method * @name $ionicScrollDelegate#$getByHandle * @param {string} handle * @returns `delegateInstance` A delegate instance that controls only the * scrollViews with `delegate-handle` matching the given handle. * * Example: `$ionicScrollDelegate.$getByHandle('my-handle').scrollTop();` */ ])); /** * @ngdoc service * @name $ionicSideMenuDelegate * @module ionic * * @description * Delegate for controlling the {@link ionic.directive:ionSideMenus} directive. * * Methods called directly on the $ionicSideMenuDelegate service will control all side * menus. Use the {@link ionic.service:$ionicSideMenuDelegate#$getByHandle $getByHandle} * method to control specific ionSideMenus instances. * * @usage * * ```html * * * * Content! * * * * Left Menu! * * * * ``` * ```js * function MainCtrl($scope, $ionicSideMenuDelegate) { * $scope.toggleLeftSideMenu = function() { * $ionicSideMenuDelegate.toggleLeft(); * }; * } * ``` */ IonicModule .service('$ionicSideMenuDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicSideMenuDelegate#toggleLeft * @description Toggle the left side menu (if it exists). * @param {boolean=} isOpen Whether to open or close the menu. * Default: Toggles the menu. */ 'toggleLeft', /** * @ngdoc method * @name $ionicSideMenuDelegate#toggleRight * @description Toggle the right side menu (if it exists). * @param {boolean=} isOpen Whether to open or close the menu. * Default: Toggles the menu. */ 'toggleRight', /** * @ngdoc method * @name $ionicSideMenuDelegate#getOpenRatio * @description Gets the ratio of open amount over menu width. For example, a * menu of width 100 that is opened by 50 pixels is 50% opened, and would return * a ratio of 0.5. * * @returns {float} 0 if nothing is open, between 0 and 1 if left menu is * opened/opening, and between 0 and -1 if right menu is opened/opening. */ 'getOpenRatio', /** * @ngdoc method * @name $ionicSideMenuDelegate#isOpen * @returns {boolean} Whether either the left or right menu is currently opened. */ 'isOpen', /** * @ngdoc method * @name $ionicSideMenuDelegate#isOpenLeft * @returns {boolean} Whether the left menu is currently opened. */ 'isOpenLeft', /** * @ngdoc method * @name $ionicSideMenuDelegate#isOpenRight * @returns {boolean} Whether the right menu is currently opened. */ 'isOpenRight', /** * @ngdoc method * @name $ionicSideMenuDelegate#canDragContent * @param {boolean=} canDrag Set whether the content can or cannot be dragged to open * side menus. * @returns {boolean} Whether the content can be dragged to open side menus. */ 'canDragContent', /** * @ngdoc method * @name $ionicSideMenuDelegate#edgeDragThreshold * @param {boolean|number=} value Set whether the content drag can only start if it is below a certain threshold distance from the edge of the screen. Accepts three different values: * - If a non-zero number is given, that many pixels is used as the maximum allowed distance from the edge that starts dragging the side menu. * - If true is given, the default number of pixels (25) is used as the maximum allowed distance. * - If false or 0 is given, the edge drag threshold is disabled, and dragging from anywhere on the content is allowed. * @returns {boolean} Whether the drag can start only from within the edge of screen threshold. */ 'edgeDragThreshold' /** * @ngdoc method * @name $ionicSideMenuDelegate#$getByHandle * @param {string} handle * @returns `delegateInstance` A delegate instance that controls only the * {@link ionic.directive:ionSideMenus} directives with `delegate-handle` matching * the given handle. * * Example: `$ionicSideMenuDelegate.$getByHandle('my-handle').toggleLeft();` */ ])); /** * @ngdoc service * @name $ionicSlideBoxDelegate * @module ionic * @description * Delegate that controls the {@link ionic.directive:ionSlideBox} directive. * * Methods called directly on the $ionicSlideBoxDelegate service will control all slide boxes. Use the {@link ionic.service:$ionicSlideBoxDelegate#$getByHandle $getByHandle} * method to control specific slide box instances. * * @usage * * ```html * * * *
* *
*
* *
* Slide 2! *
*
*
*
* ``` * ```js * function MyCtrl($scope, $ionicSlideBoxDelegate) { * $scope.nextSlide = function() { * $ionicSlideBoxDelegate.next(); * } * } * ``` */ IonicModule .service('$ionicSlideBoxDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicSlideBoxDelegate#update * @description * Update the slidebox (for example if using Angular with ng-repeat, * resize it for the elements inside). */ 'update', /** * @ngdoc method * @name $ionicSlideBoxDelegate#slide * @param {number} to The index to slide to. * @param {number=} speed The number of milliseconds the change should take. */ 'slide', 'select', /** * @ngdoc method * @name $ionicSlideBoxDelegate#enableSlide * @param {boolean=} shouldEnable Whether to enable sliding the slidebox. * @returns {boolean} Whether sliding is enabled. */ 'enableSlide', /** * @ngdoc method * @name $ionicSlideBoxDelegate#previous * @param {number=} speed The number of milliseconds the change should take. * @description Go to the previous slide. Wraps around if at the beginning. */ 'previous', /** * @ngdoc method * @name $ionicSlideBoxDelegate#next * @param {number=} speed The number of milliseconds the change should take. * @description Go to the next slide. Wraps around if at the end. */ 'next', /** * @ngdoc method * @name $ionicSlideBoxDelegate#stop * @description Stop sliding. The slideBox will not move again until * explicitly told to do so. */ 'stop', 'autoPlay', /** * @ngdoc method * @name $ionicSlideBoxDelegate#start * @description Start sliding again if the slideBox was stopped. */ 'start', /** * @ngdoc method * @name $ionicSlideBoxDelegate#currentIndex * @returns number The index of the current slide. */ 'currentIndex', 'selected', /** * @ngdoc method * @name $ionicSlideBoxDelegate#slidesCount * @returns number The number of slides there are currently. */ 'slidesCount', 'count', 'loop' /** * @ngdoc method * @name $ionicSlideBoxDelegate#$getByHandle * @param {string} handle * @returns `delegateInstance` A delegate instance that controls only the * {@link ionic.directive:ionSlideBox} directives with `delegate-handle` matching * the given handle. * * Example: `$ionicSlideBoxDelegate.$getByHandle('my-handle').stop();` */ ])); /** * @ngdoc service * @name $ionicTabsDelegate * @module ionic * * @description * Delegate for controlling the {@link ionic.directive:ionTabs} directive. * * Methods called directly on the $ionicTabsDelegate service will control all ionTabs * directives. Use the {@link ionic.service:$ionicTabsDelegate#$getByHandle $getByHandle} * method to control specific ionTabs instances. * * @usage * * ```html * * * * * Hello tab 1! * * * Hello tab 2! * * * * ``` * ```js * function MyCtrl($scope, $ionicTabsDelegate) { * $scope.selectTabWithIndex = function(index) { * $ionicTabsDelegate.select(index); * } * } * ``` */ IonicModule .service('$ionicTabsDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicTabsDelegate#select * @description Select the tab matching the given index. * * @param {number} index Index of the tab to select. */ 'select', /** * @ngdoc method * @name $ionicTabsDelegate#selectedIndex * @returns `number` The index of the selected tab, or -1. */ 'selectedIndex', /** * @ngdoc method * @name $ionicTabsDelegate#showBar * @description * Set/get whether the {@link ionic.directive:ionTabs} is shown * @param {boolean} show Whether to show the bar. * @returns {boolean} Whether the bar is shown. */ 'showBar' /** * @ngdoc method * @name $ionicTabsDelegate#$getByHandle * @param {string} handle * @returns `delegateInstance` A delegate instance that controls only the * {@link ionic.directive:ionTabs} directives with `delegate-handle` matching * the given handle. * * Example: `$ionicTabsDelegate.$getByHandle('my-handle').select(0);` */ ])); // closure to keep things neat (function() { var templatesToCache = []; /** * @ngdoc service * @name $ionicTemplateCache * @module ionic * @description A service that preemptively caches template files to eliminate transition flicker and boost performance. * @usage * State templates are cached automatically, but you can optionally cache other templates. * * ```js * $ionicTemplateCache('myNgIncludeTemplate.html'); * ``` * * Optionally disable all preemptive caching with the `$ionicConfigProvider` or individual states by setting `prefetchTemplate` * in the `$state` definition * * ```js * angular.module('myApp', ['ionic']) * .config(function($stateProvider, $ionicConfigProvider) { * * // disable preemptive template caching globally * $ionicConfigProvider.templates.prefetch(false); * * // disable individual states * $stateProvider * .state('tabs', { * url: "/tab", * abstract: true, * prefetchTemplate: false, * templateUrl: "tabs-templates/tabs.html" * }) * .state('tabs.home', { * url: "/home", * views: { * 'home-tab': { * prefetchTemplate: false, * templateUrl: "tabs-templates/home.html", * controller: 'HomeTabCtrl' * } * } * }); * }); * ``` */ IonicModule .factory('$ionicTemplateCache', [ '$http', '$templateCache', '$timeout', function($http, $templateCache, $timeout) { var toCache = templatesToCache, hasRun; function $ionicTemplateCache(templates) { if (typeof templates === 'undefined') { return run(); } if (isString(templates)) { templates = [templates]; } forEach(templates, function(template) { toCache.push(template); }); if (hasRun) { run(); } } // run through methods - internal method function run() { var template; $ionicTemplateCache._runCount++; hasRun = true; // ignore if race condition already zeroed out array if (toCache.length === 0) return; var i = 0; while (i < 4 && (template = toCache.pop())) { // note that inline templates are ignored by this request if (isString(template)) $http.get(template, { cache: $templateCache }); i++; } // only preload 3 templates a second if (toCache.length) { $timeout(run, 1000); } } // exposing for testing $ionicTemplateCache._runCount = 0; // default method return $ionicTemplateCache; }]) // Intercepts the $stateprovider.state() command to look for templateUrls that can be cached .config([ '$stateProvider', '$ionicConfigProvider', function($stateProvider, $ionicConfigProvider) { var stateProviderState = $stateProvider.state; $stateProvider.state = function(stateName, definition) { // don't even bother if it's disabled. note, another config may run after this, so it's not a catch-all if (typeof definition === 'object') { var enabled = definition.prefetchTemplate !== false && templatesToCache.length < $ionicConfigProvider.templates.maxPrefetch(); if (enabled && isString(definition.templateUrl)) templatesToCache.push(definition.templateUrl); if (angular.isObject(definition.views)) { for (var key in definition.views) { enabled = definition.views[key].prefetchTemplate !== false && templatesToCache.length < $ionicConfigProvider.templates.maxPrefetch(); if (enabled && isString(definition.views[key].templateUrl)) templatesToCache.push(definition.views[key].templateUrl); } } } return stateProviderState.call($stateProvider, stateName, definition); }; }]) // process the templateUrls collected by the $stateProvider, adding them to the cache .run(['$ionicTemplateCache', function($ionicTemplateCache) { $ionicTemplateCache(); }]); })(); IonicModule .factory('$ionicTemplateLoader', [ '$compile', '$controller', '$http', '$q', '$rootScope', '$templateCache', function($compile, $controller, $http, $q, $rootScope, $templateCache) { return { load: fetchTemplate, compile: loadAndCompile }; function fetchTemplate(url) { return $http.get(url, {cache: $templateCache}) .then(function(response) { return response.data && response.data.trim(); }); } function loadAndCompile(options) { options = extend({ template: '', templateUrl: '', scope: null, controller: null, locals: {}, appendTo: null }, options || {}); var templatePromise = options.templateUrl ? this.load(options.templateUrl) : $q.when(options.template); return templatePromise.then(function(template) { var controller; var scope = options.scope || $rootScope.$new(); //Incase template doesn't have just one root element, do this var element = jqLite('
').html(template).contents(); if (options.controller) { controller = $controller( options.controller, extend(options.locals, { $scope: scope }) ); element.children().data('$ngControllerController', controller); } if (options.appendTo) { jqLite(options.appendTo).append(element); } $compile(element)(scope); return { element: element, scope: scope }; }); } }]); /** * @private * DEPRECATED, as of v1.0.0-beta14 ------- */ IonicModule .factory('$ionicViewService', ['$ionicHistory', '$log', function($ionicHistory, $log) { function warn(oldMethod, newMethod) { $log.warn('$ionicViewService' + oldMethod + ' is deprecated, please use $ionicHistory' + newMethod + ' instead: http://ionicframework.com/docs/nightly/api/service/$ionicHistory/'); } warn('', ''); var methodsMap = { getCurrentView: 'currentView', getBackView: 'backView', getForwardView: 'forwardView', getCurrentStateName: 'currentStateName', nextViewOptions: 'nextViewOptions', clearHistory: 'clearHistory' }; forEach(methodsMap, function(newMethod, oldMethod) { methodsMap[oldMethod] = function() { warn('.' + oldMethod, '.' + newMethod); return $ionicHistory[newMethod].apply(this, arguments); }; }); return methodsMap; }]); /** * @private * TODO document */ IonicModule.factory('$ionicViewSwitcher', [ '$timeout', '$document', '$q', '$ionicClickBlock', '$ionicConfig', '$ionicNavBarDelegate', function($timeout, $document, $q, $ionicClickBlock, $ionicConfig, $ionicNavBarDelegate) { var TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; var DATA_NO_CACHE = '$noCache'; var DATA_DESTROY_ELE = '$destroyEle'; var DATA_ELE_IDENTIFIER = '$eleId'; var DATA_VIEW_ACCESSED = '$accessed'; var DATA_FALLBACK_TIMER = '$fallbackTimer'; var DATA_VIEW = '$viewData'; var NAV_VIEW_ATTR = 'nav-view'; var VIEW_STATUS_ACTIVE = 'active'; var VIEW_STATUS_CACHED = 'cached'; var VIEW_STATUS_STAGED = 'stage'; var transitionCounter = 0; var nextTransition, nextDirection; ionic.transition = ionic.transition || {}; ionic.transition.isActive = false; var isActiveTimer; var cachedAttr = ionic.DomUtil.cachedAttr; var transitionPromises = []; var defaultTimeout = 1100; var ionicViewSwitcher = { create: function(navViewCtrl, viewLocals, enteringView, leavingView, renderStart, renderEnd) { // get a reference to an entering/leaving element if they exist // loop through to see if the view is already in the navViewElement var enteringEle, leavingEle; var transitionId = ++transitionCounter; var alreadyInDom; var switcher = { init: function(registerData, callback) { ionicViewSwitcher.isTransitioning(true); switcher.loadViewElements(registerData); switcher.render(registerData, function() { callback && callback(); }); }, loadViewElements: function(registerData) { var x, l, viewEle; var viewElements = navViewCtrl.getViewElements(); var enteringEleIdentifier = getViewElementIdentifier(viewLocals, enteringView); var navViewActiveEleId = navViewCtrl.activeEleId(); for (x = 0, l = viewElements.length; x < l; x++) { viewEle = viewElements.eq(x); if (viewEle.data(DATA_ELE_IDENTIFIER) === enteringEleIdentifier) { // we found an existing element in the DOM that should be entering the view if (viewEle.data(DATA_NO_CACHE)) { // the existing element should not be cached, don't use it viewEle.data(DATA_ELE_IDENTIFIER, enteringEleIdentifier + ionic.Utils.nextUid()); viewEle.data(DATA_DESTROY_ELE, true); } else { enteringEle = viewEle; } } else if (isDefined(navViewActiveEleId) && viewEle.data(DATA_ELE_IDENTIFIER) === navViewActiveEleId) { leavingEle = viewEle; } if (enteringEle && leavingEle) break; } alreadyInDom = !!enteringEle; if (!alreadyInDom) { // still no existing element to use // create it using existing template/scope/locals enteringEle = registerData.ele || ionicViewSwitcher.createViewEle(viewLocals); // existing elements in the DOM are looked up by their state name and state id enteringEle.data(DATA_ELE_IDENTIFIER, enteringEleIdentifier); } if (renderEnd) { navViewCtrl.activeEleId(enteringEleIdentifier); } registerData.ele = null; }, render: function(registerData, callback) { if (alreadyInDom) { // it was already found in the DOM, just reconnect the scope ionic.Utils.reconnectScope(enteringEle.scope()); } else { // the entering element is not already in the DOM // set that the entering element should be "staged" and its // styles of where this element will go before it hits the DOM navViewAttr(enteringEle, VIEW_STATUS_STAGED); var enteringData = getTransitionData(viewLocals, enteringEle, registerData.direction, enteringView); var transitionFn = $ionicConfig.transitions.views[enteringData.transition] || $ionicConfig.transitions.views.none; transitionFn(enteringEle, null, enteringData.direction, true).run(0); enteringEle.data(DATA_VIEW, { viewId: enteringData.viewId, historyId: enteringData.historyId, stateName: enteringData.stateName, stateParams: enteringData.stateParams }); // if the current state has cache:false // or the element has cache-view="false" attribute if (viewState(viewLocals).cache === false || viewState(viewLocals).cache === 'false' || enteringEle.attr('cache-view') == 'false' || $ionicConfig.views.maxCache() === 0) { enteringEle.data(DATA_NO_CACHE, true); } // append the entering element to the DOM, create a new scope and run link var viewScope = navViewCtrl.appendViewElement(enteringEle, viewLocals); delete enteringData.direction; delete enteringData.transition; viewScope.$emit('$ionicView.loaded', enteringData); } // update that this view was just accessed enteringEle.data(DATA_VIEW_ACCESSED, Date.now()); callback && callback(); }, transition: function(direction, enableBack, allowAnimate) { var deferred; var enteringData = getTransitionData(viewLocals, enteringEle, direction, enteringView); var leavingData = extend(extend({}, enteringData), getViewData(leavingView)); enteringData.transitionId = leavingData.transitionId = transitionId; enteringData.fromCache = !!alreadyInDom; enteringData.enableBack = !!enableBack; enteringData.renderStart = renderStart; enteringData.renderEnd = renderEnd; cachedAttr(enteringEle.parent(), 'nav-view-transition', enteringData.transition); cachedAttr(enteringEle.parent(), 'nav-view-direction', enteringData.direction); // cancel any previous transition complete fallbacks $timeout.cancel(enteringEle.data(DATA_FALLBACK_TIMER)); // get the transition ready and see if it'll animate var transitionFn = $ionicConfig.transitions.views[enteringData.transition] || $ionicConfig.transitions.views.none; var viewTransition = transitionFn(enteringEle, leavingEle, enteringData.direction, enteringData.shouldAnimate && allowAnimate && renderEnd); if (viewTransition.shouldAnimate) { // attach transitionend events (and fallback timer) enteringEle.on(TRANSITIONEND_EVENT, completeOnTransitionEnd); enteringEle.data(DATA_FALLBACK_TIMER, $timeout(transitionComplete, defaultTimeout)); $ionicClickBlock.show(defaultTimeout); } if (renderStart) { // notify the views "before" the transition starts switcher.emit('before', enteringData, leavingData); // stage entering element, opacity 0, no transition duration navViewAttr(enteringEle, VIEW_STATUS_STAGED); // render the elements in the correct location for their starting point viewTransition.run(0); } if (renderEnd) { // create a promise so we can keep track of when all transitions finish // only required if this transition should complete deferred = $q.defer(); transitionPromises.push(deferred.promise); } if (renderStart && renderEnd) { // CSS "auto" transitioned, not manually transitioned // wait a frame so the styles apply before auto transitioning $timeout(function() { ionic.requestAnimationFrame(onReflow); }); } else if (!renderEnd) { // just the start of a manual transition // but it will not render the end of the transition navViewAttr(enteringEle, 'entering'); navViewAttr(leavingEle, 'leaving'); // return the transition run method so each step can be ran manually return { run: viewTransition.run, cancel: function(shouldAnimate) { if (shouldAnimate) { enteringEle.on(TRANSITIONEND_EVENT, cancelOnTransitionEnd); enteringEle.data(DATA_FALLBACK_TIMER, $timeout(cancelTransition, defaultTimeout)); $ionicClickBlock.show(defaultTimeout); } else { cancelTransition(); } viewTransition.shouldAnimate = shouldAnimate; viewTransition.run(0); viewTransition = null; } }; } else if (renderEnd) { // just the end of a manual transition // happens after the manual transition has completed // and a full history change has happened onReflow(); } function onReflow() { // remove that we're staging the entering element so it can auto transition navViewAttr(enteringEle, viewTransition.shouldAnimate ? 'entering' : VIEW_STATUS_ACTIVE); navViewAttr(leavingEle, viewTransition.shouldAnimate ? 'leaving' : VIEW_STATUS_CACHED); // start the auto transition and let the CSS take over viewTransition.run(1); // trigger auto transitions on the associated nav bars $ionicNavBarDelegate._instances.forEach(function(instance) { instance.triggerTransitionStart(transitionId); }); if (!viewTransition.shouldAnimate) { // no animated auto transition transitionComplete(); } } // Make sure that transitionend events bubbling up from children won't fire // transitionComplete. Will only go forward if ev.target == the element listening. function completeOnTransitionEnd(ev) { if (ev.target !== this) return; transitionComplete(); } function transitionComplete() { if (transitionComplete.x) return; transitionComplete.x = true; enteringEle.off(TRANSITIONEND_EVENT, completeOnTransitionEnd); $timeout.cancel(enteringEle.data(DATA_FALLBACK_TIMER)); leavingEle && $timeout.cancel(leavingEle.data(DATA_FALLBACK_TIMER)); // resolve that this one transition (there could be many w/ nested views) deferred && deferred.resolve(navViewCtrl); // the most recent transition added has completed and all the active // transition promises should be added to the services array of promises if (transitionId === transitionCounter) { $q.all(transitionPromises).then(ionicViewSwitcher.transitionEnd); // emit that the views have finished transitioning // each parent nav-view will update which views are active and cached switcher.emit('after', enteringData, leavingData); switcher.cleanup(enteringData); } // tell the nav bars that the transition has ended $ionicNavBarDelegate._instances.forEach(function(instance) { instance.triggerTransitionEnd(); }); // remove any references that could cause memory issues nextTransition = nextDirection = enteringView = leavingView = enteringEle = leavingEle = null; } // Make sure that transitionend events bubbling up from children won't fire // transitionComplete. Will only go forward if ev.target == the element listening. function cancelOnTransitionEnd(ev) { if (ev.target !== this) return; cancelTransition(); } function cancelTransition() { navViewAttr(enteringEle, VIEW_STATUS_CACHED); navViewAttr(leavingEle, VIEW_STATUS_ACTIVE); enteringEle.off(TRANSITIONEND_EVENT, cancelOnTransitionEnd); $timeout.cancel(enteringEle.data(DATA_FALLBACK_TIMER)); ionicViewSwitcher.transitionEnd([navViewCtrl]); } }, emit: function(step, enteringData, leavingData) { var enteringScope = getScopeForElement(enteringEle, enteringData); var leavingScope = getScopeForElement(leavingEle, leavingData); var prefixesAreEqual; if ( !enteringData.viewId || enteringData.abstractView ) { // it's an abstract view, so treat it accordingly // we only get access to the leaving scope once in the transition, // so dispatch all events right away if it exists if ( leavingScope ) { leavingScope.$emit('$ionicView.beforeLeave', leavingData); leavingScope.$emit('$ionicView.leave', leavingData); leavingScope.$emit('$ionicView.afterLeave', leavingData); leavingScope.$broadcast('$ionicParentView.beforeLeave', leavingData); leavingScope.$broadcast('$ionicParentView.leave', leavingData); leavingScope.$broadcast('$ionicParentView.afterLeave', leavingData); } } else { // it's a regular view, so do the normal process if (step == 'after') { if (enteringScope) { enteringScope.$emit('$ionicView.enter', enteringData); enteringScope.$broadcast('$ionicParentView.enter', enteringData); } if (leavingScope) { leavingScope.$emit('$ionicView.leave', leavingData); leavingScope.$broadcast('$ionicParentView.leave', leavingData); } else if (enteringScope && leavingData && leavingData.viewId && enteringData.stateName !== leavingData.stateName) { // we only want to dispatch this when we are doing a single-tier // state change such as changing a tab, so compare the state // for the same state-prefix but different suffix prefixesAreEqual = compareStatePrefixes(enteringData.stateName, leavingData.stateName); if ( prefixesAreEqual ) { enteringScope.$emit('$ionicNavView.leave', leavingData); } } } if (enteringScope) { enteringScope.$emit('$ionicView.' + step + 'Enter', enteringData); enteringScope.$broadcast('$ionicParentView.' + step + 'Enter', enteringData); } if (leavingScope) { leavingScope.$emit('$ionicView.' + step + 'Leave', leavingData); leavingScope.$broadcast('$ionicParentView.' + step + 'Leave', leavingData); } else if (enteringScope && leavingData && leavingData.viewId && enteringData.stateName !== leavingData.stateName) { // we only want to dispatch this when we are doing a single-tier // state change such as changing a tab, so compare the state // for the same state-prefix but different suffix prefixesAreEqual = compareStatePrefixes(enteringData.stateName, leavingData.stateName); if ( prefixesAreEqual ) { enteringScope.$emit('$ionicNavView.' + step + 'Leave', leavingData); } } } }, cleanup: function(transData) { // check if any views should be removed if (leavingEle && transData.direction == 'back' && !$ionicConfig.views.forwardCache()) { // if they just navigated back we can destroy the forward view // do not remove forward views if cacheForwardViews config is true destroyViewEle(leavingEle); } var viewElements = navViewCtrl.getViewElements(); var viewElementsLength = viewElements.length; var x, viewElement; var removeOldestAccess = (viewElementsLength - 1) > $ionicConfig.views.maxCache(); var removableEle; var oldestAccess = Date.now(); for (x = 0; x < viewElementsLength; x++) { viewElement = viewElements.eq(x); if (removeOldestAccess && viewElement.data(DATA_VIEW_ACCESSED) < oldestAccess) { // remember what was the oldest element to be accessed so it can be destroyed oldestAccess = viewElement.data(DATA_VIEW_ACCESSED); removableEle = viewElements.eq(x); } else if (viewElement.data(DATA_DESTROY_ELE) && navViewAttr(viewElement) != VIEW_STATUS_ACTIVE) { destroyViewEle(viewElement); } } destroyViewEle(removableEle); if (enteringEle.data(DATA_NO_CACHE)) { enteringEle.data(DATA_DESTROY_ELE, true); } }, enteringEle: function() { return enteringEle; }, leavingEle: function() { return leavingEle; } }; return switcher; }, transitionEnd: function(navViewCtrls) { forEach(navViewCtrls, function(navViewCtrl) { navViewCtrl.transitionEnd(); }); ionicViewSwitcher.isTransitioning(false); $ionicClickBlock.hide(); transitionPromises = []; }, nextTransition: function(val) { nextTransition = val; }, nextDirection: function(val) { nextDirection = val; }, isTransitioning: function(val) { if (arguments.length) { ionic.transition.isActive = !!val; $timeout.cancel(isActiveTimer); if (val) { isActiveTimer = $timeout(function() { ionicViewSwitcher.isTransitioning(false); }, 999); } } return ionic.transition.isActive; }, createViewEle: function(viewLocals) { var containerEle = $document[0].createElement('div'); if (viewLocals && viewLocals.$template) { containerEle.innerHTML = viewLocals.$template; if (containerEle.children.length === 1) { containerEle.children[0].classList.add('pane'); if ( viewLocals.$$state && viewLocals.$$state.self && viewLocals.$$state.self['abstract'] ) { angular.element(containerEle.children[0]).attr("abstract", "true"); } else { if ( viewLocals.$$state && viewLocals.$$state.self ) { angular.element(containerEle.children[0]).attr("state", viewLocals.$$state.self.name); } } return jqLite(containerEle.children[0]); } } containerEle.className = "pane"; return jqLite(containerEle); }, viewEleIsActive: function(viewEle, isActiveAttr) { navViewAttr(viewEle, isActiveAttr ? VIEW_STATUS_ACTIVE : VIEW_STATUS_CACHED); }, getTransitionData: getTransitionData, navViewAttr: navViewAttr, destroyViewEle: destroyViewEle }; return ionicViewSwitcher; function getViewElementIdentifier(locals, view) { if (viewState(locals)['abstract']) return viewState(locals).name; if (view) return view.stateId || view.viewId; return ionic.Utils.nextUid(); } function viewState(locals) { return locals && locals.$$state && locals.$$state.self || {}; } function getTransitionData(viewLocals, enteringEle, direction, view) { // Priority // 1) attribute directive on the button/link to this view // 2) entering element's attribute // 3) entering view's $state config property // 4) view registration data // 5) global config // 6) fallback value var state = viewState(viewLocals); var viewTransition = nextTransition || cachedAttr(enteringEle, 'view-transition') || state.viewTransition || $ionicConfig.views.transition() || 'ios'; var navBarTransition = $ionicConfig.navBar.transition(); direction = nextDirection || cachedAttr(enteringEle, 'view-direction') || state.viewDirection || direction || 'none'; return extend(getViewData(view), { transition: viewTransition, navBarTransition: navBarTransition === 'view' ? viewTransition : navBarTransition, direction: direction, shouldAnimate: (viewTransition !== 'none' && direction !== 'none') }); } function getViewData(view) { view = view || {}; return { viewId: view.viewId, historyId: view.historyId, stateId: view.stateId, stateName: view.stateName, stateParams: view.stateParams }; } function navViewAttr(ele, value) { if (arguments.length > 1) { cachedAttr(ele, NAV_VIEW_ATTR, value); } else { return cachedAttr(ele, NAV_VIEW_ATTR); } } function destroyViewEle(ele) { // we found an element that should be removed // destroy its scope, then remove the element if (ele && ele.length) { var viewScope = ele.scope(); if (viewScope) { viewScope.$emit('$ionicView.unloaded', ele.data(DATA_VIEW)); viewScope.$destroy(); } ele.remove(); } } function compareStatePrefixes(enteringStateName, exitingStateName) { var enteringStateSuffixIndex = enteringStateName.lastIndexOf('.'); var exitingStateSuffixIndex = exitingStateName.lastIndexOf('.'); // if either of the prefixes are empty, just return false if ( enteringStateSuffixIndex < 0 || exitingStateSuffixIndex < 0 ) { return false; } var enteringPrefix = enteringStateName.substring(0, enteringStateSuffixIndex); var exitingPrefix = exitingStateName.substring(0, exitingStateSuffixIndex); return enteringPrefix === exitingPrefix; } function getScopeForElement(element, stateData) { if ( !element ) { return null; } // check if it's abstract var attributeValue = angular.element(element).attr("abstract"); var stateValue = angular.element(element).attr("state"); if ( attributeValue !== "true" ) { // it's not an abstract view, so make sure the element // matches the state. Due to abstract view weirdness, // sometimes it doesn't. If it doesn't, don't dispatch events // so leave the scope undefined if ( stateValue === stateData.stateName ) { return angular.element(element).scope(); } return null; } else { // it is an abstract element, so look for element with the "state" attributeValue // set to the name of the stateData state var elements = aggregateNavViewChildren(element); for ( var i = 0; i < elements.length; i++ ) { var state = angular.element(elements[i]).attr("state"); if ( state === stateData.stateName ) { stateData.abstractView = true; return angular.element(elements[i]).scope(); } } // we didn't find a match, so return null return null; } } function aggregateNavViewChildren(element) { var aggregate = []; var navViews = angular.element(element).find("ion-nav-view"); for ( var i = 0; i < navViews.length; i++ ) { var children = angular.element(navViews[i]).children(); var childrenAggregated = []; for ( var j = 0; j < children.length; j++ ) { childrenAggregated = childrenAggregated.concat(children[j]); } aggregate = aggregate.concat(childrenAggregated); } return aggregate; } }]); /** * ================== angular-ios9-uiwebview.patch.js v1.1.1 ================== * * This patch works around iOS9 UIWebView regression that causes infinite digest * errors in Angular. * * The patch can be applied to Angular 1.2.0 – 1.4.5. Newer versions of Angular * have the workaround baked in. * * To apply this patch load/bundle this file with your application and add a * dependency on the "ngIOS9UIWebViewPatch" module to your main app module. * * For example: * * ``` * angular.module('myApp', ['ngRoute'])` * ``` * * becomes * * ``` * angular.module('myApp', ['ngRoute', 'ngIOS9UIWebViewPatch']) * ``` * * * More info: * - https://openradar.appspot.com/22186109 * - https://github.com/angular/angular.js/issues/12241 * - https://github.com/ionic-team/ionic/issues/4082 * * * @license AngularJS * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ angular.module('ngIOS9UIWebViewPatch', ['ng']).config(['$provide', function($provide) { 'use strict'; $provide.decorator('$browser', ['$delegate', '$window', function($delegate, $window) { if (isIOS9UIWebView($window.navigator.userAgent)) { return applyIOS9Shim($delegate); } return $delegate; function isIOS9UIWebView(userAgent) { return /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent); } function applyIOS9Shim(browser) { var pendingLocationUrl = null; var originalUrlFn = browser.url; browser.url = function() { if (arguments.length) { pendingLocationUrl = arguments[0]; return originalUrlFn.apply(browser, arguments); } return pendingLocationUrl || originalUrlFn.apply(browser, arguments); }; window.addEventListener('popstate', clearPendingLocationUrl, false); window.addEventListener('hashchange', clearPendingLocationUrl, false); function clearPendingLocationUrl() { pendingLocationUrl = null; } return browser; } }]); }]); /** * @private * Parts of Ionic requires that $scope data is attached to the element. * We do not want to disable adding $scope data to the $element when * $compileProvider.debugInfoEnabled(false) is used. */ IonicModule.config(['$provide', function($provide) { $provide.decorator('$compile', ['$delegate', function($compile) { $compile.$$addScopeInfo = function $$addScopeInfo($element, scope, isolated, noTemplate) { var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope'; $element.data(dataName, scope); }; return $compile; }]); }]); /** * @private */ IonicModule.config([ '$provide', function($provide) { function $LocationDecorator($location, $timeout) { $location.__hash = $location.hash; //Fix: when window.location.hash is set, the scrollable area //found nearest to body's scrollTop is set to scroll to an element //with that ID. $location.hash = function(value) { if (isDefined(value) && value.length > 0) { $timeout(function() { var scroll = document.querySelector('.scroll-content'); if (scroll) { scroll.scrollTop = 0; } }, 0, false); } return $location.__hash(value); }; return $location; } $provide.decorator('$location', ['$delegate', '$timeout', $LocationDecorator]); }]); IonicModule .controller('$ionicHeaderBar', [ '$scope', '$element', '$attrs', '$q', '$ionicConfig', '$ionicHistory', function($scope, $element, $attrs, $q, $ionicConfig, $ionicHistory) { var TITLE = 'title'; var BACK_TEXT = 'back-text'; var BACK_BUTTON = 'back-button'; var DEFAULT_TITLE = 'default-title'; var PREVIOUS_TITLE = 'previous-title'; var HIDE = 'hide'; var self = this; var titleText = ''; var previousTitleText = ''; var titleLeft = 0; var titleRight = 0; var titleCss = ''; var isBackEnabled = false; var isBackShown = true; var isNavBackShown = true; var isBackElementShown = false; var titleTextWidth = 0; self.beforeEnter = function(viewData) { $scope.$broadcast('$ionicView.beforeEnter', viewData); }; self.title = function(newTitleText) { if (arguments.length && newTitleText !== titleText) { getEle(TITLE).innerHTML = newTitleText; titleText = newTitleText; titleTextWidth = 0; } return titleText; }; self.enableBack = function(shouldEnable, disableReset) { // whether or not the back button show be visible, according // to the navigation and history if (arguments.length) { isBackEnabled = shouldEnable; if (!disableReset) self.updateBackButton(); } return isBackEnabled; }; self.showBack = function(shouldShow, disableReset) { // different from enableBack() because this will always have the back // visually hidden if false, even if the history says it should show if (arguments.length) { isBackShown = shouldShow; if (!disableReset) self.updateBackButton(); } return isBackShown; }; self.showNavBack = function(shouldShow) { // different from showBack() because this is for the entire nav bar's // setting for all of it's child headers. For internal use. isNavBackShown = shouldShow; self.updateBackButton(); }; self.updateBackButton = function() { var ele; if ((isBackShown && isNavBackShown && isBackEnabled) !== isBackElementShown) { isBackElementShown = isBackShown && isNavBackShown && isBackEnabled; ele = getEle(BACK_BUTTON); ele && ele.classList[ isBackElementShown ? 'remove' : 'add' ](HIDE); } if (isBackEnabled) { ele = ele || getEle(BACK_BUTTON); if (ele) { if (self.backButtonIcon !== $ionicConfig.backButton.icon()) { ele = getEle(BACK_BUTTON + ' .icon'); if (ele) { self.backButtonIcon = $ionicConfig.backButton.icon(); ele.className = 'icon ' + self.backButtonIcon; } } if (self.backButtonText !== $ionicConfig.backButton.text()) { ele = getEle(BACK_BUTTON + ' .back-text'); if (ele) { ele.textContent = self.backButtonText = $ionicConfig.backButton.text(); } } } } }; self.titleTextWidth = function() { var element = getEle(TITLE); if ( element ) { // If the element has a nav-bar-title, use that instead // to calculate the width of the title var children = angular.element(element).children(); for ( var i = 0; i < children.length; i++ ) { if ( angular.element(children[i]).hasClass('nav-bar-title') ) { element = children[i]; break; } } } var bounds = ionic.DomUtil.getTextBounds(element); titleTextWidth = Math.min(bounds && bounds.width || 30); return titleTextWidth; }; self.titleWidth = function() { var titleWidth = self.titleTextWidth(); var offsetWidth = getEle(TITLE).offsetWidth; if (offsetWidth < titleWidth) { titleWidth = offsetWidth + (titleLeft - titleRight - 5); } return titleWidth; }; self.titleTextX = function() { return ($element[0].offsetWidth / 2) - (self.titleWidth() / 2); }; self.titleLeftRight = function() { return titleLeft - titleRight; }; self.backButtonTextLeft = function() { var offsetLeft = 0; var ele = getEle(BACK_TEXT); while (ele) { offsetLeft += ele.offsetLeft; ele = ele.parentElement; } return offsetLeft; }; self.resetBackButton = function(viewData) { if ($ionicConfig.backButton.previousTitleText()) { var previousTitleEle = getEle(PREVIOUS_TITLE); if (previousTitleEle) { previousTitleEle.classList.remove(HIDE); var view = (viewData && $ionicHistory.getViewById(viewData.viewId)); var newPreviousTitleText = $ionicHistory.backTitle(view); if (newPreviousTitleText !== previousTitleText) { previousTitleText = previousTitleEle.innerHTML = newPreviousTitleText; } } var defaultTitleEle = getEle(DEFAULT_TITLE); if (defaultTitleEle) { defaultTitleEle.classList.remove(HIDE); } } }; self.align = function(textAlign) { var titleEle = getEle(TITLE); textAlign = textAlign || $attrs.alignTitle || $ionicConfig.navBar.alignTitle(); var widths = self.calcWidths(textAlign, false); if (isBackShown && previousTitleText && $ionicConfig.backButton.previousTitleText()) { var previousTitleWidths = self.calcWidths(textAlign, true); var availableTitleWidth = $element[0].offsetWidth - previousTitleWidths.titleLeft - previousTitleWidths.titleRight; if (self.titleTextWidth() <= availableTitleWidth) { widths = previousTitleWidths; } } return self.updatePositions(titleEle, widths.titleLeft, widths.titleRight, widths.buttonsLeft, widths.buttonsRight, widths.css, widths.showPrevTitle); }; self.calcWidths = function(textAlign, isPreviousTitle) { var titleEle = getEle(TITLE); var backBtnEle = getEle(BACK_BUTTON); var x, y, z, b, c, d, childSize, bounds; var childNodes = $element[0].childNodes; var buttonsLeft = 0; var buttonsRight = 0; var isCountRightOfTitle; var updateTitleLeft = 0; var updateTitleRight = 0; var updateCss = ''; var backButtonWidth = 0; // Compute how wide the left children are // Skip all titles (there may still be two titles, one leaving the dom) // Once we encounter a titleEle, realize we are now counting the right-buttons, not left for (x = 0; x < childNodes.length; x++) { c = childNodes[x]; childSize = 0; if (c.nodeType == 1) { // element node if (c === titleEle) { isCountRightOfTitle = true; continue; } if (c.classList.contains(HIDE)) { continue; } if (isBackShown && c === backBtnEle) { for (y = 0; y < c.childNodes.length; y++) { b = c.childNodes[y]; if (b.nodeType == 1) { if (b.classList.contains(BACK_TEXT)) { for (z = 0; z < b.children.length; z++) { d = b.children[z]; if (isPreviousTitle) { if (d.classList.contains(DEFAULT_TITLE)) continue; backButtonWidth += d.offsetWidth; } else { if (d.classList.contains(PREVIOUS_TITLE)) continue; backButtonWidth += d.offsetWidth; } } } else { backButtonWidth += b.offsetWidth; } } else if (b.nodeType == 3 && b.nodeValue.trim()) { bounds = ionic.DomUtil.getTextBounds(b); backButtonWidth += bounds && bounds.width || 0; } } childSize = backButtonWidth || c.offsetWidth; } else { // not the title, not the back button, not a hidden element childSize = c.offsetWidth; } } else if (c.nodeType == 3 && c.nodeValue.trim()) { // text node bounds = ionic.DomUtil.getTextBounds(c); childSize = bounds && bounds.width || 0; } if (isCountRightOfTitle) { buttonsRight += childSize; } else { buttonsLeft += childSize; } } // Size and align the header titleEle based on the sizes of the left and // right children, and the desired alignment mode if (textAlign == 'left') { updateCss = 'title-left'; if (buttonsLeft) { updateTitleLeft = buttonsLeft + 15; } if (buttonsRight) { updateTitleRight = buttonsRight + 15; } } else if (textAlign == 'right') { updateCss = 'title-right'; if (buttonsLeft) { updateTitleLeft = buttonsLeft + 15; } if (buttonsRight) { updateTitleRight = buttonsRight + 15; } } else { // center the default var margin = Math.max(buttonsLeft, buttonsRight) + 10; if (margin > 10) { updateTitleLeft = updateTitleRight = margin; } } return { backButtonWidth: backButtonWidth, buttonsLeft: buttonsLeft, buttonsRight: buttonsRight, titleLeft: updateTitleLeft, titleRight: updateTitleRight, showPrevTitle: isPreviousTitle, css: updateCss }; }; self.updatePositions = function(titleEle, updateTitleLeft, updateTitleRight, buttonsLeft, buttonsRight, updateCss, showPreviousTitle) { var deferred = $q.defer(); // only make DOM updates when there are actual changes if (titleEle) { if (updateTitleLeft !== titleLeft) { titleEle.style.left = updateTitleLeft ? updateTitleLeft + 'px' : ''; titleLeft = updateTitleLeft; } if (updateTitleRight !== titleRight) { titleEle.style.right = updateTitleRight ? updateTitleRight + 'px' : ''; titleRight = updateTitleRight; } if (updateCss !== titleCss) { updateCss && titleEle.classList.add(updateCss); titleCss && titleEle.classList.remove(titleCss); titleCss = updateCss; } } if ($ionicConfig.backButton.previousTitleText()) { var prevTitle = getEle(PREVIOUS_TITLE); var defaultTitle = getEle(DEFAULT_TITLE); prevTitle && prevTitle.classList[ showPreviousTitle ? 'remove' : 'add'](HIDE); defaultTitle && defaultTitle.classList[ showPreviousTitle ? 'add' : 'remove'](HIDE); } ionic.requestAnimationFrame(function() { if (titleEle && titleEle.offsetWidth + 10 < titleEle.scrollWidth) { var minRight = buttonsRight + 5; var testRight = $element[0].offsetWidth - titleLeft - self.titleTextWidth() - 20; updateTitleRight = testRight < minRight ? minRight : testRight; if (updateTitleRight !== titleRight) { titleEle.style.right = updateTitleRight + 'px'; titleRight = updateTitleRight; } } deferred.resolve(); }); return deferred.promise; }; self.setCss = function(elementClassname, css) { ionic.DomUtil.cachedStyles(getEle(elementClassname), css); }; var eleCache = {}; function getEle(className) { if (!eleCache[className]) { eleCache[className] = $element[0].querySelector('.' + className); } return eleCache[className]; } $scope.$on('$destroy', function() { for (var n in eleCache) eleCache[n] = null; }); }]); IonicModule .controller('$ionInfiniteScroll', [ '$scope', '$attrs', '$element', '$timeout', function($scope, $attrs, $element, $timeout) { var self = this; self.isLoading = false; $scope.icon = function() { return isDefined($attrs.icon) ? $attrs.icon : 'ion-load-d'; }; $scope.spinner = function() { return isDefined($attrs.spinner) ? $attrs.spinner : ''; }; $scope.$on('scroll.infiniteScrollComplete', function() { finishInfiniteScroll(); }); $scope.$on('$destroy', function() { if (self.scrollCtrl && self.scrollCtrl.$element) self.scrollCtrl.$element.off('scroll', self.checkBounds); if (self.scrollEl && self.scrollEl.removeEventListener) { self.scrollEl.removeEventListener('scroll', self.checkBounds); } }); // debounce checking infinite scroll events self.checkBounds = ionic.Utils.throttle(checkInfiniteBounds, 300); function onInfinite() { ionic.requestAnimationFrame(function() { $element[0].classList.add('active'); }); self.isLoading = true; $scope.$parent && $scope.$parent.$apply($attrs.onInfinite || ''); } function finishInfiniteScroll() { ionic.requestAnimationFrame(function() { $element[0].classList.remove('active'); }); $timeout(function() { if (self.jsScrolling) self.scrollView.resize(); // only check bounds again immediately if the page isn't cached (scroll el has height) if ((self.jsScrolling && self.scrollView.__container && self.scrollView.__container.offsetHeight > 0) || !self.jsScrolling) { self.checkBounds(); } }, 30, false); self.isLoading = false; } // check if we've scrolled far enough to trigger an infinite scroll function checkInfiniteBounds() { if (self.isLoading) return; var maxScroll = {}; if (self.jsScrolling) { maxScroll = self.getJSMaxScroll(); var scrollValues = self.scrollView.getValues(); if ((maxScroll.left !== -1 && scrollValues.left >= maxScroll.left) || (maxScroll.top !== -1 && scrollValues.top >= maxScroll.top)) { onInfinite(); } } else { maxScroll = self.getNativeMaxScroll(); if (( maxScroll.left !== -1 && self.scrollEl.scrollLeft >= maxScroll.left - self.scrollEl.clientWidth ) || ( maxScroll.top !== -1 && self.scrollEl.scrollTop >= maxScroll.top - self.scrollEl.clientHeight )) { onInfinite(); } } } // determine the threshold at which we should fire an infinite scroll // note: this gets processed every scroll event, can it be cached? self.getJSMaxScroll = function() { var maxValues = self.scrollView.getScrollMax(); return { left: self.scrollView.options.scrollingX ? calculateMaxValue(maxValues.left) : -1, top: self.scrollView.options.scrollingY ? calculateMaxValue(maxValues.top) : -1 }; }; self.getNativeMaxScroll = function() { var maxValues = { left: self.scrollEl.scrollWidth, top: self.scrollEl.scrollHeight }; var computedStyle = window.getComputedStyle(self.scrollEl) || {}; return { left: maxValues.left && (computedStyle.overflowX === 'scroll' || computedStyle.overflowX === 'auto' || self.scrollEl.style['overflow-x'] === 'scroll') ? calculateMaxValue(maxValues.left) : -1, top: maxValues.top && (computedStyle.overflowY === 'scroll' || computedStyle.overflowY === 'auto' || self.scrollEl.style['overflow-y'] === 'scroll' ) ? calculateMaxValue(maxValues.top) : -1 }; }; // determine pixel refresh distance based on % or value function calculateMaxValue(maximum) { var distance = ($attrs.distance || '2.5%').trim(); var isPercent = distance.indexOf('%') !== -1; return isPercent ? maximum * (1 - parseFloat(distance) / 100) : maximum - parseFloat(distance); } //for testing self.__finishInfiniteScroll = finishInfiniteScroll; }]); /** * @ngdoc service * @name $ionicListDelegate * @module ionic * * @description * Delegate for controlling the {@link ionic.directive:ionList} directive. * * Methods called directly on the $ionicListDelegate service will control all lists. * Use the {@link ionic.service:$ionicListDelegate#$getByHandle $getByHandle} * method to control specific ionList instances. * * @usage * ```html * {% raw %} * * * * * Hello, {{i}}! * * * * * {% endraw %} * ``` * ```js * function MyCtrl($scope, $ionicListDelegate) { * $scope.showDeleteButtons = function() { * $ionicListDelegate.showDelete(true); * }; * } * ``` */ IonicModule.service('$ionicListDelegate', ionic.DelegateService([ /** * @ngdoc method * @name $ionicListDelegate#showReorder * @param {boolean=} showReorder Set whether or not this list is showing its reorder buttons. * @returns {boolean} Whether the reorder buttons are shown. */ 'showReorder', /** * @ngdoc method * @name $ionicListDelegate#showDelete * @param {boolean=} showDelete Set whether or not this list is showing its delete buttons. * @returns {boolean} Whether the delete buttons are shown. */ 'showDelete', /** * @ngdoc method * @name $ionicListDelegate#canSwipeItems * @param {boolean=} canSwipeItems Set whether or not this list is able to swipe to show * option buttons. * @returns {boolean} Whether the list is able to swipe to show option buttons. */ 'canSwipeItems', /** * @ngdoc method * @name $ionicListDelegate#closeOptionButtons * @description Closes any option buttons on the list that are swiped open. */ 'closeOptionButtons' /** * @ngdoc method * @name $ionicListDelegate#$getByHandle * @param {string} handle * @returns `delegateInstance` A delegate instance that controls only the * {@link ionic.directive:ionList} directives with `delegate-handle` matching * the given handle. * * Example: `$ionicListDelegate.$getByHandle('my-handle').showReorder(true);` */ ])) .controller('$ionicList', [ '$scope', '$attrs', '$ionicListDelegate', '$ionicHistory', function($scope, $attrs, $ionicListDelegate, $ionicHistory) { var self = this; var isSwipeable = true; var isReorderShown = false; var isDeleteShown = false; var deregisterInstance = $ionicListDelegate._registerInstance( self, $attrs.delegateHandle, function() { return $ionicHistory.isActiveScope($scope); } ); $scope.$on('$destroy', deregisterInstance); self.showReorder = function(show) { if (arguments.length) { isReorderShown = !!show; } return isReorderShown; }; self.showDelete = function(show) { if (arguments.length) { isDeleteShown = !!show; } return isDeleteShown; }; self.canSwipeItems = function(can) { if (arguments.length) { isSwipeable = !!can; } return isSwipeable; }; self.closeOptionButtons = function() { self.listView && self.listView.clearDragEffects(); }; }]); IonicModule .controller('$ionicNavBar', [ '$scope', '$element', '$attrs', '$compile', '$timeout', '$ionicNavBarDelegate', '$ionicConfig', '$ionicHistory', function($scope, $element, $attrs, $compile, $timeout, $ionicNavBarDelegate, $ionicConfig, $ionicHistory) { var CSS_HIDE = 'hide'; var DATA_NAV_BAR_CTRL = '$ionNavBarController'; var PRIMARY_BUTTONS = 'primaryButtons'; var SECONDARY_BUTTONS = 'secondaryButtons'; var BACK_BUTTON = 'backButton'; var ITEM_TYPES = 'primaryButtons secondaryButtons leftButtons rightButtons title'.split(' '); var self = this; var headerBars = []; var navElementHtml = {}; var isVisible = true; var queuedTransitionStart, queuedTransitionEnd, latestTransitionId; $element.parent().data(DATA_NAV_BAR_CTRL, self); var delegateHandle = $attrs.delegateHandle || 'navBar' + ionic.Utils.nextUid(); var deregisterInstance = $ionicNavBarDelegate._registerInstance(self, delegateHandle); self.init = function() { $element.addClass('nav-bar-container'); ionic.DomUtil.cachedAttr($element, 'nav-bar-transition', $ionicConfig.views.transition()); // create two nav bar blocks which will trade out which one is shown self.createHeaderBar(false); self.createHeaderBar(true); $scope.$emit('ionNavBar.init', delegateHandle); }; self.createHeaderBar = function(isActive) { var containerEle = jqLite('