├── .editorconfig ├── .ember-cli ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .npmignore ├── .template-lintrc.js ├── .travis.yml ├── .watchmanconfig ├── ACCEPTED-CLAS.md ├── CHANGELOG.md ├── CLA-CORPORATE.md ├── CLA-INDIVIDUAL.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── RELEASE-INSTRUCTIONS.md ├── addon └── .gitkeep ├── app └── .gitkeep ├── blueprints └── ember-cli-jsdoc │ └── index.js ├── config ├── ember-try.js └── environment.js ├── ember-cli-build.js ├── index.js ├── jsdocTemplates └── default │ ├── README.md │ ├── publish.js │ ├── static │ ├── fonts │ │ ├── OpenSans-Bold-webfont.eot │ │ ├── OpenSans-Bold-webfont.svg │ │ ├── OpenSans-Bold-webfont.woff │ │ ├── OpenSans-BoldItalic-webfont.eot │ │ ├── OpenSans-BoldItalic-webfont.svg │ │ ├── OpenSans-BoldItalic-webfont.woff │ │ ├── OpenSans-Italic-webfont.eot │ │ ├── OpenSans-Italic-webfont.svg │ │ ├── OpenSans-Italic-webfont.woff │ │ ├── OpenSans-Light-webfont.eot │ │ ├── OpenSans-Light-webfont.svg │ │ ├── OpenSans-Light-webfont.woff │ │ ├── OpenSans-LightItalic-webfont.eot │ │ ├── OpenSans-LightItalic-webfont.svg │ │ ├── OpenSans-LightItalic-webfont.woff │ │ ├── OpenSans-Regular-webfont.eot │ │ ├── OpenSans-Regular-webfont.svg │ │ └── OpenSans-Regular-webfont.woff │ ├── scripts │ │ ├── linenumber.js │ │ └── prettify │ │ │ ├── Apache-License-2.0.txt │ │ │ ├── lang-css.js │ │ │ └── prettify.js │ └── styles │ │ ├── jsdoc-default.css │ │ ├── prettify-jsdoc.css │ │ └── prettify-tomorrow.css │ └── tmpl │ ├── augments.tmpl │ ├── container.tmpl │ ├── details.tmpl │ ├── example.tmpl │ ├── examples.tmpl │ ├── exceptions.tmpl │ ├── layout.tmpl │ ├── mainpage.tmpl │ ├── members.tmpl │ ├── method.tmpl │ ├── params.tmpl │ ├── properties.tmpl │ ├── returns.tmpl │ ├── source.tmpl │ ├── tutorial.tmpl │ └── type.tmpl ├── lib ├── .DS_Store └── commands │ └── ember-cli-jsdoc.js ├── package.json ├── testem.js ├── tests ├── dummy │ ├── app │ │ ├── app.js │ │ ├── components │ │ │ └── .gitkeep │ │ ├── controllers │ │ │ └── .gitkeep │ │ ├── helpers │ │ │ └── .gitkeep │ │ ├── index.html │ │ ├── models │ │ │ └── .gitkeep │ │ ├── resolver.js │ │ ├── router.js │ │ ├── routes │ │ │ └── .gitkeep │ │ ├── styles │ │ │ └── app.css │ │ └── templates │ │ │ ├── application.hbs │ │ │ └── components │ │ │ └── .gitkeep │ ├── config │ │ ├── environment.js │ │ ├── optional-features.json │ │ └── targets.js │ └── public │ │ └── robots.txt ├── helpers │ └── .gitkeep ├── index.html ├── test-helper.js └── unit │ └── .gitkeep └── vendor └── .gitkeep /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | 12 | # misc 13 | /coverage/ 14 | !.* 15 | 16 | # ember-try 17 | /.node_modules.ember-try/ 18 | /bower.json.ember-try 19 | /package.json.ember-try 20 | 21 | # minified scripts 22 | /jsdocTemplates/default/static/scripts/prettify/ 23 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | ecmaVersion: 2017, 5 | sourceType: 'module' 6 | }, 7 | plugins: [ 8 | 'ember' 9 | ], 10 | extends: [ 11 | 'eslint:recommended', 12 | 'plugin:ember/recommended' 13 | ], 14 | env: { 15 | browser: true, 16 | node: true 17 | }, 18 | rules: { 19 | }, 20 | overrides: [ 21 | // node files 22 | { 23 | files: [ 24 | '.template-lintrc.js', 25 | 'ember-cli-build.js', 26 | 'index.js', 27 | 'testem.js', 28 | 'blueprints/*/index.js', 29 | 'config/**/*.js', 30 | 'tests/dummy/config/**/*.js' 31 | ], 32 | excludedFiles: [ 33 | 'addon/**', 34 | 'addon-test-support/**', 35 | 'app/**', 36 | 'tests/dummy/app/**' 37 | ], 38 | parserOptions: { 39 | sourceType: 'script', 40 | ecmaVersion: 2015 41 | }, 42 | env: { 43 | browser: false, 44 | node: true 45 | }, 46 | plugins: ['node'], 47 | rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { 48 | // add your custom rules and overrides for node files here 49 | }) 50 | } 51 | ] 52 | }; 53 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /bower_components/ 9 | /node_modules/ 10 | 11 | # misc 12 | /.sass-cache 13 | /connect.lock 14 | /coverage/ 15 | /libpeerconnection.log 16 | /npm-debug.log* 17 | /testem.log 18 | /yarn-error.log 19 | 20 | # ember-try 21 | /.node_modules.ember-try/ 22 | /bower.json.ember-try 23 | /package.json.ember-try 24 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | /dist/ 3 | /tmp/ 4 | 5 | # dependencies 6 | /bower_components/ 7 | 8 | # misc 9 | /.bowerrc 10 | /.editorconfig 11 | /.ember-cli 12 | /.eslintignore 13 | /.eslintrc.js 14 | /.gitattributes 15 | /.gitignore 16 | /.npmignore 17 | /.template-lintrc.js 18 | /.travis.yml 19 | /.watchmanconfig 20 | /bower.json 21 | /config/ember-try.js 22 | /ember-cli-build.js 23 | /testem.js 24 | /tests/ 25 | /yarn.lock 26 | .gitkeep 27 | ACCEPTED-CLAS.md 28 | CHANGELOG.md 29 | CLA-CORPORATE.md 30 | CLA-INDIVIDUAL.md 31 | CONTRIBUTING.md 32 | README.md 33 | RELEASE-INSTRUCTIONS.md 34 | -------------------------------------------------------------------------------- /.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended' 5 | }; 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | # we recommend testing addons with the same minimum supported node version as Ember CLI 5 | # so that your addon works for all apps 6 | - "6" 7 | 8 | sudo: false 9 | dist: trusty 10 | 11 | addons: 12 | chrome: stable 13 | 14 | cache: 15 | directories: 16 | - $HOME/.npm 17 | 18 | env: 19 | global: 20 | # See https://git.io/vdao3 for details. 21 | - JOBS=1 22 | 23 | jobs: 24 | fail_fast: true 25 | allow_failures: 26 | - env: EMBER_TRY_SCENARIO=ember-canary 27 | 28 | include: 29 | # runs linting and tests with current locked deps 30 | 31 | - stage: "Tests" 32 | name: "Tests" 33 | script: 34 | - npm run lint:hbs 35 | - npm run lint:js 36 | - npm test 37 | 38 | # we recommend new addons test the current and previous LTS 39 | # as well as latest stable release (bonus points to beta/canary) 40 | - stage: "Additional Tests" 41 | env: EMBER_TRY_SCENARIO=ember-lts-2.16 42 | - env: EMBER_TRY_SCENARIO=ember-lts-2.18 43 | - env: EMBER_TRY_SCENARIO=ember-release 44 | - env: EMBER_TRY_SCENARIO=ember-beta 45 | - env: EMBER_TRY_SCENARIO=ember-canary 46 | - env: EMBER_TRY_SCENARIO=ember-default-with-jquery 47 | 48 | before_install: 49 | - npm config set spin false 50 | - npm install -g npm@4 51 | - npm --version 52 | 53 | script: 54 | - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO 55 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /ACCEPTED-CLAS.md: -------------------------------------------------------------------------------- 1 | This is a list of GitHub users that have submitted a CLA and from whom we can 2 | accept pull requests. It exists to be able to cross-reference these names 3 | against PRs received from developers. 4 | 5 | * notmessenger 6 | * juwara0 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # ember-cli-jsdoc Changelog 2 | 3 | ### 3.0.0 4 | 5 | **BREAKING ENHANCEMENT** 6 | 7 | * [PR #43](https://github.com/softlayer/ember-cli-jsdoc/pull/43) Upgrade Ember CLI to v3.5 8 | 9 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v2.0.0...v3.0.0) 10 | 11 | 12 | ### 2.0.0 13 | 14 | **BREAKING ENHANCEMENT** 15 | 16 | * Upgraded `jsdoc` dependency to `3.5.5` to address [#40 - Unable to parse async functions](https://github.com/softlayer/ember-cli-jsdoc/issues/40) 17 | 18 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.6.0...v2.0.0) 19 | 20 | 21 | ### 1.6.0 22 | 23 | **BUGFIX** 24 | 25 | * [#36](https://github.com/softlayer/ember-cli-jsdoc/issues/36) Path to jsdoc binary is incorrect for node 4.x and npm 2.x 26 | * [Interrogate system for node .bin location](https://github.com/softlayer/ember-cli-jsdoc/commit/86f45ebeec6c9e1ea66b5998a76680322184fc38) 27 | 28 | **INTERNAL** 29 | 30 | * [#37](https://github.com/softlayer/ember-cli-jsdoc/pull/37) Don't add RSVP and Chalk to project devDependencies 31 | 32 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.5.2...v1.6.0) 33 | 34 | 35 | ### 1.5.2 36 | 37 | **BUGFIX** 38 | 39 | * Update addon package dependency version missed in upgrade to chalk 1.1.3 support 40 | 41 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.5.1...v1.5.2) 42 | 43 | ### 1.5.1 44 | 45 | **BUGFIX** 46 | 47 | * Update addon package dependency version missed in upgrade to JSDoc 3.4.3 support 48 | 49 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.5.0...v1.5.1) 50 | 51 | ### 1.5.0 52 | 53 | **BREAKING ENHANCEMENT** 54 | 55 | * [#33](https://github.com/softlayer/ember-cli-jsdoc/issues/33) Upgrade JSDoc dependency to v3.4.3 56 | * [#30](https://github.com/softlayer/ember-cli-jsdoc/issues/30) Upgrade Ember CLI to v2.10.0 57 | 58 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.4.1...v1.5.0) 59 | 60 | ### 1.4.1 61 | 62 | **BUG FIX** 63 | 64 | * [#19](https://github.com/softlayer/ember-cli-jsdoc/issues/19) and [#29](https://github.com/softlayer/ember-cli-jsdoc/pull/29) Add missing dependencies 65 | 66 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.4.0...v1.4.1) 67 | 68 | ### 1.4.0 69 | 70 | **BREAKING ENHANCEMENT** 71 | 72 | * [#1](https://github.com/softlayer/ember-cli-jsdoc/issues/1) Update JSDoc dependency to 3.4.0 73 | 74 | **BUG FIX** 75 | 76 | * [#9](https://github.com/softlayer/ember-cli-jsdoc/issues/9) Improve error, warning, and success messages 77 | 78 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.3.2...v1.4.0) 79 | 80 | ### 1.3.2 81 | 82 | **BUG FIX** 83 | 84 | * [#19](https://github.com/softlayer/ember-cli-jsdoc/issues/19) Support Node version *5.x.x* with correct pathing 85 | 86 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.3.1...v1.3.2) 87 | 88 | ### 1.3.1 89 | 90 | **ENHANCEMENT** 91 | 92 | * [#11](https://github.com/softlayer/ember-cli-jsdoc/pull/11) Made this addon OS-independent 93 | 94 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.3.0...v1.3.1) 95 | 96 | ### 1.3.0 97 | 98 | **INTERNAL** 99 | 100 | * Change to "ember-cli-jsdoc" command to correctly exit on error 101 | * Provide visually-assistive messsages when errors or warnings occur 102 | 103 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.2.0...v1.3.0) 104 | 105 | ### 1.2.0 106 | 107 | **INTERNAL** 108 | 109 | * Return call to add NPM package in blueprint 110 | * Change styling of status message and ensure gets written to UI 111 | 112 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.1.0...v1.2.0) 113 | 114 | ### 1.1.0 115 | 116 | **DOCUMENTATION** 117 | 118 | * Add badges to README.md 119 | 120 | [View complete changeset](https://github.com/softlayer/ember-cli-jsdoc/compare/v1.0.0...v1.1.0) 121 | 122 | 123 | ### 1.0.0 124 | 125 | * Initial release 126 | -------------------------------------------------------------------------------- /CLA-CORPORATE.md: -------------------------------------------------------------------------------- 1 | #### International Business machines, Inc. 2 | ##### Software Grant and Corporate Contributor License Agreement ("Agreement") 3 | 4 | http://www.github.com/softlayer/ember-cli-jsdoc 5 | 6 | 7 | Thank you for your interest in IBM’s ember-cli-jsdoc project (“the Project"). 8 | In order to clarify the intellectual property license granted with Contributions 9 | from any person or entity, IBM must have a Contributor License Agreement (CLA) 10 | on file that has been signed by each Contributor, indicating agreement to the 11 | license terms below. This license is for your protection as a Contributor as 12 | well as the protection of IBM and its users; it does not change your rights to 13 | use your own Contributions for any other purpose. 14 | 15 | This version of the Agreement allows an entity (the "Corporation") to submit 16 | Contributions to the Project, to authorize Contributions submitted by its 17 | designated employees to the Project, and to grant copyright and patent licenses 18 | thereto. 19 | 20 | If you have not already done so, please complete and sign, then scan and email a 21 | pdf file of this Agreement to pjackson@softlayer.com. 22 | 23 | 24 | 25 | Please read this document carefully before signing and keep a copy for your 26 | records. 27 | 28 | Corporation name: ________________________________________________ 29 | 30 | Corporation address: ________________________________________________ 31 | 32 | Point of Contact: ________________________________________________ 33 | 34 | E-Mail: ________________________________________________ 35 | 36 | Telephone: _____________________ 37 | 38 | 39 | You accept and agree to the following terms and conditions for Your present and 40 | future Contributions submitted to the Project. Except for the license granted 41 | herein to IBM and recipients of software distributed by IBM, You reserve all 42 | right, title, and interest in and to Your Contributions. 43 | 44 | 1. Definitions. 45 | 46 | "You" (or "Your") shall mean the copyright owner or legal entity 47 | authorized by the copyright owner that is making this Agreement 48 | with IBM. For legal entities, the entity making a Contribution and 49 | all other entities that control, are controlled by, or are under 50 | common control with that entity are considered to be a single 51 | Contributor. For the purposes of this definition, "control" means 52 | (i) the power, direct or indirect, to cause the direction or 53 | management of such entity, whether by contract or otherwise, or 54 | (ii) ownership of fifty percent (50%) or more of the outstanding 55 | shares, or (iii) beneficial ownership of such entity. 56 | 57 | "Contribution" shall mean the code, documentation or other original 58 | works of authorship expressly identified in Schedule B, as well as 59 | any original work of authorship, including any modifications or 60 | additions to an existing work, that is intentionally submitted by 61 | You to IBM for inclusion in, or documentation of, the Project managed 62 | by IBM (the "Work"). For the purposes of this definition, "submitted" 63 | means any form of electronic, verbal, or written communication sent to 64 | IBM or its representatives, including but not limited to communication 65 | on electronic mailing lists, source code control systems, and issue 66 | tracking systems that are managed by, or on behalf of, IBM for the 67 | purpose of discussing and improving the Work, but excluding 68 | communication that is conspicuously marked or otherwise designated 69 | in writing by You as "Not a Contribution." 70 | 71 | 2. Grant of Copyright License. 72 | 73 | Subject to the terms and conditions of this Agreement, 74 | You hereby grant to IBM and to recipients of software 75 | distributed by IBM a perpetual, worldwide, non-exclusive, 76 | no-charge, royalty-free, irrevocable copyright license to 77 | reproduce, prepare derivative works of, publicly display, 78 | publicly perform, sublicense, and distribute Your Contributions 79 | and such derivative works. 80 | 81 | 3. Grant of Patent License. 82 | 83 | Subject to the terms and conditions of this Agreement, 84 | You hereby grant to IBM and to recipients of software 85 | distributed by IBM a perpetual, worldwide, non-exclusive, 86 | no-charge, royalty-free, irrevocable (except as 87 | stated in this section) patent license to make, have made, use, 88 | offer to sell, sell, import, and otherwise transfer the Work, 89 | where such license applies only to those patent claims licensable 90 | by You that are necessarily infringed by Your Contribution(s) 91 | alone or by combination of Your Contribution(s) with the Work to 92 | which such Contribution(s) were submitted. If any entity institutes 93 | patent litigation against You or any other entity (including a 94 | cross-claim or counterclaim in a lawsuit) alleging that your 95 | Contribution, or the Work to which you have contributed, constitutes 96 | direct or contributory patent infringement, then any patent licenses 97 | granted to that entity under this Agreement for that Contribution or 98 | Work shall terminate as of the date such litigation is filed. 99 | 100 | 4. You represent that You are legally entitled to grant the above 101 | license. 102 | 103 | You represent further that each employee of the Corporation 104 | designated on Schedule A below (or in a subsequent written 105 | modification to that Schedule) is authorized to submit 106 | Contributions on behalf of the Corporation. 107 | 108 | 5. You represent that each of Your Contributions is Your original 109 | creation (see section 7 for submissions on behalf of others). 110 | 111 | 6. You are not expected to provide support for Your Contributions, 112 | except to the extent You desire to provide support. You may provide 113 | support for free, for a fee, or not at all. Unless required by 114 | applicable law or agreed to in writing, You provide Your 115 | Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 116 | OF ANY KIND, either express or implied, including, without 117 | limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, 118 | MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. 119 | 120 | 7. Should You wish to submit work that is not Your original creation, 121 | You may submit it to IBM separately from any 122 | Contribution, identifying the complete details of its source and 123 | of any license or other restriction (including, but not limited 124 | to, related patents, trademarks, and license agreements) of which 125 | you are personally aware, and conspicuously marking the work as 126 | "Submitted on behalf of a third-party: [named here]". 127 | 128 | 8. It is your responsibility to notify IBM when any change 129 | is required to the list of designated employees authorized to submit 130 | Contributions on behalf of the Corporation, or to the Corporation's 131 | Point of Contact with IBM. 132 | 133 | 134 | 135 | Please sign: __________________________________ Date: _______________ 136 | 137 | Title: __________________________________ 138 | 139 | Corporation: __________________________________ 140 | 141 | 142 | Schedule A 143 | 144 | [Initial list of designated employees. NB: authorization is not 145 | tied to particular Contributions.] 146 | 147 | 148 | 149 | 150 | Schedule B 151 | 152 | [Identification of optional concurrent software grant. Would be 153 | left blank or omitted if there is no concurrent software grant.] 154 | -------------------------------------------------------------------------------- /CLA-INDIVIDUAL.md: -------------------------------------------------------------------------------- 1 | #### International Business Machines, Inc. (IBM) 2 | ##### Individual Contributor License Agreement ("Agreement") 3 | 4 | http://www.github.com/softlayer/ember-cli-jsdoc 5 | 6 | Thank you for your interest in the ember-cli-jsdoc project ("the Project"). 7 | 8 | In order to clarify the intellectual property license granted with Contributions 9 | from any person or entity, IBM must have a Contributor License Agreement ("CLA") 10 | on file that has been signed by each Contributor, indicating agreement to the 11 | license terms below. This license is for your protection as a Contributor as 12 | well as the protection of IBM and its customers; it does not change your rights 13 | to use your own Contributions for any other purpose. 14 | 15 | If you have not already done so, please complete and sign, then scan and email a 16 | pdf file of this Agreement to pjackson@softlayer.com 17 | 18 | Please read this document carefully before signing and keep a copy for your 19 | records. 20 | 21 | Full name: ______________________________________________________ 22 | 23 | (optional) Public name: _________________________________________ 24 | 25 | Mailing Address: ________________________________________________ 26 | 27 | Country: ______________________________________________________ 28 | 29 | Telephone: ______________________________________________________ 30 | 31 | E-Mail: ______________________________________________________ 32 | 33 | 34 | You accept and agree to the following terms and conditions for Your present and 35 | future Contributions submitted to the Project. Except for the license granted 36 | herein to IBM and recipients of software distributed by IBM, You reserve all 37 | right, title, and interest in and to Your Contributions. 38 | 39 | 1. Definitions. 40 | 41 | "You" (or "Your") shall mean the copyright owner or legal entity 42 | authorized by the copyright owner that is making this Agreement 43 | with IBM. For legal entities, the entity making a Contribution and 44 | all other entities that control, are controlled by, or are under 45 | common control with that entity are considered to be a single 46 | Contributor. For the purposes of this definition, "control" means 47 | (i) the power, direct or indirect, to cause the direction or 48 | management of such entity, whether by contract or otherwise, 49 | or (ii) ownership of fifty percent (50%) or more of the outstanding 50 | shares, or (iii) beneficial ownership of such entity. 51 | 52 | "Contribution" shall mean any original work of authorship, 53 | including any modifications or additions to an existing work, that 54 | is intentionally submitted by You to the Project for inclusion 55 | in, or documentation of, the Project (”the Work”). For the purposes 56 | of this definition, "submitted" means any form of electronic, verbal, 57 | or written communication sent to the Project or its representatives, 58 | including but not limited to communication on electronic mailing lists, 59 | source code control systems, and issue tracking systems that are 60 | managed by, or on behalf of, the Project for the purpose of discussing 61 | and improving the Work, but excluding communication that is conspicuously 62 | marked or otherwise designated in writing by You as "Not a Contribution." 63 | 64 | 2. Grant of Copyright License. 65 | 66 | Subject to the terms and conditions of this Agreement, You hereby grant 67 | to IBM and to recipients of software distributed by IBM a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright 69 | license to reproduce, prepare derivative works of, publicly display, 70 | publicly perform, sublicense, and distribute Your Contributions and 71 | such derivative works. 72 | 73 | 3. Grant of Patent License. 74 | 75 | Subject to the terms and conditions of this Agreement, You hereby grant 76 | to IBM and to recipients of software distributed by IBM a perpetual, 77 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except 78 | as stated in this section) patent license to make, have made, use, offer 79 | to sell, sell, import, and otherwise transfer the Work to which Your 80 | Contribution(s) were submitted, where such license applies only to those 81 | patent claims licensable by You that are necessarily infringed by Your 82 | Contribution(s) alone or by combination of Your Contribution(s) with the 83 | Work to which such Contribution(s) was submitted. If any entity institutes 84 | patent litigation against You or any other entity (including a cross-claim 85 | or counterclaim in a lawsuit) alleging that your Contribution, or the Work 86 | to which you have contributed, constitutes direct or contributory patent 87 | infringement, then any patent licenses granted to that entity under this 88 | Agreement for that Contribution or Work shall terminate as of the date 89 | such litigation is filed. 90 | 91 | 4. You represent that you are legally entitled to grant the above 92 | license. 93 | 94 | If your employer(s) has rights to intellectual property 95 | that you create that includes your Contributions, you represent 96 | that you have received permission to make Contributions on behalf 97 | of that employer, that your employer has waived such rights for 98 | your Contributions to the Project, or that your employer has 99 | executed a separate Corporate CLA with IBM. 100 | 101 | 5. You represent that each of Your Contributions is Your original 102 | creation (see section 7 for submissions on behalf of others). You 103 | represent that Your Contribution submissions include complete 104 | details of any third-party license or other restriction (including, 105 | but not limited to, related patents and trademarks) of which you 106 | are personally aware and which are associated with any part of Your 107 | Contributions. 108 | 109 | 6. You are not expected to provide support for Your Contributions, 110 | except to the extent You desire to provide support. 111 | 112 | You may provide support for free, for a fee, or not at all. 113 | Unless required by applicable law or agreed to in writing, You provide Your 114 | Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 115 | OF ANY KIND, either express or implied, including, without 116 | limitation, any warranties or conditions of TITLE, NON- 117 | INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. 118 | 119 | 7. Should You wish to submit work that is not Your original creation, 120 | You may submit it to the Project separately from any 121 | Contribution, identifying the complete details of its source and of 122 | any license or other restriction (including, but not limited to, 123 | related patents, trademarks, and license agreements) of which you 124 | are personally aware, and conspicuously marking the work as 125 | "Submitted on behalf of a third-party: [named here]". 126 | 127 | 8. You agree to notify IBM of any facts or circumstances of 128 | which you become aware that would make these representations 129 | inaccurate in any respect. 130 | 131 | Please sign: __________________________________ Date: ________________ -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Getting Involved 2 | 3 | There are many ways to contribute to the project, including fixing issues or improving documentation. 4 | 5 | # Questions 6 | 7 | This is the issue tracker for `ember-cli-jsdoc`. The community uses this site to collect and track bugs and discussions 8 | of new features. If you are having difficulties using `ember-cli-jsdoc` or have a question about usage please ask a 9 | question on Stack Overflow: http://stackoverflow.com/questions/ask?tags=ember-cli-jsdoc 10 | 11 | # Issues 12 | 13 | Think you've found a bug or have a new feature to suggest? Let us know! 14 | 15 | ## Reporting a Bug 16 | 17 | 1. Make sure you have the latest version of the code, if possible, as we may have already fixed your bug. 18 | 19 | 2. Search for similar issues. It's possible somebody has encountered this bug already. 20 | 21 | 3. Provide a demo that specifically shows the problem. This demo should be fully operational with the exception of 22 | the bug you want to demonstrate. The more pared down, the better. Issues with demos are prioritized. 23 | 24 | 4. Your issue will be verified. The provided demo will be tested for correctness. The ember-cli-jsdoc team will work 25 | with you until your issue can be verified. 26 | 27 | 5. Keep up to date with feedback from the ember-cli-jsdoc team on your ticket. Your ticket may be closed if it becomes 28 | stale. 29 | 30 | 6. If possible, submit a Pull Request with a failing test. Better yet, take a stab at fixing the bug yourself if you 31 | can! 32 | 33 | The more information you provide, the easier it is for us to validate that there is a bug and the faster we'll be 34 | able to take action. 35 | 36 | ## Requesting a Feature 37 | 38 | 1. Search Issues for similar feature requests. It's possible somebody has already asked for this feature or provided 39 | a pull request that we're still discussing. 40 | 41 | 2. Provide a clear and detailed explanation of the feature you want and why it's important to add. Keep in mind that 42 | we want features that will be useful to the majority of our users and not just a small subset. 43 | 44 | 3. If the feature is complex, consider writing some initial documentation for it. If we do end up accepting the 45 | feature it will need to be documented and this will also help us to understand it better ourselves. 46 | 47 | 4. Attempt a Pull Request. If you are willing to help the project out, you can submit a Pull Request. We always have 48 | more work to do than time to do it. If you can write some code then that will speed the process along. 49 | 50 | # Pull Requests 51 | 52 | ## Contributer License Agreement 53 | Contributions to the ember-cli-jsdoc project require the submission of a contributer license agreement. Individual 54 | contributers should review and complete the [Individual CLA](CLA-INDIVIDUAL.md). Contributions made on behalf of a 55 | company/employer will necessitate the completion of the [Corporate CLA](CLA-CORPORATE.md). 56 | 57 | If you have any questions about either of these documents please contact the same individual listed in the documents 58 | you are to send your completed copies to. 59 | 60 | ## We love pull requests! 61 | Here's a quick guide: 62 | 63 | 1. Fork the repo. 64 | 65 | 2. Commit your changes. If your pull request fixes an issue specify it in the commit message. Here's an example: 66 | `git commit -m "Close #12 Fix passing of context"` 67 | 68 | 6. Push to your fork and submit a pull request againt the `master` branch. Please provide us with some explanation of 69 | why you made the changes you made. For new features make sure to explain a standard use case to us. 70 | 71 | We try to be quick about responding to tickets but sometimes we get a bit backlogged. If the response is slow, try 72 | to find someone on IRC(#softlayer) to give the ticket a review. 73 | 74 | #### Syntax #### 75 | 76 | * Follow the [Ember.js Style Guide](https://github.com/softlayer/ember-style-guide). -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-2018 SoftLayer Technologies, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [![Latest Release](https://img.shields.io/github/release/softlayer/ember-cli-jsdoc.svg)](https://github.com/softlayer/ember-cli-jsdoc/releases) ![Ember CLI version](https://img.shields.io/badge/ember%20cli-2.10.0-blue.svg) [![License](https://img.shields.io/npm/l/ember-cli-jsdoc.svg)](LICENSE.md) [![Downloads](https://img.shields.io/npm/dm/ember-cli-jsdoc.svg)](https://www.npmjs.com/package/ember-cli-jsdoc) 3 | 4 | [![Dependencies](https://img.shields.io/david/softlayer/ember-cli-jsdoc.svg)](https://david-dm.org/softlayer/ember-cli-jsdoc) [![Dev Dependencies](https://img.shields.io/david/dev/softlayer/ember-cli-jsdoc.svg)](https://david-dm.org/softlayer/ember-cli-jsdoc#info=devDependencies) 5 | 6 | 7 | # ember-cli-jsdoc 8 | 9 | An Ember CLI addon to generate HTML documentation from [JSDoc](http://usejsdoc.org) comments in the source code. 10 | 11 | 12 | 13 | # Install 14 | 15 | ```sh 16 | ember install ember-cli-jsdoc 17 | ``` 18 | 19 | 20 | 21 | # Use 22 | 23 | Run `ember ember-cli-jsdoc` anytime you wish to generate the documentation. You can then access this generated 24 | documentation at *http://localhost:4200/docs*. 25 | 26 | 27 | 28 | # Features 29 | 30 | * Smartly generates `jsdoc.json` configuration file based on your application or addon's setup 31 | * You can make any changes to this file as needed to suit your configuration needs 32 | * Generated documentation is accessible at *http://localhost:4200/docs* 33 | * Customized JSDoc template to support display of custom [@observes](https://github.com/notmessenger/jsdoc-plugins#emberobservestag) tag 34 | * Automatically populates @listens tag values through use of the [emberListensTag plugin](https://github.com/notmessenger/jsdoc-plugins#emberlistenstag) 35 | * You do not have to employ the @default tag for non-complex types, through the use of the [defaultTag plugin](https://github.com/notmessenger/jsdoc-plugins#defaulttag) 36 | 37 | 38 | 39 | # Things to know 40 | 41 | * For the best experience using JSDoc comments you should follow 42 | [this styleguide](https://github.com/softlayer/ember-style-guide#comments). 43 | * This is because JSDoc does not yet currently fully support ES6 syntax nor does its conventions always reflect the architecture of an Ember application. 44 | * You may wish to add an entry in your `.gitignore` file for the `/docs` folder. 45 | * If you are using a Node version below 5.x.x you will want to change the `plugins` entry in the *jsdoc.json* file to the following: 46 | 47 | ``` 48 | "plugins": [ 49 | "plugins/markdown", 50 | "node_modules/ember-cli-jsdoc/node_modules/jsdoc-plugins/plugins/defaultTag", 51 | "node_modules/ember-cli-jsdoc/node_modules/jsdoc-plugins/plugins/emberListensTag", 52 | "node_modules/ember-cli-jsdoc/node_modules/jsdoc-plugins/plugins/emberObservesTag" 53 | ] 54 | ``` 55 | 56 | 57 | 58 | # Versioning 59 | Employs [Semantic Versioning 2.0.0](http://semver.org/) 60 | 61 | 62 | 63 | # Contribution 64 | [See CONTRIBUTING.md](CONTRIBUTING.md) 65 | 66 | 67 | 68 | # Copyright and License 69 | ember-cli-jsdoc and its source files are Copyright © 2015-2018 [SoftLayer Technologies, Inc.](http://www.softlayer.com/) 70 | The software is [MIT Licensed](LICENSE.md) 71 | 72 | 73 | 74 | # Warranty 75 | This software is provided “as is” and without any express or implied warranties, including, without limitation, the 76 | implied warranties of merchantability and fitness for a particular purpose. 77 | -------------------------------------------------------------------------------- /RELEASE-INSTRUCTIONS.md: -------------------------------------------------------------------------------- 1 | # Repository Release Instructions 2 | 3 | This document captures the steps a project maintainer should follow when releasing a new version of this project. 4 | 5 | * Merge all desired pull requests into `master` branch 6 | * Run these commands: 7 | * `npm version x.x.x`, where *x.x.x* is the Semantic Version of the changeset 8 | * Add entries to _CHANGELOG.MD_ file and commit them 9 | * `git push origin master` 10 | * `git push origin --tags` 11 | * `npm publish --registry http://registry.npmjs.org/` 12 | * Note: `--registry` flag is workaround for occasional issues with default SSL url 13 | -------------------------------------------------------------------------------- /addon/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/addon/.gitkeep -------------------------------------------------------------------------------- /app/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/app/.gitkeep -------------------------------------------------------------------------------- /blueprints/ember-cli-jsdoc/index.js: -------------------------------------------------------------------------------- 1 | var chalk = require( 'chalk' ); 2 | var fs = require( 'fs' ); 3 | 4 | module.exports = { 5 | normalizeEntityName: function() {}, 6 | 7 | afterInstall: function() { 8 | 9 | /** 10 | * Determine whether provided path exists on disk 11 | * 12 | * @function 13 | * @param {String} path 14 | * @returns {Boolean} 15 | */ 16 | function doesExist( path ) { 17 | try { 18 | fs.statSync( path ); 19 | return true; 20 | } catch( err ) { 21 | return !( err && 'ENOENT' === err.code ); 22 | } 23 | } 24 | 25 | /** 26 | * Determine which pathing array to reference during configuration creation 27 | * 28 | * @function 29 | * @param {String} which 30 | * @param {Boolean} isAddon 31 | * @returns {Array} 32 | */ 33 | function getPaths( which, isAddon ) { 34 | if ( 'include' === which ) { 35 | return isAddon ? addonInclude : appInclude; 36 | } 37 | 38 | if ( 'exclude' === which ) { 39 | return isAddon ? addonExclude : appExclude; 40 | } 41 | } 42 | 43 | 44 | /** 45 | * Package info 46 | * 47 | * @type {Object} 48 | */ 49 | var pkginfo = this.project.pkg; 50 | 51 | /** 52 | * Base JSDoc configuration 53 | * 54 | * Supplemented by additional logic 55 | * 56 | * @type {Object} 57 | */ 58 | var config = { 59 | 'tags': { 60 | 'allowUnknownTags': true, 61 | 'dictionaries': [ 62 | 'jsdoc' 63 | ] 64 | }, 65 | 'source': { 66 | 'include': [], 67 | 'includePattern': '.+\\.js(doc)?$', 68 | 'exclude': [], 69 | 'excludePattern': '(^|\\/|\\\\)_' 70 | }, 71 | 'plugins': [ 72 | 'plugins/markdown', 73 | 'node_modules/jsdoc-plugins/plugins/defaultTag', 74 | 'node_modules/jsdoc-plugins/plugins/emberListensTag', 75 | 'node_modules/jsdoc-plugins/plugins/emberObservesTag' 76 | ], 77 | 'templates': { 78 | 'cleverLinks': false, 79 | 'monospaceLinks': false 80 | }, 81 | 'opts': { 82 | 'encoding': 'utf8', 83 | 'template': 'node_modules/ember-cli-jsdoc/jsdocTemplates/default', 84 | 'destination': 'docs', 85 | 'recurse': true, 86 | 'access': 'all' 87 | } 88 | }; 89 | 90 | /** 91 | * Include paths for an Ember App 92 | * 93 | * @type {Array} 94 | */ 95 | var appInclude = [ 96 | 'app', 97 | 'lib', 98 | 'tests/helpers' 99 | ]; 100 | 101 | /** 102 | * Exclude paths for an Ember App 103 | * 104 | * @type {Array} 105 | */ 106 | var appExclude = [ 107 | 'app/styles', 108 | 'app/templates', 109 | 'app/mirage' 110 | ]; 111 | 112 | /** 113 | * Include paths for an Ember Addon 114 | * 115 | * @type {Array} 116 | */ 117 | var addonInclude = [ 118 | 'app', 119 | 'addon', 120 | 'blueprints' 121 | ]; 122 | 123 | /** 124 | * Exclude paths for an Ember Addon 125 | * 126 | * @type {Array} 127 | */ 128 | var addonExclude = [ 129 | 'addon/templates', 130 | 'app/styles', 131 | 'app/templates' 132 | ]; 133 | 134 | /** 135 | * Whether the codebase this addon is being installed into is an Ember App or Addon 136 | * 137 | * @type {Boolean} 138 | */ 139 | var isAddon = ( pkginfo.keywords && pkginfo.keywords.indexOf( 'ember-addon' ) !== -1 ) ? true : false; 140 | 141 | // Include configuration 142 | getPaths( 'include', isAddon ).forEach( function( entry ) { 143 | if ( doesExist( entry ) ) { 144 | config.source.include.push( entry ); 145 | } 146 | }); 147 | 148 | // Exclude configuration 149 | getPaths( 'exclude', isAddon ).forEach( function( entry ) { 150 | if ( doesExist( entry ) ) { 151 | config.source.exclude.push( entry ); 152 | } 153 | }); 154 | 155 | // Configuration for README.md 156 | if ( doesExist( 'README.md' ) ) { 157 | config.opts.readme = 'README.md'; 158 | } 159 | 160 | // Write JSDoc config file 161 | fs.writeFileSync( 162 | 'jsdoc.json', 163 | JSON.stringify( 164 | config, 165 | null, 166 | 2 167 | ) 168 | ); 169 | 170 | // Display status message 171 | this.ui.writeLine( 172 | chalk.green( 173 | 'Generated jsdoc.json for', 174 | isAddon ? 'ember-addon' : 'app', 175 | 'named ' + pkginfo.name 176 | ) 177 | ); 178 | 179 | // NPM dependency 180 | return this.addPackagesToProject([ 181 | { name: 'ember-cli-doc-server', target: '1.1.0' }, 182 | { name: 'jsdoc', target: '3.5.5' }, 183 | { name: 'jsdoc-plugins', target: '1.2.2' } 184 | ]); 185 | 186 | } 187 | }; 188 | -------------------------------------------------------------------------------- /config/ember-try.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const getChannelURL = require('ember-source-channel-url'); 4 | 5 | module.exports = function() { 6 | return Promise.all([ 7 | getChannelURL('release'), 8 | getChannelURL('beta'), 9 | getChannelURL('canary') 10 | ]).then((urls) => { 11 | return { 12 | scenarios: [ 13 | { 14 | name: 'ember-lts-2.16', 15 | env: { 16 | EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }), 17 | }, 18 | npm: { 19 | devDependencies: { 20 | '@ember/jquery': '^0.5.1', 21 | 'ember-source': '~2.16.0' 22 | } 23 | } 24 | }, 25 | { 26 | name: 'ember-lts-2.18', 27 | env: { 28 | EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }), 29 | }, 30 | npm: { 31 | devDependencies: { 32 | '@ember/jquery': '^0.5.1', 33 | 'ember-source': '~2.18.0' 34 | } 35 | } 36 | }, 37 | { 38 | name: 'ember-release', 39 | npm: { 40 | devDependencies: { 41 | 'ember-source': urls[0] 42 | } 43 | } 44 | }, 45 | { 46 | name: 'ember-beta', 47 | npm: { 48 | devDependencies: { 49 | 'ember-source': urls[1] 50 | } 51 | } 52 | }, 53 | { 54 | name: 'ember-canary', 55 | npm: { 56 | devDependencies: { 57 | 'ember-source': urls[2] 58 | } 59 | } 60 | }, 61 | { 62 | name: 'ember-default', 63 | npm: { 64 | devDependencies: {} 65 | } 66 | }, 67 | { 68 | name: 'ember-default-with-jquery', 69 | env: { 70 | EMBER_OPTIONAL_FEATURES: JSON.stringify({ 71 | 'jquery-integration': true 72 | }) 73 | }, 74 | npm: { 75 | devDependencies: { 76 | '@ember/jquery': '^0.5.1' 77 | } 78 | } 79 | } 80 | ] 81 | }; 82 | }); 83 | }; 84 | -------------------------------------------------------------------------------- /config/environment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(/* environment, appConfig */) { 4 | return { }; 5 | }; 6 | -------------------------------------------------------------------------------- /ember-cli-build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); 4 | 5 | module.exports = function(defaults) { 6 | let app = new EmberAddon(defaults, { 7 | // Add options here 8 | }); 9 | 10 | /* 11 | This build file specifies the options for the dummy test app of this 12 | addon, located in `/tests/dummy` 13 | This build file does *not* influence how the addon or the app using it 14 | behave. You most likely want to be modifying `./index.js` or app's build file 15 | */ 16 | 17 | return app.toTree(); 18 | }; 19 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | name: require('./package').name, 5 | 6 | includedCommands: function() { 7 | return { 8 | 'ember-cli-jsdoc': require( './lib/commands/ember-cli-jsdoc' ) 9 | } 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /jsdocTemplates/default/README.md: -------------------------------------------------------------------------------- 1 | The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template). 2 | 3 | 4 | ## Generating Typeface Fonts 5 | 6 | The default template uses the [OpenSans](https://www.google.com/fonts/specimen/Open+Sans) typeface. The font files can be regenerated as follows: 7 | 8 | 1. Open the [OpenSans page at Font Squirrel](). 9 | 2. Click on the 'Webfont Kit' tab. 10 | 3. Either leave the subset drop-down as 'Western Latin (Default)', or, if we decide we need more glyphs, than change it to 'No Subsetting'. 11 | 4. Click the 'DOWNLOAD @FONT-FACE KIT' button. 12 | 5. For each typeface variant we plan to use, copy the 'eot', 'svg' and 'woff' files into the 'templates/default/static/fonts' directory. 13 | -------------------------------------------------------------------------------- /jsdocTemplates/default/publish.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var doop = require('jsdoc/util/doop'); 4 | var env = require('jsdoc/env'); 5 | var fs = require('jsdoc/fs'); 6 | var helper = require('jsdoc/util/templateHelper'); 7 | var logger = require('jsdoc/util/logger'); 8 | var path = require('jsdoc/path'); 9 | var taffy = require('taffydb').taffy; 10 | var template = require('jsdoc/template'); 11 | var util = require('util'); 12 | 13 | var htmlsafe = helper.htmlsafe; 14 | var linkto = helper.linkto; 15 | var resolveAuthorLinks = helper.resolveAuthorLinks; 16 | var hasOwnProp = Object.prototype.hasOwnProperty; 17 | 18 | var data; 19 | var view; 20 | 21 | var outdir = path.normalize(env.opts.destination); 22 | 23 | function find(spec) { 24 | return helper.find(data, spec); 25 | } 26 | 27 | function tutoriallink(tutorial) { 28 | return helper.toTutorial(tutorial, null, { tag: 'em', classname: 'disabled', prefix: 'Tutorial: ' }); 29 | } 30 | 31 | function getAncestorLinks(doclet) { 32 | return helper.getAncestorLinks(data, doclet); 33 | } 34 | 35 | function hashToLink(doclet, hash) { 36 | if ( !/^(#.+)/.test(hash) ) { return hash; } 37 | 38 | var url = helper.createLink(doclet); 39 | 40 | url = url.replace(/(#.+|$)/, hash); 41 | return '' + hash + ''; 42 | } 43 | 44 | function needsSignature(doclet) { 45 | var needsSig = false; 46 | 47 | // function and class definitions always get a signature 48 | if (doclet.kind === 'function' || doclet.kind === 'class') { 49 | needsSig = true; 50 | } 51 | // typedefs that contain functions get a signature, too 52 | else if (doclet.kind === 'typedef' && doclet.type && doclet.type.names && 53 | doclet.type.names.length) { 54 | for (var i = 0, l = doclet.type.names.length; i < l; i++) { 55 | if (doclet.type.names[i].toLowerCase() === 'function') { 56 | needsSig = true; 57 | break; 58 | } 59 | } 60 | } 61 | 62 | return needsSig; 63 | } 64 | 65 | function getSignatureAttributes(item) { 66 | var attributes = []; 67 | 68 | if (item.optional) { 69 | attributes.push('opt'); 70 | } 71 | 72 | if (item.nullable === true) { 73 | attributes.push('nullable'); 74 | } 75 | else if (item.nullable === false) { 76 | attributes.push('non-null'); 77 | } 78 | 79 | return attributes; 80 | } 81 | 82 | function updateItemName(item) { 83 | var attributes = getSignatureAttributes(item); 84 | var itemName = item.name || ''; 85 | 86 | if (item.variable) { 87 | itemName = '…' + itemName; 88 | } 89 | 90 | if (attributes && attributes.length) { 91 | itemName = util.format( '%s%s', itemName, 92 | attributes.join(', ') ); 93 | } 94 | 95 | return itemName; 96 | } 97 | 98 | function addParamAttributes(params) { 99 | return params.filter(function(param) { 100 | return param.name && param.name.indexOf('.') === -1; 101 | }).map(updateItemName); 102 | } 103 | 104 | function buildItemTypeStrings(item) { 105 | var types = []; 106 | 107 | if (item && item.type && item.type.names) { 108 | item.type.names.forEach(function(name) { 109 | types.push( linkto(name, htmlsafe(name)) ); 110 | }); 111 | } 112 | 113 | return types; 114 | } 115 | 116 | function buildAttribsString(attribs) { 117 | var attribsString = ''; 118 | 119 | if (attribs && attribs.length) { 120 | attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) ); 121 | } 122 | 123 | return attribsString; 124 | } 125 | 126 | function addNonParamAttributes(items) { 127 | var types = []; 128 | 129 | items.forEach(function(item) { 130 | types = types.concat( buildItemTypeStrings(item) ); 131 | }); 132 | 133 | return types; 134 | } 135 | 136 | function addSignatureParams(f) { 137 | var params = f.params ? addParamAttributes(f.params) : []; 138 | 139 | f.signature = util.format( '%s(%s)', (f.signature || ''), params.join(', ') ); 140 | } 141 | 142 | function addSignatureReturns(f) { 143 | var attribs = []; 144 | var attribsString = ''; 145 | var returnTypes = []; 146 | var returnTypesString = ''; 147 | 148 | // jam all the return-type attributes into an array. this could create odd results (for example, 149 | // if there are both nullable and non-nullable return types), but let's assume that most people 150 | // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa. 151 | if (f.returns) { 152 | f.returns.forEach(function(item) { 153 | helper.getAttribs(item).forEach(function(attrib) { 154 | if (attribs.indexOf(attrib) === -1) { 155 | attribs.push(attrib); 156 | } 157 | }); 158 | }); 159 | 160 | attribsString = buildAttribsString(attribs); 161 | } 162 | 163 | if (f.returns) { 164 | returnTypes = addNonParamAttributes(f.returns); 165 | } 166 | if (returnTypes.length) { 167 | returnTypesString = util.format( ' → %s{%s}', attribsString, returnTypes.join('|') ); 168 | } 169 | 170 | f.signature = '' + (f.signature || '') + '' + 171 | '' + returnTypesString + ''; 172 | } 173 | 174 | function addSignatureTypes(f) { 175 | var types = f.type ? buildItemTypeStrings(f) : []; 176 | 177 | f.signature = (f.signature || '') + '' + 178 | (types.length ? ' :' + types.join('|') : '') + ''; 179 | } 180 | 181 | function addAttribs(f) { 182 | var attribs = helper.getAttribs(f); 183 | var attribsString = buildAttribsString(attribs); 184 | 185 | f.attribs = util.format('%s', attribsString); 186 | } 187 | 188 | function shortenPaths(files, commonPrefix) { 189 | Object.keys(files).forEach(function(file) { 190 | files[file].shortened = files[file].resolved.replace(commonPrefix, '') 191 | // always use forward slashes 192 | .replace(/\\/g, '/'); 193 | }); 194 | 195 | return files; 196 | } 197 | 198 | function getPathFromDoclet(doclet) { 199 | if (!doclet.meta) { 200 | return null; 201 | } 202 | 203 | return doclet.meta.path && doclet.meta.path !== 'null' ? 204 | path.join(doclet.meta.path, doclet.meta.filename) : 205 | doclet.meta.filename; 206 | } 207 | 208 | function generate(title, docs, filename, resolveLinks) { 209 | resolveLinks = resolveLinks === false ? false : true; 210 | 211 | var docData = { 212 | env: env, 213 | title: title, 214 | docs: docs 215 | }; 216 | 217 | var outpath = path.join(outdir, filename), 218 | html = view.render('container.tmpl', docData); 219 | 220 | if (resolveLinks) { 221 | html = helper.resolveLinks(html); // turn {@link foo} into foo 222 | } 223 | 224 | fs.writeFileSync(outpath, html, 'utf8'); 225 | } 226 | 227 | function generateSourceFiles(sourceFiles, encoding) { 228 | encoding = encoding || 'utf8'; 229 | Object.keys(sourceFiles).forEach(function(file) { 230 | var source; 231 | // links are keyed to the shortened path in each doclet's `meta.shortpath` property 232 | var sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened); 233 | helper.registerLink(sourceFiles[file].shortened, sourceOutfile); 234 | 235 | try { 236 | source = { 237 | kind: 'source', 238 | code: helper.htmlsafe( fs.readFileSync(sourceFiles[file].resolved, encoding) ) 239 | }; 240 | } 241 | catch(e) { 242 | logger.error('Error while generating source file %s: %s', file, e.message); 243 | } 244 | 245 | generate('Source: ' + sourceFiles[file].shortened, [source], sourceOutfile, 246 | false); 247 | }); 248 | } 249 | 250 | /** 251 | * Look for classes or functions with the same name as modules (which indicates that the module 252 | * exports only that class or function), then attach the classes or functions to the `module` 253 | * property of the appropriate module doclets. The name of each class or function is also updated 254 | * for display purposes. This function mutates the original arrays. 255 | * 256 | * @private 257 | * @param {Array.} doclets - The array of classes and functions to 258 | * check. 259 | * @param {Array.} modules - The array of module doclets to search. 260 | */ 261 | function attachModuleSymbols(doclets, modules) { 262 | var symbols = {}; 263 | 264 | // build a lookup table 265 | doclets.forEach(function(symbol) { 266 | symbols[symbol.longname] = symbols[symbol.longname] || []; 267 | symbols[symbol.longname].push(symbol); 268 | }); 269 | 270 | return modules.map(function(module) { 271 | if (symbols[module.longname]) { 272 | module.modules = symbols[module.longname] 273 | // Only show symbols that have a description. Make an exception for classes, because 274 | // we want to show the constructor-signature heading no matter what. 275 | .filter(function(symbol) { 276 | return symbol.description || symbol.kind === 'class'; 277 | }) 278 | .map(function(symbol) { 279 | symbol = doop(symbol); 280 | 281 | if (symbol.kind === 'class' || symbol.kind === 'function') { 282 | symbol.name = symbol.name.replace('module:', '(require("') + '"))'; 283 | } 284 | 285 | return symbol; 286 | }); 287 | } 288 | }); 289 | } 290 | 291 | function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) { 292 | var nav = ''; 293 | 294 | if (items.length) { 295 | var itemsNav = ''; 296 | 297 | items.forEach(function(item) { 298 | if ( !hasOwnProp.call(item, 'longname') ) { 299 | itemsNav += '
  • ' + linktoFn('', item.name) + '
  • '; 300 | } 301 | else if ( !hasOwnProp.call(itemsSeen, item.longname) ) { 302 | itemsNav += '
  • ' + linktoFn(item.longname, item.name.replace(/^module:/, '')) + '
  • '; 303 | itemsSeen[item.longname] = true; 304 | } 305 | }); 306 | 307 | if (itemsNav !== '') { 308 | nav += '

    ' + itemHeading + '

      ' + itemsNav + '
    '; 309 | } 310 | } 311 | 312 | return nav; 313 | } 314 | 315 | function linktoTutorial(longName, name) { 316 | return tutoriallink(name); 317 | } 318 | 319 | function linktoExternal(longName, name) { 320 | return linkto(longName, name.replace(/(^"|"$)/g, '')); 321 | } 322 | 323 | /** 324 | * Create the navigation sidebar. 325 | * @param {object} members The members that will be used to create the sidebar. 326 | * @param {array} members.classes 327 | * @param {array} members.externals 328 | * @param {array} members.globals 329 | * @param {array} members.mixins 330 | * @param {array} members.modules 331 | * @param {array} members.namespaces 332 | * @param {array} members.tutorials 333 | * @param {array} members.events 334 | * @param {array} members.interfaces 335 | * @return {string} The HTML for the navigation sidebar. 336 | */ 337 | function buildNav(members) { 338 | var nav = '

    Home

    '; 339 | var seen = {}; 340 | var seenTutorials = {}; 341 | 342 | nav += buildMemberNav(members.modules, 'Modules', {}, linkto); 343 | nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal); 344 | nav += buildMemberNav(members.classes, 'Classes', seen, linkto); 345 | nav += buildMemberNav(members.events, 'Events', seen, linkto); 346 | nav += buildMemberNav(members.namespaces, 'Namespaces', seen, linkto); 347 | nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto); 348 | nav += buildMemberNav(members.tutorials, 'Tutorials', seenTutorials, linktoTutorial); 349 | nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto); 350 | 351 | if (members.globals.length) { 352 | var globalNav = ''; 353 | 354 | members.globals.forEach(function(g) { 355 | if ( g.kind !== 'typedef' && !hasOwnProp.call(seen, g.longname) ) { 356 | globalNav += '
  • ' + linkto(g.longname, g.name) + '
  • '; 357 | } 358 | seen[g.longname] = true; 359 | }); 360 | 361 | if (!globalNav) { 362 | // turn the heading into a link so you can actually get to the global page 363 | nav += '

    ' + linkto('global', 'Global') + '

    '; 364 | } 365 | else { 366 | nav += '

    Global

      ' + globalNav + '
    '; 367 | } 368 | } 369 | 370 | return nav; 371 | } 372 | 373 | /** 374 | @param {TAFFY} taffyData See . 375 | @param {object} opts 376 | @param {Tutorial} tutorials 377 | */ 378 | exports.publish = function(taffyData, opts, tutorials) { 379 | data = taffyData; 380 | 381 | var conf = env.conf.templates || {}; 382 | conf.default = conf.default || {}; 383 | 384 | var templatePath = path.normalize(opts.template); 385 | view = new template.Template( path.join(templatePath, 'tmpl') ); 386 | 387 | // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness 388 | // doesn't try to hand them out later 389 | var indexUrl = helper.getUniqueFilename('index'); 390 | // don't call registerLink() on this one! 'index' is also a valid longname 391 | 392 | var globalUrl = helper.getUniqueFilename('global'); 393 | helper.registerLink('global', globalUrl); 394 | 395 | // set up templating 396 | view.layout = conf.default.layoutFile ? 397 | path.getResourcePath(path.dirname(conf.default.layoutFile), 398 | path.basename(conf.default.layoutFile) ) : 399 | 'layout.tmpl'; 400 | 401 | // set up tutorials for helper 402 | helper.setTutorials(tutorials); 403 | 404 | data = helper.prune(data); 405 | data.sort('longname, version, since'); 406 | helper.addEventListeners(data); 407 | 408 | var sourceFiles = {}; 409 | var sourceFilePaths = []; 410 | data().each(function(doclet) { 411 | doclet.attribs = ''; 412 | 413 | if (doclet.examples) { 414 | doclet.examples = doclet.examples.map(function(example) { 415 | var caption, code; 416 | 417 | if (example.match(/^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { 418 | caption = RegExp.$1; 419 | code = RegExp.$3; 420 | } 421 | 422 | return { 423 | caption: caption || '', 424 | code: code || example 425 | }; 426 | }); 427 | } 428 | if (doclet.see) { 429 | doclet.see.forEach(function(seeItem, i) { 430 | doclet.see[i] = hashToLink(doclet, seeItem); 431 | }); 432 | } 433 | 434 | // build a list of source files 435 | var sourcePath; 436 | if (doclet.meta) { 437 | sourcePath = getPathFromDoclet(doclet); 438 | sourceFiles[sourcePath] = { 439 | resolved: sourcePath, 440 | shortened: null 441 | }; 442 | if (sourceFilePaths.indexOf(sourcePath) === -1) { 443 | sourceFilePaths.push(sourcePath); 444 | } 445 | } 446 | }); 447 | 448 | // update outdir if necessary, then create outdir 449 | var packageInfo = ( find({kind: 'package'}) || [] ) [0]; 450 | if (packageInfo && packageInfo.name) { 451 | outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') ); 452 | } 453 | fs.mkPath(outdir); 454 | 455 | // copy the template's static files to outdir 456 | var fromDir = path.join(templatePath, 'static'); 457 | var staticFiles = fs.ls(fromDir, 3); 458 | 459 | staticFiles.forEach(function(fileName) { 460 | var toDir = fs.toDir( fileName.replace(fromDir, outdir) ); 461 | fs.mkPath(toDir); 462 | fs.copyFileSync(fileName, toDir); 463 | }); 464 | 465 | // copy user-specified static files to outdir 466 | var staticFilePaths; 467 | var staticFileFilter; 468 | var staticFileScanner; 469 | if (conf.default.staticFiles) { 470 | // The canonical property name is `include`. We accept `paths` for backwards compatibility 471 | // with a bug in JSDoc 3.2.x. 472 | staticFilePaths = conf.default.staticFiles.include || 473 | conf.default.staticFiles.paths || 474 | []; 475 | staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf.default.staticFiles); 476 | staticFileScanner = new (require('jsdoc/src/scanner')).Scanner(); 477 | 478 | staticFilePaths.forEach(function(filePath) { 479 | var extraStaticFiles; 480 | 481 | filePath = path.resolve(env.pwd, filePath); 482 | extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); 483 | 484 | extraStaticFiles.forEach(function(fileName) { 485 | var sourcePath = fs.toDir(filePath); 486 | var toDir = fs.toDir( fileName.replace(sourcePath, outdir) ); 487 | fs.mkPath(toDir); 488 | fs.copyFileSync(fileName, toDir); 489 | }); 490 | }); 491 | } 492 | 493 | if (sourceFilePaths.length) { 494 | sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); 495 | } 496 | data().each(function(doclet) { 497 | var url = helper.createLink(doclet); 498 | helper.registerLink(doclet.longname, url); 499 | 500 | // add a shortened version of the full path 501 | var docletPath; 502 | if (doclet.meta) { 503 | docletPath = getPathFromDoclet(doclet); 504 | docletPath = sourceFiles[docletPath].shortened; 505 | if (docletPath) { 506 | doclet.meta.shortpath = docletPath; 507 | } 508 | } 509 | }); 510 | 511 | data().each(function(doclet) { 512 | var url = helper.longnameToUrl[doclet.longname]; 513 | 514 | if (url.indexOf('#') > -1) { 515 | doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); 516 | } 517 | else { 518 | doclet.id = doclet.name; 519 | } 520 | 521 | if ( needsSignature(doclet) ) { 522 | addSignatureParams(doclet); 523 | addSignatureReturns(doclet); 524 | addAttribs(doclet); 525 | } 526 | }); 527 | 528 | // do this after the urls have all been generated 529 | data().each(function(doclet) { 530 | doclet.ancestors = getAncestorLinks(doclet); 531 | 532 | if (doclet.kind === 'member') { 533 | addSignatureTypes(doclet); 534 | addAttribs(doclet); 535 | } 536 | 537 | if (doclet.kind === 'constant') { 538 | addSignatureTypes(doclet); 539 | addAttribs(doclet); 540 | doclet.kind = 'member'; 541 | } 542 | }); 543 | 544 | var members = helper.getMembers(data); 545 | members.tutorials = tutorials.children; 546 | 547 | // output pretty-printed source files by default 548 | var outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false ? true : 549 | false; 550 | 551 | // add template helpers 552 | view.find = find; 553 | view.linkto = linkto; 554 | view.resolveAuthorLinks = resolveAuthorLinks; 555 | view.tutoriallink = tutoriallink; 556 | view.htmlsafe = htmlsafe; 557 | view.outputSourceFiles = outputSourceFiles; 558 | 559 | // once for all 560 | view.nav = buildNav(members); 561 | attachModuleSymbols( find({ longname: {left: 'module:'} }), members.modules ); 562 | 563 | // generate the pretty-printed source files first so other pages can link to them 564 | if (outputSourceFiles) { 565 | generateSourceFiles(sourceFiles, opts.encoding); 566 | } 567 | 568 | if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); } 569 | 570 | // index page displays information from package.json and lists files 571 | var files = find({kind: 'file'}), 572 | packages = find({kind: 'package'}); 573 | 574 | generate('Home', 575 | packages.concat( 576 | [{kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}] 577 | ).concat(files), 578 | indexUrl); 579 | 580 | // set up the lists that we'll use to generate pages 581 | var classes = taffy(members.classes); 582 | var modules = taffy(members.modules); 583 | var namespaces = taffy(members.namespaces); 584 | var mixins = taffy(members.mixins); 585 | var externals = taffy(members.externals); 586 | var interfaces = taffy(members.interfaces); 587 | 588 | Object.keys(helper.longnameToUrl).forEach(function(longname) { 589 | var myModules = helper.find(modules, {longname: longname}); 590 | if (myModules.length) { 591 | generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]); 592 | } 593 | 594 | var myClasses = helper.find(classes, {longname: longname}); 595 | if (myClasses.length) { 596 | generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]); 597 | } 598 | 599 | var myNamespaces = helper.find(namespaces, {longname: longname}); 600 | if (myNamespaces.length) { 601 | generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]); 602 | } 603 | 604 | var myMixins = helper.find(mixins, {longname: longname}); 605 | if (myMixins.length) { 606 | generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]); 607 | } 608 | 609 | var myExternals = helper.find(externals, {longname: longname}); 610 | if (myExternals.length) { 611 | generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]); 612 | } 613 | 614 | var myInterfaces = helper.find(interfaces, {longname: longname}); 615 | if (myInterfaces.length) { 616 | generate('Interface: ' + myInterfaces[0].name, myInterfaces, helper.longnameToUrl[longname]); 617 | } 618 | }); 619 | 620 | // TODO: move the tutorial functions to templateHelper.js 621 | function generateTutorial(title, tutorial, filename) { 622 | var tutorialData = { 623 | title: title, 624 | header: tutorial.title, 625 | content: tutorial.parse(), 626 | children: tutorial.children 627 | }; 628 | 629 | var tutorialPath = path.join(outdir, filename), 630 | html = view.render('tutorial.tmpl', tutorialData); 631 | 632 | // yes, you can use {@link} in tutorials too! 633 | html = helper.resolveLinks(html); // turn {@link foo} into foo 634 | 635 | fs.writeFileSync(tutorialPath, html, 'utf8'); 636 | } 637 | 638 | // tutorials can have only one parent so there is no risk for loops 639 | function saveChildren(node) { 640 | node.children.forEach(function(child) { 641 | generateTutorial('Tutorial: ' + child.title, child, helper.tutorialToUrl(child.name)); 642 | saveChildren(child); 643 | }); 644 | } 645 | saveChildren(tutorials); 646 | }; 647 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /jsdocTemplates/default/static/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/jsdocTemplates/default/static/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /jsdocTemplates/default/static/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/scripts/prettify/Apache-License-2.0.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/scripts/prettify/prettify.js: -------------------------------------------------------------------------------- 1 | var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; 2 | (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= 3 | [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p p:first-child, 338 | .props td.description > p:first-child 339 | { 340 | margin-top: 0; 341 | padding-top: 0; 342 | } 343 | 344 | .params td.description > p:last-child, 345 | .props td.description > p:last-child 346 | { 347 | margin-bottom: 0; 348 | padding-bottom: 0; 349 | } 350 | 351 | .disabled { 352 | color: #454545; 353 | } 354 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /jsdocTemplates/default/static/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/augments.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
      8 |
    • 9 |
    10 | 11 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/container.tmpl: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
    21 | 22 |
    23 | 24 |

    25 | 26 | 27 | 28 | 29 | 30 |

    31 | 32 |
    33 | 34 | 35 | 36 | 37 |
    38 | 39 | 40 | 41 |
    42 | 43 |
    44 |
    45 | 46 | 47 |
    48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
    58 | 59 | 60 | 61 | 62 | 63 |

    Example 1? 's':'' ?>

    64 | 65 | 66 | 67 |
    68 | 69 | 70 |

    Extends

    71 | 72 | 73 | 74 | 75 | 76 |

    Requires

    77 | 78 |
      79 |
    • 80 |
    81 | 82 | 83 | 87 |

    Classes

    88 | 89 |
    90 |
    91 |
    92 |
    93 | 94 | 95 | 99 |

    Mixins

    100 | 101 |
    102 |
    103 |
    104 |
    105 | 106 | 107 | 111 |

    Namespaces

    112 | 113 |
    114 |
    115 |
    116 |
    117 | 118 | 119 | 130 |

    Members

    131 | 132 | 133 | 134 | 135 | 136 | 137 | 141 |

    Methods

    142 | 143 | 144 | 145 | 146 | 147 | 148 | 152 |

    Type Definitions

    153 | 154 | 157 | 158 | 162 | 163 | 166 | 167 | 168 | 172 |

    Events

    173 | 174 | 175 | 176 | 177 | 178 |
    179 | 180 |
    181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/details.tmpl: -------------------------------------------------------------------------------- 1 | " + data.defaultvalue + ""; 9 | defaultObjectClass = ' class="object-value"'; 10 | } 11 | ?> 12 | 16 | 17 |
    Properties:
    18 | 19 | 20 | 21 | 22 | 23 |
    24 | 25 | 26 |
    Version:
    27 |
    28 | 29 | 30 | 31 |
    Since:
    32 |
    33 | 34 | 35 | 36 |
    Inherited From:
    37 |
    • 38 | 39 |
    40 | 41 | 42 | 43 |
    Overrides:
    44 |
    • 45 | 46 |
    47 | 48 | 49 | 50 |
    Implementations:
    51 |
      52 | 53 |
    • 54 | 55 |
    56 | 57 | 58 | 59 |
    Implements:
    60 |
      61 | 62 |
    • 63 | 64 |
    65 | 66 | 67 | 68 |
    Mixes In:
    69 | 70 |
      71 | 72 |
    • 73 | 74 |
    75 | 76 | 77 | 78 |
    Deprecated:
    • Yes
    82 | 83 | 84 | 85 |
    Author:
    86 |
    87 |
      88 |
    • 89 |
    90 |
    91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
    License:
    100 |
    101 | 102 | 103 | 104 |
    Default Value:
    105 |
      106 | > 107 |
    108 | 109 | 110 | 111 |
    Source:
    112 |
    • 113 | , 114 |
    115 | 116 | 117 | 118 |
    Tutorials:
    119 |
    120 |
      121 |
    • 122 |
    123 |
    124 | 125 | 126 | 127 |
    See:
    128 |
    129 |
      130 |
    • 131 |
    132 |
    133 | 134 | 135 | 136 |
    To Do:
    137 |
    138 |
      139 |
    • 140 |
    141 |
    142 | 143 |
    144 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 8 |

    9 | 10 |
    11 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/exceptions.tmpl: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 |
    7 |
    8 | 9 |
    10 |
    11 |
    12 |
    13 |
    14 |
    15 | Type 16 |
    17 |
    18 | 19 |
    20 |
    21 |
    22 |
    23 |
    24 | 25 |
    26 | 27 | 28 | 29 | 30 | 31 |
    32 | 33 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: <?js= title ?> 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    21 | 22 | 23 |
    24 | 25 | 28 | 29 |
    30 | 31 |
    32 | Documentation generated by JSDoc on 33 |
    34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

    8 | 9 | 10 | 11 |
    12 |
    13 |
    14 | 15 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | 5 |

    6 | 7 | 8 |

    9 | 10 | 11 | 12 |
    13 | 14 |
    15 | 16 | 17 | 18 |
    Type:
    19 |
      20 |
    • 21 | 22 |
    • 23 |
    24 | 25 | 26 | 27 | 28 | 29 |
    Fires:
    30 |
      31 |
    • 32 |
    33 | 34 | 35 | 36 |
    Example 1? 's':'' ?>
    37 | 38 | 39 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/method.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

    Constructor

    8 | 9 | 10 |

    12 | 13 | 14 |

    15 | 16 | 17 | 18 | 19 |
    20 | 21 |
    22 | 23 | 24 | 25 |
    Extends:
    26 | 27 | 28 | 29 | 30 |
    Type:
    31 |
      32 |
    • 33 | 34 |
    • 35 |
    36 | 37 | 38 | 39 |
    This:
    40 |
    41 | 42 | 43 | 44 |
    Parameters:
    45 | 46 | 47 | 48 | 49 | 50 | 51 |
    Requires:
    52 |
      53 |
    • 54 |
    55 | 56 | 57 | 58 |
    Fires:
    59 |
      60 |
    • 61 |
    62 | 63 | 64 | 65 |
    Listens to Events:
    66 |
      67 |
    • 68 |
    69 | 70 | 71 | 72 |
    Listeners of This Event:
    73 |
      74 |
    • 75 |
    76 | 77 | 78 | 79 |
    Observes:
    80 |
      81 |
    • 82 |
    83 | 84 | 85 | 86 |
    Throws:
    87 | 1) { ?>
      89 |
    • 90 |
    93 | 94 | 96 | 97 | 98 |
    Returns:
    99 | 1) { ?>
      101 |
    • 102 |
    105 | 106 | 108 | 109 | 110 |
    Example 1? 's':'' ?>
    111 | 112 | 113 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/params.tmpl: -------------------------------------------------------------------------------- 1 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 91 | 92 | 93 | 106 | 107 | 108 | 109 | 114 | 115 | 116 | 120 | 121 | 122 | 123 | 124 |
    NameTypeAttributesDefaultDescription
    87 | 88 | 89 | 90 | 94 | 95 | <optional>
    96 | 97 | 98 | 99 | <nullable>
    100 | 101 | 102 | 103 | <repeatable>
    104 | 105 |
    110 | 111 | 112 | 113 | 117 |
    Properties
    118 | 119 |
    125 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/properties.tmpl: -------------------------------------------------------------------------------- 1 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 80 | 81 | 82 | 91 | 92 | 93 | 94 | 99 | 100 | 101 | 104 | 105 | 106 | 107 | 108 |
    NameTypeAttributesDefaultDescription
    76 | 77 | 78 | 79 | 83 | 84 | <optional>
    85 | 86 | 87 | 88 | <nullable>
    89 | 90 |
    95 | 96 | 97 | 98 | 102 |
    Properties
    103 |
    109 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 | 7 |
    8 | 9 | 10 | 11 |
    12 |
    13 | Type 14 |
    15 |
    16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
    5 |
    6 |
    7 |
    8 |
    -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | 0) { ?> 5 |
      8 |
    • 9 |
    10 | 11 | 12 |

    13 |
    14 | 15 |
    16 | 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /jsdocTemplates/default/tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/lib/.DS_Store -------------------------------------------------------------------------------- /lib/commands/ember-cli-jsdoc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var exec = require( 'child_process' ).exec; 4 | var execSync = require( 'child_process' ).execSync; 5 | var rsvp = require( 'rsvp' ); 6 | var path = require( 'path' ); 7 | var chalk = require( 'chalk' ); 8 | var nodeBinPath = execSync( 'npm bin' ); 9 | 10 | module.exports = { 11 | name: 'ember-cli-jsdoc', 12 | 13 | run: function() { 14 | var cmdPath = ( Number( process.version.match( /^v(\d+)/ )[1] ) === 3 ) ? 15 | path.join( 'node_modules', 'ember-cli-jsdoc', 'node_modules', '.bin', 'jsdoc' ) : 16 | path.join( nodeBinPath.toString('utf8').trim(), 'jsdoc' ); 17 | 18 | return new rsvp.Promise( function( resolve, reject ) { 19 | exec( cmdPath + ' -c jsdoc.json', { cwd: process.cwd() }, function( error, stdout, stderr ) { 20 | // eslint-disable-next-line no-console 21 | console.log( stderr ); 22 | 23 | var shouldReject = false; 24 | 25 | if ( error ) { 26 | // eslint-disable-next-line no-console 27 | console.log( chalk.red( 'EMBER-CLI-JSDOC: ERRORS have occurred during documentation generation' ) ); 28 | shouldReject = true; 29 | } 30 | 31 | if ( /WARNING/.test( stderr ) ) { 32 | // eslint-disable-next-line no-console 33 | console.log( chalk.yellow( 'EMBER-CLI-JSDOC: WARNINGS have occurred during documentation generation' ) ); 34 | } 35 | 36 | if ( shouldReject ) { 37 | reject(); 38 | 39 | } else { 40 | // eslint-disable-next-line no-console 41 | console.log( chalk.green( 'EMBER-CLI-JSDOC: Documentation was successfully generated' ) ); 42 | resolve(); 43 | } 44 | }); 45 | }); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ember-cli-jsdoc", 3 | "version": "3.0.0", 4 | "description": "Generate documentation of your app/addon from your JSDoc comments", 5 | "scripts": { 6 | "build": "ember build", 7 | "lint:hbs": "ember-template-lint .", 8 | "lint:js": "eslint .", 9 | "start": "ember serve", 10 | "test": "ember test", 11 | "test:all": "ember try:each" 12 | }, 13 | "homepage": "http://softlayer.github.io/ember-cli-jsdoc/", 14 | "bugs": "https://github.com/softlayer/ember-cli-jsdoc/issues", 15 | "engines": { 16 | "node": "6.* || 8.* || >= 10.*" 17 | }, 18 | "keywords": [ 19 | "ember-addon", 20 | "jsdoc", 21 | "documentation", 22 | "comments", 23 | "docblock" 24 | ], 25 | "repository": { 26 | "type": "git", 27 | "url": "http://github.com/softlayer/ember-cli-jsdoc.git" 28 | }, 29 | "license": "MIT", 30 | "author": "Jeremy Brown (http://www.notmessenger.com/)", 31 | "dependencies": { 32 | "chalk": "1.1.3", 33 | "ember-cli-babel": "^7.1.0", 34 | "jsdoc": "3.5.5", 35 | "jsdoc-plugins": "1.2.2", 36 | "rsvp": "3.0.18" 37 | }, 38 | "devDependencies": { 39 | "@ember/optional-features": "^0.6.3", 40 | "broccoli-asset-rev": "^2.7.0", 41 | "ember-ajax": "^3.1.0", 42 | "ember-cli": "~3.5.0", 43 | "ember-cli-dependency-checker": "^3.0.0", 44 | "ember-cli-eslint": "^4.2.3", 45 | "ember-cli-htmlbars": "^3.0.0", 46 | "ember-cli-htmlbars-inline-precompile": "^1.0.3", 47 | "ember-cli-inject-live-reload": "^1.8.2", 48 | "ember-cli-template-lint": "^1.0.0-beta.1", 49 | "ember-cli-uglify": "^2.1.0", 50 | "ember-disable-prototype-extensions": "^1.1.3", 51 | "ember-disable-proxy-controllers": "1.0.2", 52 | "ember-export-application-global": "^2.0.0", 53 | "ember-load-initializers": "^1.1.0", 54 | "ember-maybe-import-regenerator": "^0.1.6", 55 | "ember-qunit": "^3.4.1", 56 | "ember-resolver": "^5.0.1", 57 | "ember-source": "~3.5.0", 58 | "ember-source-channel-url": "^1.1.0", 59 | "ember-try": "^1.0.0", 60 | "eslint-plugin-ember": "^5.2.0", 61 | "eslint-plugin-node": "^7.0.1", 62 | "loader.js": "^4.7.0", 63 | "qunit-dom": "^0.8.0" 64 | }, 65 | "ember-addon": { 66 | "configPath": "tests/dummy/config" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /testem.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | test_page: 'tests/index.html?hidepassed', 3 | disable_watching: true, 4 | launch_in_ci: [ 5 | 'Chrome' 6 | ], 7 | launch_in_dev: [ 8 | 'Chrome' 9 | ], 10 | browser_args: { 11 | Chrome: { 12 | ci: [ 13 | // --no-sandbox is needed when running Chrome inside a container 14 | process.env.CI ? '--no-sandbox' : null, 15 | '--headless', 16 | '--disable-gpu', 17 | '--disable-dev-shm-usage', 18 | '--disable-software-rasterizer', 19 | '--mute-audio', 20 | '--remote-debugging-port=0', 21 | '--window-size=1440,900' 22 | ].filter(Boolean) 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /tests/dummy/app/app.js: -------------------------------------------------------------------------------- 1 | import Application from '@ember/application'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | 6 | const App = Application.extend({ 7 | modulePrefix: config.modulePrefix, 8 | podModulePrefix: config.podModulePrefix, 9 | Resolver 10 | }); 11 | 12 | loadInitializers(App, config.modulePrefix); 13 | 14 | export default App; 15 | -------------------------------------------------------------------------------- /tests/dummy/app/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/components/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/controllers/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/helpers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/helpers/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dummy 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | {{content-for "head-footer"}} 16 | 17 | 18 | {{content-for "body"}} 19 | 20 | 21 | 22 | 23 | {{content-for "body-footer"}} 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/dummy/app/models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/models/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /tests/dummy/app/router.js: -------------------------------------------------------------------------------- 1 | import EmberRouter from '@ember/routing/router'; 2 | import config from './config/environment'; 3 | 4 | const Router = EmberRouter.extend({ 5 | location: config.locationType, 6 | rootURL: config.rootURL 7 | }); 8 | 9 | Router.map(function() { 10 | }); 11 | 12 | export default Router; 13 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/routes/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/app/styles/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/styles/app.css -------------------------------------------------------------------------------- /tests/dummy/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |

    Welcome to Ember

    2 | 3 | {{outlet}} 4 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/dummy/app/templates/components/.gitkeep -------------------------------------------------------------------------------- /tests/dummy/config/environment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(environment) { 4 | let ENV = { 5 | modulePrefix: 'dummy', 6 | environment, 7 | rootURL: '/', 8 | locationType: 'auto', 9 | EmberENV: { 10 | FEATURES: { 11 | // Here you can enable experimental features on an ember canary build 12 | // e.g. 'with-controller': true 13 | }, 14 | EXTEND_PROTOTYPES: { 15 | // Prevent Ember Data from overriding Date.parse. 16 | Date: false 17 | } 18 | }, 19 | 20 | APP: { 21 | // Here you can pass flags/options to your application instance 22 | // when it is created 23 | } 24 | }; 25 | 26 | if (environment === 'development') { 27 | // ENV.APP.LOG_RESOLVER = true; 28 | // ENV.APP.LOG_ACTIVE_GENERATION = true; 29 | // ENV.APP.LOG_TRANSITIONS = true; 30 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 31 | // ENV.APP.LOG_VIEW_LOOKUPS = true; 32 | } 33 | 34 | if (environment === 'test') { 35 | // Testem prefers this... 36 | ENV.locationType = 'none'; 37 | 38 | // keep test console output quieter 39 | ENV.APP.LOG_ACTIVE_GENERATION = false; 40 | ENV.APP.LOG_VIEW_LOOKUPS = false; 41 | 42 | ENV.APP.rootElement = '#ember-testing'; 43 | ENV.APP.autoboot = false; 44 | } 45 | 46 | if (environment === 'production') { 47 | // here you can enable a production-specific feature 48 | } 49 | 50 | return ENV; 51 | }; 52 | -------------------------------------------------------------------------------- /tests/dummy/config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "jquery-integration": false 3 | } 4 | -------------------------------------------------------------------------------- /tests/dummy/config/targets.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const browsers = [ 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions' 7 | ]; 8 | 9 | const isCI = !!process.env.CI; 10 | const isProduction = process.env.EMBER_ENV === 'production'; 11 | 12 | if (isCI || isProduction) { 13 | browsers.push('ie 11'); 14 | } 15 | 16 | module.exports = { 17 | browsers 18 | }; 19 | -------------------------------------------------------------------------------- /tests/dummy/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /tests/helpers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/helpers/.gitkeep -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dummy Tests 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | {{content-for "test-head"}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | {{content-for "test-head-footer"}} 19 | 20 | 21 | {{content-for "body"}} 22 | {{content-for "test-body"}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{content-for "body-footer"}} 31 | {{content-for "test-body-footer"}} 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import Application from '../app'; 2 | import config from '../config/environment'; 3 | import { setApplication } from '@ember/test-helpers'; 4 | import { start } from 'ember-qunit'; 5 | 6 | setApplication(Application.create(config.APP)); 7 | 8 | start(); 9 | -------------------------------------------------------------------------------- /tests/unit/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/tests/unit/.gitkeep -------------------------------------------------------------------------------- /vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/softlayer/ember-cli-jsdoc/53926ad5abedd2375b772d2d1a85dc2e4ab5bbfd/vendor/.gitkeep --------------------------------------------------------------------------------