From 8072435bd61ebe16bdc85bc83a2e8f72064c2f1a Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Thu, 28 Dec 2017 19:46:57 +0100 Subject: [PATCH 01/42] Removed unnecessary parameter --- Kapitel6/codecoverage/blanket-mocha/src/ArtistRepository.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kapitel6/codecoverage/blanket-mocha/src/ArtistRepository.js b/Kapitel6/codecoverage/blanket-mocha/src/ArtistRepository.js index 22a736f..5ebd34d 100644 --- a/Kapitel6/codecoverage/blanket-mocha/src/ArtistRepository.js +++ b/Kapitel6/codecoverage/blanket-mocha/src/ArtistRepository.js @@ -15,7 +15,7 @@ ArtistRepository.prototype.contains = function(newArtist) { return artist.name === newArtist.name; }).length > 0; }; -ArtistRepository.prototype.getAll = function(artist) { +ArtistRepository.prototype.getAll = function() { return this.artists; }; ArtistRepository.prototype.clearAll = function() { From 2980b9a17363be4c536fcbd26695e8c313535b7e Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Thu, 28 Dec 2017 19:49:04 +0100 Subject: [PATCH 02/42] Added example for code coverage using Istanbul and Jest --- .../istanbul-jest/package-lock.json | 3873 +++++++++++++++++ .../codecoverage/istanbul-jest/package.json | 26 + .../istanbul-jest/src/UserRepository.js | 29 + .../istanbul-jest/test/UserRepository.test.js | 27 + 4 files changed, 3955 insertions(+) create mode 100644 Kapitel6/codecoverage/istanbul-jest/package-lock.json create mode 100644 Kapitel6/codecoverage/istanbul-jest/package.json create mode 100644 Kapitel6/codecoverage/istanbul-jest/src/UserRepository.js create mode 100644 Kapitel6/codecoverage/istanbul-jest/test/UserRepository.test.js diff --git a/Kapitel6/codecoverage/istanbul-jest/package-lock.json b/Kapitel6/codecoverage/istanbul-jest/package-lock.json new file mode 100644 index 0000000..a204cac --- /dev/null +++ b/Kapitel6/codecoverage/istanbul-jest/package-lock.json @@ -0,0 +1,3873 @@ +{ + "name": "istanbul-jest", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.36", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", + "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@types/node": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz", + "integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ==" + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" + }, + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "requires": { + "acorn": "5.3.0" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.0.4.tgz", + "integrity": "sha512-/Yt61fUpdFjetYlnpj280BPKEsPnK4mqzxDdo8DybPvrPNrLurbAF/WBjn2nnoi1Hc2Ippsf12/aOp8ys/Vl1A==", + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.0.3" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz", + "integrity": "sha512-Z0pOZFs0xDctwF0bPEKrnAzvbbgDi2vDFbQ0EdofnLI2bOa3P1H66gNLb2vMJJaa00VDjfiGhIocsHvBkqtyEQ==" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-preset-jest": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.0.3.tgz", + "integrity": "sha512-FbMMniSMXFvkKldCf+e4Tuol/v3XMaIpIp8xiT1WFlEW3ZapTKDW9YgVt3hqcpZXsIGFf6eUF3Owxom7yFlI8w==", + "requires": { + "babel-plugin-jest-hoist": "22.0.3", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", + "optional": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=" + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "requires": { + "node-int64": "0.4.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "requires": { + "cssom": "0.3.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==" + }, + "domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", + "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.0.3.tgz", + "integrity": "sha512-QapzeQkcA3jCx4pDnD07I4SPPxScKbey8TD/WwrnzmpHmL5q0dUtXfUt5OIFOjVBCg+C4zn4Y1zK9Rb9SIDL1g==", + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "22.0.3", + "jest-get-type": "22.0.3", + "jest-matcher-utils": "22.0.3", + "jest-message-util": "22.0.3", + "jest-regex-util": "22.0.3" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "requires": { + "bser": "2.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "requires": { + "ci-info": "1.1.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==" + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.0.4.tgz", + "integrity": "sha512-S0tmgK5psULvt/11QzgAZWGpY5y5TkMRzd3T21Q13JzTx37Vx6F0Nw022c9Kc/IbEy+AHkKkGFVO5QafE8MrDg==", + "requires": { + "jest-cli": "22.0.4" + }, + "dependencies": { + "jest-cli": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.0.4.tgz", + "integrity": "sha512-f1lZRM13IwIINzjE3RebXQKtQLiKncpSrbJZ/aTZJXmzEWGdgSayW4ESyhU+xK3uGiJEUSzbHjwPY6nGJ8VbUA==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "22.0.3", + "jest-config": "22.0.4", + "jest-environment-jsdom": "22.0.4", + "jest-get-type": "22.0.3", + "jest-haste-map": "22.0.3", + "jest-message-util": "22.0.3", + "jest-regex-util": "22.0.3", + "jest-resolve-dependencies": "22.0.3", + "jest-runner": "22.0.4", + "jest-runtime": "22.0.4", + "jest-snapshot": "22.0.3", + "jest-util": "22.0.4", + "jest-worker": "22.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "yargs": "10.0.3" + } + } + } + }, + "jest-changed-files": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.0.3.tgz", + "integrity": "sha512-CG7eNJNO9x1O/3J4Uhe2QXra1MnC9+KS1f2NeOg+7iQ+8dDCgxCtpusmKfu44TnEyKwkIDhDr6htPfPaI+Fwbw==", + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.0.4.tgz", + "integrity": "sha512-NcBeixqHjHDZO9+pUj+365LQV2s65d2f0/IrwlUyv0xaJovRNc6eDvoJ/r2UUlHnqjP3Go+R0ECUsXPXjk4SHw==", + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "22.0.4", + "jest-environment-node": "22.0.4", + "jest-get-type": "22.0.3", + "jest-jasmine2": "22.0.4", + "jest-regex-util": "22.0.3", + "jest-resolve": "22.0.4", + "jest-util": "22.0.4", + "jest-validate": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-diff": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.0.3.tgz", + "integrity": "sha512-Y7xN9Lc/NgFvR14lvjrJXB6x2x1LLe5NnMyzLvilBSSOyjy9uAVnR2Bt1YgzdfRrfaxsx7xFUVcqXLUnPkrJcA==", + "requires": { + "chalk": "2.3.0", + "diff": "3.4.0", + "jest-get-type": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-docblock": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.0.3.tgz", + "integrity": "sha512-LhviP2rqIg2IzS6m97W7T032oMrT699Tr6Njjhhl4FCLj+75BUy9CsSmGgfoVEql1uc+myBkssvcbn7T9xDR+A==", + "requires": { + "detect-newline": "2.1.0" + } + }, + "jest-environment-jsdom": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.0.4.tgz", + "integrity": "sha512-vnjefLZlsNsmnjKcaXkx2IxTBNG40vfRVOdMfcfkPkq85JxFB7wzNtjLx+RIfiNpIZd04C1PXbF0aJIenY85Ng==", + "requires": { + "jest-mock": "22.0.3", + "jest-util": "22.0.4", + "jsdom": "11.5.1" + } + }, + "jest-environment-node": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.0.4.tgz", + "integrity": "sha512-9vjNKb86UivvKCZCudMNixQgdMnOG7ql6iVYnaiK0CmvZ0WQD+mlM10NvgiWpRv4HstcnRL1pY/GSIHXAD6qXw==", + "requires": { + "jest-mock": "22.0.3", + "jest-util": "22.0.4" + } + }, + "jest-get-type": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.0.3.tgz", + "integrity": "sha512-TaJnc/lnJQ3jwry+NUWkqaJmKrM/Ut3XdK89HfiqdI3DMRLd6Zb4wyKjwuNP37MEQqlNg0YWH4sbBR8D4exjCA==" + }, + "jest-haste-map": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.0.3.tgz", + "integrity": "sha512-VosIMOFQFu1rTF+MvOWVuv2KVmZ9eTkRgfwW2yUAs6/AhwmIfXRl/tih+fIOYcHzU4Auu1G8Fvl2kkF5g0k6/A==", + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.0.3", + "jest-worker": "22.0.3", + "micromatch": "2.3.11", + "sane": "2.2.0" + } + }, + "jest-jasmine2": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.0.4.tgz", + "integrity": "sha512-pn1XPHUkffHK6oNY1Dfl/+Rg0UuTdlg3aGDnjyK6dZzGEBeiH1uKuSgZEjy3Lj461l3atpzsQyw7ilXPyjFnUw==", + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "expect": "22.0.3", + "graceful-fs": "4.1.11", + "jest-diff": "22.0.3", + "jest-matcher-utils": "22.0.3", + "jest-message-util": "22.0.3", + "jest-snapshot": "22.0.3", + "source-map-support": "0.5.0" + } + }, + "jest-leak-detector": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.0.3.tgz", + "integrity": "sha512-xyVdAmcG8M3jWtVeadDUU6MAHLBrjkP4clz2UtTZ1gpe5bRLk27VjQOpzTwK20MkV/6iZQhSuRVuzHS5kD0HpA==", + "requires": { + "pretty-format": "22.0.3", + "weak": "1.0.1" + } + }, + "jest-matcher-utils": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.0.3.tgz", + "integrity": "sha512-FJbKpCR3K7YYE/Pnvy5OrLFgPEswpYWIfVtdwT2NC6pBARbYGX39KF3bTxS9yg2mv0YL2zHe3UbwzFsi9nFpVA==", + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-message-util": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.0.3.tgz", + "integrity": "sha512-AVBdCx7Oj5wBpMOH089lx7Zgwpdz9HbReA82HuVAlIT4kEQRvCy6Sl9yVWDGJwHTgB/OYQGkgmbv/P/K8TkWNw==", + "requires": { + "@babel/code-frame": "7.0.0-beta.36", + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" + } + }, + "jest-mock": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.0.3.tgz", + "integrity": "sha512-donODXcDG03EAEavc9xfJ7fBF/LNVjoZYkmj9DLrQ1B9YcT6wh8Xx7IYg25b8V/8F/eXPMAE0KK5q6Fqe6yAeg==" + }, + "jest-regex-util": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.0.3.tgz", + "integrity": "sha512-mplC9chiAotES3ClzNhy0SJcfHB2DivooKJZW+2hDdvP8LLB+OUI+D6bJd7sncbKUsyFcmblEvpm/zz/hef7HA==" + }, + "jest-resolve": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.0.4.tgz", + "integrity": "sha512-yoxHsX4MTT2Ra/dFia9VCunzsA/4jMBENMmLjREIUkCIP1edk/PZUOGVVf680Gw04CtmT5stETylcbmbL7hJBw==", + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0" + } + }, + "jest-resolve-dependencies": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.3.tgz", + "integrity": "sha512-u9MUNJIa9GJ0YFhvM0+Scr4tyX84nC42d3w18Cly1doY7pTT+9momm+TncpuDlFyB2aNmS8SfdEbiLr1e6tBwg==", + "requires": { + "jest-regex-util": "22.0.3" + } + }, + "jest-runner": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.0.4.tgz", + "integrity": "sha512-srBkbqmiSB+jzSaG652fmi3kS6rV6wS/4fOG8dxxBg3dCqNQcM2/L3TI3ZK0SwIAcdGJh5Gybs8aDboT8K9Cdw==", + "requires": { + "jest-config": "22.0.4", + "jest-docblock": "22.0.3", + "jest-haste-map": "22.0.3", + "jest-jasmine2": "22.0.4", + "jest-leak-detector": "22.0.3", + "jest-message-util": "22.0.3", + "jest-runtime": "22.0.4", + "jest-util": "22.0.4", + "jest-worker": "22.0.3", + "throat": "4.1.0" + } + }, + "jest-runtime": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.0.4.tgz", + "integrity": "sha512-+7uEwf/4f8k1E/eViyGK6/M5yA4O3f6TdWViuqF9MV7vXwG2OVJu8YEZa5239nEnHJiwinXp4eZXX+HB4pQRPg==", + "requires": { + "babel-core": "6.26.0", + "babel-jest": "22.0.4", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "22.0.4", + "jest-haste-map": "22.0.3", + "jest-regex-util": "22.0.3", + "jest-resolve": "22.0.4", + "jest-util": "22.0.4", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "10.0.3" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "jest-snapshot": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.0.3.tgz", + "integrity": "sha512-e/a/EvMsY5XROWy4QWX6PvYziuJ8ttD6+QcnbogODWtx2LGhvVQOb7pmqGTo0tL/p0vzFetZA9GlZSh/EfMepg==", + "requires": { + "chalk": "2.3.0", + "jest-diff": "22.0.3", + "jest-matcher-utils": "22.0.3", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.0.3" + } + }, + "jest-util": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.0.4.tgz", + "integrity": "sha512-gNNPtcCFkVh7daKIl3/06eoQ90QXGXCyDOfyZ3IEyTWmHBdX3GvklcOtyGcdOvrYEubaZTfMcMKmEeo/6sRTog==", + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "jest-message-util": "22.0.3", + "jest-validate": "22.0.3", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.0.3.tgz", + "integrity": "sha512-GmlLmPCtrSQ3iB4A1uxcfjawaaQnwESCDcUg5tMxJKeBbmPdcWPAb6EWzvANxULPUV7hfPKLwg4xIPpi7cx1/g==", + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.0.3", + "leven": "2.1.0", + "pretty-format": "22.0.3" + } + }, + "jest-worker": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.0.3.tgz", + "integrity": "sha512-fPdCTnogFQiR0CP6whEsIly2RfcHxvalqyLjhui6qa1SnOmHiX7L8k4Umo8CBIp5ndWY0+ej1o7OTE5MlzPabg==", + "requires": { + "merge-stream": "1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdom": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "requires": { + "abab": "1.0.4", + "acorn": "5.3.0", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.0", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "xml-name-validator": "2.0.1" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.4" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "requires": { + "@types/node": "8.5.2" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-format": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.0.3.tgz", + "integrity": "sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==", + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "realpath-native": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", + "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", + "requires": { + "util.promisify": "1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "1.1.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "weak": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz", + "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=", + "optional": true, + "requires": { + "bindings": "1.3.0", + "nan": "2.8.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + } + } +} diff --git a/Kapitel6/codecoverage/istanbul-jest/package.json b/Kapitel6/codecoverage/istanbul-jest/package.json new file mode 100644 index 0000000..f2b78c8 --- /dev/null +++ b/Kapitel6/codecoverage/istanbul-jest/package.json @@ -0,0 +1,26 @@ +{ + "name": "istanbul-jest", + "version": "1.0.0", + "description": "Istanbul Jest Beispiel", + "main": "index.js", + "directories": { + "test": "test" + }, + "dependencies": { + "jest": "^22.0.4" + }, + "devDependencies": {}, + "scripts": { + "test": "jest" + }, + "jest": { + "verbose": true, + "collectCoverage": true + }, + "keywords": [ + "codecoverage", + "javascript" + ], + "author": "Philip Ackermann", + "license": "MIT" +} diff --git a/Kapitel6/codecoverage/istanbul-jest/src/UserRepository.js b/Kapitel6/codecoverage/istanbul-jest/src/UserRepository.js new file mode 100644 index 0000000..92bde3b --- /dev/null +++ b/Kapitel6/codecoverage/istanbul-jest/src/UserRepository.js @@ -0,0 +1,29 @@ +module.exports = class UserRepository { + constructor() { + this.users = []; + } + + add(user) { + if(!this.contains(user)) { + if(user && user.name) { + this.users.push(user); + } else { + throw new Error('Wrong user format.'); + } + } + } + + contains(newUser) { + return this.users.filter(function(user) { + return user.name === newUser.name; + }).length > 0; + } + + getAll() { + return this.users; + } + + clearAll() { + this.users = []; + } +} diff --git a/Kapitel6/codecoverage/istanbul-jest/test/UserRepository.test.js b/Kapitel6/codecoverage/istanbul-jest/test/UserRepository.test.js new file mode 100644 index 0000000..b0923c3 --- /dev/null +++ b/Kapitel6/codecoverage/istanbul-jest/test/UserRepository.test.js @@ -0,0 +1,27 @@ +const UserRepository = require('../src/UserRepository'); +const assert = require('assert'); +describe('UserRepository', () => { + describe('#add()', () => { + it('should add the user and increase the numer of all users', () => { + const userRepository = new UserRepository(); + userRepository.add({name : 'Max'}); + userRepository.add({name : 'Moritz'}); + assert.equal(userRepository.getAll().length, 2); + }); + it('should add the user only if it is not already there', () => { + const userRepository = new UserRepository(); + userRepository.add({name : 'Max'}); + userRepository.add({name : 'Max'}); + assert.equal(userRepository.getAll().length, 1); + }); + }); + describe('#clearAll()', () => { + it('should clear all users', () => { + const userRepository = new UserRepository(); + userRepository.add({name : 'Moritz'}); + assert.equal(userRepository.getAll().length, 1); + userRepository.clearAll(); + assert.equal(userRepository.getAll().length, 0); + }); + }); +}); \ No newline at end of file From 2784ef8cad7b38de353c674a3774630a8b7409b1 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 16:09:57 +0100 Subject: [PATCH 03/42] Several updates --- .gitignore | 2 ++ Kapitel2/Listing_2-24.js | 6 ++++-- Kapitel2/Listing_2-25.js | 6 ++++-- Kapitel2/Listing_2-26.js | 6 ++++-- Kapitel2/Listing_2-59.js | 20 ++++++++++---------- Kapitel2/Listing_2-79.js | 36 ++++++++++++++++++------------------ 6 files changed, 42 insertions(+), 34 deletions(-) diff --git a/.gitignore b/.gitignore index 8d4ae25..daba4ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ bower_components +node_modules +coverage \ No newline at end of file diff --git a/Kapitel2/Listing_2-24.js b/Kapitel2/Listing_2-24.js index f226809..edafd41 100644 --- a/Kapitel2/Listing_2-24.js +++ b/Kapitel2/Listing_2-24.js @@ -1,7 +1,9 @@ function addiere(x, y, log) { - var ergebnis = x + y; + let ergebnis = x + y; if(log) { console.log(ergebnis); } return ergebnis; -} \ No newline at end of file +} +addiere(2,2); // Aufruf ohne Logging +addiere(2,2,true); // Aufruf mit Logging diff --git a/Kapitel2/Listing_2-25.js b/Kapitel2/Listing_2-25.js index 9218949..cc78632 100644 --- a/Kapitel2/Listing_2-25.js +++ b/Kapitel2/Listing_2-25.js @@ -1,7 +1,9 @@ function addiere(x, y) { - var ergebnis = x + y; + let ergebnis = x + y; if(arguments[2]) { // Zugriff auf den optionalen Parameter console.log(ergebnis); } return ergebnis; -} \ No newline at end of file +} +addiere(2,2); // Aufruf ohne Logging +addiere(2,2,true); // Aufruf mit Logging diff --git a/Kapitel2/Listing_2-26.js b/Kapitel2/Listing_2-26.js index 4656778..978284b 100644 --- a/Kapitel2/Listing_2-26.js +++ b/Kapitel2/Listing_2-26.js @@ -1,7 +1,9 @@ function addiere(x, y, config) { - var ergebnis = x + y; + let ergebnis = x + y; if(config && config.log) { console.log(ergebnis); } return ergebnis; -} \ No newline at end of file +} +addiere(2,2); // Aufruf ohne Logging +addiere(2,2,{ log: true }); // Aufruf mit Logging diff --git a/Kapitel2/Listing_2-59.js b/Kapitel2/Listing_2-59.js index 99d3310..340849b 100644 --- a/Kapitel2/Listing_2-59.js +++ b/Kapitel2/Listing_2-59.js @@ -1,12 +1,12 @@ function fibonacciImperativ(n){ - var i, - fibonacciZahlen = new Array(); - fibonacciZahlen.push(0); - fibonacciZahlen.push(1); - for(i=0; i Date: Wed, 24 Jan 2018 16:10:36 +0100 Subject: [PATCH 04/42] Moved code to new chapters 8 and 9 --- .../node_modules/mediator-js/.npmignore | 6 - .../node_modules/mediator-js/.travis.yml | 5 - .../node_modules/mediator-js/LICENSE.md | 22 - .../node_modules/mediator-js/README.md | 288 ---- .../node_modules/mediator-js/index.js | 3 - .../lib-cov/jscoverage-highlight.css | 38 - .../mediator-js/lib-cov/jscoverage-ie.css | 108 -- .../lib-cov/jscoverage-throbber.gif | Bin 425 -> 0 bytes .../mediator-js/lib-cov/jscoverage.css | 355 ----- .../mediator-js/lib-cov/jscoverage.html | 164 --- .../mediator-js/lib-cov/jscoverage.js | 1176 ----------------- .../mediator-js/lib-cov/mediator.js | 484 ------- .../node_modules/mediator-js/lib/mediator.js | 387 ------ .../node_modules/mediator-js/mediator.min.js | 1 - .../node_modules/mediator-js/package.json | 67 - .../node_modules/mediator-js/paige.config | 9 - .../mediator-js/test/ChannelSpec.js | 303 ----- .../mediator-js/test/MediatorSpec.js | 409 ------ .../mediator-js/test/SubscriberSpec.js | 52 - {Kapitel7 => Kapitel8}/Adapter/Adapter.js | 0 {Kapitel7 => Kapitel8}/Builder/Builder.js | 0 .../ChainOfResponsibility.js | 0 {Kapitel7 => Kapitel8}/Command/Command.js | 0 {Kapitel7 => Kapitel8}/Composite/Composite.js | 0 {Kapitel7 => Kapitel8}/Decorator/Decorator.js | 0 {Kapitel7 => Kapitel8}/Facade/Facade.js | 0 {Kapitel7 => Kapitel8}/Facade/index.html | 0 {Kapitel7 => Kapitel8}/Factory/Factory.js | 0 {Kapitel7 => Kapitel8}/Flyweight/Flyweight.js | 0 {Kapitel7 => Kapitel8}/Iterator/Iterator.js | 0 {Kapitel7 => Kapitel8}/Mediator/index.js | 0 {Kapitel7 => Kapitel8}/Memento/Memento.js | 0 {Kapitel7 => Kapitel8}/Observer/Observer.js | 0 {Kapitel7 => Kapitel8}/Prototype/Prototype.js | 0 {Kapitel7 => Kapitel8}/Proxy/Proxy.js | 0 {Kapitel7 => Kapitel8}/Singleton/Singleton.js | 0 {Kapitel7 => Kapitel8}/State/State.js | 0 {Kapitel7 => Kapitel8}/Strategy/Strategy.js | 0 .../TemplateMethod/TemplateMethod.js | 0 {Kapitel7 => Kapitel8}/Visitor/Visitor.js | 0 .../Routing/AngularJS/app.js | 0 .../Routing/Backbone/app.js | 0 {Kapitel8 => Kapitel9}/Routing/EmberJS/app.js | 0 {Kapitel8 => Kapitel9}/angularjs/bower.json | 0 {Kapitel8 => Kapitel9}/angularjs/index.html | 0 {Kapitel8 => Kapitel9}/angularjs/js/app.js | 0 {Kapitel8 => Kapitel9}/angularjs/js/app2.js | 0 .../angularjs/styles/styles.css | 0 {Kapitel8 => Kapitel9}/backbone/index.html | 0 {Kapitel8 => Kapitel9}/backbone/js/app.js | 0 {Kapitel8 => Kapitel9}/backbone/js/app2.js | 0 .../backbone/styles/styles.css | 0 {Kapitel8 => Kapitel9}/knockout/index.html | 0 {Kapitel8 => Kapitel9}/knockout/js/app.js | 0 .../knockout/styles/styles.css | 0 55 files changed, 3877 deletions(-) delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/.npmignore delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/.travis.yml delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/LICENSE.md delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/README.md delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/index.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-highlight.css delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-ie.css delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-throbber.gif delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.css delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.html delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib-cov/mediator.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/lib/mediator.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/mediator.min.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/package.json delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/paige.config delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/test/ChannelSpec.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/test/MediatorSpec.js delete mode 100644 Kapitel7/Mediator/node_modules/mediator-js/test/SubscriberSpec.js rename {Kapitel7 => Kapitel8}/Adapter/Adapter.js (100%) rename {Kapitel7 => Kapitel8}/Builder/Builder.js (100%) rename {Kapitel7 => Kapitel8}/ChainOfResponsibility/ChainOfResponsibility.js (100%) rename {Kapitel7 => Kapitel8}/Command/Command.js (100%) rename {Kapitel7 => Kapitel8}/Composite/Composite.js (100%) rename {Kapitel7 => Kapitel8}/Decorator/Decorator.js (100%) rename {Kapitel7 => Kapitel8}/Facade/Facade.js (100%) rename {Kapitel7 => Kapitel8}/Facade/index.html (100%) rename {Kapitel7 => Kapitel8}/Factory/Factory.js (100%) rename {Kapitel7 => Kapitel8}/Flyweight/Flyweight.js (100%) rename {Kapitel7 => Kapitel8}/Iterator/Iterator.js (100%) rename {Kapitel7 => Kapitel8}/Mediator/index.js (100%) rename {Kapitel7 => Kapitel8}/Memento/Memento.js (100%) rename {Kapitel7 => Kapitel8}/Observer/Observer.js (100%) rename {Kapitel7 => Kapitel8}/Prototype/Prototype.js (100%) rename {Kapitel7 => Kapitel8}/Proxy/Proxy.js (100%) rename {Kapitel7 => Kapitel8}/Singleton/Singleton.js (100%) rename {Kapitel7 => Kapitel8}/State/State.js (100%) rename {Kapitel7 => Kapitel8}/Strategy/Strategy.js (100%) rename {Kapitel7 => Kapitel8}/TemplateMethod/TemplateMethod.js (100%) rename {Kapitel7 => Kapitel8}/Visitor/Visitor.js (100%) rename {Kapitel8 => Kapitel9}/Routing/AngularJS/app.js (100%) rename {Kapitel8 => Kapitel9}/Routing/Backbone/app.js (100%) rename {Kapitel8 => Kapitel9}/Routing/EmberJS/app.js (100%) rename {Kapitel8 => Kapitel9}/angularjs/bower.json (100%) rename {Kapitel8 => Kapitel9}/angularjs/index.html (100%) rename {Kapitel8 => Kapitel9}/angularjs/js/app.js (100%) rename {Kapitel8 => Kapitel9}/angularjs/js/app2.js (100%) rename {Kapitel8 => Kapitel9}/angularjs/styles/styles.css (100%) rename {Kapitel8 => Kapitel9}/backbone/index.html (100%) rename {Kapitel8 => Kapitel9}/backbone/js/app.js (100%) rename {Kapitel8 => Kapitel9}/backbone/js/app2.js (100%) rename {Kapitel8 => Kapitel9}/backbone/styles/styles.css (100%) rename {Kapitel8 => Kapitel9}/knockout/index.html (100%) rename {Kapitel8 => Kapitel9}/knockout/js/app.js (100%) rename {Kapitel8 => Kapitel9}/knockout/styles/styles.css (100%) diff --git a/Kapitel7/Mediator/node_modules/mediator-js/.npmignore b/Kapitel7/Mediator/node_modules/mediator-js/.npmignore deleted file mode 100644 index a8c4a7a..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -*.swp -.DS_Store -coverage.html -node_modules -Vagrantfile -.vagrant diff --git a/Kapitel7/Mediator/node_modules/mediator-js/.travis.yml b/Kapitel7/Mediator/node_modules/mediator-js/.travis.yml deleted file mode 100644 index 60d00ce..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" - - "0.6" diff --git a/Kapitel7/Mediator/node_modules/mediator-js/LICENSE.md b/Kapitel7/Mediator/node_modules/mediator-js/LICENSE.md deleted file mode 100644 index 159243d..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -MIT License Terms -================= - -Copyright (c) 2013 Jack Lawson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Kapitel7/Mediator/node_modules/mediator-js/README.md b/Kapitel7/Mediator/node_modules/mediator-js/README.md deleted file mode 100644 index bac4ac3..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/README.md +++ /dev/null @@ -1,288 +0,0 @@ -Mediator.js -=========== -[![Build Status](https://travis-ci.org/ajacksified/Mediator.js.png)](https://travis-ci.org/ajacksified/Mediator.js) - -Version 0.9.8 - -* [View the documentation](http://thejacklawson.com/Mediator.js/) -* [View the project on Github](https://github.com/ajacksified/Mediator.js) -* [Relevant blog post](http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/) -* Documentation built using [Paige](https://github.com/rthauby/Paige) -* [Changelog](#changelog) - -A light utility class to help implement the Mediator pattern for easy eventing ------------------------------------------------------------------------------- - -Mediator is a simple class that allows you to register, unregister, and call -subscriber methods to help event-based, asyncronous programming. Its purpose -is to make the usage of WebSockets, Ajax calls, DOM events, or any other -asynchronous operations easy to maintain and test. - -Mediator has no dependencies on any other libraries. - -*1.12kb, minifed and gzipped* - -Why? ---- -My specific use case: bind elements easily for WebSocket callbacks. But, you -may find usage in it for all kinds of things: as an event management system, -to decouple calls between javascript functions, Ajax request callbacks, and -more. There's an excellent online book that talks about Mediators more in detail -by [Addy Osmani](http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript). - -Usage ------ - -### Using in Node - -The package is in NPM as `mediator-js`. Include it in your project like so: - -```javascript -var Mediator = require("mediator-js").Mediator, - mediator = new Mediator(); - -mediator.subscribe("wat", function(){ console.log(arguments); }); -mediator.publish("wat", 7, "hi", { one: 1 }); -``` - -### Using in the Browser - -Mediator.js is compatible with browser module-loading solutions, including but -not limited to Browserify, Almond.js, Require.js, and others. - -__Note__: if using AMD / Almond module loading, use the NPM package name: -`require("mediator-js").Mediator` - -```html - - - -``` - -### API - -You can register events with the mediator two ways using channels. You can add -a predicate to perform more complex matching. Instantiate a new mediator, and -then you can being subscribing, removing, and publishing. - -To use it in the browser, include `mediator.min.js` from the root here, or the -unminified version at `lib/mediator.js.` - -Subscription signature: - var mediator = new Mediator(); - - mediator.subscribe(channel, callback, , ); - mediator.publish(channel, ) - mediator.remove(channel, ) - -Additionally, `on` and `bind` are aliased to `subscribe`, and `trigger` and -`emit` are bound to `publish`. `off` is an alias for `remove`. You can use -`once` to subscribe to an event that should only be fired once. - -Subscriber signature: - - function(, channel); - -The channel is always returned as the last argument to subscriber functions. - -Mediator.subscribe options (all are optional; default is empty): - -```javascript -{ - predicate: function(*args){ ... } - priority: 0|1|... - calls: 1|2|... -} -``` - -Predicates return a boolean and are run using whatever args are passed in by the -publishing class. If the boolean is true, the subscriber is run. - -Priority marks the order in which a subscriber is called. - -`calls` allows you to specify how many times the subscriber is called before it -is automatically removed. This is decremented each time it is called until it -reaches 0 and is removed. If it has a predicate and the predicate does not match, -calls is not decremented. - -A Subscriber object is returned when calling Mediator.subscribe. It allows you -to update options on a given subscriber, or to reference it by an id for easy -removal later. - -```javascript -{ - id, // guid - fn, // function - options, // options - context, // context for fn to be called within - channel, // provides a pointer back to its channel - update(options){ ...} // update the subscriber ({ fn, options, context }) -} -``` - -Examples: - -```javascript -var mediator = new Mediator(); - -// Alert data when the "message" channel is published to -// Subscribe returns a "Subscriber" object -mediator.subscribe("message", function(data){ alert(data); }); -mediator.publish("message", "Hello, world"); - -// Alert the "message" property of the object called when the predicate function returns true (The "From" property is equal to "Jack") -var predicate = function(data){ return data.From === "Jack" }; -mediator.subscribe("channel", function(data){ alert(data.Message); }, { predicate: predicate }); -mediator.publish("channel", { Message: "Hey!", From: "Jack" }); //alerts -mediator.publish("channel", { Message: "Hey!", From: "Audrey" }); //doesn't alert -``` - -You can remove events by passing in a channel, or a channel and the -function to remove or subscriber id. If you only pass in a channel, -all subscribers are removed. - -```javascript -// removes all methods bound directly to a channel, but not subchannels -mediator.remove("channel"); - -// unregisters *only* MethodFN, a named function, from "channel" -mediator.remove("channel", MethodFN); -``` - -You can call the registered functions with the Publish method, which accepts -an args array: - -```javascript -mediator.publish("channel", "argument", "another one", { etc: true }); -``` - -You can namespace your subscribing / removing / publishing as such: - -```javascript -mediator.subscribe("application:chat:receiveMessage", function(data){ ... }); - -// will call parents of the application:chat:receiveMessage namespace -// (that is, next it will call all subscribers of application:chat, and then -// application). It will not recursively call subchannels - only direct subscribers. -mediator.publish("application:chat:receiveMessage", "Jack Lawson", "Hey"); -``` - -You can update Subscriber priority: - -```javascript -var sub = mediator.subscribe("application:chat", function(data){ ... }); -var sub2 = mediator.subscribe("application:chat", function(data){ ... }); - -// have sub2 executed first -mediator.getChannel("application:chat").setPriority(sub2.id, 0); -``` - -You can update Subscriber callback, context, and/or options: - -```javascript -sub.update({ fn: ..., context: { }, options: { ... }); -``` - -You can stop the chain of execution by calling channel.stopPropagation(): - -```javascript -// for example, let's not post the message if the from and to are the same -mediator.subscribe("application:chat", function(data, channel){ - alert("Don't send messages to yourself!"); - channel.stopPropagation(); -}, options: { - predicate: function(data){ return data.From == data.To }, - priority: 0 -}); -``` - -Changelog ---------- - -__Version 0.9.8__ -* Accepted a ton of PRs from [tbusser](https://github.com/tbusser) that fixed - some issues and improved performance. - -__Version 0.9.7__ -* Fixed bug where subscribers that failed predicates were decrementing calls. - -__Version 0.9.6__ -* Fixed AMD-style export; export constructor, not instance - -__Version 0.9.5__ -* Fixed issue with requring from node - -__Version 0.9.4__ -* Fixed issue with auto-removing subscribers after a maximum amount of calls - -__Version 0.9.3__ -* Make AMD name match npm package name `mediator-js`. (Previously used - `Mediator.js`.) - -__Version 0.9.1__ -* Fixed AMD / `define` syntax -* Exposed `Mediator.version` - -__Version 0.9.0__ - -* Reversed order of recursion: now calls parents instead of children channels -* Lowercase methods -* Aliases: `on` and `bind` are aliased to `subscribe`, and `trigger` and -`emit` are bound to `publish`. `off` is an alias for `remove`. -* Moved tests to mocha from jasmine -* Supports AMD, requirejs, and browser loading -* Lots of cleanup around extra variables, and jslinted -* Published to NPM under "mediator-js" -* Added travis-ci build - -__Version 0.6.1__ - -* Cleaned up some typos -* Save pointer to channel within subscription -* Save namespace in channel -* Fixed bugs in SetPriority - -__Version 0.6.0__ - -* Added ability to stop the chain of calls using c.stopPropagation() - -__Version 0.5.0__ - -* Added ability to access and update subscribing objects - * Subscribers now have a unique ID and can be queried by id or by function - * Subscriber class can have its function, context, or options updated - * Subscriber priority can be updated post-addition - * Channels made public by Mediator.GetChannel - * Added a little performance test - -__Version 0.4.2__ - -* Added Priority to calls, allowing you to set callback index - -__Version 0.4.1__ - -* Minor internal updates - -__Version 0.4.0__ - -* Predicate no longer acts as a channel and is moved to an options object -at the end of the subcription call. -* Signatures changed; context moved to the end of subscriptions -* Namespacing for subscription binding - - -License -------- -This class and its accompanying README and are -[MIT licensed](http://www.opensource.org/licenses/mit-license.php). - -In Closing ----------- -Have fun, and please submit suggestions and improvements! You can leave any -issues here, or contact me at ([@ajacksified](https://twitter.com/ajacksified)). diff --git a/Kapitel7/Mediator/node_modules/mediator-js/index.js b/Kapitel7/Mediator/node_modules/mediator-js/index.js deleted file mode 100644 index b57bbc0..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = process.env.MEDIATOR_JS_COV - ? require('./lib-cov/mediator') - : require('./lib/mediator'); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-highlight.css b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-highlight.css deleted file mode 100644 index 5ea0c16..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-highlight.css +++ /dev/null @@ -1,38 +0,0 @@ -/* - jscoverage-highlight.css - JSCoverage syntax highlighting style sheet - Copyright (C) 2008, 2009, 2010 siliconforks.com - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* keyword, type, symbol, cbracket */ -#sourceTable .k { - font-weight: bold; -} - -/* string, regexp, number */ -#sourceTable .s { - color: #006400; -} - -/* specialchar */ -#sourceTable .t { - color: #2e8b57; -} - -/* comment */ -#sourceTable .c { - font-style: italic; -} diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-ie.css b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-ie.css deleted file mode 100644 index ecc941a..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-ie.css +++ /dev/null @@ -1,108 +0,0 @@ -/* - jscoverage-ie.css - JSCoverage style sheet for Internet Explorer - Copyright (C) 2007, 2008, 2009, 2010 siliconforks.com - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#headingDiv { - position: static; - margin-left: 10px; - margin-right: 10px; - padding-top: 0.5em; -} - -#tabs { - clear: all; - position: static; - top: auto; - left: auto; - right: auto; - height: auto; - margin-left: 10px; - margin-right: 10px; -} - -#tabs div { - position: relative; - height: auto; - line-height: normal; - padding-top: 5px; - padding-bottom: 5px; -} - -#tabs div.selected { - padding-bottom: 6px; - z-index: 2; -} - -.TabPage { - position: relative; - top: -1px; - left: auto; - right: auto; - bottom: auto; - clear: left; - margin-left: 10px; - margin-right: 10px; - padding: 10px; - z-index: 1; -} - -#locationDiv { - margin-bottom: 10px; -} - -#iframeDiv { - position: static; - width: 100%; -} - -#summaryDiv { - position: static; - width: 100%; -} - -#fileDiv { - margin-bottom: 10px; -} - -#sourceDiv { - position: static; - width: 100%; -} - -#storeDiv { - position: static; - width: 100%; -} - -/* some defaults */ - -.TabPage { - height: 650px; -} - -#iframeDiv { - height: 600px; -} - -#summaryDiv { - height: 600px; -} - -#sourceDiv { - height: 600px; -} diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-throbber.gif b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage-throbber.gif deleted file mode 100644 index f13c0b4ecc4327d891568b6494d60f0428741094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmZ?wbhEHbWM^P!c+AZJ1gxyA3JMB#c6JU94habfwY9Yk4GjwxEI4rBz=H=5{-XlL z|J;7AA;Hd$0j@@R2F#2={fa+X7`Yhu8FWB~fsAEf5&Ph&u(TrN>S}q#&`BOgn?s%^ zhV^T?;!vunS}Ag6b-d=(MIOf|ho~muQL2<$8FFRyeM?aWj}wbSQt>D~sr0mR%9Yjf zPE!>;PBMoq#ivwRwQ38{0bZhx9;cK;R1@$xKqa;6%azshgF*v64mgJ_#iR73%F-$k kU smaller than surrounding text. Because -the table already has font-size small, this would make the font-size within the -
 x-small.  So we don't rely on the default.
-*/
-table#sourceTable pre {
-  font-size: medium;
-}
-
-table#sourceTable td {
-  border: 0px;
-  padding-top: 0px;
-  padding-bottom: 0px;
-  padding-left: 10px;
-  padding-right: 10px;
-}
-
-table#sourceTable pre {
-  border: 0px;
-  margin: 0px;
-}
-
-.g {
-  background-color: #bfffbf;
-}
-
-.y {
-  background-color: #ffffbf;
-}
-
-.r {
-  background-color: #ffbfbf;
-}
-
-/*******************************************************************************
-store tab
-*/
-
-#storeDiv {
-  position: absolute;
-  top: 3em;
-  left: 1em;
-  right: 1em;
-  bottom: 1em;
-  overflow: auto;
-}
-
-/*******************************************************************************
-about tab
-*/
-
-p {
-  margin-top: 0;
-}
-
-/*******************************************************************************
-tabs
-*/
-
-#tabs {
-  position: absolute;
-  top: 3em;
-  left: 1.5em;
-  right: 1.5em;
-  height: 2em;
-}
-
-#tabs div {
-  background-color: white;
-  position: relative;
-  float: left;
-  border: 1px solid black;
-  border-bottom-width: 0;
-  cursor: pointer;
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-  height: 2em;
-  z-index: 1;
-  line-height: 1.8em;
-}
-
-#tabs div.selected {
-  z-index: 3;
-  cursor: default;
-}
-
-#tabs div.disabled {
-  /* windows system color GrayText */
-  color: #808080;
-  cursor: default; 
-}
-
-.TabPage {
-  background-color: white;
-  border: 1px solid black;
-  position: absolute;
-  top: 5em;
-  left: 1.5em;
-  right: 1.5em;
-  bottom: 1.5em;
-  z-index: 2;
-  padding: 1em;
-  display: none;
-}
-
-#tabPages div.selected {
-  display: block;
-}
-
-img {
-  visibility: hidden;
-}
diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.html b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.html
deleted file mode 100644
index da76ce9..0000000
--- a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.html
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-JSCoverage
-
-
-
-
-
-
-
-
- - -
-

-Recent web browsers tend to place significant security restrictions on the use -of file: URLs. These restrictions can prevent JSCoverage from -working properly. To avoid problems, it is recommended that you do either of the -following: -

-
    -
  • If you are using the jscoverage program to instrument your -JavaScript code, install the instrumented files on a web server.
  • -
  • Use the jscoverage-server program (which itself acts as a web -server).
  • -
-

-See the -manual -for further details. -

- -
- -
-

-Recent web browsers tend to place significant security restrictions on the use -of file: URLs. These restrictions can prevent JSCoverage from -working properly. To avoid problems, it is recommended that you view coverage -reports stored to the filesystem by serving them from a web server. -

-

-See the -manual -for further details. -

- -
- -
-
Browser
-
Summary
-
Source
-
Store
-
About
-
-
-
-
- URL: - - -
-
- -
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - -
FileStatementsExecutedCoverage
- Total: - 0 - 00 -
-
-
- 0% -
-
-
-
-
-
-
-
- - loading... -
-
-
-

- This is version 0.5.1 of JSCoverage, a program that calculates code - coverage statistics for JavaScript. -

-

- See http://siliconforks.com/jscoverage/ for more information. -

-

- Copyright © 2007, 2008, 2009, 2010 siliconforks.com -

-
-
-
- - diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.js b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.js deleted file mode 100644 index dd6a2b8..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/jscoverage.js +++ /dev/null @@ -1,1176 +0,0 @@ -/* - jscoverage.js - code coverage for JavaScript - Copyright (C) 2007, 2008, 2009, 2010 siliconforks.com - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -function jscoverage_openWarningDialog() { - var id; - if (jscoverage_isReport) { - id = 'reportWarningDialog'; - } - else { - id = 'warningDialog'; - } - var dialog = document.getElementById(id); - dialog.style.display = 'block'; -} - -function jscoverage_closeWarningDialog() { - var id; - if (jscoverage_isReport) { - id = 'reportWarningDialog'; - } - else { - id = 'warningDialog'; - } - var dialog = document.getElementById(id); - dialog.style.display = 'none'; -} - -/** -Initializes the _$jscoverage object in a window. This should be the first -function called in the page. -@param w this should always be the global window object -*/ -function jscoverage_init(w) { - try { - // in Safari, "import" is a syntax error - Components.utils['import']('resource://app/modules/jscoverage.jsm'); - jscoverage_isInvertedMode = true; - return; - } - catch (e) {} - - // check if we are in inverted mode - if (w.opener) { - try { - if (w.opener.top._$jscoverage) { - jscoverage_isInvertedMode = true; - if (! w._$jscoverage) { - w._$jscoverage = w.opener.top._$jscoverage; - } - } - else { - jscoverage_isInvertedMode = false; - } - } - catch (e) { - try { - if (w.opener._$jscoverage) { - jscoverage_isInvertedMode = true; - if (! w._$jscoverage) { - w._$jscoverage = w.opener._$jscoverage; - } - } - else { - jscoverage_isInvertedMode = false; - } - } - catch (e2) { - jscoverage_isInvertedMode = false; - } - } - } - else { - jscoverage_isInvertedMode = false; - } - - if (! jscoverage_isInvertedMode) { - if (! w._$jscoverage) { - w._$jscoverage = {}; - } - } -} - -var jscoverage_currentFile = null; -var jscoverage_currentLine = null; - -var jscoverage_inLengthyOperation = false; - -/* -Possible states: - isInvertedMode isServer isReport tabs -normal false false false Browser -inverted true false false -server, normal false true false Browser, Store -server, inverted true true false Store -report false false true -*/ -var jscoverage_isInvertedMode = false; -var jscoverage_isServer = false; -var jscoverage_isReport = false; - -jscoverage_init(window); - -function jscoverage_createRequest() { - // Note that the IE7 XMLHttpRequest does not support file URL's. - // http://xhab.blogspot.com/2006/11/ie7-support-for-xmlhttprequest.html - // http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx -//#JSCOVERAGE_IF - if (window.ActiveXObject) { - return new ActiveXObject("Microsoft.XMLHTTP"); - } - else { - return new XMLHttpRequest(); - } -} - -// http://www.quirksmode.org/js/findpos.html -function jscoverage_findPos(obj) { - var result = 0; - do { - result += obj.offsetTop; - obj = obj.offsetParent; - } - while (obj); - return result; -} - -// http://www.quirksmode.org/viewport/compatibility.html -function jscoverage_getViewportHeight() { -//#JSCOVERAGE_IF /MSIE/.test(navigator.userAgent) - if (self.innerHeight) { - // all except Explorer - return self.innerHeight; - } - else if (document.documentElement && document.documentElement.clientHeight) { - // Explorer 6 Strict Mode - return document.documentElement.clientHeight; - } - else if (document.body) { - // other Explorers - return document.body.clientHeight; - } - else { - throw "Couldn't calculate viewport height"; - } -//#JSCOVERAGE_ENDIF -} - -/** -Indicates visually that a lengthy operation has begun. The progress bar is -displayed, and the cursor is changed to busy (on browsers which support this). -*/ -function jscoverage_beginLengthyOperation() { - jscoverage_inLengthyOperation = true; - - var progressBar = document.getElementById('progressBar'); - progressBar.style.visibility = 'visible'; - ProgressBar.setPercentage(progressBar, 0); - var progressLabel = document.getElementById('progressLabel'); - progressLabel.style.visibility = 'visible'; - - /* blacklist buggy browsers */ -//#JSCOVERAGE_IF - if (! /Opera|WebKit/.test(navigator.userAgent)) { - /* - Change the cursor style of each element. Note that changing the class of the - element (to one with a busy cursor) is buggy in IE. - */ - var tabs = document.getElementById('tabs').getElementsByTagName('div'); - var i; - for (i = 0; i < tabs.length; i++) { - tabs.item(i).style.cursor = 'wait'; - } - } -} - -/** -Removes the progress bar and busy cursor. -*/ -function jscoverage_endLengthyOperation() { - var progressBar = document.getElementById('progressBar'); - ProgressBar.setPercentage(progressBar, 100); - setTimeout(function() { - jscoverage_inLengthyOperation = false; - progressBar.style.visibility = 'hidden'; - var progressLabel = document.getElementById('progressLabel'); - progressLabel.style.visibility = 'hidden'; - progressLabel.innerHTML = ''; - - var tabs = document.getElementById('tabs').getElementsByTagName('div'); - var i; - for (i = 0; i < tabs.length; i++) { - tabs.item(i).style.cursor = ''; - } - }, 50); -} - -function jscoverage_setSize() { -//#JSCOVERAGE_IF /MSIE/.test(navigator.userAgent) - var viewportHeight = jscoverage_getViewportHeight(); - - /* - border-top-width: 1px - padding-top: 10px - padding-bottom: 10px - border-bottom-width: 1px - margin-bottom: 10px - ---- - 32px - */ - var tabPages = document.getElementById('tabPages'); - var tabPageHeight = (viewportHeight - jscoverage_findPos(tabPages) - 32) + 'px'; - var nodeList = tabPages.childNodes; - var length = nodeList.length; - for (var i = 0; i < length; i++) { - var node = nodeList.item(i); - if (node.nodeType !== 1) { - continue; - } - node.style.height = tabPageHeight; - } - - var iframeDiv = document.getElementById('iframeDiv'); - // may not exist if we have removed the first tab - if (iframeDiv) { - iframeDiv.style.height = (viewportHeight - jscoverage_findPos(iframeDiv) - 21) + 'px'; - } - - var summaryDiv = document.getElementById('summaryDiv'); - summaryDiv.style.height = (viewportHeight - jscoverage_findPos(summaryDiv) - 21) + 'px'; - - var sourceDiv = document.getElementById('sourceDiv'); - sourceDiv.style.height = (viewportHeight - jscoverage_findPos(sourceDiv) - 21) + 'px'; - - var storeDiv = document.getElementById('storeDiv'); - if (storeDiv) { - storeDiv.style.height = (viewportHeight - jscoverage_findPos(storeDiv) - 21) + 'px'; - } -//#JSCOVERAGE_ENDIF -} - -/** -Returns the boolean value of a string. Values 'false', 'f', 'no', 'n', 'off', -and '0' (upper or lower case) are false. -@param s the string -@return a boolean value -*/ -function jscoverage_getBooleanValue(s) { - s = s.toLowerCase(); - if (s === 'false' || s === 'f' || s === 'no' || s === 'n' || s === 'off' || s === '0') { - return false; - } - return true; -} - -function jscoverage_removeTab(id) { - var tab = document.getElementById(id + 'Tab'); - tab.parentNode.removeChild(tab); - var tabPage = document.getElementById(id + 'TabPage'); - tabPage.parentNode.removeChild(tabPage); -} - -function jscoverage_isValidURL(url) { - // RFC 3986 - var matches = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(url); - if (matches === null) { - return false; - } - var scheme = matches[1]; - if (typeof scheme === 'string') { - scheme = scheme.toLowerCase(); - return scheme === '' || scheme === 'file:' || scheme === 'http:' || scheme === 'https:'; - } - return true; -} - -/** -Initializes the contents of the tabs. This sets the initial values of the -input field and iframe in the "Browser" tab and the checkbox in the "Summary" -tab. -@param queryString this should always be location.search -*/ -function jscoverage_initTabContents(queryString) { - var showMissingColumn = false; - var url = null; - var windowURL = null; - var parameters, parameter, i, index, name, value; - if (queryString.length > 0) { - // chop off the question mark - queryString = queryString.substring(1); - parameters = queryString.split(/&|;/); - for (i = 0; i < parameters.length; i++) { - parameter = parameters[i]; - index = parameter.indexOf('='); - if (index === -1) { - // still works with old syntax - url = decodeURIComponent(parameter); - } - else { - name = parameter.substr(0, index); - value = decodeURIComponent(parameter.substr(index + 1)); - if (name === 'missing' || name === 'm') { - showMissingColumn = jscoverage_getBooleanValue(value); - } - else if (name === 'url' || name === 'u' || name === 'frame' || name === 'f') { - url = value; - } - else if (name === 'window' || name === 'w') { - windowURL = value; - } - } - } - } - - var checkbox = document.getElementById('checkbox'); - checkbox.checked = showMissingColumn; - if (showMissingColumn) { - jscoverage_appendMissingColumn(); - } - - var isValidURL = function (url) { - var result = jscoverage_isValidURL(url); - if (! result) { - alert('Invalid URL: ' + url); - } - return result; - }; - - if (url !== null && isValidURL(url)) { - // this will automatically propagate to the input field - frames[0].location = url; - } - else if (windowURL !== null && isValidURL(windowURL)) { - window.open(windowURL); - } - - // if the browser tab is absent, we have to initialize the summary tab - if (! document.getElementById('browserTab')) { - jscoverage_recalculateSummaryTab(); - } -} - -function jscoverage_body_load() { - // check if this is a file: URL - if (window.location && window.location.href && /^file:/i.test(window.location.href)) { - var warningDiv = document.getElementById('warningDiv'); - warningDiv.style.display = 'block'; - } - - var progressBar = document.getElementById('progressBar'); - ProgressBar.init(progressBar); - - function reportError(e) { - jscoverage_endLengthyOperation(); - var summaryThrobber = document.getElementById('summaryThrobber'); - summaryThrobber.style.visibility = 'hidden'; - var div = document.getElementById('summaryErrorDiv'); - div.innerHTML = 'Error: ' + e; - } - - if (jscoverage_isReport) { - jscoverage_beginLengthyOperation(); - var summaryThrobber = document.getElementById('summaryThrobber'); - summaryThrobber.style.visibility = 'visible'; - var request = jscoverage_createRequest(); - try { - request.open('GET', 'jscoverage.json', true); - request.onreadystatechange = function (event) { - if (request.readyState === 4) { - try { - if (request.status !== 0 && request.status !== 200) { - throw request.status; - } - var response = request.responseText; - if (response === '') { - throw 404; - } - - var json; - if (window.JSON && window.JSON.parse) { - json = window.JSON.parse(response); - } - else { - json = eval('(' + response + ')'); - } - - var file; - for (file in json) { - if (! json.hasOwnProperty(file)) { - continue; - } - - var fileCoverage = json[file]; - _$jscoverage[file] = fileCoverage.coverage; - _$jscoverage[file].source = fileCoverage.source; - } - jscoverage_recalculateSummaryTab(); - summaryThrobber.style.visibility = 'hidden'; - } - catch (e) { - reportError(e); - } - } - }; - request.send(null); - } - catch (e) { - reportError(e); - } - - jscoverage_removeTab('browser'); - jscoverage_removeTab('store'); - } - else { - if (jscoverage_isInvertedMode) { - jscoverage_removeTab('browser'); - } - - if (! jscoverage_isServer) { - jscoverage_removeTab('store'); - } - } - - jscoverage_initTabControl(); - - jscoverage_initTabContents(location.search); -} - -function jscoverage_body_resize() { - if (/MSIE/.test(navigator.userAgent)) { - jscoverage_setSize(); - } -} - -// ----------------------------------------------------------------------------- -// tab 1 - -function jscoverage_updateBrowser() { - var input = document.getElementById("location"); - frames[0].location = input.value; -} - -function jscoverage_openWindow() { - var input = document.getElementById("location"); - var url = input.value; - window.open(url); -} - -function jscoverage_input_keypress(e) { - if (e.keyCode === 13) { - if (e.shiftKey) { - jscoverage_openWindow(); - } - else { - jscoverage_updateBrowser(); - } - } -} - -function jscoverage_openInFrameButton_click() { - jscoverage_updateBrowser(); -} - -function jscoverage_openInWindowButton_click() { - jscoverage_openWindow(); -} - -function jscoverage_browser_load() { - /* update the input box */ - var input = document.getElementById("location"); - - /* sometimes IE seems to fire this after the tab has been removed */ - if (input) { - input.value = frames[0].location; - } -} - -// ----------------------------------------------------------------------------- -// tab 2 - -function jscoverage_createHandler(file, line) { - return function () { - jscoverage_get(file, line); - return false; - }; -} - -function jscoverage_createLink(file, line) { - var link = document.createElement("a"); - link.href = '#'; - link.onclick = jscoverage_createHandler(file, line); - - var text; - if (line) { - text = line.toString(); - } - else { - text = file; - } - - link.appendChild(document.createTextNode(text)); - - return link; -} - -function jscoverage_recalculateSummaryTab(cc) { - var checkbox = document.getElementById('checkbox'); - var showMissingColumn = checkbox.checked; - - if (! cc) { - cc = window._$jscoverage; - } - if (! cc) { -//#JSCOVERAGE_IF 0 - throw "No coverage information found."; -//#JSCOVERAGE_ENDIF - } - - var tbody = document.getElementById("summaryTbody"); - while (tbody.hasChildNodes()) { - tbody.removeChild(tbody.firstChild); - } - - var totals = { files:0, statements:0, executed:0 }; - - var file; - var files = []; - for (file in cc) { - if (! cc.hasOwnProperty(file)) { - continue; - } - - files.push(file); - } - files.sort(); - - var rowCounter = 0; - for (var f = 0; f < files.length; f++) { - file = files[f]; - var lineNumber; - var num_statements = 0; - var num_executed = 0; - var missing = []; - var fileCC = cc[file]; - var length = fileCC.length; - var currentConditionalEnd = 0; - var conditionals = null; - if (fileCC.conditionals) { - conditionals = fileCC.conditionals; - } - for (lineNumber = 0; lineNumber < length; lineNumber++) { - var n = fileCC[lineNumber]; - - if (lineNumber === currentConditionalEnd) { - currentConditionalEnd = 0; - } - else if (currentConditionalEnd === 0 && conditionals && conditionals[lineNumber]) { - currentConditionalEnd = conditionals[lineNumber]; - } - - if (currentConditionalEnd !== 0) { - continue; - } - - if (n === undefined || n === null) { - continue; - } - - if (n === 0) { - missing.push(lineNumber); - } - else { - num_executed++; - } - num_statements++; - } - - var percentage = ( num_statements === 0 ? 0 : parseInt(100 * num_executed / num_statements) ); - - var row = document.createElement("tr"); - row.className = ( rowCounter++ % 2 == 0 ? "odd" : "even" ); - - var cell = document.createElement("td"); - cell.className = 'leftColumn'; - var link = jscoverage_createLink(file); - cell.appendChild(link); - - row.appendChild(cell); - - cell = document.createElement("td"); - cell.className = 'numeric'; - cell.appendChild(document.createTextNode(num_statements)); - row.appendChild(cell); - - cell = document.createElement("td"); - cell.className = 'numeric'; - cell.appendChild(document.createTextNode(num_executed)); - row.appendChild(cell); - - // new coverage td containing a bar graph - cell = document.createElement("td"); - cell.className = 'coverage'; - var pctGraph = document.createElement("div"), - covered = document.createElement("div"), - pct = document.createElement("span"); - pctGraph.className = "pctGraph"; - if( num_statements === 0 ) { - covered.className = "skipped"; - pct.appendChild(document.createTextNode("N/A")); - } else { - covered.className = "covered"; - covered.style.width = percentage + "px"; - pct.appendChild(document.createTextNode(percentage + '%')); - } - pct.className = "pct"; - pctGraph.appendChild(covered); - cell.appendChild(pctGraph); - cell.appendChild(pct); - row.appendChild(cell); - - if (showMissingColumn) { - cell = document.createElement("td"); - for (var i = 0; i < missing.length; i++) { - if (i !== 0) { - cell.appendChild(document.createTextNode(", ")); - } - link = jscoverage_createLink(file, missing[i]); - - // group contiguous missing lines; e.g., 10, 11, 12 -> 10-12 - var j, start = missing[i]; - for (;;) { - j = 1; - while (i + j < missing.length && missing[i + j] == missing[i] + j) { - j++; - } - var nextmissing = missing[i + j], cur = missing[i] + j; - if (isNaN(nextmissing)) { - break; - } - while (cur < nextmissing && ! fileCC[cur]) { - cur++; - } - if (cur < nextmissing || cur >= length) { - break; - } - i += j; - } - if (start != missing[i] || j > 1) { - i += j - 1; - link.innerHTML += "-" + missing[i]; - } - - cell.appendChild(link); - } - row.appendChild(cell); - } - - tbody.appendChild(row); - - totals['files'] ++; - totals['statements'] += num_statements; - totals['executed'] += num_executed; - - // write totals data into summaryTotals row - var tr = document.getElementById("summaryTotals"); - if (tr) { - var tds = tr.getElementsByTagName("td"); - tds[0].getElementsByTagName("span")[1].firstChild.nodeValue = totals['files']; - tds[1].firstChild.nodeValue = totals['statements']; - tds[2].firstChild.nodeValue = totals['executed']; - - var coverage = parseInt(100 * totals['executed'] / totals['statements']); - if( isNaN( coverage ) ) { - coverage = 0; - } - tds[3].getElementsByTagName("span")[0].firstChild.nodeValue = coverage + '%'; - tds[3].getElementsByTagName("div")[1].style.width = coverage + 'px'; - } - - } - jscoverage_endLengthyOperation(); -} - -function jscoverage_appendMissingColumn() { - var headerRow = document.getElementById('headerRow'); - var missingHeader = document.createElement('th'); - missingHeader.id = 'missingHeader'; - missingHeader.innerHTML = 'Missing'; - headerRow.appendChild(missingHeader); - var summaryTotals = document.getElementById('summaryTotals'); - var empty = document.createElement('td'); - empty.id = 'missingCell'; - summaryTotals.appendChild(empty); -} - -function jscoverage_removeMissingColumn() { - var missingNode; - missingNode = document.getElementById('missingHeader'); - missingNode.parentNode.removeChild(missingNode); - missingNode = document.getElementById('missingCell'); - missingNode.parentNode.removeChild(missingNode); -} - -function jscoverage_checkbox_click() { - if (jscoverage_inLengthyOperation) { - return false; - } - jscoverage_beginLengthyOperation(); - var checkbox = document.getElementById('checkbox'); - var showMissingColumn = checkbox.checked; - setTimeout(function() { - if (showMissingColumn) { - jscoverage_appendMissingColumn(); - } - else { - jscoverage_removeMissingColumn(); - } - jscoverage_recalculateSummaryTab(); - }, 50); - return true; -} - -// ----------------------------------------------------------------------------- -// tab 3 - -function jscoverage_makeTable() { - var coverage = _$jscoverage[jscoverage_currentFile]; - var lines = coverage.source; - - // this can happen if there is an error in the original JavaScript file - if (! lines) { - lines = []; - } - - var rows = ['']; - var i = 0; - var progressBar = document.getElementById('progressBar'); - var tableHTML; - var currentConditionalEnd = 0; - - function joinTableRows() { - tableHTML = rows.join(''); - ProgressBar.setPercentage(progressBar, 60); - /* - This may be a long delay, so set a timeout of 100 ms to make sure the - display is updated. - */ - setTimeout(appendTable, 100); - } - - function appendTable() { - var sourceDiv = document.getElementById('sourceDiv'); - sourceDiv.innerHTML = tableHTML; - ProgressBar.setPercentage(progressBar, 80); - setTimeout(jscoverage_scrollToLine, 0); - } - - while (i < lines.length) { - var lineNumber = i + 1; - - if (lineNumber === currentConditionalEnd) { - currentConditionalEnd = 0; - } - else if (currentConditionalEnd === 0 && coverage.conditionals && coverage.conditionals[lineNumber]) { - currentConditionalEnd = coverage.conditionals[lineNumber]; - } - - var row = ''; - row += ''; - var timesExecuted = coverage[lineNumber]; - if (timesExecuted !== undefined && timesExecuted !== null) { - if (currentConditionalEnd !== 0) { - row += ''; - } - else { - row += ''; - } - row += ''; - row += ''; - row += '\n'; - rows[lineNumber] = row; - i++; - } - rows[i + 1] = '
' + lineNumber + ''; - } - else if (timesExecuted === 0) { - row += ''; - } - else { - row += ''; - } - row += timesExecuted; - row += '
' + lines[i] + '
'; - ProgressBar.setPercentage(progressBar, 40); - setTimeout(joinTableRows, 0); -} - -function jscoverage_scrollToLine() { - jscoverage_selectTab('sourceTab'); - if (! window.jscoverage_currentLine) { - jscoverage_endLengthyOperation(); - return; - } - var div = document.getElementById('sourceDiv'); - if (jscoverage_currentLine === 1) { - div.scrollTop = 0; - } - else { - var cell = document.getElementById('line-' + jscoverage_currentLine); - - // this might not be there if there is an error in the original JavaScript - if (cell) { - var divOffset = jscoverage_findPos(div); - var cellOffset = jscoverage_findPos(cell); - div.scrollTop = cellOffset - divOffset; - } - } - jscoverage_currentLine = 0; - jscoverage_endLengthyOperation(); -} - -/** -Loads the given file (and optional line) in the source tab. -*/ -function jscoverage_get(file, line) { - if (jscoverage_inLengthyOperation) { - return; - } - jscoverage_beginLengthyOperation(); - setTimeout(function() { - var sourceDiv = document.getElementById('sourceDiv'); - sourceDiv.innerHTML = ''; - jscoverage_selectTab('sourceTab'); - if (file === jscoverage_currentFile) { - jscoverage_currentLine = line; - jscoverage_recalculateSourceTab(); - } - else { - if (jscoverage_currentFile === null) { - var tab = document.getElementById('sourceTab'); - tab.className = ''; - tab.onclick = jscoverage_tab_click; - } - jscoverage_currentFile = file; - jscoverage_currentLine = line || 1; // when changing the source, always scroll to top - var fileDiv = document.getElementById('fileDiv'); - fileDiv.innerHTML = jscoverage_currentFile; - jscoverage_recalculateSourceTab(); - return; - } - }, 50); -} - -/** -Calculates coverage statistics for the current source file. -*/ -function jscoverage_recalculateSourceTab() { - if (! jscoverage_currentFile) { - jscoverage_endLengthyOperation(); - return; - } - var progressLabel = document.getElementById('progressLabel'); - progressLabel.innerHTML = 'Calculating coverage ...'; - var progressBar = document.getElementById('progressBar'); - ProgressBar.setPercentage(progressBar, 20); - setTimeout(jscoverage_makeTable, 0); -} - -// ----------------------------------------------------------------------------- -// tabs - -/** -Initializes the tab control. This function must be called when the document is -loaded. -*/ -function jscoverage_initTabControl() { - var tabs = document.getElementById('tabs'); - var i; - var child; - var tabNum = 0; - for (i = 0; i < tabs.childNodes.length; i++) { - child = tabs.childNodes.item(i); - if (child.nodeType === 1) { - if (child.className !== 'disabled') { - child.onclick = jscoverage_tab_click; - } - tabNum++; - } - } - jscoverage_selectTab(0); -} - -/** -Selects a tab. -@param tab the integer index of the tab (0, 1, 2, or 3) - OR - the ID of the tab element - OR - the tab element itself -*/ -function jscoverage_selectTab(tab) { - if (typeof tab !== 'number') { - tab = jscoverage_tabIndexOf(tab); - } - var tabs = document.getElementById('tabs'); - var tabPages = document.getElementById('tabPages'); - var nodeList; - var tabNum; - var i; - var node; - - nodeList = tabs.childNodes; - tabNum = 0; - for (i = 0; i < nodeList.length; i++) { - node = nodeList.item(i); - if (node.nodeType !== 1) { - continue; - } - - if (node.className !== 'disabled') { - if (tabNum === tab) { - node.className = 'selected'; - } - else { - node.className = ''; - } - } - tabNum++; - } - - nodeList = tabPages.childNodes; - tabNum = 0; - for (i = 0; i < nodeList.length; i++) { - node = nodeList.item(i); - if (node.nodeType !== 1) { - continue; - } - - if (tabNum === tab) { - node.className = 'selected TabPage'; - } - else { - node.className = 'TabPage'; - } - tabNum++; - } -} - -/** -Returns an integer (0, 1, 2, or 3) representing the index of a given tab. -@param tab the ID of the tab element - OR - the tab element itself -*/ -function jscoverage_tabIndexOf(tab) { - if (typeof tab === 'string') { - tab = document.getElementById(tab); - } - var tabs = document.getElementById('tabs'); - var i; - var child; - var tabNum = 0; - for (i = 0; i < tabs.childNodes.length; i++) { - child = tabs.childNodes.item(i); - if (child.nodeType === 1) { - if (child === tab) { - return tabNum; - } - tabNum++; - } - } -//#JSCOVERAGE_IF 0 - throw "Tab not found"; -//#JSCOVERAGE_ENDIF -} - -function jscoverage_tab_click(e) { - if (jscoverage_inLengthyOperation) { - return; - } - var target; -//#JSCOVERAGE_IF - if (e) { - target = e.target; - } - else if (window.event) { - // IE - target = window.event.srcElement; - } - if (target.className === 'selected') { - return; - } - jscoverage_beginLengthyOperation(); - setTimeout(function() { - if (target.id === 'summaryTab') { - var tbody = document.getElementById("summaryTbody"); - while (tbody.hasChildNodes()) { - tbody.removeChild(tbody.firstChild); - } - } - else if (target.id === 'sourceTab') { - var sourceDiv = document.getElementById('sourceDiv'); - sourceDiv.innerHTML = ''; - } - jscoverage_selectTab(target); - if (target.id === 'summaryTab') { - jscoverage_recalculateSummaryTab(); - } - else if (target.id === 'sourceTab') { - jscoverage_recalculateSourceTab(); - } - else { - jscoverage_endLengthyOperation(); - } - }, 50); -} - -// ----------------------------------------------------------------------------- -// progress bar - -var ProgressBar = { - init: function(element) { - element._percentage = 0; - - /* doing this via JavaScript crashes Safari */ -/* - var pctGraph = document.createElement('div'); - pctGraph.className = 'pctGraph'; - element.appendChild(pctGraph); - var covered = document.createElement('div'); - covered.className = 'covered'; - pctGraph.appendChild(covered); - var pct = document.createElement('span'); - pct.className = 'pct'; - element.appendChild(pct); -*/ - - ProgressBar._update(element); - }, - setPercentage: function(element, percentage) { - element._percentage = percentage; - ProgressBar._update(element); - }, - _update: function(element) { - var pctGraph = element.getElementsByTagName('div').item(0); - var covered = pctGraph.getElementsByTagName('div').item(0); - var pct = element.getElementsByTagName('span').item(0); - pct.innerHTML = element._percentage.toString() + '%'; - covered.style.width = element._percentage + 'px'; - } -}; - -// ----------------------------------------------------------------------------- -// reports - -function jscoverage_pad(s) { - return '0000'.substr(s.length) + s; -} - -function jscoverage_quote(s) { - return '"' + s.replace(/[\u0000-\u001f"\\\u007f-\uffff]/g, function (c) { - switch (c) { - case '\b': - return '\\b'; - case '\f': - return '\\f'; - case '\n': - return '\\n'; - case '\r': - return '\\r'; - case '\t': - return '\\t'; - // IE doesn't support this - /* - case '\v': - return '\\v'; - */ - case '"': - return '\\"'; - case '\\': - return '\\\\'; - default: - return '\\u' + jscoverage_pad(c.charCodeAt(0).toString(16)); - } - }) + '"'; -} - -function jscoverage_serializeCoverageToJSON() { - var json = []; - for (var file in _$jscoverage) { - if (! _$jscoverage.hasOwnProperty(file)) { - continue; - } - - var coverage = _$jscoverage[file]; - - var array = []; - var length = coverage.length; - for (var line = 0; line < length; line++) { - var value = coverage[line]; - if (value === undefined || value === null) { - value = 'null'; - } - array.push(value); - } - - var source = coverage.source; - var lines = []; - length = source.length; - for (var line = 0; line < length; line++) { - lines.push(jscoverage_quote(source[line])); - } - - json.push(jscoverage_quote(file) + ':{"coverage":[' + array.join(',') + '],"source":[' + lines.join(',') + ']}'); - } - return '{' + json.join(',') + '}'; -} - -function jscoverage_storeButton_click() { - if (jscoverage_inLengthyOperation) { - return; - } - - jscoverage_beginLengthyOperation(); - var img = document.getElementById('storeImg'); - img.style.visibility = 'visible'; - - var request = jscoverage_createRequest(); - request.open('POST', '/jscoverage-store', true); - request.onreadystatechange = function (event) { - if (request.readyState === 4) { - var message; - try { - if (request.status !== 200 && request.status !== 201 && request.status !== 204) { - throw request.status; - } - message = request.responseText; - } - catch (e) { - if (e.toString().search(/^\d{3}$/) === 0) { - message = e + ': ' + request.responseText; - } - else { - message = 'Could not connect to server: ' + e; - } - } - - jscoverage_endLengthyOperation(); - var img = document.getElementById('storeImg'); - img.style.visibility = 'hidden'; - - var div = document.getElementById('storeDiv'); - div.appendChild(document.createTextNode(new Date() + ': ' + message)); - div.appendChild(document.createElement('br')); - } - }; - request.setRequestHeader('Content-Type', 'application/json'); - var json = jscoverage_serializeCoverageToJSON(); - request.setRequestHeader('Content-Length', json.length.toString()); - request.send(json); -} diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/mediator.js b/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/mediator.js deleted file mode 100644 index a46c49f..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/lib-cov/mediator.js +++ /dev/null @@ -1,484 +0,0 @@ -/* automatically generated by JSCoverage - do not edit */ -try { - if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) { - // this is a browser window that was opened from another window - - if (! top.opener._$jscoverage) { - top.opener._$jscoverage = {}; - } - } -} -catch (e) {} - -try { - if (typeof top === 'object' && top !== null) { - // this is a browser window - - try { - if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) { - top._$jscoverage = top.opener._$jscoverage; - } - } - catch (e) {} - - if (! top._$jscoverage) { - top._$jscoverage = {}; - } - } -} -catch (e) {} - -try { - if (typeof top === 'object' && top !== null && top._$jscoverage) { - _$jscoverage = top._$jscoverage; - } -} -catch (e) {} -if (typeof _$jscoverage !== 'object') { - _$jscoverage = {}; -} -if (! _$jscoverage['mediator.js']) { - _$jscoverage['mediator.js'] = []; - _$jscoverage['mediator.js'][16] = 0; - _$jscoverage['mediator.js'][17] = 0; - _$jscoverage['mediator.js'][19] = 0; - _$jscoverage['mediator.js'][21] = 0; - _$jscoverage['mediator.js'][22] = 0; - _$jscoverage['mediator.js'][24] = 0; - _$jscoverage['mediator.js'][26] = 0; - _$jscoverage['mediator.js'][30] = 0; - _$jscoverage['mediator.js'][33] = 0; - _$jscoverage['mediator.js'][39] = 0; - _$jscoverage['mediator.js'][40] = 0; - _$jscoverage['mediator.js'][41] = 0; - _$jscoverage['mediator.js'][44] = 0; - _$jscoverage['mediator.js'][52] = 0; - _$jscoverage['mediator.js'][53] = 0; - _$jscoverage['mediator.js'][54] = 0; - _$jscoverage['mediator.js'][57] = 0; - _$jscoverage['mediator.js'][58] = 0; - _$jscoverage['mediator.js'][59] = 0; - _$jscoverage['mediator.js'][60] = 0; - _$jscoverage['mediator.js'][61] = 0; - _$jscoverage['mediator.js'][64] = 0; - _$jscoverage['mediator.js'][70] = 0; - _$jscoverage['mediator.js'][71] = 0; - _$jscoverage['mediator.js'][72] = 0; - _$jscoverage['mediator.js'][73] = 0; - _$jscoverage['mediator.js'][74] = 0; - _$jscoverage['mediator.js'][75] = 0; - _$jscoverage['mediator.js'][82] = 0; - _$jscoverage['mediator.js'][83] = 0; - _$jscoverage['mediator.js'][84] = 0; - _$jscoverage['mediator.js'][87] = 0; - _$jscoverage['mediator.js'][88] = 0; - _$jscoverage['mediator.js'][89] = 0; - _$jscoverage['mediator.js'][90] = 0; - _$jscoverage['mediator.js'][91] = 0; - _$jscoverage['mediator.js'][100] = 0; - _$jscoverage['mediator.js'][102] = 0; - _$jscoverage['mediator.js'][104] = 0; - _$jscoverage['mediator.js'][108] = 0; - _$jscoverage['mediator.js'][110] = 0; - _$jscoverage['mediator.js'][111] = 0; - _$jscoverage['mediator.js'][113] = 0; - _$jscoverage['mediator.js'][115] = 0; - _$jscoverage['mediator.js'][118] = 0; - _$jscoverage['mediator.js'][120] = 0; - _$jscoverage['mediator.js'][127] = 0; - _$jscoverage['mediator.js'][131] = 0; - _$jscoverage['mediator.js'][134] = 0; - _$jscoverage['mediator.js'][135] = 0; - _$jscoverage['mediator.js'][136] = 0; - _$jscoverage['mediator.js'][146] = 0; - _$jscoverage['mediator.js'][150] = 0; - _$jscoverage['mediator.js'][151] = 0; - _$jscoverage['mediator.js'][152] = 0; - _$jscoverage['mediator.js'][154] = 0; - _$jscoverage['mediator.js'][157] = 0; - _$jscoverage['mediator.js'][158] = 0; - _$jscoverage['mediator.js'][159] = 0; - _$jscoverage['mediator.js'][161] = 0; - _$jscoverage['mediator.js'][162] = 0; - _$jscoverage['mediator.js'][166] = 0; - _$jscoverage['mediator.js'][170] = 0; - _$jscoverage['mediator.js'][174] = 0; - _$jscoverage['mediator.js'][178] = 0; - _$jscoverage['mediator.js'][180] = 0; - _$jscoverage['mediator.js'][183] = 0; - _$jscoverage['mediator.js'][184] = 0; - _$jscoverage['mediator.js'][185] = 0; - _$jscoverage['mediator.js'][189] = 0; - _$jscoverage['mediator.js'][190] = 0; - _$jscoverage['mediator.js'][191] = 0; - _$jscoverage['mediator.js'][192] = 0; - _$jscoverage['mediator.js'][201] = 0; - _$jscoverage['mediator.js'][207] = 0; - _$jscoverage['mediator.js'][208] = 0; - _$jscoverage['mediator.js'][209] = 0; - _$jscoverage['mediator.js'][210] = 0; - _$jscoverage['mediator.js'][211] = 0; - _$jscoverage['mediator.js'][212] = 0; - _$jscoverage['mediator.js'][213] = 0; - _$jscoverage['mediator.js'][216] = 0; - _$jscoverage['mediator.js'][217] = 0; - _$jscoverage['mediator.js'][221] = 0; - _$jscoverage['mediator.js'][222] = 0; - _$jscoverage['mediator.js'][224] = 0; - _$jscoverage['mediator.js'][225] = 0; - _$jscoverage['mediator.js'][227] = 0; - _$jscoverage['mediator.js'][232] = 0; - _$jscoverage['mediator.js'][233] = 0; - _$jscoverage['mediator.js'][236] = 0; - _$jscoverage['mediator.js'][240] = 0; - _$jscoverage['mediator.js'][241] = 0; - _$jscoverage['mediator.js'][242] = 0; - _$jscoverage['mediator.js'][245] = 0; - _$jscoverage['mediator.js'][251] = 0; - _$jscoverage['mediator.js'][257] = 0; - _$jscoverage['mediator.js'][262] = 0; - _$jscoverage['mediator.js'][263] = 0; - _$jscoverage['mediator.js'][266] = 0; - _$jscoverage['mediator.js'][267] = 0; - _$jscoverage['mediator.js'][269] = 0; - _$jscoverage['mediator.js'][270] = 0; - _$jscoverage['mediator.js'][273] = 0; - _$jscoverage['mediator.js'][277] = 0; - _$jscoverage['mediator.js'][287] = 0; - _$jscoverage['mediator.js'][289] = 0; - _$jscoverage['mediator.js'][290] = 0; - _$jscoverage['mediator.js'][292] = 0; - _$jscoverage['mediator.js'][302] = 0; - _$jscoverage['mediator.js'][303] = 0; - _$jscoverage['mediator.js'][305] = 0; - _$jscoverage['mediator.js'][312] = 0; - _$jscoverage['mediator.js'][319] = 0; - _$jscoverage['mediator.js'][328] = 0; - _$jscoverage['mediator.js'][331] = 0; - _$jscoverage['mediator.js'][333] = 0; - _$jscoverage['mediator.js'][338] = 0; - _$jscoverage['mediator.js'][339] = 0; - _$jscoverage['mediator.js'][340] = 0; - _$jscoverage['mediator.js'][341] = 0; - _$jscoverage['mediator.js'][342] = 0; - _$jscoverage['mediator.js'][346] = 0; - _$jscoverage['mediator.js'][347] = 0; - _$jscoverage['mediator.js'][348] = 0; -} -_$jscoverage['mediator.js'].source = ["/*jslint bitwise: true, nomen: true, plusplus: true, white: true */","","/*!","* Mediator.js Library v0.9.0","* https://github.com/ajacksified/Mediator.js","*","* Copyright 2013, Jack Lawson","* MIT Licensed (http://www.opensource.org/licenses/mit-license.php)","*","* For more information: http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/index.html","* Project on GitHub: https://github.com/ajacksified/Mediator.js","*","* Last update: Jan 04 2013","*/","","(function(root, factory) {"," 'use strict';",""," if(typeof root.exports === 'function') {"," // Node/CommonJS"," root.exports.Mediator = factory();"," } else if(typeof root.define === 'function' && root.define.amd) {"," // AMD"," root.define([], function() {"," // Export to global too, for backward compatiblity"," root.Mediator = factory();"," });"," } else {"," // Browser global"," root.Mediator = factory();"," }","}(this, function() {"," 'use strict';",""," // We'll generate guids for class instances for easy referencing later on."," // Subscriber instances will have an id that can be refernced for quick"," // lookups.",""," function guidGenerator() {"," var S4 = function() {"," return (((1+Math.random())*0x10000)|0).toString(16).substring(1);"," };",""," return (S4()+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+S4()+S4());"," }",""," // Subscribers are instances of Mediator Channel registrations. We generate"," // an object instance so that it can be updated later on without having to"," // unregister and re-register. Subscribers are constructed with a function"," // to be called, options object, and context.",""," function Subscriber(fn, options, context){"," if(!(this instanceof Subscriber)) {"," return new Subscriber(fn, options, context);"," }",""," this.id = guidGenerator();"," this.fn = fn;"," this.options = options;"," this.context = context;"," this.channel = null;"," }",""," Subscriber.prototype = {"," // Mediator.update on a subscriber instance can update its function,context,"," // or options object. It takes in an object and looks for fn, context, or"," // options keys.",""," update: function(options){"," if(options){"," this.fn = options.fn || this.fn;"," this.context = options.context || this.context;"," this.options = options.options || this.options;"," if(this.channel && this.options && this.options.priority !== undefined) {"," this.channel.setPriority(this.id, this.options.priority);"," }"," }"," }"," };","",""," function Channel(namespace, parent){"," if(!(this instanceof Channel)) {"," return new Channel(namespace);"," }",""," this.namespace = namespace || \"\";"," this._subscribers = [];"," this._channels = [];"," this._parent = parent;"," this.stopped = false;"," }",""," // A Mediator channel holds a list of sub-channels and subscribers to be fired"," // when Mediator.publish is called on the Mediator instance. It also contains"," // some methods to manipulate its lists of data; only setPriority and"," // StopPropagation are meant to be used. The other methods should be accessed"," // through the Mediator instance.",""," Channel.prototype = {"," addSubscriber: function(fn, options, context){"," var subscriber = new Subscriber(fn, options, context);",""," if(options && options.priority !== undefined){"," // Cheap hack to either parse as an int or turn it into 0. Runs faster"," // in many browsers than parseInt with the benefit that it won't"," // return a NaN."," options.priority = options.priority >> 0;",""," if(options.priority < 0){ options.priority = 0; }"," if(options.priority >= this._subscribers.length){ options.priority = this._subscribers.length-1; }",""," this._subscribers.splice(options.priority, 0, subscriber);"," }else{"," this._subscribers.push(subscriber);"," }",""," subscriber.channel = this;",""," return subscriber;"," },",""," // The channel instance is passed as an argument to the mediator subscriber,"," // and further subscriber propagation can be called with"," // channel.StopPropagation()."," stopPropagation: function(){"," this.stopped = true;"," },",""," getSubscriber: function(identifier){"," var x = 0,"," y = this._subscribers.length;",""," for(x, y; x < y; x++){"," if(this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier){"," return this._subscribers[x];"," }"," }"," },",""," // Channel.setPriority is useful in updating the order in which Subscribers"," // are called, and takes an identifier (subscriber id or named function) and"," // an array index. It will not search recursively through subchannels.",""," setPriority: function(identifier, priority){"," var oldIndex = 0,"," x = 0,"," sub, firstHalf, lastHalf, y;",""," for(x = 0, y = this._subscribers.length; x < y; x++){"," if(this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier){"," break;"," }"," oldIndex ++;"," }",""," sub = this._subscribers[oldIndex];"," firstHalf = this._subscribers.slice(0, oldIndex);"," lastHalf = this._subscribers.slice(oldIndex+1);",""," this._subscribers = firstHalf.concat(lastHalf);"," this._subscribers.splice(priority, 0, sub);"," },",""," addChannel: function(channel){"," this._channels[channel] = new Channel((this.namespace ? this.namespace + ':' : '') + channel, this);"," },",""," hasChannel: function(channel){"," return this._channels.hasOwnProperty(channel);"," },",""," returnChannel: function(channel){"," return this._channels[channel];"," },",""," removeSubscriber: function(identifier){"," var x = 0,"," y;"," y = this._subscribers.length;",""," // If we don't pass in an id, we're clearing all"," if(!identifier){"," this._subscribers = [];"," return;"," }",""," // Going backwards makes splicing a whole lot easier."," for(x, y; y > x; y--) {"," if(this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier){"," this._subscribers[x].channel = null;"," this._subscribers.splice(x,1);"," }"," }"," },",""," // This will publish arbitrary arguments to a subscriber and then to parent"," // channels.",""," publish: function(data){"," var x = 0,"," y = this._subscribers.length,"," called = false,"," subscriber, l;",""," // Priority is preserved in the _subscribers index."," for(x, y; x < y; x++) {"," if(!this.stopped){"," subscriber = this._subscribers[x];"," if(subscriber.options !== undefined && typeof subscriber.options.predicate === \"function\"){"," if(subscriber.options.predicate.apply(subscriber.context, data)){"," subscriber.fn.apply(subscriber.context, data);"," called = true;"," }"," }else{"," subscriber.fn.apply(subscriber.context, data);"," called = true;"," }"," }",""," if(called && subscriber.options && subscriber.options !== undefined){"," subscriber.options.calls--;",""," if(subscriber.options.calls < 1){"," this.removeSubscriber(subscriber.id);"," }else{"," subscriber.update(subscriber.options);"," }"," }"," }",""," if(this._parent){"," this._parent.publish(data);"," }",""," this.stopped = false;"," }"," };",""," function Mediator() {"," if(!(this instanceof Mediator)) {"," return new Mediator();"," }",""," this._channels = new Channel('');"," }",""," // A Mediator instance is the interface through which events are registered"," // and removed from publish channels.",""," Mediator.prototype = {",""," // Returns a channel instance based on namespace, for example"," // application:chat:message:received",""," getChannel: function(namespace){"," var channel = this._channels,"," namespaceHierarchy = namespace.split(':'),"," x = 0, "," y = namespaceHierarchy.length;",""," if(namespace === ''){"," return channel;"," }",""," if(namespaceHierarchy.length > 0){"," for(x, y; x < y; x++){",""," if(!channel.hasChannel(namespaceHierarchy[x])){"," channel.addChannel(namespaceHierarchy[x]);"," }",""," channel = channel.returnChannel(namespaceHierarchy[x]);"," }"," }",""," return channel;"," },",""," // Pass in a channel namespace, function to be called, options, and context"," // to call the function in to Subscribe. It will create a channel if one"," // does not exist. Options can include a predicate to determine if it"," // should be called (based on the data published to it) and a priority"," // index.",""," subscribe: function(channelName, fn, options, context){"," var channel = this.getChannel(channelName);",""," options = options || {};"," context = context || {};",""," return channel.addSubscriber(fn, options, context);"," },",""," // Pass in a channel namespace, function to be called, options, and context"," // to call the function in to Subscribe. It will create a channel if one"," // does not exist. Options can include a predicate to determine if it"," // should be called (based on the data published to it) and a priority"," // index.",""," once: function(channelName, fn, options, context){"," options = options || {};"," options.calls = 1;",""," return this.subscribe(channelName, fn, options, context);"," },",""," // Returns a subscriber for a given subscriber id / named function and"," // channel namespace",""," getSubscriber: function(identifier, channel){"," return this.getChannel(channel || \"\").getSubscriber(identifier);"," },",""," // Remove a subscriber from a given channel namespace recursively based on"," // a passed-in subscriber id or named function.",""," remove: function(channelName, identifier){"," this.getChannel(channelName).removeSubscriber(identifier);"," },",""," // Publishes arbitrary data to a given channel namespace. Channels are"," // called recursively downwards; a post to application:chat will post to"," // application:chat:receive and application:chat:derp:test:beta:bananas."," // Called using Mediator.publish(\"application:chat\", [ args ]);",""," publish: function(channelName){"," var args = Array.prototype.slice.call(arguments, 1),"," channel = this.getChannel(channelName);",""," args.push(channel);",""," this.getChannel(channelName).publish(args);"," }"," };",""," // Alias some common names for easy interop"," Mediator.prototype.on = Mediator.prototype.subscribe;"," Mediator.prototype.bind = Mediator.prototype.subscribe;"," Mediator.prototype.emit = Mediator.prototype.publish;"," Mediator.prototype.trigger = Mediator.prototype.publish;"," Mediator.prototype.off = Mediator.prototype.remove;",""," // Finally, expose it all.",""," Mediator.Channel = Channel;"," Mediator.Subscriber = Subscriber;"," return Mediator;","}));"]; -_$jscoverage['mediator.js'][16]++; -(function (root, factory) { - _$jscoverage['mediator.js'][17]++; - "use strict"; - _$jscoverage['mediator.js'][19]++; - if (((typeof root.exports) === "function")) { - _$jscoverage['mediator.js'][21]++; - root.exports.Mediator = factory(); - } - else { - _$jscoverage['mediator.js'][22]++; - if ((((typeof root.define) === "function") && root.define.amd)) { - _$jscoverage['mediator.js'][24]++; - root.define([], (function () { - _$jscoverage['mediator.js'][26]++; - root.Mediator = factory(); -})); - } - else { - _$jscoverage['mediator.js'][30]++; - root.Mediator = factory(); - } - } -})(this, (function () { - _$jscoverage['mediator.js'][33]++; - "use strict"; - _$jscoverage['mediator.js'][39]++; - function guidGenerator() { - _$jscoverage['mediator.js'][40]++; - var S4 = (function () { - _$jscoverage['mediator.js'][41]++; - return (((1 + Math.random()) * 65536) | 0).toString(16).substring(1); -}); - _$jscoverage['mediator.js'][44]++; - return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); -} - _$jscoverage['mediator.js'][52]++; - function Subscriber(fn, options, context) { - _$jscoverage['mediator.js'][53]++; - if ((! (this instanceof Subscriber))) { - _$jscoverage['mediator.js'][54]++; - return new Subscriber(fn, options, context); - } - _$jscoverage['mediator.js'][57]++; - this.id = guidGenerator(); - _$jscoverage['mediator.js'][58]++; - this.fn = fn; - _$jscoverage['mediator.js'][59]++; - this.options = options; - _$jscoverage['mediator.js'][60]++; - this.context = context; - _$jscoverage['mediator.js'][61]++; - this.channel = null; -} - _$jscoverage['mediator.js'][64]++; - Subscriber.prototype = {update: (function (options) { - _$jscoverage['mediator.js'][70]++; - if (options) { - _$jscoverage['mediator.js'][71]++; - this.fn = (options.fn || this.fn); - _$jscoverage['mediator.js'][72]++; - this.context = (options.context || this.context); - _$jscoverage['mediator.js'][73]++; - this.options = (options.options || this.options); - _$jscoverage['mediator.js'][74]++; - if ((this.channel && this.options && (this.options.priority !== undefined))) { - _$jscoverage['mediator.js'][75]++; - this.channel.setPriority(this.id, this.options.priority); - } - } -})}; - _$jscoverage['mediator.js'][82]++; - function Channel(namespace, parent) { - _$jscoverage['mediator.js'][83]++; - if ((! (this instanceof Channel))) { - _$jscoverage['mediator.js'][84]++; - return new Channel(namespace); - } - _$jscoverage['mediator.js'][87]++; - this.namespace = (namespace || ""); - _$jscoverage['mediator.js'][88]++; - this._subscribers = []; - _$jscoverage['mediator.js'][89]++; - this._channels = []; - _$jscoverage['mediator.js'][90]++; - this._parent = parent; - _$jscoverage['mediator.js'][91]++; - this.stopped = false; -} - _$jscoverage['mediator.js'][100]++; - Channel.prototype = {addSubscriber: (function (fn, options, context) { - _$jscoverage['mediator.js'][102]++; - var subscriber = new Subscriber(fn, options, context); - _$jscoverage['mediator.js'][104]++; - if ((options && (options.priority !== undefined))) { - _$jscoverage['mediator.js'][108]++; - options.priority = (options.priority >> 0); - _$jscoverage['mediator.js'][110]++; - if ((options.priority < 0)) { - _$jscoverage['mediator.js'][110]++; - options.priority = 0; - } - _$jscoverage['mediator.js'][111]++; - if ((options.priority >= this._subscribers.length)) { - _$jscoverage['mediator.js'][111]++; - options.priority = (this._subscribers.length - 1); - } - _$jscoverage['mediator.js'][113]++; - this._subscribers.splice(options.priority, 0, subscriber); - } - else { - _$jscoverage['mediator.js'][115]++; - this._subscribers.push(subscriber); - } - _$jscoverage['mediator.js'][118]++; - subscriber.channel = this; - _$jscoverage['mediator.js'][120]++; - return subscriber; -}), stopPropagation: (function () { - _$jscoverage['mediator.js'][127]++; - this.stopped = true; -}), getSubscriber: (function (identifier) { - _$jscoverage['mediator.js'][131]++; - var x = 0, y = this._subscribers.length; - _$jscoverage['mediator.js'][134]++; - for ((x, y); (x < y); (x++)) { - _$jscoverage['mediator.js'][135]++; - if (((this._subscribers[x].id === identifier) || (this._subscribers[x].fn === identifier))) { - _$jscoverage['mediator.js'][136]++; - return this._subscribers[x]; - } -} -}), setPriority: (function (identifier, priority) { - _$jscoverage['mediator.js'][146]++; - var oldIndex = 0, x = 0, sub, firstHalf, lastHalf, y; - _$jscoverage['mediator.js'][150]++; - for (((x = 0), (y = this._subscribers.length)); (x < y); (x++)) { - _$jscoverage['mediator.js'][151]++; - if (((this._subscribers[x].id === identifier) || (this._subscribers[x].fn === identifier))) { - _$jscoverage['mediator.js'][152]++; - break; - } - _$jscoverage['mediator.js'][154]++; - (oldIndex++); -} - _$jscoverage['mediator.js'][157]++; - sub = this._subscribers[oldIndex]; - _$jscoverage['mediator.js'][158]++; - firstHalf = this._subscribers.slice(0, oldIndex); - _$jscoverage['mediator.js'][159]++; - lastHalf = this._subscribers.slice((oldIndex + 1)); - _$jscoverage['mediator.js'][161]++; - this._subscribers = firstHalf.concat(lastHalf); - _$jscoverage['mediator.js'][162]++; - this._subscribers.splice(priority, 0, sub); -}), addChannel: (function (channel) { - _$jscoverage['mediator.js'][166]++; - this._channels[channel] = new Channel(((this.namespace? (this.namespace + ":"): "") + channel), this); -}), hasChannel: (function (channel) { - _$jscoverage['mediator.js'][170]++; - return this._channels.hasOwnProperty(channel); -}), returnChannel: (function (channel) { - _$jscoverage['mediator.js'][174]++; - return this._channels[channel]; -}), removeSubscriber: (function (identifier) { - _$jscoverage['mediator.js'][178]++; - var x = 0, y; - _$jscoverage['mediator.js'][180]++; - y = this._subscribers.length; - _$jscoverage['mediator.js'][183]++; - if ((! identifier)) { - _$jscoverage['mediator.js'][184]++; - this._subscribers = []; - _$jscoverage['mediator.js'][185]++; - return; - } - _$jscoverage['mediator.js'][189]++; - for ((x, y); (y > x); (y--)) { - _$jscoverage['mediator.js'][190]++; - if (((this._subscribers[x].fn === identifier) || (this._subscribers[x].id === identifier))) { - _$jscoverage['mediator.js'][191]++; - this._subscribers[x].channel = null; - _$jscoverage['mediator.js'][192]++; - this._subscribers.splice(x, 1); - } -} -}), publish: (function (data) { - _$jscoverage['mediator.js'][201]++; - var x = 0, y = this._subscribers.length, called = false, subscriber, l; - _$jscoverage['mediator.js'][207]++; - for ((x, y); (x < y); (x++)) { - _$jscoverage['mediator.js'][208]++; - if ((! this.stopped)) { - _$jscoverage['mediator.js'][209]++; - subscriber = this._subscribers[x]; - _$jscoverage['mediator.js'][210]++; - if (((subscriber.options !== undefined) && ((typeof subscriber.options.predicate) === "function"))) { - _$jscoverage['mediator.js'][211]++; - if (subscriber.options.predicate.apply(subscriber.context, data)) { - _$jscoverage['mediator.js'][212]++; - subscriber.fn.apply(subscriber.context, data); - _$jscoverage['mediator.js'][213]++; - called = true; - } - } - else { - _$jscoverage['mediator.js'][216]++; - subscriber.fn.apply(subscriber.context, data); - _$jscoverage['mediator.js'][217]++; - called = true; - } - } - _$jscoverage['mediator.js'][221]++; - if ((called && subscriber.options && (subscriber.options !== undefined))) { - _$jscoverage['mediator.js'][222]++; - (subscriber.options.calls--); - _$jscoverage['mediator.js'][224]++; - if ((subscriber.options.calls < 1)) { - _$jscoverage['mediator.js'][225]++; - this.removeSubscriber(subscriber.id); - } - else { - _$jscoverage['mediator.js'][227]++; - subscriber.update(subscriber.options); - } - } -} - _$jscoverage['mediator.js'][232]++; - if (this._parent) { - _$jscoverage['mediator.js'][233]++; - this._parent.publish(data); - } - _$jscoverage['mediator.js'][236]++; - this.stopped = false; -})}; - _$jscoverage['mediator.js'][240]++; - function Mediator() { - _$jscoverage['mediator.js'][241]++; - if ((! (this instanceof Mediator))) { - _$jscoverage['mediator.js'][242]++; - return new Mediator(); - } - _$jscoverage['mediator.js'][245]++; - this._channels = new Channel(""); -} - _$jscoverage['mediator.js'][251]++; - Mediator.prototype = {getChannel: (function (namespace) { - _$jscoverage['mediator.js'][257]++; - var channel = this._channels, namespaceHierarchy = namespace.split(":"), x = 0, y = namespaceHierarchy.length; - _$jscoverage['mediator.js'][262]++; - if ((namespace === "")) { - _$jscoverage['mediator.js'][263]++; - return channel; - } - _$jscoverage['mediator.js'][266]++; - if ((namespaceHierarchy.length > 0)) { - _$jscoverage['mediator.js'][267]++; - for ((x, y); (x < y); (x++)) { - _$jscoverage['mediator.js'][269]++; - if ((! channel.hasChannel(namespaceHierarchy[x]))) { - _$jscoverage['mediator.js'][270]++; - channel.addChannel(namespaceHierarchy[x]); - } - _$jscoverage['mediator.js'][273]++; - channel = channel.returnChannel(namespaceHierarchy[x]); -} - } - _$jscoverage['mediator.js'][277]++; - return channel; -}), subscribe: (function (channelName, fn, options, context) { - _$jscoverage['mediator.js'][287]++; - var channel = this.getChannel(channelName); - _$jscoverage['mediator.js'][289]++; - options = (options || {}); - _$jscoverage['mediator.js'][290]++; - context = (context || {}); - _$jscoverage['mediator.js'][292]++; - return channel.addSubscriber(fn, options, context); -}), once: (function (channelName, fn, options, context) { - _$jscoverage['mediator.js'][302]++; - options = (options || {}); - _$jscoverage['mediator.js'][303]++; - options.calls = 1; - _$jscoverage['mediator.js'][305]++; - return this.subscribe(channelName, fn, options, context); -}), getSubscriber: (function (identifier, channel) { - _$jscoverage['mediator.js'][312]++; - return this.getChannel((channel || "")).getSubscriber(identifier); -}), remove: (function (channelName, identifier) { - _$jscoverage['mediator.js'][319]++; - this.getChannel(channelName).removeSubscriber(identifier); -}), publish: (function (channelName) { - _$jscoverage['mediator.js'][328]++; - var args = Array.prototype.slice.call(arguments, 1), channel = this.getChannel(channelName); - _$jscoverage['mediator.js'][331]++; - args.push(channel); - _$jscoverage['mediator.js'][333]++; - this.getChannel(channelName).publish(args); -})}; - _$jscoverage['mediator.js'][338]++; - Mediator.prototype.on = Mediator.prototype.subscribe; - _$jscoverage['mediator.js'][339]++; - Mediator.prototype.bind = Mediator.prototype.subscribe; - _$jscoverage['mediator.js'][340]++; - Mediator.prototype.emit = Mediator.prototype.publish; - _$jscoverage['mediator.js'][341]++; - Mediator.prototype.trigger = Mediator.prototype.publish; - _$jscoverage['mediator.js'][342]++; - Mediator.prototype.off = Mediator.prototype.remove; - _$jscoverage['mediator.js'][346]++; - Mediator.Channel = Channel; - _$jscoverage['mediator.js'][347]++; - Mediator.Subscriber = Subscriber; - _$jscoverage['mediator.js'][348]++; - return Mediator; -})); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/lib/mediator.js b/Kapitel7/Mediator/node_modules/mediator-js/lib/mediator.js deleted file mode 100644 index 533df93..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/lib/mediator.js +++ /dev/null @@ -1,387 +0,0 @@ -/*jslint bitwise: true, nomen: true, plusplus: true, white: true */ - -/*! -* Mediator.js Library v0.9.8 -* https://github.com/ajacksified/Mediator.js -* -* Copyright 2013, Jack Lawson -* MIT Licensed (http://www.opensource.org/licenses/mit-license.php) -* -* For more information: http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/index.html -* Project on GitHub: https://github.com/ajacksified/Mediator.js -* -* Last update: October 19 2013 -*/ - -(function(global, factory) { - 'use strict'; - - if(typeof define === 'function' && define.amd) { - // AMD - define('mediator-js', [], function() { - global.Mediator = factory(); - return global.Mediator; - }); - } else if (typeof exports !== 'undefined') { - // Node/CommonJS - exports.Mediator = factory(); - } else { - // Browser global - global.Mediator = factory(); - } -}(this, function() { - 'use strict'; - - // We'll generate guids for class instances for easy referencing later on. - // Subscriber instances will have an id that can be refernced for quick - // lookups. - - function guidGenerator() { - var S4 = function() { - return (((1+Math.random())*0x10000)|0).toString(16).substring(1); - }; - - return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); - } - - // Subscribers are instances of Mediator Channel registrations. We generate - // an object instance so that it can be updated later on without having to - // unregister and re-register. Subscribers are constructed with a function - // to be called, options object, and context. - - function Subscriber(fn, options, context){ - if(!(this instanceof Subscriber)) { - return new Subscriber(fn, options, context); - } - - this.id = guidGenerator(); - this.fn = fn; - this.options = options; - this.context = context; - this.channel = null; - } - - Subscriber.prototype = { - // Mediator.update on a subscriber instance can update its function,context, - // or options object. It takes in an object and looks for fn, context, or - // options keys. - - update: function(options){ - if(options){ - this.fn = options.fn || this.fn; - this.context = options.context || this.context; - this.options = options.options || this.options; - if(this.channel && this.options && this.options.priority !== undefined) { - this.channel.setPriority(this.id, this.options.priority); - } - } - } - }; - - - function Channel(namespace, parent){ - if(!(this instanceof Channel)) { - return new Channel(namespace); - } - - this.namespace = namespace || ""; - this._subscribers = []; - this._channels = {}; - this._parent = parent; - this.stopped = false; - } - - // A Mediator channel holds a list of sub-channels and subscribers to be fired - // when Mediator.publish is called on the Mediator instance. It also contains - // some methods to manipulate its lists of data; only setPriority and - // StopPropagation are meant to be used. The other methods should be accessed - // through the Mediator instance. - - Channel.prototype = { - addSubscriber: function(fn, options, context){ - var subscriber = new Subscriber(fn, options, context); - - if(options && options.priority !== undefined){ - // Cheap hack to either parse as an int or turn it into 0. Runs faster - // in many browsers than parseInt with the benefit that it won't - // return a NaN. - options.priority = options.priority >> 0; - - if(options.priority < 0){ options.priority = 0; } - if(options.priority >= this._subscribers.length){ options.priority = this._subscribers.length-1; } - - this._subscribers.splice(options.priority, 0, subscriber); - }else{ - this._subscribers.push(subscriber); - } - - subscriber.channel = this; - - return subscriber; - }, - - // The channel instance is passed as an argument to the mediator subscriber, - // and further subscriber propagation can be called with - // channel.StopPropagation(). - stopPropagation: function(){ - this.stopped = true; - }, - - getSubscriber: function(identifier){ - var x = 0, - y = this._subscribers.length; - - for(x, y; x < y; x++){ - if(this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier){ - return this._subscribers[x]; - } - } - }, - - // Channel.setPriority is useful in updating the order in which Subscribers - // are called, and takes an identifier (subscriber id or named function) and - // an array index. It will not search recursively through subchannels. - - setPriority: function(identifier, priority){ - var oldIndex = 0, - x = 0, - sub, firstHalf, lastHalf, y; - - for(x = 0, y = this._subscribers.length; x < y; x++){ - if(this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier){ - break; - } - oldIndex ++; - } - - sub = this._subscribers[oldIndex]; - firstHalf = this._subscribers.slice(0, oldIndex); - lastHalf = this._subscribers.slice(oldIndex+1); - - this._subscribers = firstHalf.concat(lastHalf); - this._subscribers.splice(priority, 0, sub); - }, - - addChannel: function(channel){ - this._channels[channel] = new Channel((this.namespace ? this.namespace + ':' : '') + channel, this); - }, - - hasChannel: function(channel){ - return this._channels.hasOwnProperty(channel); - }, - - returnChannel: function(channel){ - return this._channels[channel]; - }, - - removeSubscriber: function(identifier){ - var x = this._subscribers.length - 1; - - // If we don't pass in an id, we're clearing all - if(!identifier){ - this._subscribers = []; - return; - } - - // Going backwards makes splicing a whole lot easier. - for(x; x >= 0; x--) { - if(this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier){ - this._subscribers[x].channel = null; - this._subscribers.splice(x,1); - } - } - }, - - // This will publish arbitrary arguments to a subscriber and then to parent - // channels. - - publish: function(data){ - var x = 0, - y = this._subscribers.length, - shouldCall = false, - subscriber, l, - subsBefore,subsAfter; - - // Priority is preserved in the _subscribers index. - for(x, y; x < y; x++) { - // By default set the flag to false - shouldCall = false; - subscriber = this._subscribers[x]; - - if(!this.stopped){ - subsBefore = this._subscribers.length; - if(subscriber.options !== undefined && typeof subscriber.options.predicate === "function"){ - if(subscriber.options.predicate.apply(subscriber.context, data)){ - // The predicate matches, the callback function should be called - shouldCall = true; - } - }else{ - // There is no predicate to match, the callback should always be called - shouldCall = true; - } - } - - // Check if the callback should be called - if(shouldCall) { - // Check if the subscriber has options and if this include the calls options - if (subscriber.options && subscriber.options.calls !== undefined){ - // Decrease the number of calls left by one - subscriber.options.calls--; - // Once the number of calls left reaches zero or less we need to remove the subscriber - if(subscriber.options.calls < 1){ - this.removeSubscriber(subscriber.id); - } - } - // Now we call the callback, if this in turns publishes to the same channel it will no longer - // cause the callback to be called as we just removed it as a subscriber - subscriber.fn.apply(subscriber.context, data); - - subsAfter = this._subscribers.length; - y = subsAfter; - if (subsAfter === subsBefore - 1){ - x--; - } - } - } - - if(this._parent){ - this._parent.publish(data); - } - - this.stopped = false; - } - }; - - function Mediator() { - if(!(this instanceof Mediator)) { - return new Mediator(); - } - - this._channels = new Channel(''); - } - - // A Mediator instance is the interface through which events are registered - // and removed from publish channels. - - Mediator.prototype = { - - // Returns a channel instance based on namespace, for example - // application:chat:message:received. If readOnly is true we - // will refrain from creating non existing channels. - - getChannel: function(namespace, readOnly){ - var channel = this._channels, - namespaceHierarchy = namespace.split(':'), - x = 0, - y = namespaceHierarchy.length; - - if(namespace === ''){ - return channel; - } - - if(namespaceHierarchy.length > 0){ - for(x, y; x < y; x++){ - - if(!channel.hasChannel(namespaceHierarchy[x])){ - if (readOnly) { - break; - } else { - channel.addChannel(namespaceHierarchy[x]); - } - } - - channel = channel.returnChannel(namespaceHierarchy[x]); - } - } - - return channel; - }, - - // Pass in a channel namespace, function to be called, options, and context - // to call the function in to Subscribe. It will create a channel if one - // does not exist. Options can include a predicate to determine if it - // should be called (based on the data published to it) and a priority - // index. - - subscribe: function(channelName, fn, options, context){ - var channel = this.getChannel(channelName || "", false); - - options = options || {}; - context = context || {}; - - return channel.addSubscriber(fn, options, context); - }, - - // Pass in a channel namespace, function to be called, options, and context - // to call the function in to Subscribe. It will create a channel if one - // does not exist. Options can include a predicate to determine if it - // should be called (based on the data published to it) and a priority - // index. - - once: function(channelName, fn, options, context){ - options = options || {}; - options.calls = 1; - - return this.subscribe(channelName, fn, options, context); - }, - - // Returns a subscriber for a given subscriber id / named function and - // channel namespace - - getSubscriber: function(identifier, channelName){ - var channel = this.getChannel(channelName || "", true); - // We have to check if channel within the hierarchy exists and if it is - // an exact match for the requested channel - if (channel.namespace !== channelName) { - return null; - } - - return channel.getSubscriber(identifier); - }, - - // Remove a subscriber from a given channel namespace recursively based on - // a passed-in subscriber id or named function. - - remove: function(channelName, identifier){ - var channel = this.getChannel(channelName || "", true); - if (channel.namespace !== channelName) { - return false; - } - - channel.removeSubscriber(identifier); - }, - - // Publishes arbitrary data to a given channel namespace. Channels are - // called recursively downwards; a post to application:chat will post to - // application:chat:receive and application:chat:derp:test:beta:bananas. - // Called using Mediator.publish("application:chat", [ args ]); - - publish: function(channelName){ - var channel = this.getChannel(channelName || "", true); - if (channel.namespace !== channelName) { - return null; - } - - var args = Array.prototype.slice.call(arguments, 1); - - args.push(channel); - - channel.publish(args); - } - }; - - // Alias some common names for easy interop - Mediator.prototype.on = Mediator.prototype.subscribe; - Mediator.prototype.bind = Mediator.prototype.subscribe; - Mediator.prototype.emit = Mediator.prototype.publish; - Mediator.prototype.trigger = Mediator.prototype.publish; - Mediator.prototype.off = Mediator.prototype.remove; - - // Finally, expose it all. - - Mediator.Channel = Channel; - Mediator.Subscriber = Subscriber; - Mediator.version = "0.9.8"; - - return Mediator; -})); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/mediator.min.js b/Kapitel7/Mediator/node_modules/mediator-js/mediator.min.js deleted file mode 100644 index a298a33..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/mediator.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b){"use strict";"function"==typeof define&&define.amd?define("mediator-js",[],function(){return a.Mediator=b(),a.Mediator}):"undefined"!=typeof exports?exports.Mediator=b():a.Mediator=b()}(this,function(){"use strict";function a(){var a=function(){return(0|65536*(1+Math.random())).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}function b(c,d,e){return this instanceof b?(this.id=a(),this.fn=c,this.options=d,this.context=e,this.channel=null,void 0):new b(c,d,e)}function c(a,b){return this instanceof c?(this.namespace=a||"",this._subscribers=[],this._channels={},this._parent=b,this.stopped=!1,void 0):new c(a)}function d(){return this instanceof d?(this._channels=new c(""),void 0):new d}return b.prototype={update:function(a){a&&(this.fn=a.fn||this.fn,this.context=a.context||this.context,this.options=a.options||this.options,this.channel&&this.options&&void 0!==this.options.priority&&this.channel.setPriority(this.id,this.options.priority))}},c.prototype={addSubscriber:function(a,c,d){var e=new b(a,c,d);return c&&void 0!==c.priority?(c.priority=c.priority>>0,c.priority<0&&(c.priority=0),c.priority>=this._subscribers.length&&(c.priority=this._subscribers.length-1),this._subscribers.splice(c.priority,0,e)):this._subscribers.push(e),e.channel=this,e},stopPropagation:function(){this.stopped=!0},getSubscriber:function(a){var b=0,c=this._subscribers.length;for(c;c>b;b++)if(this._subscribers[b].id===a||this._subscribers[b].fn===a)return this._subscribers[b]},setPriority:function(a,b){var e,f,g,h,c=0,d=0;for(d=0,h=this._subscribers.length;h>d&&this._subscribers[d].id!==a&&this._subscribers[d].fn!==a;d++)c++;e=this._subscribers[c],f=this._subscribers.slice(0,c),g=this._subscribers.slice(c+1),this._subscribers=f.concat(g),this._subscribers.splice(b,0,e)},addChannel:function(a){this._channels[a]=new c((this.namespace?this.namespace+":":"")+a,this)},hasChannel:function(a){return this._channels.hasOwnProperty(a)},returnChannel:function(a){return this._channels[a]},removeSubscriber:function(a){var b=this._subscribers.length-1;if(!a)return this._subscribers=[],void 0;for(b;b>=0;b--)(this._subscribers[b].fn===a||this._subscribers[b].id===a)&&(this._subscribers[b].channel=null,this._subscribers.splice(b,1))},publish:function(a){var e,g,h,b=0,c=this._subscribers.length,d=!1;for(c;c>b;b++)d=!1,e=this._subscribers[b],this.stopped||(g=this._subscribers.length,void 0!==e.options&&"function"==typeof e.options.predicate?e.options.predicate.apply(e.context,a)&&(d=!0):d=!0),d&&(e.options&&void 0!==e.options.calls&&(e.options.calls--,e.options.calls<1&&this.removeSubscriber(e.id)),e.fn.apply(e.context,a),h=this._subscribers.length,c=h,h===g-1&&b--);this._parent&&this._parent.publish(a),this.stopped=!1}},d.prototype={getChannel:function(a,b){var c=this._channels,d=a.split(":"),e=0,f=d.length;if(""===a)return c;if(d.length>0)for(f;f>e;e++){if(!c.hasChannel(d[e])){if(b)break;c.addChannel(d[e])}c=c.returnChannel(d[e])}return c},subscribe:function(a,b,c,d){var e=this.getChannel(a||"",!1);return c=c||{},d=d||{},e.addSubscriber(b,c,d)},once:function(a,b,c,d){return c=c||{},c.calls=1,this.subscribe(a,b,c,d)},getSubscriber:function(a,b){var c=this.getChannel(b||"",!0);return c.namespace!==b?null:c.getSubscriber(a)},remove:function(a,b){var c=this.getChannel(a||"",!0);return c.namespace!==a?!1:(c.removeSubscriber(b),void 0)},publish:function(a){var b=this.getChannel(a||"",!0);if(b.namespace!==a)return null;var c=Array.prototype.slice.call(arguments,1);c.push(b),b.publish(c)}},d.prototype.on=d.prototype.subscribe,d.prototype.bind=d.prototype.subscribe,d.prototype.emit=d.prototype.publish,d.prototype.trigger=d.prototype.publish,d.prototype.off=d.prototype.remove,d.Channel=c,d.Subscriber=b,d.version="0.9.8",d}); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/package.json b/Kapitel7/Mediator/node_modules/mediator-js/package.json deleted file mode 100644 index c0a09cd..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "mediator-js", - "version": "0.9.8", - "description": "Flexible event management. Implementation of the mediator pattern.", - "author": { - "name": "Jack Lawson", - "email": "jlawson@olivinelabs.com" - }, - "main": "index", - "scripts": { - "test": "mocha", - "test_with_coverage": "mocha && MEDIATOR_JS_COV=1 mocha -R html-cov > coverage.html" - }, - "repository": { - "type": "git", - "url": "git://github.com/ajacksified/Mediator.js.git" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.7.x", - "chai": "1.4.x", - "sinon": "1.5.x", - "sinon-mocha": "0.0.3", - "sinon-chai": "2.3.0" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://opensource.org/licenses/mit-license.php" - } - ], - "engines": { - "node": ">=0.6.0" - }, - "keywords": [ - "pubsub", - "events", - "mediator", - "publish", - "subscribe", - "design patterns" - ], - "bugs": { - "url": "https://github.com/ajacksified/Mediator.js/issues" - }, - "homepage": "https://github.com/ajacksified/Mediator.js", - "_id": "mediator-js@0.9.8", - "_shasum": "65d196bf89d37485a83f562f5fa80fdd1dfe377b", - "_from": "mediator-js@", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "ajacksified", - "email": "ajacksified@gmail.com" - }, - "maintainers": [ - { - "name": "ajacksified", - "email": "ajacksified@gmail.com" - } - ], - "dist": { - "shasum": "65d196bf89d37485a83f562f5fa80fdd1dfe377b", - "tarball": "http://registry.npmjs.org/mediator-js/-/mediator-js-0.9.8.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mediator-js/-/mediator-js-0.9.8.tgz" -} diff --git a/Kapitel7/Mediator/node_modules/mediator-js/paige.config b/Kapitel7/Mediator/node_modules/mediator-js/paige.config deleted file mode 100644 index 879b8bb..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/paige.config +++ /dev/null @@ -1,9 +0,0 @@ -{ - "title": "Mediator.js", - "content_file": "README.md", - "include_index": true, - "docco_files": "mediator.js", - "header": "Mediator.js", - "subheader": "A light utility class to help implement the Mediator pattern", - "background": "project-paper" -} diff --git a/Kapitel7/Mediator/node_modules/mediator-js/test/ChannelSpec.js b/Kapitel7/Mediator/node_modules/mediator-js/test/ChannelSpec.js deleted file mode 100644 index fe35c29..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/test/ChannelSpec.js +++ /dev/null @@ -1,303 +0,0 @@ -var Mediator = require("../index").Mediator, - sinon = require('sinon'), - chai = require('chai'), - expect = require('chai').expect, - sinonChai = require("sinon-chai"); - -chai.use(sinonChai); -require('sinon-mocha').enhance(sinon); - -describe("Channel", function() { - var mediator, channel; - - beforeEach(function() { - channel = new Mediator.Channel(); - }); - - describe("Initialization", function(){ - it("should set its namespace property", function(){ - expect(channel.namespace).to.equal(""); - }); - - it("should set its namespace property to a given namespace", function(){ - var namespacedChannel = new Mediator.Channel("test:coffee"); - expect(namespacedChannel.namespace).to.equal("test:coffee"); - }); - - it("should act like a constructor when called like a function", function(){ - var fnChannel = Mediator.Channel("name"); - - expect(fnChannel).not.to.be.undefined; - }); - }); - - describe("addSubscriber", function(){ - it("should add a subscriber to the collection", function(){ - var spy = sinon.spy(); - channel.addSubscriber(spy); - - expect(channel._subscribers.length).to.equal(1); - }); - - it("should give subscribers an id", function(){ - var spy = sinon.spy(); - channel.addSubscriber(spy); - - expect(channel._subscribers[0].id).to.not.be.undefined; - expect(channel._subscribers[0].id).to.not.equal(''); - }); - - it("should add a subscriber to the collection with context", function(){ - var spy = sinon.spy(), - contextObj = { derp: "herp" }; - - channel.addSubscriber(spy, {}, contextObj); - expect(channel._subscribers[0].context).to.equal(contextObj); - }); - - it("should add a subscriber to the collection with options", function(){ - var spy = sinon.spy(), - contextObj = {}, - optionsObj = { derp: "herp" }; - - channel.addSubscriber(spy, optionsObj, contextObj); - expect(channel._subscribers[0].options).to.equal(optionsObj); - }); - - it("should be able to set top priority", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - spy3 = sinon.spy(); - - channel.addSubscriber(spy); - channel.addSubscriber(spy2); - channel.addSubscriber(spy3, { priority: 1 }); - - expect(channel._subscribers[0].fn).to.equal(spy); - expect(channel._subscribers[1].fn).to.equal(spy3); - expect(channel._subscribers[2].fn).to.equal(spy2); - }); - - it("should be able to set arbitrary priority", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - spy3 = sinon.spy(); - - channel.addSubscriber(spy); - channel.addSubscriber(spy2); - channel.addSubscriber(spy3, { priority: 1 }); - - expect(channel._subscribers[0].fn).to.equal(spy); - expect(channel._subscribers[1].fn).to.equal(spy3); - expect(channel._subscribers[2].fn).to.equal(spy2); - }); - - it("should be able to change priority after adding it", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - spy3 = sinon.spy(); - - var sub = channel.addSubscriber(spy, { num: 1 }); - channel.addSubscriber(spy2, { num: 2 }); - channel.addSubscriber(spy3, { num: 3 }); - - channel.setPriority(sub.id, 2); - - expect(channel._subscribers[0].fn).to.equal(spy2); - expect(channel._subscribers[1].fn).to.equal(spy3); - expect(channel._subscribers[2].fn).to.equal(spy); - - }); - }); - - describe("GetSubscriber", function(){ - it("should get a subscriber by its id", function(){ - var spy = sinon.spy(); - channel.addSubscriber(spy); - - expect(channel.getSubscriber(channel._subscribers[0].id)).to.not.be.undefined; - }); - }); - - describe("addChannel", function(){ - it("should add a channel to the collection", function(){ - var channelName = "test"; - channel.addChannel(channelName); - - expect(channel._channels[channelName]).to.not.be.undefined; - }); - }); - - describe("hasChannel", function(){ - it("should return true if the channel exists", function(){ - var channelName = "test"; - channel.addChannel(channelName); - - expect(channel.hasChannel(channelName)).to.equal(true); - }); - - it("should return true if the channel does not exist", function(){ - var channelName = "test", - badChannelName = "herp"; - - channel.addChannel(channelName); - - expect(channel.hasChannel(badChannelName)).to.equal(false); - }); - }); - - describe("ReturnChannel", function(){ - it("should return a reference to a channel by name", function(){ - var channelName = "test"; - - channel.addChannel(channelName); - - expect(channel.returnChannel(channelName)).to.equal(channel._channels[channelName]); - }); - }); - - describe("removeSubscriber", function(){ - it("should remove subscribers if no fn is given", function(){ - var spy = sinon.spy(); - - channel.addSubscriber(spy); - expect(channel._subscribers.length).to.equal(1); - - channel.removeSubscriber(); - expect(channel._subscribers.length).to.equal(0); - }); - - it("should remove matching subscribers a valid fn is given", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - channel.addSubscriber(spy); - channel.addSubscriber(spy2); - expect(channel._subscribers.length).to.equal(2); - - channel.removeSubscriber(spy); - expect(channel._subscribers.length).to.equal(1); - expect(channel._subscribers[0].fn).to.equal(spy2); - }); - - it("should remove matching subscribers a valid id is given", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - spy3 = sinon.spy(); - - channel.addSubscriber(spy); - var sub2 = channel.addSubscriber(spy2); - expect(channel._subscribers.length).to.equal(2); - channel.addSubscriber(spy3); - expect(channel._subscribers.length).to.equal(3); - - channel.removeSubscriber(sub2.id); - expect(channel._subscribers.length).to.equal(2); - expect(channel._subscribers[0].fn).to.equal(spy); - expect(channel._subscribers[1].fn).to.equal(spy3); - }); - - it("should do nothing if an invalid fn is given", function(){ - var spy = sinon.spy(), - invalidFn = "derp"; - - channel.addSubscriber(spy); - channel.addSubscriber(function() {}); - expect(channel._subscribers.length).to.equal(2); - - channel.removeSubscriber(invalidFn); - expect(channel._subscribers.length).to.equal(2); - }); - - it("should do nothing if a non-matching fn is given", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - channel.addSubscriber(spy); - expect(channel._subscribers.length).to.equal(1); - - channel.removeSubscriber(spy2); - expect(channel._subscribers.length).to.equal(1); - }); - }); - - - describe("publish", function(){ - it("should call all matching subscribers", function(){ - var spy = sinon.spy(), - data = ["data"]; - - channel.addSubscriber(spy); - channel.publish(data); - - expect(spy).calledWith(data[0]); - }); - - it("should call all matching subscribers with predicates", function(){ - var spy = sinon.spy(), - data = ["data"]; - - channel.addSubscriber(spy, {}, { predicate: function(data){ return data.length == 4 } }); - channel.publish(data); - - expect(spy).calledWith(data[0]); - }); - - it("should call all matching subscribers with context", function(){ - var spy = sinon.spy(), - data = ["data"]; - - channel.addSubscriber(function() { this(); }, {}, spy ); - channel.publish(data); - - expect(spy).called; - }); - - it("should call all matching for parent channels", function(){ - var channelName = "test", - spy = sinon.spy(), - spy2 = sinon.spy(), - data = ["data"]; - - channel.addSubscriber(spy); - channel.addChannel(channelName); - channel._channels[channelName].addSubscriber(spy2); - - channel._channels[channelName].publish(data); - - expect(spy).calledWith(data[0]); - expect(spy2).calledWith(data[0]); - }); - - it("should call all matching subscribers with context", function(){ - var spy = sinon.spy(), - data = ["data"]; - - channel.addSubscriber(function() { this(); }, {}, spy ); - channel.publish(data); - - expect(spy).called; - }); - - it("should call subscribers in predefined priority", function(){ - var sub1 = function(){ - this.a += "1"; - }, - sub2 = function(){ - this.a += "2"; - }, - sub3 = function(){ - this.a += "3"; - }, - data = ["data"]; - this.a = "0"; - - channel.addSubscriber(sub3, {}, this); - channel.addSubscriber(sub1, { priority: 2 }, this); - channel.addSubscriber(sub2, { priority: 1 }, this); - channel.publish(data); - expect(this.a).to.equal("0123"); - }); - - }); -}); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/test/MediatorSpec.js b/Kapitel7/Mediator/node_modules/mediator-js/test/MediatorSpec.js deleted file mode 100644 index f7551a1..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/test/MediatorSpec.js +++ /dev/null @@ -1,409 +0,0 @@ -var Mediator = require("../index").Mediator, - sinon = require('sinon'), - chai = require('chai'), - expect = require('chai').expect, - sinonChai = require("sinon-chai"); - -chai.use(sinonChai); -require('sinon-mocha').enhance(sinon); - -describe("Mediator", function() { - var mediator; - - beforeEach(function() { - mediator = new Mediator(); - }); - - describe("initializing", function(){ - it("should act like a constructor when called like a function", function(){ - var fnMediator = Mediator(); - expect(fnMediator).not.to.be.undefined; - }); - - it("should start with a channel", function(){ - expect(mediator.getChannel('')).not.to.be.undefined; - }); - }); - - describe("subscribing", function(){ - it("should subscribe to a given channel", function(){ - var spy = sinon.spy(); - mediator.subscribe("test", spy); - expect(mediator.getChannel("test")._subscribers.length).to.equal(1); - }); - - it("should bind 'once'", function(){ - var spy = sinon.spy(); - mediator.once("test", spy); - mediator.publish("test"); - mediator.publish("test"); - - expect(spy).calledOnce; - }); - - it("should bind with arbitrary number of calls", function(){ - var spy = sinon.spy(), i; - mediator.subscribe("test", spy, { calls: 3 }); - - for(i = 0; i < 5; i++){ - mediator.publish("test"); - } - - expect(spy).calledThrice; - }); - - it("should bind with arbitrary number of calls when predicate matches", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - subscriber1 = mediator.subscribe("test", spy, { calls: 3, predicate: function(d){ return (d == 1); } }), - subscriber2 = mediator.subscribe("test", spy2, { calls: 3, predicate: function(d){ return (d == 2); } }); - - mediator.publish("test", 1); - mediator.publish("test", 2); - - expect(spy).calledOnce; - expect(subscriber1.options.calls).to.equal(2); - expect(subscriber2.options.calls).to.equal(2); - }); - - it("should remove a subscriber in a list of others that's been called its maximum amount of times", function(){ - var spy = sinon.spy(), i; - - mediator.subscribe("test", function(){}); - mediator.subscribe("test", spy, { calls: 3 }); - mediator.subscribe("test", function(){}); - - for(i = 0; i < 5; i++){ - mediator.publish("test"); - } - - expect(spy).calledThrice; - }); - }); - - describe("publishing", function(){ - it("should call a subscriber for a given channel", function(){ - var spy = sinon.spy(); - - mediator.subscribe("testX", spy); - mediator.publish("testX"); - - expect(spy).called; - }); - - it("should stop propagation if requested", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - subscriber = function(c){ c.stopPropagation(); spy(); }, - subscriber2 = function(){ spy2(); }; - - mediator.subscribe("testX", subscriber); - mediator.subscribe("testX", subscriber2); - mediator.publish("testX"); - - expect(spy).called; - expect(spy2).not.called; - }); - - - it("should call subscribers for all functions in a given channel", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - mediator.subscribe("test", spy); - mediator.subscribe("test", spy2); - mediator.publish("test"); - - expect(spy).called; - expect(spy2).called; - }); - - it("should pass arguments to the given function", function(){ - var spy = sinon.spy(), - channel = "test", - arg = "arg1", - arg2 = "arg2"; - - mediator.subscribe(channel, spy); - mediator.publish(channel, arg, arg2); - - expect(spy).calledWith(arg, arg2, mediator.getChannel(channel)); - }); - - it("should call all matching predicates", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - spy3 = sinon.spy(); - - var predicate = function(data){ - return data.length === 4; - } - - var predicate2 = function(data){ - return data[0] == "Y"; - } - - mediator.subscribe("test", spy, { predicate: predicate }); - mediator.subscribe("test", spy2, { predicate: predicate2 }); - mediator.subscribe("test", spy3); - - mediator.publish("test", "Test"); - - expect(spy).called; - expect(spy2).not.called; - expect(spy3).called; - }); - - }); - - describe("removing", function(){ - it("should remove subscribers for a given channel", function(){ - var spy = sinon.spy(); - - mediator.subscribe("test", spy); - mediator.remove("test"); - mediator.publish("test"); - - expect(spy).not.called; - }); - - it("should allow subscriber to remove itself", function(){ - var removerCalled = false; - var predicate = function(data){ - return true; - }; - var remover = function(){ - removerCalled = true; - mediator.remove("test", sub.id); - }; - - var spy1 = sinon.spy(); - - var sub = mediator.subscribe("test", remover, {predicate: predicate}); - mediator.subscribe("test", spy1); - mediator.publish("test"); - - expect(removerCalled).to.be.true; - expect(spy1).called; - expect(mediator.getChannel("test")._subscribers.length).to.equal(1); - }); - - it("should remove subscribers for a given channel / named function pair", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - mediator.subscribe("test", spy); - mediator.subscribe("test", spy2); - mediator.remove("test", spy); - mediator.publish("test"); - - expect(spy).not.called; - expect(spy2).called; - }); - - it("should remove subscribers by calling from subscriber's callback", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - catched = false; - mediator.subscribe("test", function(){ - mediator.remove("test"); - }); - mediator.subscribe("test", spy); - mediator.subscribe("test", spy2); - try{ - mediator.publish("test"); - } - catch (e){ - catched = true; - } - expect(catched).to.be.false; - expect(spy).not.called; - expect(spy2).not.called; - }); - - it("should remove subscriber by calling from its callback", function(){ - var remover = function(){ - mediator.remove("test", sub.id); - }; - var spy = sinon.spy(), - spy2 = sinon.spy(), - catched = false, - self = this; - var sub = mediator.subscribe("test", remover); - mediator.subscribe("test", spy); - mediator.subscribe("test", spy2); - try{ - mediator.publish("test"); - } - catch (e){ - catched = true; - } - expect(catched).to.be.false; - expect(spy).to.called; - expect(spy2).to.called; - var remover = sinon.spy(remover); - mediator.publish("test"); - expect(remover).not.to.called; - expect(spy).to.called; - expect(spy2).to.called; - }); - }); - - describe("updating", function(){ - it("should update subscriber by identifier", function(){ - var spy = sinon.spy(), - newPredicate = function(data){ return data; }; - - var sub = mediator.subscribe("test", spy), - subId = sub.id; - - var subThatIReallyGotLater = mediator.getSubscriber(subId, "test"); - subThatIReallyGotLater.update({ options: { predicate: newPredicate } }); - expect(subThatIReallyGotLater.options.predicate).to.equal(newPredicate); - }); - - it("should update subscriber priority by identifier", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(), - sub = mediator.subscribe("test", spy), - sub2 = mediator.subscribe("test", spy2); - - sub2.update({ options: { priority: 0 } }); - - expect(mediator.getChannel("test")._subscribers[0].id).to.equal(sub2.id); - expect(mediator.getChannel("test")._subscribers[1].id).to.equal(sub.id); - }); - - it("should update subscriber by fn", function(){ - var spy = sinon.spy(), - newPredicate = function(data){ return data; }; - - var sub = mediator.subscribe("test", spy); - - var subThatIReallyGotLater = mediator.getSubscriber(spy, "test"); - subThatIReallyGotLater.update({ options: { predicate: newPredicate } }); - expect(subThatIReallyGotLater.options.predicate).to.equal(newPredicate); - }); - }); - - describe("namespaces", function(){ - it("should make subchannels", function(){ - var spy = sinon.spy(); - mediator.subscribe("test:subchannel", spy); - expect(mediator.getChannel("test")._channels["subchannel"]._subscribers.length).to.equal(1); - }); - - it("should call all functions within a given channel namespace", function(){ - var spy = sinon.spy(); - var spy2 = sinon.spy(); - - mediator.subscribe("test:channel", spy); - mediator.subscribe("test", spy2); - - mediator.publish("test:channel"); - - expect(spy).called; - expect(spy2).called; - }); - - it("should call only functions within a given channel namespace", function(){ - var spy = sinon.spy(); - var spy2 = sinon.spy(); - - mediator.subscribe("test", spy); - mediator.subscribe("derp", spy2); - - mediator.publish("test"); - - expect(spy).called; - expect(spy2).not.called; - }); - - it("should remove functions within a given channel namespace", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - mediator.subscribe("test:test1", spy); - mediator.subscribe("test", spy2); - - mediator.remove("test:test1"); - - mediator.publish("test:test1"); - - expect(spy).not.called; - expect(spy2).called; - }); - - it("should publish to specific namespaces", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - mediator.subscribe("test:test1:test2", spy); - mediator.subscribe("test", spy2); - - mediator.publish("test:test1", "data"); - - expect(spy).not.called; - expect(spy2).called; - }); - - it("should publish to parents of non-existing namespaces", function(){ - var spy = sinon.spy(), - spy2 = sinon.spy(); - - mediator.subscribe("test:test1:test2", spy); - mediator.subscribe("test", spy2); - - mediator.publish("test:test1", "data"); - - expect(spy).not.called; - expect(spy2).called; - }); - - }); - - describe("aliases", function(){ - it("should alias 'on' and 'bind'", function(){ - var spy = sinon.spy(); - - mediator.on("test", spy); - mediator.bind("test", spy); - mediator.publish("test"); - - expect(spy).calledTwice; - }); - - it("should alias 'emit' and 'trigger'", function(){ - var spy = sinon.spy(); - - mediator.subscribe("test", spy); - - mediator.emit("test"); - mediator.trigger("test"); - - expect(spy).calledTwice; - }); - - it("should alias 'off' for subscriptions", function(){ - var spy = sinon.spy(), - sub; - - sub = mediator.subscribe("test", spy); - mediator.off("test", sub.id); - - mediator.publish("test"); - expect(spy).not.called; - }); - - it("should alias 'off' for channels", function(){ - var spy = sinon.spy(), - sub; - - sub = mediator.subscribe("test", spy); - mediator.off("test"); - - mediator.publish("test"); - expect(spy).not.called; - }); - }); -}); diff --git a/Kapitel7/Mediator/node_modules/mediator-js/test/SubscriberSpec.js b/Kapitel7/Mediator/node_modules/mediator-js/test/SubscriberSpec.js deleted file mode 100644 index c4cc41a..0000000 --- a/Kapitel7/Mediator/node_modules/mediator-js/test/SubscriberSpec.js +++ /dev/null @@ -1,52 +0,0 @@ -var Mediator = require("../index").Mediator, - sinon = require('sinon'), - chai = require('chai'), - expect = require('chai').expect, - sinonChai = require("sinon-chai"); - -chai.use(sinonChai); -require('sinon-mocha').enhance(sinon); - -describe("Mediator", function() { - var sub, - originalOptions = {}, - originalContext = {}, - originalFN = function(){}; - - beforeEach(function() { - sub = new Mediator.Subscriber(originalFN, originalOptions, originalContext); - }); - - describe("initializing", function(){ - it("should act like a constructor when called like a function", function(){ - var fnSubscriber = Mediator.Subscriber("name"); - - expect(fnSubscriber).not.to.be.undefined; - }); - }); - - describe("updating", function(){ - it("should update the fn", function(){ - var newFN = function(data){ return data; }; - - sub.update({ fn: newFN }); - expect(sub.fn).to.equal(newFN); - }); - - it("should update the options (predicate)", function(){ - var newPredicate = function(data){ return data==true; }, - newOptions = { predicate: newPredicate }; - - sub.update({ options: newOptions }); - expect(sub.options.predicate).to.equal(newPredicate); - }); - - it("should update the context", function(){ - var newContext = { derp: "herp" }; - - sub.update({ context: newContext }); - expect(sub.context).to.equal(newContext); - }); - }); -}); - diff --git a/Kapitel7/Adapter/Adapter.js b/Kapitel8/Adapter/Adapter.js similarity index 100% rename from Kapitel7/Adapter/Adapter.js rename to Kapitel8/Adapter/Adapter.js diff --git a/Kapitel7/Builder/Builder.js b/Kapitel8/Builder/Builder.js similarity index 100% rename from Kapitel7/Builder/Builder.js rename to Kapitel8/Builder/Builder.js diff --git a/Kapitel7/ChainOfResponsibility/ChainOfResponsibility.js b/Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js similarity index 100% rename from Kapitel7/ChainOfResponsibility/ChainOfResponsibility.js rename to Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js diff --git a/Kapitel7/Command/Command.js b/Kapitel8/Command/Command.js similarity index 100% rename from Kapitel7/Command/Command.js rename to Kapitel8/Command/Command.js diff --git a/Kapitel7/Composite/Composite.js b/Kapitel8/Composite/Composite.js similarity index 100% rename from Kapitel7/Composite/Composite.js rename to Kapitel8/Composite/Composite.js diff --git a/Kapitel7/Decorator/Decorator.js b/Kapitel8/Decorator/Decorator.js similarity index 100% rename from Kapitel7/Decorator/Decorator.js rename to Kapitel8/Decorator/Decorator.js diff --git a/Kapitel7/Facade/Facade.js b/Kapitel8/Facade/Facade.js similarity index 100% rename from Kapitel7/Facade/Facade.js rename to Kapitel8/Facade/Facade.js diff --git a/Kapitel7/Facade/index.html b/Kapitel8/Facade/index.html similarity index 100% rename from Kapitel7/Facade/index.html rename to Kapitel8/Facade/index.html diff --git a/Kapitel7/Factory/Factory.js b/Kapitel8/Factory/Factory.js similarity index 100% rename from Kapitel7/Factory/Factory.js rename to Kapitel8/Factory/Factory.js diff --git a/Kapitel7/Flyweight/Flyweight.js b/Kapitel8/Flyweight/Flyweight.js similarity index 100% rename from Kapitel7/Flyweight/Flyweight.js rename to Kapitel8/Flyweight/Flyweight.js diff --git a/Kapitel7/Iterator/Iterator.js b/Kapitel8/Iterator/Iterator.js similarity index 100% rename from Kapitel7/Iterator/Iterator.js rename to Kapitel8/Iterator/Iterator.js diff --git a/Kapitel7/Mediator/index.js b/Kapitel8/Mediator/index.js similarity index 100% rename from Kapitel7/Mediator/index.js rename to Kapitel8/Mediator/index.js diff --git a/Kapitel7/Memento/Memento.js b/Kapitel8/Memento/Memento.js similarity index 100% rename from Kapitel7/Memento/Memento.js rename to Kapitel8/Memento/Memento.js diff --git a/Kapitel7/Observer/Observer.js b/Kapitel8/Observer/Observer.js similarity index 100% rename from Kapitel7/Observer/Observer.js rename to Kapitel8/Observer/Observer.js diff --git a/Kapitel7/Prototype/Prototype.js b/Kapitel8/Prototype/Prototype.js similarity index 100% rename from Kapitel7/Prototype/Prototype.js rename to Kapitel8/Prototype/Prototype.js diff --git a/Kapitel7/Proxy/Proxy.js b/Kapitel8/Proxy/Proxy.js similarity index 100% rename from Kapitel7/Proxy/Proxy.js rename to Kapitel8/Proxy/Proxy.js diff --git a/Kapitel7/Singleton/Singleton.js b/Kapitel8/Singleton/Singleton.js similarity index 100% rename from Kapitel7/Singleton/Singleton.js rename to Kapitel8/Singleton/Singleton.js diff --git a/Kapitel7/State/State.js b/Kapitel8/State/State.js similarity index 100% rename from Kapitel7/State/State.js rename to Kapitel8/State/State.js diff --git a/Kapitel7/Strategy/Strategy.js b/Kapitel8/Strategy/Strategy.js similarity index 100% rename from Kapitel7/Strategy/Strategy.js rename to Kapitel8/Strategy/Strategy.js diff --git a/Kapitel7/TemplateMethod/TemplateMethod.js b/Kapitel8/TemplateMethod/TemplateMethod.js similarity index 100% rename from Kapitel7/TemplateMethod/TemplateMethod.js rename to Kapitel8/TemplateMethod/TemplateMethod.js diff --git a/Kapitel7/Visitor/Visitor.js b/Kapitel8/Visitor/Visitor.js similarity index 100% rename from Kapitel7/Visitor/Visitor.js rename to Kapitel8/Visitor/Visitor.js diff --git a/Kapitel8/Routing/AngularJS/app.js b/Kapitel9/Routing/AngularJS/app.js similarity index 100% rename from Kapitel8/Routing/AngularJS/app.js rename to Kapitel9/Routing/AngularJS/app.js diff --git a/Kapitel8/Routing/Backbone/app.js b/Kapitel9/Routing/Backbone/app.js similarity index 100% rename from Kapitel8/Routing/Backbone/app.js rename to Kapitel9/Routing/Backbone/app.js diff --git a/Kapitel8/Routing/EmberJS/app.js b/Kapitel9/Routing/EmberJS/app.js similarity index 100% rename from Kapitel8/Routing/EmberJS/app.js rename to Kapitel9/Routing/EmberJS/app.js diff --git a/Kapitel8/angularjs/bower.json b/Kapitel9/angularjs/bower.json similarity index 100% rename from Kapitel8/angularjs/bower.json rename to Kapitel9/angularjs/bower.json diff --git a/Kapitel8/angularjs/index.html b/Kapitel9/angularjs/index.html similarity index 100% rename from Kapitel8/angularjs/index.html rename to Kapitel9/angularjs/index.html diff --git a/Kapitel8/angularjs/js/app.js b/Kapitel9/angularjs/js/app.js similarity index 100% rename from Kapitel8/angularjs/js/app.js rename to Kapitel9/angularjs/js/app.js diff --git a/Kapitel8/angularjs/js/app2.js b/Kapitel9/angularjs/js/app2.js similarity index 100% rename from Kapitel8/angularjs/js/app2.js rename to Kapitel9/angularjs/js/app2.js diff --git a/Kapitel8/angularjs/styles/styles.css b/Kapitel9/angularjs/styles/styles.css similarity index 100% rename from Kapitel8/angularjs/styles/styles.css rename to Kapitel9/angularjs/styles/styles.css diff --git a/Kapitel8/backbone/index.html b/Kapitel9/backbone/index.html similarity index 100% rename from Kapitel8/backbone/index.html rename to Kapitel9/backbone/index.html diff --git a/Kapitel8/backbone/js/app.js b/Kapitel9/backbone/js/app.js similarity index 100% rename from Kapitel8/backbone/js/app.js rename to Kapitel9/backbone/js/app.js diff --git a/Kapitel8/backbone/js/app2.js b/Kapitel9/backbone/js/app2.js similarity index 100% rename from Kapitel8/backbone/js/app2.js rename to Kapitel9/backbone/js/app2.js diff --git a/Kapitel8/backbone/styles/styles.css b/Kapitel9/backbone/styles/styles.css similarity index 100% rename from Kapitel8/backbone/styles/styles.css rename to Kapitel9/backbone/styles/styles.css diff --git a/Kapitel8/knockout/index.html b/Kapitel9/knockout/index.html similarity index 100% rename from Kapitel8/knockout/index.html rename to Kapitel9/knockout/index.html diff --git a/Kapitel8/knockout/js/app.js b/Kapitel9/knockout/js/app.js similarity index 100% rename from Kapitel8/knockout/js/app.js rename to Kapitel9/knockout/js/app.js diff --git a/Kapitel8/knockout/styles/styles.css b/Kapitel9/knockout/styles/styles.css similarity index 100% rename from Kapitel8/knockout/styles/styles.css rename to Kapitel9/knockout/styles/styles.css From 7712df0dccb813e04813334ec19fabc5c8d17a13 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 16:22:03 +0100 Subject: [PATCH 05/42] Added Factory pattern example in class syntax --- Kapitel8/Factory/Klassensyntax/Factory.js | 59 +++++++++++++++++++ .../Factory/{ => Pseudoklassisch}/Factory.js | 20 +++---- 2 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 Kapitel8/Factory/Klassensyntax/Factory.js rename Kapitel8/Factory/{ => Pseudoklassisch}/Factory.js (77%) diff --git a/Kapitel8/Factory/Klassensyntax/Factory.js b/Kapitel8/Factory/Klassensyntax/Factory.js new file mode 100644 index 0000000..f4f9f58 --- /dev/null +++ b/Kapitel8/Factory/Klassensyntax/Factory.js @@ -0,0 +1,59 @@ +(function () { + + class Vinyl { + constructor(config) { + this.color = config.color || 'schwarz'; + this.name = config.name || 'Untitled'; + this.artist = config.artist || 'VA'; + } + } + + class LP extends Vinyl { + constructor(config) { + super(config); + this.diameter = config.diameter || 30; + } + } + + class EP extends Vinyl { + constructor(config) { + super(config); + this.diameter = config.diameter || 17.5; + } + } + + class VinylFactory { + constructor() { + this.vinylClass = LP; + } + + create(config) { + switch(config.vinylType){ + case 'lp': + this.vinylClass = LP; + break; + case 'ep': + this.vinylClass = EP; + break; + } + return new this.vinylClass(config); + }; + } + + const vinylFactory = new VinylFactory(); + const ep = vinylFactory.create({ + vinylType: 'ep', + color: 'yellow' + }); + + const lp = vinylFactory.create({ + vinylType: 'lp', + name: 'Third Eye Surgery', + artist: 'Baby Woodrose' + }); + + console.log(ep instanceof EP); // true + console.log(ep.diameter); // 17.5 + console.log(lp instanceof LP); // true + console.log(lp.diameter); // 30 +})(); diff --git a/Kapitel8/Factory/Factory.js b/Kapitel8/Factory/Pseudoklassisch/Factory.js similarity index 77% rename from Kapitel8/Factory/Factory.js rename to Kapitel8/Factory/Pseudoklassisch/Factory.js index f5249ed..4634bfb 100644 --- a/Kapitel8/Factory/Factory.js +++ b/Kapitel8/Factory/Pseudoklassisch/Factory.js @@ -1,9 +1,9 @@ (function () { function Vinyl(config) { - this.color = config.color || "schwarz"; - this.name = config.name || "Untitled"; - this.artist = config.artist || "VA"; + this.color = config.color || 'schwarz'; + this.name = config.name || 'Untitled'; + this.artist = config.artist || 'VA'; } function LP(config) { @@ -28,10 +28,10 @@ VinylFactory.prototype.create = function (config) { switch(config.vinylType){ - case "lp": + case 'lp': this.vinylClass = LP; break; - case "ep": + case 'ep': this.vinylClass = EP; break; } @@ -40,14 +40,14 @@ var vinylFactory = new VinylFactory(); var ep = vinylFactory.create({ - vinylType: "ep", - color: "yellow" + vinylType: 'ep', + color: 'yellow' }); var lp = vinylFactory.create({ - vinylType: "lp", - name: "Third Eye Surgery", - artist: "Baby Woodrose" + vinylType: 'lp', + name: 'Third Eye Surgery', + artist: 'Baby Woodrose' }); console.log(ep instanceof EP); // true From a050cced640feab182dd2e69b796553e77959162 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 16:25:09 +0100 Subject: [PATCH 06/42] Update singleton pattern example to english variable names --- Kapitel8/Singleton/Singleton.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Kapitel8/Singleton/Singleton.js b/Kapitel8/Singleton/Singleton.js index f068a72..cabc3d6 100644 --- a/Kapitel8/Singleton/Singleton.js +++ b/Kapitel8/Singleton/Singleton.js @@ -1,17 +1,15 @@ (function() { - /* Listing 7.3 */ var singleton = {}; })(); (function() { - /* Listing 7.4 */ var Singleton = ( function () { var instance; function init() { - var zufallsZahl = Math.random(); + var randomNumber = Math.random(); return { - getZufallsZahl: function() { - return zufallsZahl; + getRandomNumber: function() { + return randomNumber; } }; }; @@ -26,21 +24,20 @@ })(); var s1 = Singleton.getInstance(); var s2 = Singleton.getInstance(); - console.log(s1.getZufallsZahl() === s2.getZufallsZahl()); + console.log(s1.getRandomNumber() === s2.getRandomNumber()); })(); (function() { - /* Listing 7.5 */ var Singleton = ( function () { return { getInstance: function () { // Die Instanz wird nur einmal initialisiert var instance = function(){ - var zufallsZahl = Math.random(); + var randomNumber = Math.random(); return { - getZufallsZahl : function() { - return zufallsZahl; + getRandomNumber : function() { + return randomNumber; } } }(); @@ -54,5 +51,5 @@ })(); var s1 = Singleton.getInstance(); var s2 = Singleton.getInstance(); - console.log(s1.getZufallsZahl() === s2.getZufallsZahl()); + console.log(s1.getRandomNumber() === s2.getRandomNumber()); })(); \ No newline at end of file From c818f7a26fa146b2d3797640c361670586716cc0 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 16:32:11 +0100 Subject: [PATCH 07/42] Updated singleton pattern example to ES2015 syntax --- Kapitel8/Singleton/Singleton.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Kapitel8/Singleton/Singleton.js b/Kapitel8/Singleton/Singleton.js index cabc3d6..f1962df 100644 --- a/Kapitel8/Singleton/Singleton.js +++ b/Kapitel8/Singleton/Singleton.js @@ -1,12 +1,12 @@ (function() { - var singleton = {}; + const singleton = {}; })(); (function() { - var Singleton = ( function () { - var instance; + const Singleton = ( function () { + let instance; function init() { - var randomNumber = Math.random(); + const randomNumber = Math.random(); return { getRandomNumber: function() { return randomNumber; @@ -22,19 +22,19 @@ } }; })(); - var s1 = Singleton.getInstance(); - var s2 = Singleton.getInstance(); + const s1 = Singleton.getInstance(); + const s2 = Singleton.getInstance(); console.log(s1.getRandomNumber() === s2.getRandomNumber()); })(); (function() { - var Singleton = ( + const Singleton = ( function () { return { getInstance: function () { // Die Instanz wird nur einmal initialisiert - var instance = function(){ - var randomNumber = Math.random(); + const instance = function(){ + const randomNumber = Math.random(); return { getRandomNumber : function() { return randomNumber; @@ -49,7 +49,7 @@ } }; })(); - var s1 = Singleton.getInstance(); - var s2 = Singleton.getInstance(); + const s1 = Singleton.getInstance(); + const s2 = Singleton.getInstance(); console.log(s1.getRandomNumber() === s2.getRandomNumber()); })(); \ No newline at end of file From 690b94b99c055252d42f3c2f6ab9594b85f6a568 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 17:32:46 +0100 Subject: [PATCH 08/42] Updated builder and protoype patterns --- Kapitel8/Builder/Builder.js | 57 --------------------------------- Kapitel8/Prototype/Prototype.js | 44 ------------------------- Kapitel8/Singleton/Singleton.js | 6 ++-- 3 files changed, 3 insertions(+), 104 deletions(-) delete mode 100644 Kapitel8/Builder/Builder.js delete mode 100644 Kapitel8/Prototype/Prototype.js diff --git a/Kapitel8/Builder/Builder.js b/Kapitel8/Builder/Builder.js deleted file mode 100644 index b41082d..0000000 --- a/Kapitel8/Builder/Builder.js +++ /dev/null @@ -1,57 +0,0 @@ -(function () { - var TableBuilder = function() { - var table = document.createElement('table'); - var numberOfRows = 0; - var numberOfColumns = 0; - var headerNames = []; - return { - buildHeaders : function(headers) { - this.headerNames = headers; - var tr = document.createElement('tr'); - for(var i=0; i Date: Wed, 24 Jan 2018 17:44:05 +0100 Subject: [PATCH 09/42] Updated adapter pattern --- Kapitel8/Adapter/Adapter.js | 64 ------------------------------------- 1 file changed, 64 deletions(-) delete mode 100644 Kapitel8/Adapter/Adapter.js diff --git a/Kapitel8/Adapter/Adapter.js b/Kapitel8/Adapter/Adapter.js deleted file mode 100644 index 30b4966..0000000 --- a/Kapitel8/Adapter/Adapter.js +++ /dev/null @@ -1,64 +0,0 @@ -(function() { - Logger = { - log: function(message) { - console.log(message); - }, - warn: function(message) { - console.warn(message); - }, - error: function(message) { - console.error(message); - } - } - - NewLogger = { - reportLog: function(message) { - console.log(new Date() + ': ' + message); - }, - reportWarn: function(message) { - console.warn(new Date() + ': ' + message); - }, - reportError: function(message) { - console.error(new Date() + ': ' + message); - } - } - - var logger = Logger; - logger.log('Programm gestartet'); - - // Funktioniert nicht - // logger = NewLogger; - // logger.log('Programm gestartet'); - - // Adapter - function LoggerAdapter(logger) { - return { - log: function(message) { - logger.reportLog(message); - }, - warn: function(message) { - logger.reportWarn(message); - }, - error: function(message) { - logger.reportError(message); - } - } - } - // Funktioniert über Adapter - logger = new LoggerAdapter(NewLogger); - logger.log('Programm gestartet'); - - // First Class Functions - logger = Logger; - Logger.log = function(message) { - NewLogger.reportLog(message); - } - Logger.warn = function(message) { - NewLogger.reportWarn(message); - } - Logger.error = function(message) { - NewLogger.reportError(message); - } - // Funktioniert wegen First Class Functions - logger.log('Programm gestartet'); -})(); \ No newline at end of file From d51463ccc96997eeeaa9e8dfa9e86139fa6a9a73 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Wed, 24 Jan 2018 17:44:28 +0100 Subject: [PATCH 10/42] Updated adapter, builder and prototype patterns --- Kapitel8/Adapter/ES2015/Adapter.js | 64 +++++++++++++++++++ Kapitel8/Adapter/ES5/Adapter.js | 64 +++++++++++++++++++ Kapitel8/Builder/Klassensyntax/Builder.js | 71 +++++++++++++++++++++ Kapitel8/Builder/Pseudoklassisch/Builder.js | 61 ++++++++++++++++++ Kapitel8/Prototype/ES2015/Prototype.js | 47 ++++++++++++++ Kapitel8/Prototype/ES5/Prototype.js | 47 ++++++++++++++ 6 files changed, 354 insertions(+) create mode 100644 Kapitel8/Adapter/ES2015/Adapter.js create mode 100644 Kapitel8/Adapter/ES5/Adapter.js create mode 100644 Kapitel8/Builder/Klassensyntax/Builder.js create mode 100644 Kapitel8/Builder/Pseudoklassisch/Builder.js create mode 100644 Kapitel8/Prototype/ES2015/Prototype.js create mode 100644 Kapitel8/Prototype/ES5/Prototype.js diff --git a/Kapitel8/Adapter/ES2015/Adapter.js b/Kapitel8/Adapter/ES2015/Adapter.js new file mode 100644 index 0000000..0d959c2 --- /dev/null +++ b/Kapitel8/Adapter/ES2015/Adapter.js @@ -0,0 +1,64 @@ +(function() { + Logger = { + log(message) { + console.log(message); + }, + warn(message) { + console.warn(message); + }, + error(message) { + console.error(message); + } + } + + NewLogger = { + reportLog(message) { + console.log(new Date() + ': ' + message); + }, + reportWarn(message) { + console.warn(new Date() + ': ' + message); + }, + reportError(message) { + console.error(new Date() + ': ' + message); + } + } + + let logger = Logger; + logger.log('Programm gestartet'); + + // Funktioniert nicht + // logger = NewLogger; + // logger.log('Programm gestartet'); + + // Adapter + function LoggerAdapter(logger) { + return { + log(message) { + logger.reportLog(message); + }, + warn(message) { + logger.reportWarn(message); + }, + error(message) { + logger.reportError(message); + } + } + } + // Funktioniert über Adapter + logger = new LoggerAdapter(NewLogger); + logger.log('Programm gestartet'); + + // First Class Functions + logger = Logger; + Logger.log = (message) => { + NewLogger.reportLog(message); + } + Logger.warn = (message) => { + NewLogger.reportWarn(message); + } + Logger.error = (message) => { + NewLogger.reportError(message); + } + // Funktioniert wegen First Class Functions + logger.log('Programm gestartet'); +})(); \ No newline at end of file diff --git a/Kapitel8/Adapter/ES5/Adapter.js b/Kapitel8/Adapter/ES5/Adapter.js new file mode 100644 index 0000000..30b4966 --- /dev/null +++ b/Kapitel8/Adapter/ES5/Adapter.js @@ -0,0 +1,64 @@ +(function() { + Logger = { + log: function(message) { + console.log(message); + }, + warn: function(message) { + console.warn(message); + }, + error: function(message) { + console.error(message); + } + } + + NewLogger = { + reportLog: function(message) { + console.log(new Date() + ': ' + message); + }, + reportWarn: function(message) { + console.warn(new Date() + ': ' + message); + }, + reportError: function(message) { + console.error(new Date() + ': ' + message); + } + } + + var logger = Logger; + logger.log('Programm gestartet'); + + // Funktioniert nicht + // logger = NewLogger; + // logger.log('Programm gestartet'); + + // Adapter + function LoggerAdapter(logger) { + return { + log: function(message) { + logger.reportLog(message); + }, + warn: function(message) { + logger.reportWarn(message); + }, + error: function(message) { + logger.reportError(message); + } + } + } + // Funktioniert über Adapter + logger = new LoggerAdapter(NewLogger); + logger.log('Programm gestartet'); + + // First Class Functions + logger = Logger; + Logger.log = function(message) { + NewLogger.reportLog(message); + } + Logger.warn = function(message) { + NewLogger.reportWarn(message); + } + Logger.error = function(message) { + NewLogger.reportError(message); + } + // Funktioniert wegen First Class Functions + logger.log('Programm gestartet'); +})(); \ No newline at end of file diff --git a/Kapitel8/Builder/Klassensyntax/Builder.js b/Kapitel8/Builder/Klassensyntax/Builder.js new file mode 100644 index 0000000..b59f865 --- /dev/null +++ b/Kapitel8/Builder/Klassensyntax/Builder.js @@ -0,0 +1,71 @@ +// Hinweis: dieses Beispiel funktioniert nur im Browser +// bzw. in Laufzeitumgebungen, in denen das document-Objekt +// zur Verfügung steht. +(function () { + + class TableBuilder { + + constructor() { + this.table = document.createElement('table'); + this.numberOfRows = 0; + this.numberOfColumns = 0; + this.headerNames = []; + } + + buildHeaders(headers) { + this.headerNames = headers; + const tr = document.createElement('tr'); + for(let i = 0; i < this.headerNames.length; i++) { + const th = document.createElement('th'); + const text = document.createTextNode(this.headerNames[i]); + th.appendChild(text); + tr.appendChild(th); + } + this.table.appendChild(tr); + return this; + } + + buildColumns(numberOfColumns) { + this.numberOfColumns = numberOfColumns; + return this; + } + + buildRows(numberOfRows) { + this.numberOfRows = numberOfRows; + for(let i = 0; i < this.numberOfRows; i++) { + const tr = document.createElement('tr'); + for(let j = 0; j < this.numberOfColumns; j++) { + const td = document.createElement('td'); + tr.appendChild(td); + } + this.table.appendChild(tr); + } + return this; + } + + getResult() { + return this.table; + } + }; + + class TableDirector { + + constructor() { + this.tableBuilder = new TableBuilder(); + } + + constructArtistTable() { + const table = this.tableBuilder + .buildHeaders(['Artist', 'Title']) + .buildColumns(2) + .buildRows(4) + .getResult(); + return table; + } + } + + const tableDirector = new TableDirector(); + const table = tableDirector.constructArtistTable(); + // document.getElementById('artist-table').appendChild(table); + console.log(table); +})(); \ No newline at end of file diff --git a/Kapitel8/Builder/Pseudoklassisch/Builder.js b/Kapitel8/Builder/Pseudoklassisch/Builder.js new file mode 100644 index 0000000..f22b11e --- /dev/null +++ b/Kapitel8/Builder/Pseudoklassisch/Builder.js @@ -0,0 +1,61 @@ +// Hinweis: dieses Beispiel funktioniert nur im Browser +// bzw. in Laufzeitumgebungen, in denen das document-Objekt +// zur Verfügung steht. +(function () { + var TableBuilder = function() { + var table = document.createElement('table'); + var numberOfRows = 0; + var numberOfColumns = 0; + var headerNames = []; + return { + buildHeaders : function(headers) { + this.headerNames = headers; + var tr = document.createElement('tr'); + for(var i = 0; i < this.headerNames.length; i++) { + var th = document.createElement('th'); + var text = document.createTextNode(this.headerNames[i]); + th.appendChild(text); + tr.appendChild(th); + } + table.appendChild(tr); + return this; + }, + buildColumns : function(numberOfColumns) { + this.numberOfColumns = numberOfColumns; + return this; + }, + buildRows : function(numberOfRows) { + this.numberOfRows = numberOfRows; + for(var i = 0; i < this.numberOfRows; i++) { + var tr = document.createElement('tr'); + for(var j = 0; j < this.numberOfColumns; j++) { + var td = document.createElement('td'); + tr.appendChild(td); + } + table.appendChild(tr); + } + return this; + }, + getResult : function() { + return table; + } + }; + }; + var TableDirector = function() { + var tableBuilder = new TableBuilder(); + return { + constructArtistTable: function() { + var table = tableBuilder + .buildHeaders(['Artist', 'Title']) + .buildColumns(2) + .buildRows(4) + .getResult(); + return table; + } + } + } + var tableDirector = new TableDirector(); + var table = tableDirector.constructArtistTable(); + // document.getElementById('artist-table').appendChild(table); + console.log(table); +})(); \ No newline at end of file diff --git a/Kapitel8/Prototype/ES2015/Prototype.js b/Kapitel8/Prototype/ES2015/Prototype.js new file mode 100644 index 0000000..e75c42c --- /dev/null +++ b/Kapitel8/Prototype/ES2015/Prototype.js @@ -0,0 +1,47 @@ +(function() { + const cube= { + width: 20, + depth: 20, + height: 20, + color: 'weiß', + setWidth(width) { + this.width = width; + }, + getWidth() { + return this.width; + }, + setDepth(depth) { + this.depth = depth; + }, + getDepth() { + return this.depth; + }, + setHeight(height) { + this.height = height; + }, + getHeight() { + return this.height; + }, + setColor(color) { + this.color = color; + }, + getColor() { + return this.color; + } + } + const yellowCube= Object.create(cube); + yellowCube.setColor('gelb'); + const blueCube = Object.create(cube); + blueCube.setColor('blau'); + console.log(cube.getColor()); // weiß + console.log(yellowCube.getColor()); // gelb + console.log(blueCube.getColor()); // blau + console.log(yellowCube.getWidth()); // 20 + console.log(blueCube.getWidth()); // 20 + cube.setWidth(40); + console.log(yellowCube.getWidth()); // 40 + console.log(blueCube.getWidth()); // 40 + yellowCube.setWidth(60); + console.log(yellowCube.getWidth()); // 60 + console.log(blueCube.getWidth()); // 40 +})(); diff --git a/Kapitel8/Prototype/ES5/Prototype.js b/Kapitel8/Prototype/ES5/Prototype.js new file mode 100644 index 0000000..b1c4c9d --- /dev/null +++ b/Kapitel8/Prototype/ES5/Prototype.js @@ -0,0 +1,47 @@ +(function() { + var cube= { + width: 20, + depth: 20, + height: 20, + color: 'weiß', + setWidth: function(width) { + this.width = width; + }, + getWidth: function() { + return this.width; + }, + setDepth: function(depth) { + this.depth = depth; + }, + getDepth: function() { + return this.depth; + }, + setHeight: function(height) { + this.height = height; + }, + getHeight: function() { + return this.height; + }, + setColor: function(color) { + this.color = color; + }, + getColor: function() { + return this.color; + } + } + const yellowCube= Object.create(cube); + yellowCube.setColor('gelb'); + const blueCube = Object.create(cube); + blueCube.setColor('blau'); + console.log(cube.getColor()); // weiß + console.log(yellowCube.getColor()); // gelb + console.log(blueCube.getColor()); // blau + console.log(yellowCube.getWidth()); // 20 + console.log(blueCube.getWidth()); // 20 + cube.setWidth(40); + console.log(yellowCube.getWidth()); // 40 + console.log(blueCube.getWidth()); // 40 + yellowCube.setWidth(60); + console.log(yellowCube.getWidth()); // 60 + console.log(blueCube.getWidth()); // 40 +})(); From 34705490eef6d9318b8a0d0854463892c21750a6 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Sat, 27 Jan 2018 18:51:41 +0100 Subject: [PATCH 11/42] Updated composite, decorator and flyweight pattern examples --- Kapitel8/Composite/Klassensyntax/Composite.js | 71 +++++++++++ .../{ => Pseudoklassisch}/Composite.js | 0 Kapitel8/Decorator/Klassensyntax/Decorator.js | 29 +++++ .../{ => Pseudoklassisch}/Decorator.js | 8 +- Kapitel8/Flyweight/Klassensyntax/Flyweight.js | 112 ++++++++++++++++++ .../{ => Pseudoklassisch}/Flyweight.js | 13 +- Kapitel8/Flyweight/package-lock.json | 27 +++++ Kapitel8/Flyweight/package.json | 15 +++ 8 files changed, 265 insertions(+), 10 deletions(-) create mode 100644 Kapitel8/Composite/Klassensyntax/Composite.js rename Kapitel8/Composite/{ => Pseudoklassisch}/Composite.js (100%) create mode 100644 Kapitel8/Decorator/Klassensyntax/Decorator.js rename Kapitel8/Decorator/{ => Pseudoklassisch}/Decorator.js (73%) create mode 100644 Kapitel8/Flyweight/Klassensyntax/Flyweight.js rename Kapitel8/Flyweight/{ => Pseudoklassisch}/Flyweight.js (89%) create mode 100644 Kapitel8/Flyweight/package-lock.json create mode 100644 Kapitel8/Flyweight/package.json diff --git a/Kapitel8/Composite/Klassensyntax/Composite.js b/Kapitel8/Composite/Klassensyntax/Composite.js new file mode 100644 index 0000000..4219b1d --- /dev/null +++ b/Kapitel8/Composite/Klassensyntax/Composite.js @@ -0,0 +1,71 @@ +(function() { + + class Component { + constructor(name) { + this._name = name; + } + + get name() { + return this._name; + } + } + + class File extends Component { + + } + + class Directory extends Component { + + constructor(name) { + super(name); + this.children = []; + } + + add(child) { + this.children.push(child); + } + + remove(child) { + const length = this.children.length; + for (let i = 0; i < length; i++) { + if (this.children[i] === child) { + this.children.splice(i, 1); + return; + } + } + } + + getChild(i) { + return this.children[i]; + } + + hasChildren() { + return this.children.length > 0; + } + + } + + const printDirectoryStructure = (component, indent) => { + console.log(Array(indent++).join("--") + component.name); + if(component instanceof Directory) { + for (let i = 0, length = component.children.length; i < length; i++) { + printDirectoryStructure(component.getChild(i), indent); + } + } + } + + const projectDirectory = new Directory("project"); + const cssDirectory = new Directory("css"); + const cssFile1 = new File("styles1.css") + const cssFile2 = new File("styles2.css"); + cssDirectory.add(cssFile1); + cssDirectory.add(cssFile2); + const scriptDirectory = new Directory("js"); + const scriptFile1 = new File("scripts1.js") + const scriptFile2 = new File("scripts2.js"); + scriptDirectory.add(scriptFile1); + scriptDirectory.add(scriptFile2); + projectDirectory.add(cssDirectory); + projectDirectory.add(scriptDirectory); + printDirectoryStructure(projectDirectory, 1); +})(); \ No newline at end of file diff --git a/Kapitel8/Composite/Composite.js b/Kapitel8/Composite/Pseudoklassisch/Composite.js similarity index 100% rename from Kapitel8/Composite/Composite.js rename to Kapitel8/Composite/Pseudoklassisch/Composite.js diff --git a/Kapitel8/Decorator/Klassensyntax/Decorator.js b/Kapitel8/Decorator/Klassensyntax/Decorator.js new file mode 100644 index 0000000..8066c1c --- /dev/null +++ b/Kapitel8/Decorator/Klassensyntax/Decorator.js @@ -0,0 +1,29 @@ +(function () { + + class Album { + + constructor(config) { + this.name = config.name || "Untitled"; + this.artist = config.artist || "VA"; + this.price = config.price; + } + + getPrice() { + return this.price; + } + + } + + const sign = (aFunction, context) => { + const price = aFunction.call(context); + return 2 * price; + } + + const decorate = (decorator, aFunction, context) => + () => decorator.call(context, aFunction, context); + + const album = new Album({price: 40.0, name: "No more shall we part", artist: "Nick Cave"}); + console.log(album.getPrice()); + album.getPrice = decorate(sign, album.getPrice, album); + console.log(album.getPrice()); +})(); diff --git a/Kapitel8/Decorator/Decorator.js b/Kapitel8/Decorator/Pseudoklassisch/Decorator.js similarity index 73% rename from Kapitel8/Decorator/Decorator.js rename to Kapitel8/Decorator/Pseudoklassisch/Decorator.js index 5c7f426..9a03072 100644 --- a/Kapitel8/Decorator/Decorator.js +++ b/Kapitel8/Decorator/Pseudoklassisch/Decorator.js @@ -9,14 +9,14 @@ } } - function sign(funktion, context) { - var price = funktion.call(context); + function sign(aFunction, context) { + var price = aFunction.call(context); return 2 * price; } - function decorate(decorator, funktion, context) { + function decorate(decorator, aFunction, context) { return function() { - return decorator.call(context, funktion, context); + return decorator.call(context, aFunction, context); } } diff --git a/Kapitel8/Flyweight/Klassensyntax/Flyweight.js b/Kapitel8/Flyweight/Klassensyntax/Flyweight.js new file mode 100644 index 0000000..71df704 --- /dev/null +++ b/Kapitel8/Flyweight/Klassensyntax/Flyweight.js @@ -0,0 +1,112 @@ +(function () { + + const memwatch = require('memwatch-next'); + const hd = new memwatch.HeapDiff(); + + class Album { + constructor(title, year, artist, id, member, price) { + this.title = title; + this.year = year; + this.artist = artist; + this.id = id; + this.member = member; + this.price = price; + } + } + + const getRandomID = (min, max) => { + return `${Math.floor(Math.random() * (max - min) + min)}`; + } + + const albums = []; + for(let i = 0; i < 1000000; i++) { + albums.push(new Album('Title', 2000, 'Artist', getRandomID(1,10), 'Member' + i, 5.00)); + } + + const diff = hd.end(); + console.log(diff.before.size); // 3.93 mb + console.log(diff.after.size); // 120.93 mb + console.log(albums.length); // 1000000 +})(); + + +(function () { + + const memwatch = require('memwatch-next'); + const hd = new memwatch.HeapDiff(); + + // Flyweight + class Album { + constructor(title, year, artist, id) { + this.title = title; + this.year = year; + this.artist = artist; + this.id = id; + } + } + + // FlyweightFactory + class AlbumFactory { + + constructor() { + this.existingAlbums = {}; + } + + createAlbum(title, year, artist, id){ + const existingAlbum = this.existingAlbums[id]; + if(existingAlbum) { + return existingAlbum; + } else{ + const album = new Album(title, year, artist, id); + this.existingAlbums[id] = album; + return album; + } + } + + getNumberOfAlbums() { + return Object.keys(this.existingAlbums).length; + } + } + + class AlbumManager { + constructor(albumFactory) { + this.albumFactory = albumFactory; + this.albumDatabase = {}; + } + + addAlbum(offerID, title, year, artist, id, member, price) { + const album = this.albumFactory.createAlbum(title, year, artist, id); + this.albumDatabase[offerID] = { + member: member, + price: price, + album: album + }; + } + + getNumberOfAlbums() { + return Object.keys(this.albumDatabase).length; + } + + updatePrice(offerID, price) { + const album = this.albumDatabase[offerID]; + album.price = price; + } + } + + const getRandomID = (min, max) => { + return `${Math.floor(Math.random() * (max - min) + min)}`; + } + + const albumFactory = new AlbumFactory(); + const albumManager = new AlbumManager(albumFactory); + + for(let i = 0; i < 1000000; i++) { + albumManager.addAlbum(i, 'Title', 2000, 'Artist', getRandomID(1,10), 'Member' + i, 5.00); + } + + const diff = hd.end(); + console.log(albumFactory.getNumberOfAlbums()); // 9 + console.log(albumManager.getNumberOfAlbums()); // 1000000 + console.log(diff.before.size); // 4.21 mb + console.log(diff.after.size); // 98.1 mb +})(); \ No newline at end of file diff --git a/Kapitel8/Flyweight/Flyweight.js b/Kapitel8/Flyweight/Pseudoklassisch/Flyweight.js similarity index 89% rename from Kapitel8/Flyweight/Flyweight.js rename to Kapitel8/Flyweight/Pseudoklassisch/Flyweight.js index b5e5a05..1f667ea 100644 --- a/Kapitel8/Flyweight/Flyweight.js +++ b/Kapitel8/Flyweight/Pseudoklassisch/Flyweight.js @@ -1,6 +1,6 @@ (function () { - var memwatch = require('memwatch'); + var memwatch = require('memwatch-next'); var hd = new memwatch.HeapDiff(); function Album(title, year, artist, id, member, price) { @@ -19,14 +19,15 @@ albums.push(new Album('Title', 2000, 'Artist', getRandomID(1,10), 'Member' + i, 5.00)); } var diff = hd.end(); - console.log(diff.before.size); // 1.46 mb - console.log(diff.after.size); // 110.81 mb + console.log(diff.before.size); // 3.93 mb + console.log(diff.after.size); // 120.93 mb + console.log(albums.length); // 1000000 })(); (function () { - var memwatch = require('memwatch'); + var memwatch = require('memwatch-next'); var hd = new memwatch.HeapDiff(); // Flyweight function Album(title, year, artist, id) { @@ -86,6 +87,6 @@ var diff = hd.end(); console.log(AlbumFactory.getNumberOfAlbums()); // 9 console.log(AlbumManager.getNumberOfAlbums()); // 1000000 - console.log(diff.before.size); // 1.81 mb - console.log(diff.after.size); // 88.06 mb + console.log(diff.before.size); // 4.21 mb + console.log(diff.after.size); // 98.1 mb })(); \ No newline at end of file diff --git a/Kapitel8/Flyweight/package-lock.json b/Kapitel8/Flyweight/package-lock.json new file mode 100644 index 0000000..008d771 --- /dev/null +++ b/Kapitel8/Flyweight/package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "Flyweight", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + }, + "memwatch-next": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/memwatch-next/-/memwatch-next-0.3.0.tgz", + "integrity": "sha1-IREFD5qQbgqi1ypOwPAInHhyb48=", + "requires": { + "bindings": "1.3.0", + "nan": "2.8.0" + } + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + } + } +} diff --git a/Kapitel8/Flyweight/package.json b/Kapitel8/Flyweight/package.json new file mode 100644 index 0000000..65a465e --- /dev/null +++ b/Kapitel8/Flyweight/package.json @@ -0,0 +1,15 @@ +{ + "name": "Flyweight", + "version": "1.0.0", + "main": "Flyweight.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "memwatch-next": "^0.3.0" + } +} From 1dfe69381e22070127968c66ea3e7d07615132a4 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Sat, 27 Jan 2018 19:30:08 +0100 Subject: [PATCH 12/42] Updated facade, observer and proxy patterns --- Kapitel8/Facade/Facade.js | 15 ----- Kapitel8/Facade/index.html | 11 ---- Kapitel8/Iterator/Iterator.js | 58 ++++++++--------- Kapitel8/Observer/Observer.js | 117 ---------------------------------- Kapitel8/Proxy/Proxy.js | 45 ------------- 5 files changed, 27 insertions(+), 219 deletions(-) delete mode 100644 Kapitel8/Facade/Facade.js delete mode 100644 Kapitel8/Facade/index.html delete mode 100644 Kapitel8/Observer/Observer.js delete mode 100644 Kapitel8/Proxy/Proxy.js diff --git a/Kapitel8/Facade/Facade.js b/Kapitel8/Facade/Facade.js deleted file mode 100644 index 51e591f..0000000 --- a/Kapitel8/Facade/Facade.js +++ /dev/null @@ -1,15 +0,0 @@ -var EventFacade = { - addEvent: function(element, event, callback) { - if(window.addEventListener) { - element.addEventListener(event, callback, false); - } else if(document.attachEvent) { - element.attachEvent('on' + event, callback ); - } else { - element['on' + event] = callback; - } - } - } -var button = document.getElementById('button'); -EventFacade.addEvent(button, 'click', function() { - console.log('Button gedrückt'); -}); \ No newline at end of file diff --git a/Kapitel8/Facade/index.html b/Kapitel8/Facade/index.html deleted file mode 100644 index 2293499..0000000 --- a/Kapitel8/Facade/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Facade-Beispiel - - - - - - \ No newline at end of file diff --git a/Kapitel8/Iterator/Iterator.js b/Kapitel8/Iterator/Iterator.js index 6f7ad31..0d98233 100644 --- a/Kapitel8/Iterator/Iterator.js +++ b/Kapitel8/Iterator/Iterator.js @@ -1,36 +1,33 @@ (function() { - /* Listing 7.19 */ - /* Funktioniert nur in ES6 */ - let interpreten = ['Kyuss', 'QOTSA', 'Ben Harper', 'Monster Magnet']; - let interpretenWrapper = {} - interpretenWrapper.interpreten = interpreten; - interpretenWrapper[Symbol.iterator] = function() { - var interpreten = this.interpreten; - var zaehler = this.interpreten.length-1; -// Rückgabe des Iterator-Objekts - return { - next: function(){ - if (zaehler < 0) { - return { - done: true - }; - } else { - return { - value: interpreten[zaehler--], - done: false - }; - } - } - } - }; - var iterator = interpreten[Symbol.iterator](); - for(let interpret of iterator) { - console.log(interpret); - } + const artists = ['Kyuss', 'QOTSA', 'Ben Harper', 'Monster Magnet']; + const artistsWrapper = {} + artistsWrapper.artists = artists; + artistsWrapper[Symbol.iterator] = function() { + const artists = this.artists; + let counter = this.artists.length-1; + // Rückgabe des Iterator-Objekts + return { + next: function(){ + if (counter< 0) { + return { + done: true + }; + } else { + return { + value: artists[counter--], + done: false + }; + } + } + } + }; + const iterator = artists[Symbol.iterator](); + for(let artist of iterator) { + console.log(artist); + } })(); (function() { - /* Listing 7.20 */ var Iterator = function(elements) { this.index = 0; this.elements = elements; @@ -49,8 +46,7 @@ })(); (function() { - /* Listing 7.21 */ - /* Funktioniert nur in einer Laufzeitumgebung, in der das DOM über das document-Objekt zur Verfügung steht */ + // /* Funktioniert nur in einer Laufzeitumgebung, in der das DOM über das document-Objekt zur Verfügung steht */ var Iterator = function(node) { this.index = 0; this.elements = Array.prototype.slice.call(node.attributes); diff --git a/Kapitel8/Observer/Observer.js b/Kapitel8/Observer/Observer.js deleted file mode 100644 index 262da8c..0000000 --- a/Kapitel8/Observer/Observer.js +++ /dev/null @@ -1,117 +0,0 @@ -(function () { - /* Listing 7.22 */ - function List() { - this.list = []; - } - List.prototype.add = function(object){ - return this.list.push(object); - }; - List.prototype.count = function(){ - return this.list.length; - }; - List.prototype.get = function(index){ - if( index > -1 && index < this.list.length ){ - return this.list[index]; - } - }; - List.prototype.removeAt = function( index ){ - this.list.splice(index, 1); - }; -// Subject - function Artist(name) { - this.name = name; - this.albums = []; - this.fans = new List(); - } - Artist.prototype.addFan = function(fan){ - this.fans.add( fan ); - }; - Artist.prototype.removeFan = function(fan){ - this.fans.removeAt(this.fans.indexOf(fan, 0)); - }; - Artist.prototype.newAlbum = function (album) { - this.albums.push(album); - this.notifyNewAlbum(album); - }; - Artist.prototype.notifyNewAlbum = function (album) { - var fanCount = this.fans.count(); - for (var i = 0; i < fanCount; i++) { - this.fans.get(i).update(album); - } - }; -// Observer - function Person(name) { - this.name = name; - } - Person.prototype.update = function(album){ - console.log(this.name + ": " + album); - }; - var philip = new Person("Philip"); - var christoph = new Person("Christoph"); - var artist = new Artist("Tool"); - artist.addFan(philip); - artist.addFan(christoph); - artist.newAlbum("Lateralus"); -})(); - -(function () { - /* Listing 7.23 */ - function Artist(name) { - this.name = name; - this.albums = []; - } - - Artist.prototype.addFan = function (fan) { - Object.observe(this.albums, fan.update.bind(fan)); - }; - - Artist.prototype.removeFan = function (fan) { - Object.unobserve(this.albums, fan.update.bind(fan)); - }; - - Artist.prototype.newAlbum = function (album) { - this.albums.push(album); - }; - - function Person(name) { - this.name = name; - } - - Person.prototype.update = function (aenderungen) { - var that = this; - aenderungen.forEach(function (aenderung) { - if (aenderung.type === "add") { - console.log(that.name + ": " + aenderung.object); - } - }); - - }; - - var philip = new Person("Philip"); - var christoph = new Person("Christoph"); - var artist = new Artist("Tool"); - artist.addFan(philip); - artist.addFan(christoph); - artist.newAlbum("Lateralus"); -})(); - -(function() { - /* Listing 7.24 */ - var events = require('events'); - var artist = new events.EventEmitter(); - - function Person(name) { - this.name = name; - } - - Person.prototype.update = function(album) { - console.log(this.name + ': ' + album) - } - - var philip = new Person('Philip'); - var christoph = new Person('Christoph'); - - artist.on('newAlbum', philip.update.bind(philip)); - artist.on('newAlbum', christoph.update.bind(christoph)); - artist.emit('newAlbum', 'Lateralus'); -})(); \ No newline at end of file diff --git a/Kapitel8/Proxy/Proxy.js b/Kapitel8/Proxy/Proxy.js deleted file mode 100644 index e012cb5..0000000 --- a/Kapitel8/Proxy/Proxy.js +++ /dev/null @@ -1,45 +0,0 @@ -(function() { - /* Listing 7.17 */ - /* Funktioniert nur in ES6 */ - let profiler = { - anzahlZugriffe: 0, - get: function(proxy, name) { - this.anzahlZugriffe++; - return proxy[name]; - }, - getAnzahlZugriffe: function() { - return this.anzahlZugriffe; - } - } - let person = Proxy({}, profiler); - person.name = 'Max'; - for(let i=0; i<9; i++) { - console.log(person.name); - } - console.log(profiler.getAnzahlZugriffe()); -})(); - -(function() { - /* Listing 7.18 */ - var zielObjekt = {"name" : "Max"}; - var proxy = Object.create(Object.getPrototypeOf(zielObjekt), {}); - Object.getOwnPropertyNames(zielObjekt).forEach(function(eigenschaft) { - var pd = Object.getOwnPropertyDescriptor(zielObjekt, eigenschaft); - Object.defineProperty(proxy, eigenschaft, { - set: function(wert) { - console.log('setze ' + wert + ' für Eigenschaft ' + eigenschaft); - zielObjekt[eigenschaft] = wert; - }, - get: function() { - console.log('liefere ' + zielObjekt[eigenschaft] + - ' von Eigenschaft ' + eigenschaft); - return zielObjekt[eigenschaft]; - } - }); -// Kopieren der Property-Decriptor-Attribute - return proxy; - }); - console.log(proxy.name); // 'Max' - zielObjekt.nachname = 'Mustermann'; - console.log(proxy.nachname); // undefined -})(); \ No newline at end of file From f6b107b82b4bc5882277ed79560b39ac42214f8c Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Sat, 27 Jan 2018 19:30:29 +0100 Subject: [PATCH 13/42] Updated facade, observer and proxy patterns --- Kapitel8/Facade/ES2015/Facade.js | 18 ++++ Kapitel8/Facade/ES2015/index.html | 11 ++ Kapitel8/Facade/ES5/Facade.js | 15 +++ Kapitel8/Facade/ES5/index.html | 11 ++ Kapitel8/Observer/Klassensyntax/Observer.js | 102 ++++++++++++++++++ Kapitel8/Observer/Pseudoklassisch/Observer.js | 74 +++++++++++++ Kapitel8/Proxy/ES2015/Proxy.js | 19 ++++ Kapitel8/Proxy/ES5/Proxy.js | 23 ++++ 8 files changed, 273 insertions(+) create mode 100644 Kapitel8/Facade/ES2015/Facade.js create mode 100644 Kapitel8/Facade/ES2015/index.html create mode 100644 Kapitel8/Facade/ES5/Facade.js create mode 100644 Kapitel8/Facade/ES5/index.html create mode 100644 Kapitel8/Observer/Klassensyntax/Observer.js create mode 100644 Kapitel8/Observer/Pseudoklassisch/Observer.js create mode 100644 Kapitel8/Proxy/ES2015/Proxy.js create mode 100644 Kapitel8/Proxy/ES5/Proxy.js diff --git a/Kapitel8/Facade/ES2015/Facade.js b/Kapitel8/Facade/ES2015/Facade.js new file mode 100644 index 0000000..92d933d --- /dev/null +++ b/Kapitel8/Facade/ES2015/Facade.js @@ -0,0 +1,18 @@ +class EventFacade { + + static addEvent(element, event, callback) { + if(window.addEventListener) { + element.addEventListener(event, callback, false); + } else if(document.attachEvent) { + element.attachEvent('on' + event, callback ); + } else { + element['on' + event] = callback; + } + } + +} + +const button = document.getElementById('button'); +EventFacade.addEvent(button, 'click', () => { + console.log('Button gedrückt'); +}); \ No newline at end of file diff --git a/Kapitel8/Facade/ES2015/index.html b/Kapitel8/Facade/ES2015/index.html new file mode 100644 index 0000000..2293499 --- /dev/null +++ b/Kapitel8/Facade/ES2015/index.html @@ -0,0 +1,11 @@ + + + + + Facade-Beispiel + + + + + + \ No newline at end of file diff --git a/Kapitel8/Facade/ES5/Facade.js b/Kapitel8/Facade/ES5/Facade.js new file mode 100644 index 0000000..51e591f --- /dev/null +++ b/Kapitel8/Facade/ES5/Facade.js @@ -0,0 +1,15 @@ +var EventFacade = { + addEvent: function(element, event, callback) { + if(window.addEventListener) { + element.addEventListener(event, callback, false); + } else if(document.attachEvent) { + element.attachEvent('on' + event, callback ); + } else { + element['on' + event] = callback; + } + } + } +var button = document.getElementById('button'); +EventFacade.addEvent(button, 'click', function() { + console.log('Button gedrückt'); +}); \ No newline at end of file diff --git a/Kapitel8/Facade/ES5/index.html b/Kapitel8/Facade/ES5/index.html new file mode 100644 index 0000000..2293499 --- /dev/null +++ b/Kapitel8/Facade/ES5/index.html @@ -0,0 +1,11 @@ + + + + + Facade-Beispiel + + + + + + \ No newline at end of file diff --git a/Kapitel8/Observer/Klassensyntax/Observer.js b/Kapitel8/Observer/Klassensyntax/Observer.js new file mode 100644 index 0000000..9c67ab4 --- /dev/null +++ b/Kapitel8/Observer/Klassensyntax/Observer.js @@ -0,0 +1,102 @@ +(function () { + + class List { + constructor() { + this.list = []; + } + + add(object) { + return this.list.push(object); + } + + count() { + return this.list.length; + } + + get(index) { + if( index > -1 && index < this.list.length ){ + return this.list[index]; + } + } + + removeAt(index) { + this.list.splice(index, 1); + } + + } + + // Subject + class Artist { + + constructor(name) { + this.name = name; + this.albums = []; + this.fans = new List(); + } + + addFan(fan) { + this.fans.add(fan); + } + + removeFan(fan) { + this.fans.removeAt(this.fans.indexOf(fan, 0)); + } + + newAlbum(album) { + this.albums.push(album); + this.notifyNewAlbum(album); + } + + notifyNewAlbum(album) { + const fanCount = this.fans.count(); + for (let i = 0; i < fanCount; i++) { + this.fans.get(i).update(album); + } + } + + } + + // Observer + class Person { + + constructor(name) { + this.name = name; + } + + update(album) { + console.log(`${this.name}: ${album}`); + } + + } + + const philip = new Person('Philip'); + const christoph = new Person('Christoph'); + const artist = new Artist('Tool'); + artist.addFan(philip); + artist.addFan(christoph); + artist.newAlbum('Lateralus'); +})(); + +(function() { + const events = require('events'); + const artist = new events.EventEmitter(); + + class Person { + + constructor(name) { + this.name = name; + } + + update(album) { + console.log(`${this.name}: ${album}`); + } + + } + + const philip = new Person('Philip'); + christoph = new Person('Christoph'); + + artist.on('newAlbum', philip.update.bind(philip)); + artist.on('newAlbum', christoph.update.bind(christoph)); + artist.emit('newAlbum', 'Lateralus'); +})(); \ No newline at end of file diff --git a/Kapitel8/Observer/Pseudoklassisch/Observer.js b/Kapitel8/Observer/Pseudoklassisch/Observer.js new file mode 100644 index 0000000..7c2c18e --- /dev/null +++ b/Kapitel8/Observer/Pseudoklassisch/Observer.js @@ -0,0 +1,74 @@ +(function () { + function List() { + this.list = []; + } + List.prototype.add = function(object){ + return this.list.push(object); + }; + List.prototype.count = function(){ + return this.list.length; + }; + List.prototype.get = function(index){ + if( index > -1 && index < this.list.length ){ + return this.list[index]; + } + }; + List.prototype.removeAt = function( index ){ + this.list.splice(index, 1); + }; +// Subject + function Artist(name) { + this.name = name; + this.albums = []; + this.fans = new List(); + } + Artist.prototype.addFan = function(fan){ + this.fans.add( fan ); + }; + Artist.prototype.removeFan = function(fan){ + this.fans.removeAt(this.fans.indexOf(fan, 0)); + }; + Artist.prototype.newAlbum = function (album) { + this.albums.push(album); + this.notifyNewAlbum(album); + }; + Artist.prototype.notifyNewAlbum = function (album) { + var fanCount = this.fans.count(); + for (var i = 0; i < fanCount; i++) { + this.fans.get(i).update(album); + } + }; +// Observer + function Person(name) { + this.name = name; + } + Person.prototype.update = function(album){ + console.log(this.name + ": " + album); + }; + var philip = new Person("Philip"); + var christoph = new Person("Christoph"); + var artist = new Artist("Tool"); + artist.addFan(philip); + artist.addFan(christoph); + artist.newAlbum("Lateralus"); +})(); + +(function() { + var events = require('events'); + var artist = new events.EventEmitter(); + + function Person(name) { + this.name = name; + } + + Person.prototype.update = function(album) { + console.log(this.name + ': ' + album) + } + + var philip = new Person('Philip'); + var christoph = new Person('Christoph'); + + artist.on('newAlbum', philip.update.bind(philip)); + artist.on('newAlbum', christoph.update.bind(christoph)); + artist.emit('newAlbum', 'Lateralus'); +})(); \ No newline at end of file diff --git a/Kapitel8/Proxy/ES2015/Proxy.js b/Kapitel8/Proxy/ES2015/Proxy.js new file mode 100644 index 0000000..2446865 --- /dev/null +++ b/Kapitel8/Proxy/ES2015/Proxy.js @@ -0,0 +1,19 @@ +(function() { + const profiler = { + accesses: 0, + get: function(proxy, name) { + this.accesses ++; + return proxy[name]; + }, + getAccesses: function() { + return this.accesses; + } + } + + const person = new Proxy({}, profiler); + person.name = 'Max'; + for(let i=0; i<9; i++) { + console.log(person.name); + } + console.log(profiler.getAccesses()); +})(); diff --git a/Kapitel8/Proxy/ES5/Proxy.js b/Kapitel8/Proxy/ES5/Proxy.js new file mode 100644 index 0000000..52d0ae5 --- /dev/null +++ b/Kapitel8/Proxy/ES5/Proxy.js @@ -0,0 +1,23 @@ +(function() { + var target = {'firstName' : 'Max'}; + var proxy = Object.create(Object.getPrototypeOf(target), {}); + Object.getOwnPropertyNames(target).forEach(function(property) { + var pd = Object.getOwnPropertyDescriptor(target, property); + Object.defineProperty(proxy, property, { + set: function(value) { + console.log('setze ' + value + ' für Eigenschaft ' + property); + target[property] = value; + }, + get: function() { + console.log('liefere ' + target[property] + + ' von Eigenschaft ' + property); + return target[property]; + } + }); + // Kopieren der Property-Decriptor-Attribute + return proxy; + }); + console.log(proxy.name); // 'Max' + target.lastName = 'Mustermann'; + console.log(proxy.lastName); // undefined +})(); \ No newline at end of file From 99e5642253d81824072b9d5e3918a7d9a45d1a4e Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Sun, 28 Jan 2018 21:44:52 +0100 Subject: [PATCH 14/42] Updated several design pattern examples --- Kapitel7/AsyncAsyncControl.example.js | 6 + Kapitel7/AsyncAsyncControl.js | 32 ++++ Kapitel7/AsyncControl.example.js | 20 +++ Kapitel7/AsyncControl.js | 32 ++++ Kapitel7/AsyncControlPromises.js | 45 ++++++ Kapitel7/FluentAsyncControl.example.js | 11 ++ Kapitel7/FluentAsyncControl.js | 104 +++++++++++++ .../FluentAsyncControlAsyncAwait.example.js | 11 ++ Kapitel7/FluentAsyncControlAsyncAwait.js | 67 ++++++++ .../FluentAsyncControlOptimized.example.js | 11 ++ Kapitel7/FluentAsyncControlOptimized.js | 55 +++++++ .../FluentAsyncControlOriginalAPI.example.js | 38 +++++ Kapitel7/FluentAsyncControlOriginalAPI.js | 68 ++++++++ .../FluentAsyncControlPromises.example.js | 11 ++ Kapitel7/FluentAsyncControlPromises.js | 65 ++++++++ Kapitel7/FluentAsyncControlWrong.example.js | 12 ++ Kapitel7/FluentAsyncControlWrong.js | 69 ++++++++ Kapitel7/FluentSyncControl.example.js | 11 ++ Kapitel7/FluentSyncControl.js | 32 ++++ Kapitel7/SyncControl.example.js | 10 ++ Kapitel7/SyncControl.js | 26 ++++ Kapitel7/fluentify.example.js | 24 +++ Kapitel7/fluentify.js | 25 +++ .../ChainOfResponsibility.js | 33 ---- .../Klassensyntax/ChainOfResponsibility.js | 38 +++++ .../Pseudoklassisch/ChainOfResponsibility.js | 33 ++++ Kapitel8/Command/Command.js | 122 --------------- Kapitel8/Command/Klassensyntax/Command.js | 137 ++++++++++++++++ Kapitel8/Command/Pseudoklassisch/Command.js | 119 ++++++++++++++ Kapitel8/Memento/Klassensyntax/Memento.js | 63 ++++++++ .../Memento/{ => Pseudoklassisch}/Memento.js | 24 +-- Kapitel8/State/ES2015/State.js | 114 ++++++++++++++ Kapitel8/State/{ => ES5}/State.js | 40 +++-- Kapitel8/Strategy/Klassensyntax/Strategy.js | 43 +++++ Kapitel8/Strategy/Pseudoklassisch/Strategy.js | 39 +++++ Kapitel8/Strategy/Strategy.js | 41 ----- Kapitel8/TemplateMethod/TemplateMethod.js | 43 +++-- Kapitel8/Visitor/Klassensyntax/Visitor.js | 147 ++++++++++++++++++ .../Visitor/{ => Pseudoklassisch}/Visitor.js | 15 +- 39 files changed, 1584 insertions(+), 252 deletions(-) create mode 100644 Kapitel7/AsyncAsyncControl.example.js create mode 100644 Kapitel7/AsyncAsyncControl.js create mode 100644 Kapitel7/AsyncControl.example.js create mode 100644 Kapitel7/AsyncControl.js create mode 100644 Kapitel7/AsyncControlPromises.js create mode 100644 Kapitel7/FluentAsyncControl.example.js create mode 100644 Kapitel7/FluentAsyncControl.js create mode 100644 Kapitel7/FluentAsyncControlAsyncAwait.example.js create mode 100644 Kapitel7/FluentAsyncControlAsyncAwait.js create mode 100644 Kapitel7/FluentAsyncControlOptimized.example.js create mode 100644 Kapitel7/FluentAsyncControlOptimized.js create mode 100644 Kapitel7/FluentAsyncControlOriginalAPI.example.js create mode 100644 Kapitel7/FluentAsyncControlOriginalAPI.js create mode 100644 Kapitel7/FluentAsyncControlPromises.example.js create mode 100644 Kapitel7/FluentAsyncControlPromises.js create mode 100644 Kapitel7/FluentAsyncControlWrong.example.js create mode 100644 Kapitel7/FluentAsyncControlWrong.js create mode 100644 Kapitel7/FluentSyncControl.example.js create mode 100644 Kapitel7/FluentSyncControl.js create mode 100644 Kapitel7/SyncControl.example.js create mode 100644 Kapitel7/SyncControl.js create mode 100644 Kapitel7/fluentify.example.js create mode 100644 Kapitel7/fluentify.js delete mode 100644 Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js create mode 100644 Kapitel8/ChainOfResponsibility/Klassensyntax/ChainOfResponsibility.js create mode 100644 Kapitel8/ChainOfResponsibility/Pseudoklassisch/ChainOfResponsibility.js delete mode 100644 Kapitel8/Command/Command.js create mode 100644 Kapitel8/Command/Klassensyntax/Command.js create mode 100644 Kapitel8/Command/Pseudoklassisch/Command.js create mode 100644 Kapitel8/Memento/Klassensyntax/Memento.js rename Kapitel8/Memento/{ => Pseudoklassisch}/Memento.js (65%) create mode 100644 Kapitel8/State/ES2015/State.js rename Kapitel8/State/{ => ES5}/State.js (68%) create mode 100644 Kapitel8/Strategy/Klassensyntax/Strategy.js create mode 100644 Kapitel8/Strategy/Pseudoklassisch/Strategy.js delete mode 100644 Kapitel8/Strategy/Strategy.js create mode 100644 Kapitel8/Visitor/Klassensyntax/Visitor.js rename Kapitel8/Visitor/{ => Pseudoklassisch}/Visitor.js (90%) diff --git a/Kapitel7/AsyncAsyncControl.example.js b/Kapitel7/AsyncAsyncControl.example.js new file mode 100644 index 0000000..b9e4951 --- /dev/null +++ b/Kapitel7/AsyncAsyncControl.example.js @@ -0,0 +1,6 @@ +const AsyncAsyncControl = require('./AsyncAsyncControl'); +const control = new AsyncAsyncControl(); +await control.play(); +await control.pause(); + + diff --git a/Kapitel7/AsyncAsyncControl.js b/Kapitel7/AsyncAsyncControl.js new file mode 100644 index 0000000..b7292bb --- /dev/null +++ b/Kapitel7/AsyncAsyncControl.js @@ -0,0 +1,32 @@ +module.exports = class AsyncAsyncControl { + + async next(callback) { + console.log('Next song'); + setTimeout(callback, 500); + } + + async pause(callback) { + console.log('Pause'); + setTimeout(callback, 500); + } + + async play(callback) { + console.log('Play'); + setTimeout(callback, 500); + } + + async previous(callback) { + console.log('Previous song'); + setTimeout(callback, 500); + } + + async select(track, callback) { + console.log(`Select track ${track}`); + setTimeout(callback, 500); + } + + async stop(callback) { + console.log('Stop'); + setTimeout(callback, 500); + } +} diff --git a/Kapitel7/AsyncControl.example.js b/Kapitel7/AsyncControl.example.js new file mode 100644 index 0000000..91c1c5d --- /dev/null +++ b/Kapitel7/AsyncControl.example.js @@ -0,0 +1,20 @@ +const AsyncControl = require('./AsyncControl'); +const control = new AsyncControl(); +control + .play(() => { + control.pause(() => { + control.select(7, () => { + control.play(() => { + control.next(() => { + control.previous(() => { + control.play(() => { + control.stop(() => { + console.log('Finished'); + }); + }) + }); + }); + }); + }); + }); + }); diff --git a/Kapitel7/AsyncControl.js b/Kapitel7/AsyncControl.js new file mode 100644 index 0000000..ba76b3c --- /dev/null +++ b/Kapitel7/AsyncControl.js @@ -0,0 +1,32 @@ +module.exports = class AsyncControl { + + next(callback) { + console.log('Next song'); + setTimeout(callback, 500); + } + + pause(callback) { + console.log('Pause'); + setTimeout(callback, 500); + } + + play(callback) { + console.log('Play'); + setTimeout(callback, 500); + } + + previous(callback) { + console.log('Previous song'); + setTimeout(callback, 500); + } + + select(track, callback) { + console.log(`Select track ${track}`); + setTimeout(callback, 500); + } + + stop(callback) { + console.log('Stop'); + setTimeout(callback, 500); + } +} diff --git a/Kapitel7/AsyncControlPromises.js b/Kapitel7/AsyncControlPromises.js new file mode 100644 index 0000000..d1def65 --- /dev/null +++ b/Kapitel7/AsyncControlPromises.js @@ -0,0 +1,45 @@ +module.exports = class AsyncControlPromises { + + next() { + console.log('Next song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + pause() { + console.log('Pause'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + play() { + console.log('Play'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + previous() { + console.log('Previous song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + select(track) { + console.log(`Select track ${track}`); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + stop() { + console.log('Stop'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + +} diff --git a/Kapitel7/FluentAsyncControl.example.js b/Kapitel7/FluentAsyncControl.example.js new file mode 100644 index 0000000..d5ca00f --- /dev/null +++ b/Kapitel7/FluentAsyncControl.example.js @@ -0,0 +1,11 @@ +const FluentAsyncControl = require('./FluentAsyncControl'); +const control = FluentAsyncControl.build(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/FluentAsyncControl.js b/Kapitel7/FluentAsyncControl.js new file mode 100644 index 0000000..e7b590c --- /dev/null +++ b/Kapitel7/FluentAsyncControl.js @@ -0,0 +1,104 @@ +class FluentAsyncControl { + + next(callback) { + console.log('Next song'); + setTimeout(() => { + console.log('Next song callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + + pause(callback) { + console.log('Pause'); + setTimeout(() => { + console.log('Pause callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + + play(callback) { + console.log('Play'); + setTimeout(() => { + console.log('Play callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + + previous(callback) { + console.log('Previous song'); + setTimeout(() => { + console.log('Previous song callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + + select(track, callback) { + console.log(`Select track ${track}`); + setTimeout(() => { + console.log('Select track callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + + stop(callback) { + console.log('Stop'); + setTimeout(() => { + console.log('Stop callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + } + +} + +const API = (previousActions = Promise.resolve(), instance) => { + return { + next: () => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.next(resolve); + })), instance), + pause: () => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.pause(resolve); + })), instance), + play: () => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.play(resolve); + })), instance), + previous: () => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.previous(resolve); + })), instance), + select: (track) => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.select(track, resolve); + })), instance), + stop: () => + API(previousActions + .then(() => new Promise((resolve, reject) => { + instance.stop(resolve); + })), instance) + }; +} + +const build = () => { + const control = new FluentAsyncControl(); + return API(undefined, control); +} +module.exports.build = build; diff --git a/Kapitel7/FluentAsyncControlAsyncAwait.example.js b/Kapitel7/FluentAsyncControlAsyncAwait.example.js new file mode 100644 index 0000000..08ff089 --- /dev/null +++ b/Kapitel7/FluentAsyncControlAsyncAwait.example.js @@ -0,0 +1,11 @@ +const FluentAsyncControlAsyncAwait = require('./FluentAsyncControlAsyncAwait'); +const control = FluentAsyncControlAsyncAwait.build(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/FluentAsyncControlAsyncAwait.js b/Kapitel7/FluentAsyncControlAsyncAwait.js new file mode 100644 index 0000000..0e9e81b --- /dev/null +++ b/Kapitel7/FluentAsyncControlAsyncAwait.js @@ -0,0 +1,67 @@ +class FluentAsyncControlAsyncAwait { + + next() { + console.log('Next song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + pause() { + console.log('Pause'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + play() { + console.log('Play'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + previous() { + console.log('Previous song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + select(track) { + console.log(`Select track ${track}`); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + stop() { + console.log('Stop'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + +} + +const wrap = async (previousActions, instance, method, ...args) => { + await previousActions; + await instance[method](...args); +} + +const API = (previousActions = Promise.resolve(), instance) => { + return { + next: () => API(wrap(previousActions, instance, 'next'), instance), + pause: () => API(wrap(previousActions, instance, 'pause'), instance), + play: () => API(wrap(previousActions, instance, 'play'), instance), + previous: () => API(wrap(previousActions, instance, 'previous'), instance), + select: (track) => API(wrap(previousActions, instance, 'select', track), instance), + stop: () => API(wrap(previousActions, instance, 'stop'), instance) + }; +} + +const build = () => { + const control = new FluentAsyncControlAsyncAwait(); + return API(undefined, control); +} +module.exports.build = build; diff --git a/Kapitel7/FluentAsyncControlOptimized.example.js b/Kapitel7/FluentAsyncControlOptimized.example.js new file mode 100644 index 0000000..84cdc39 --- /dev/null +++ b/Kapitel7/FluentAsyncControlOptimized.example.js @@ -0,0 +1,11 @@ +const FluentAsyncControlOptimized = require('./FluentAsyncControlOptimized'); +const control = FluentAsyncControlOptimized.build(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/FluentAsyncControlOptimized.js b/Kapitel7/FluentAsyncControlOptimized.js new file mode 100644 index 0000000..b3d016d --- /dev/null +++ b/Kapitel7/FluentAsyncControlOptimized.js @@ -0,0 +1,55 @@ +class FluentAsyncControlOptimized { + + next(callback) { + console.log('Next song'); + setTimeout(callback, 500); + } + + pause(callback) { + console.log('Pause'); + setTimeout(callback, 500); + } + + play(callback) { + console.log('Play'); + setTimeout(callback, 500); + } + + previous(callback) { + console.log('Previous song'); + setTimeout(callback, 500); + } + + select(track, callback) { + console.log(`Select track ${track}`); + setTimeout(callback, 500); + } + + stop(callback) { + console.log('Stop'); + setTimeout(callback, 500); + } + +} + +const wrap = (previousActions, instance, method, ...args) => + previousActions.then(() => new Promise((resolve, reject) => { + instance[method](...args, resolve); + })); + +const API = (previousActions = Promise.resolve(), instance) => { + return { + next: () => API(wrap(previousActions, instance, 'next'), instance), + pause: () => API(wrap(previousActions, instance, 'pause'), instance), + play: () => API(wrap(previousActions, instance, 'play'), instance), + previous: () => API(wrap(previousActions, instance, 'previous'), instance), + select: (track) => API(wrap(previousActions, instance, 'select', track), instance), + stop: () => API(wrap(previousActions, instance, 'stop'), instance) + }; +} + +const build = () => { + const control = new FluentAsyncControlOptimized(); + return API(undefined, control); +} +module.exports.build = build; diff --git a/Kapitel7/FluentAsyncControlOriginalAPI.example.js b/Kapitel7/FluentAsyncControlOriginalAPI.example.js new file mode 100644 index 0000000..8b96290 --- /dev/null +++ b/Kapitel7/FluentAsyncControlOriginalAPI.example.js @@ -0,0 +1,38 @@ +const FluentAsyncControlOriginalAPI = require('./FluentAsyncControlOriginalAPI'); +const control = FluentAsyncControlOriginalAPI.build(); +const originalAPI = control.instance() + +// Verwendung der Fluent API +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); + +// Verwendung der Original-API mit Promises +originalAPI + .play() + .then(() => originalAPI.pause()) + .then(() => originalAPI.select(7)) + .then(() => originalAPI.play()) + .then(() => originalAPI.next()) + .then(() => originalAPI.next()) + .then(() => originalAPI.previous()) + .then(() => originalAPI.play()) + .then(() => originalAPI.stop()); + +// Verwendung der Original-API mit async/await +(async () => { + await originalAPI.play(); + await originalAPI.pause(); + await originalAPI.select(7); + await originalAPI.play(); + await originalAPI.next(); + await originalAPI.previous(); + await originalAPI.play(); + await originalAPI.stop(); +})(); diff --git a/Kapitel7/FluentAsyncControlOriginalAPI.js b/Kapitel7/FluentAsyncControlOriginalAPI.js new file mode 100644 index 0000000..0760a0f --- /dev/null +++ b/Kapitel7/FluentAsyncControlOriginalAPI.js @@ -0,0 +1,68 @@ +class FluentAsyncControlOriginalAPI { + + next() { + console.log('Next song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + pause() { + console.log('Pause'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + play() { + console.log('Play'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + previous() { + console.log('Previous song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + select(track) { + console.log(`Select track ${track}`); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + stop() { + console.log('Stop'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + +} + +const wrap = async (previousActions, instance, method, ...args) => { + await previousActions; + await instance[method](...args); +} + +const API = (previousActions = Promise.resolve(), instance) => { + return { + instance: () => instance, + next: () => API(wrap(previousActions, instance, 'next'), instance), + pause: () => API(wrap(previousActions, instance, 'pause'), instance), + play: () => API(wrap(previousActions, instance, 'play'), instance), + previous: () => API(wrap(previousActions, instance, 'previous'), instance), + select: (track) => API(wrap(previousActions, instance, 'select', track), instance), + stop: () => API(wrap(previousActions, instance, 'stop'), instance) + }; +} + +const build = () => { + const control = new FluentAsyncControlOriginalAPI(); + return API(undefined, control); +} +module.exports.build = build; diff --git a/Kapitel7/FluentAsyncControlPromises.example.js b/Kapitel7/FluentAsyncControlPromises.example.js new file mode 100644 index 0000000..24bd4f6 --- /dev/null +++ b/Kapitel7/FluentAsyncControlPromises.example.js @@ -0,0 +1,11 @@ +const FluentAsyncControlPromises = require('./FluentAsyncControlPromises'); +const control = FluentAsyncControlPromises.build(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/FluentAsyncControlPromises.js b/Kapitel7/FluentAsyncControlPromises.js new file mode 100644 index 0000000..301ccbd --- /dev/null +++ b/Kapitel7/FluentAsyncControlPromises.js @@ -0,0 +1,65 @@ +class FluentAsyncControlPromises { + + next() { + console.log('Next song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + pause() { + console.log('Pause'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + play() { + console.log('Play'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + previous() { + console.log('Previous song'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + select(track) { + console.log(`Select track ${track}`); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + + stop() { + console.log('Stop'); + return new Promise((resolve, reject) => { + setTimeout(resolve, 500); + }); + } + +} + +const wrap = (previousActions, instance, method, ...args) => + previousActions.then(() => instance[method](...args)); + +const API = (previousActions = Promise.resolve(), instance) => { + return { + next: () => API(wrap(previousActions, instance, 'next'), instance), + pause: () => API(wrap(previousActions, instance, 'pause'), instance), + play: () => API(wrap(previousActions, instance, 'play'), instance), + previous: () => API(wrap(previousActions, instance, 'previous'), instance), + select: (track) => API(wrap(previousActions, instance, 'select', track), instance), + stop: () => API(wrap(previousActions, instance, 'stop'), instance) + }; +} + +const build = () => { + const control = new FluentAsyncControlPromises(); + return API(undefined, control); +} +module.exports.build = build; diff --git a/Kapitel7/FluentAsyncControlWrong.example.js b/Kapitel7/FluentAsyncControlWrong.example.js new file mode 100644 index 0000000..ca13a95 --- /dev/null +++ b/Kapitel7/FluentAsyncControlWrong.example.js @@ -0,0 +1,12 @@ +const FluentAsyncControlWrong = require('./FluentAsyncControlWrong'); +const control = new FluentAsyncControlWrong(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); + \ No newline at end of file diff --git a/Kapitel7/FluentAsyncControlWrong.js b/Kapitel7/FluentAsyncControlWrong.js new file mode 100644 index 0000000..452d845 --- /dev/null +++ b/Kapitel7/FluentAsyncControlWrong.js @@ -0,0 +1,69 @@ +module.exports = class FluentAsyncControlWrong { + + next(callback) { + console.log('Next song'); + setTimeout(() => { + console.log('Next song callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + + pause(callback) { + console.log('Pause'); + setTimeout(() => { + console.log('Pause callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + + play(callback) { + console.log('Play'); + setTimeout(() => { + console.log('Play callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + + previous(callback) { + console.log('Previous song'); + setTimeout(() => { + console.log('Previous song callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + + select(track, callback) { + console.log(`Select track ${track}`); + setTimeout(() => { + console.log('Select track callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + + stop(callback) { + console.log('Stop'); + setTimeout(() => { + console.log('Stop callback'); + if (typeof callback === 'function') { + callback(); + } + }, 500); + return this; + } + +} diff --git a/Kapitel7/FluentSyncControl.example.js b/Kapitel7/FluentSyncControl.example.js new file mode 100644 index 0000000..ebac370 --- /dev/null +++ b/Kapitel7/FluentSyncControl.example.js @@ -0,0 +1,11 @@ +const FluentSyncControl = require('./FluentSyncControl'); +const control = new FluentSyncControl(); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/FluentSyncControl.js b/Kapitel7/FluentSyncControl.js new file mode 100644 index 0000000..f02c4ec --- /dev/null +++ b/Kapitel7/FluentSyncControl.js @@ -0,0 +1,32 @@ +module.exports = class FluentSyncControl { + + next() { + console.log('Next song'); + return this; + } + + pause() { + console.log('Pause'); + return this; + } + + play() { + console.log('Play'); + return this; + } + + previous() { + console.log('Previous song'); + return this; + } + + select(track) { + console.log(`Select track ${track}`); + return this; + } + + stop() { + console.log('Stop'); + return this; + } +} diff --git a/Kapitel7/SyncControl.example.js b/Kapitel7/SyncControl.example.js new file mode 100644 index 0000000..43e5ae3 --- /dev/null +++ b/Kapitel7/SyncControl.example.js @@ -0,0 +1,10 @@ +const SyncControl = require('./SyncControl'); +const control = new SyncControl(); +control.play(); +control.pause(); +control.select(7); +control.play(); +control.next(); +control.previous(); +control.play(); +control.stop(); diff --git a/Kapitel7/SyncControl.js b/Kapitel7/SyncControl.js new file mode 100644 index 0000000..749fc36 --- /dev/null +++ b/Kapitel7/SyncControl.js @@ -0,0 +1,26 @@ +module.exports = class SyncControl { + + next() { + console.log('Next song'); + } + + pause() { + console.log('Pause'); + } + + play() { + console.log('Play'); + } + + previous() { + console.log('Previous song'); + } + + select(track) { + console.log(`Select track ${track}`); + } + + stop() { + console.log('Stop'); + } +} diff --git a/Kapitel7/fluentify.example.js b/Kapitel7/fluentify.example.js new file mode 100644 index 0000000..01bb4d2 --- /dev/null +++ b/Kapitel7/fluentify.example.js @@ -0,0 +1,24 @@ +const AsyncControlPromises = require('./AsyncControlPromises'); +const instance = new AsyncControlPromises(); +instance + .play() + .then(() => instance.pause()) + .then(() => instance.select(7)) + .then(() => instance.play()) + .then(() => instance.next()) + .then(() => instance.next()) + .then(() => instance.previous()) + .then(() => instance.play()) + .then(() => instance.stop()); + +const fluentify = require('./fluentify'); +const control = fluentify(instance); +control + .play() + .pause() + .select(7) + .play() + .next() + .previous() + .play() + .stop(); diff --git a/Kapitel7/fluentify.js b/Kapitel7/fluentify.js new file mode 100644 index 0000000..3898e56 --- /dev/null +++ b/Kapitel7/fluentify.js @@ -0,0 +1,25 @@ +const wrap = async (previousActions, instance, method, ...args) => { + await previousActions; + await instance[method](...args); +} + +const getObjectMethods = (instance) => { + const prototype = Object.getPrototypeOf(instance); + const methods = Object.getOwnPropertyNames(prototype) + .filter(property => typeof prototype[property] === 'function') + .filter(property => property !== 'constructor'); + return methods; +} + +const API = (previousActions = Promise.resolve(), instance) => { + const methods = getObjectMethods(instance); + const result = {}; + methods.forEach(method => { + result[method] = (...args) => API(wrap(previousActions, instance, method, ...args), instance) + }); + return result; +} + +const fluentify = (instance) => API(undefined, instance); + +module.exports = fluentify; \ No newline at end of file diff --git a/Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js b/Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js deleted file mode 100644 index fef0018..0000000 --- a/Kapitel8/ChainOfResponsibility/ChainOfResponsibility.js +++ /dev/null @@ -1,33 +0,0 @@ -(function() { - var Plattenladen = function(name) { - this.name = name; - this.albums = []; - this.next = null; - this.setNext = function(plattenladen) { - this.next = plattenladen; - }; - this.requestAlbum = function(albumTitle) { - if(this.albums.indexOf(albumTitle) >= 0) { - console.log(this.name + ': Album habe ich hier'); - } else { - console.log(this.name + ': Album habe ich nicht hier'); - if(this.next) { - this.next.requestAlbum(albumTitle); - } - } - }; - } - - // Aufbau der Zuständigkeitskette - var plattenladen1 = new Plattenladen('Johnnys Vinyl Kiste'); - var plattenladen2 = new Plattenladen('Vinyl for all'); - var plattenladen3 = new Plattenladen('Schallplatten Tauschbörse'); - var plattenladen4 = new Plattenladen('Olaf der Plattensammler'); - var plattenladen5 = new Plattenladen('LP und CD Ankauf'); - plattenladen1.setNext(plattenladen2); - plattenladen2.setNext(plattenladen3); - plattenladen3.setNext(plattenladen4); - plattenladen4.setNext(plattenladen5); - plattenladen5.albums.push('Blues for the red sun'); - plattenladen1.requestAlbum('Blues for the red sun'); -})(); \ No newline at end of file diff --git a/Kapitel8/ChainOfResponsibility/Klassensyntax/ChainOfResponsibility.js b/Kapitel8/ChainOfResponsibility/Klassensyntax/ChainOfResponsibility.js new file mode 100644 index 0000000..35e28d0 --- /dev/null +++ b/Kapitel8/ChainOfResponsibility/Klassensyntax/ChainOfResponsibility.js @@ -0,0 +1,38 @@ +(function() { + class RecordStore { + + constructor(name) { + this.name = name; + this.albums = []; + this.next = null; + } + + setNext(recordStore) { + this.next = recordStore; + } + + requestAlbum(albumTitle) { + if (this.albums.indexOf(albumTitle) >= 0) { + console.log(`${this.name}: Album habe ich hier`); + } else { + console.log(`${this.name}: Album habe ich nicht hier`); + if (this.next) { + this.next.requestAlbum(albumTitle); + } + } + } + } + + // Aufbau der Zuständigkeitskette + const recordStore1 = new RecordStore('Johnnys Vinyl Kiste'); + const recordStore2 = new RecordStore('Vinyl for all'); + const recordStore3 = new RecordStore('Schallplatten Tauschbörse'); + const recordStore4 = new RecordStore('Olaf der Plattensammler'); + const recordStore5 = new RecordStore('LP und CD Ankauf'); + recordStore1.setNext(recordStore2); + recordStore2.setNext(recordStore3); + recordStore3.setNext(recordStore4); + recordStore4.setNext(recordStore5); + recordStore5.albums.push('Blues for the red sun'); + recordStore1.requestAlbum('Blues for the red sun'); +})(); \ No newline at end of file diff --git a/Kapitel8/ChainOfResponsibility/Pseudoklassisch/ChainOfResponsibility.js b/Kapitel8/ChainOfResponsibility/Pseudoklassisch/ChainOfResponsibility.js new file mode 100644 index 0000000..2ed0093 --- /dev/null +++ b/Kapitel8/ChainOfResponsibility/Pseudoklassisch/ChainOfResponsibility.js @@ -0,0 +1,33 @@ +(function() { + var RecordStore = function(name) { + this.name = name; + this.albums = []; + this.next = null; + this.setNext = function(recordStore) { + this.next = recordStore; + }; + this.requestAlbum = function(albumTitle) { + if (this.albums.indexOf(albumTitle) >= 0) { + console.log(this.name + ': Album habe ich hier'); + } else { + console.log(this.name + ': Album habe ich nicht hier'); + if (this.next) { + this.next.requestAlbum(albumTitle); + } + } + }; + } + + // Aufbau der Zuständigkeitskette + var recordStore1 = new RecordStore('Johnnys Vinyl Kiste'); + var recordStore2 = new RecordStore('Vinyl for all'); + var recordStore3 = new RecordStore('Schallplatten Tauschbörse'); + var recordStore4 = new RecordStore('Olaf der Plattensammler'); + var recordStore5 = new RecordStore('LP und CD Ankauf'); + recordStore1.setNext(recordStore2); + recordStore2.setNext(recordStore3); + recordStore3.setNext(recordStore4); + recordStore4.setNext(recordStore5); + recordStore5.albums.push('Blues for the red sun'); + recordStore1.requestAlbum('Blues for the red sun'); +})(); \ No newline at end of file diff --git a/Kapitel8/Command/Command.js b/Kapitel8/Command/Command.js deleted file mode 100644 index d9ad467..0000000 --- a/Kapitel8/Command/Command.js +++ /dev/null @@ -1,122 +0,0 @@ -(function () { - /* Listing 7.27 */ - // Aufrufer - function Schaltflaeche(command) { - this.command = command; - this.click = function () { - command.ausfuehren(); - } - } - -// Empfänger - function VideoPlayer() { - this.einschalten = function () { - console.log("einschalten"); - } - this.ausschalten = function () { - console.log("ausschalten"); - } - } - -// Commands - var Command = function (empfaenger) { - this.empfaenger = empfaenger; - }; - Command.prototype.ausfuehren = function () { - }; - var EinschaltenCommand = function (empfaenger) { - Command.call(this, empfaenger); - }; - EinschaltenCommand.prototype = Object.create(Command.prototype); - EinschaltenCommand.prototype.ausfuehren = function () { - this.empfaenger.einschalten(); - } - var AusschaltenCommand = function (empfaenger) { - Command.call(this, empfaenger); - }; - AusschaltenCommand.prototype = Object.create(Command.prototype); - AusschaltenCommand.prototype.ausfuehren = function () { - this.empfaenger.ausschalten(); - } -// Client - var videoPlayer = new VideoPlayer(); -// Instanzen der Commands - var einschaltenCommand = new EinschaltenCommand(videoPlayer); - var ausschaltenCommand = new AusschaltenCommand(videoPlayer); - var schaltflaecheEin = new Schaltflaeche(einschaltenCommand); - var schaltflaecheAus = new Schaltflaeche(ausschaltenCommand); - schaltflaecheEin.click(); - schaltflaecheAus.click(); -}) -(); - -(function () { - /* Listing 7.28 */ - // Aufrufer - function Schaltflaeche(command) { - this.click = command; - } - -// Empfänger - function VideoPlayer() { - this.einschalten = function () { - console.log("einschalten"); - } - this.ausschalten = function () { - console.log("ausschalten"); - } - } - -// Client - var videoPlayer = new VideoPlayer(); -// Die Commands sind Funktionen - var einschaltenCommand = function (empfaenger) { - return function () { - empfaenger.einschalten(); - } - } - var ausschaltenCommand = function (empfaenger) { - return function () { - empfaenger.ausschalten(); - } - } - var schaltflaecheEin = new Schaltflaeche(einschaltenCommand(videoPlayer)); - var schaltflaecheAus = new Schaltflaeche(ausschaltenCommand(videoPlayer)); - schaltflaecheEin.click(); - schaltflaecheAus.click(); -})(); - -(function () { - /* Listing 7.29 */ - // Aufrufer - function Schaltflaeche(command) { - this.click = command; - } - -// Empfänger - function VideoPlayer() { - this.einschalten = function () { - console.log("einschalten"); - } - this.ausschalten = function () { - console.log("ausschalten"); - } - } - -// Client - var videoPlayer = new VideoPlayer(); - var schaltflaecheEin = new Schaltflaeche(videoPlayer.einschalten.bind(videoPlayer)); - var schaltflaecheAus = new Schaltflaeche(videoPlayer.ausschalten.bind(videoPlayer)); - schaltflaecheEin.click(); - schaltflaecheAus.click(); -})(); - -(function () { - /* Listing 7.30 */ - var einschaltenAusschaltenCommand = function (empfaenger) { - return function () { - empfaenger.einschalten(); - empfaenger.ausschalten(); - } - } -})(); \ No newline at end of file diff --git a/Kapitel8/Command/Klassensyntax/Command.js b/Kapitel8/Command/Klassensyntax/Command.js new file mode 100644 index 0000000..a0e79cc --- /dev/null +++ b/Kapitel8/Command/Klassensyntax/Command.js @@ -0,0 +1,137 @@ +(function () { + // Aufrufer + class Button { + + constructor(command) { + this.command = command; + this.click = function () { + command.execute(); + } + } + + } + + // Empfänger + class VideoPlayer { + + switchOn() { + console.log("einschalten"); + } + + switchOff() { + console.log("ausschalten"); + } + + } + + // Commands + class Command { + + constructor(receiver) { + this.receiver = receiver; + } + + execute() { + + } + } + + class SwitchOnCommand extends Command { + + execute() { + this.receiver.switchOn(); + } + + } + + class SwitchOffCommand extends Command { + + execute() { + this.receiver.switchOff(); + } + + } + + // Client + const videoPlayer = new VideoPlayer(); + // Instanzen der Commands + const switchOnCommand = new SwitchOnCommand(videoPlayer); + const switchOffCommand = new SwitchOffCommand(videoPlayer); + const buttonOn = new Button(switchOnCommand); + const buttonOff = new Button(switchOffCommand); + buttonOn.click(); + buttonOff.click(); +}) +(); + +(function () { + // Aufrufer + class Button { + + constructor(command) { + this.click = command; + } + + } + + // Empfänger + class VideoPlayer { + + switchOn() { + console.log("einschalten"); + } + + switchOff() { + console.log("ausschalten"); + } + + } + + // Client + const videoPlayer = new VideoPlayer(); + // Die Commands sind Funktionen + const switchOnCommand = (receiver) => () => receiver.switchOn(); + const switchOffCommand = (receiver) => () => receiver.switchOff(); + const buttonOn = new Button(switchOnCommand(videoPlayer)); + const buttonOff = new Button(switchOffCommand(videoPlayer)); + buttonOn.click(); + buttonOff.click(); +})(); + +(function () { + // Aufrufer + class Button { + + constructor(command) { + this.click = command; + } + + } + + // Empfänger + class VideoPlayer { + + switchOn() { + console.log("einschalten"); + } + + switchOff() { + console.log("ausschalten"); + } + + } + + // Client + const videoPlayer = new VideoPlayer(); + const buttonOn = new Button(videoPlayer.switchOn.bind(videoPlayer)); + const buttonOf = new Button(videoPlayer.switchOff.bind(videoPlayer)); + buttonOn.click(); + buttonOf.click(); +})(); + +(function () { + const switchOnOffCommand = (receiver) => () => { + receiver.switchOn(); + receiver.switchOff(); + } +})(); \ No newline at end of file diff --git a/Kapitel8/Command/Pseudoklassisch/Command.js b/Kapitel8/Command/Pseudoklassisch/Command.js new file mode 100644 index 0000000..f863e22 --- /dev/null +++ b/Kapitel8/Command/Pseudoklassisch/Command.js @@ -0,0 +1,119 @@ +(function () { + // Aufrufer + function Button(command) { + this.command = command; + this.click = function () { + command.execute(); + } + } + + // Empfänger + function VideoPlayer() { + this.switchOn = function () { + console.log("einschalten"); + } + this.switchOff = function () { + console.log("ausschalten"); + } + } + + // Commands + var Command = function (receiver) { + this.receiver = receiver; + }; + Command.prototype.execute = function () { + }; + var SwitchOnCommand = function (receiver) { + Command.call(this, receiver); + }; + SwitchOnCommand.prototype = Object.create(Command.prototype); + SwitchOnCommand.prototype.execute = function () { + this.receiver.switchOn(); + } + var SwitchOffCommand = function (receiver) { + Command.call(this, receiver); + }; + SwitchOffCommand.prototype = Object.create(Command.prototype); + SwitchOffCommand.prototype.execute = function () { + this.receiver.switchOff(); + } + + // Client + var videoPlayer = new VideoPlayer(); + // Instanzen der Commands + var switchOnCommand = new SwitchOnCommand(videoPlayer); + var switchOffCommand = new SwitchOffCommand(videoPlayer); + var buttonOn = new Button(switchOnCommand); + var buttonOff = new Button(switchOffCommand); + buttonOn.click(); + buttonOff.click(); +}) +(); + +(function () { + // Aufrufer + function Button(command) { + this.click = command; + } + + // Empfänger + function VideoPlayer() { + this.switchOn = function () { + console.log("einschalten"); + } + this.switchOff = function () { + console.log("ausschalten"); + } + } + + // Client + var videoPlayer = new VideoPlayer(); + // Die Commands sind Funktionen + var switchOnCommand = function (receiver) { + return function () { + receiver.switchOn(); + } + } + var switchOffCommand = function (receiver) { + return function () { + receiver.switchOff(); + } + } + var buttonOn = new Button(switchOnCommand(videoPlayer)); + var buttonOff = new Button(switchOffCommand(videoPlayer)); + buttonOn.click(); + buttonOff.click(); +})(); + +(function () { + // Aufrufer + function Button(command) { + this.click = command; + } + + // Empfänger + function VideoPlayer() { + this.switchOn = function () { + console.log("einschalten"); + } + this.switchOff = function () { + console.log("ausschalten"); + } + } + + // Client + var videoPlayer = new VideoPlayer(); + var buttonOn = new Button(videoPlayer.switchOn.bind(videoPlayer)); + var buttonOf = new Button(videoPlayer.switchOff.bind(videoPlayer)); + buttonOn.click(); + buttonOf.click(); +})(); + +(function () { + var switchOnOffCommand = function (receiver) { + return function () { + receiver.switchOn(); + receiver.switchOff(); + } + } +})(); \ No newline at end of file diff --git a/Kapitel8/Memento/Klassensyntax/Memento.js b/Kapitel8/Memento/Klassensyntax/Memento.js new file mode 100644 index 0000000..6e4ced0 --- /dev/null +++ b/Kapitel8/Memento/Klassensyntax/Memento.js @@ -0,0 +1,63 @@ +(function() { + // Originator + class Artist { + + constructor(name, genre) { + this.name = name; + this.genre = genre; + } + + saveToMemento() { + // Memento + const memento = JSON.stringify(this); + return memento; + } + + replaceFromMemento(memento) { + // Memento + const m = JSON.parse(memento); + this.name = m.name; + this.genre = m.genre; + } + + } + + // Caretaker + class ArtistStorage { + + constructor() { + this.mementos = new Map(); + } + + add(key, memento) { + this.mementos.set(key, memento); + } + + get(key) { + return this.mementos.get(key); + } + + } + + const kyuss = new Artist('Kyuss', 'Stonerrock'); + const monsterMagnet = new Artist('Monster Magnet', 'Spacerock'); + const artistStorage = new ArtistStorage(); + // Artist { name: 'Kyuss', genre: 'Stonerrock' } + console.log(kyuss); + // Artist { name: 'Monster Magnet', genre: 'Spacerock' } + console.log(monsterMagnet); + artistStorage.add(1, kyuss.saveToMemento()); + artistStorage.add(2, monsterMagnet.saveToMemento()); + kyuss.genre = 'Klassik'; + monsterMagnet.genre = 'Blues'; + // Artist { name: 'Kyuss', genre: 'Klassik' } + console.log(kyuss); + // { name: 'Monster Magnet', genre: 'Blues' } + console.log(monsterMagnet); + kyuss.replaceFromMemento(artistStorage.get(1)); + monsterMagnet.replaceFromMemento(artistStorage.get(2)); + // Artist { name: 'Kyuss', genre: 'Stonerrock' } + console.log(kyuss); + // Artist { name: 'Monster Magnet', genre: 'Spacerock' } + console.log(monsterMagnet); +})(); \ No newline at end of file diff --git a/Kapitel8/Memento/Memento.js b/Kapitel8/Memento/Pseudoklassisch/Memento.js similarity index 65% rename from Kapitel8/Memento/Memento.js rename to Kapitel8/Memento/Pseudoklassisch/Memento.js index 6464f3d..1fb69d4 100644 --- a/Kapitel8/Memento/Memento.js +++ b/Kapitel8/Memento/Pseudoklassisch/Memento.js @@ -31,17 +31,23 @@ var kyuss = new Artist('Kyuss', 'Stonerrock'); var monsterMagnet = new Artist('Monster Magnet', 'Spacerock'); - var artistStorage = new ArtistStorage(); - console.log(kyuss); // { name: 'Kyuss', genre: 'Stonerrock' } - console.log(monsterMagnet); // { name: 'Monster Magnet', genre: 'Spacerock' } + var artistStorage = new ArtistStorage(); + // { name: 'Kyuss', genre: 'Stonerrock' } + console.log(kyuss); + // { name: 'Monster Magnet', genre: 'Spacerock' } + console.log(monsterMagnet); artistStorage.add(1, kyuss.saveToMemento()); artistStorage.add(2, monsterMagnet.saveToMemento()); kyuss.genre = 'Klassik'; - monsterMagnet.genre = 'Blues'; - console.log(kyuss); // { name: 'Kyuss', genre: 'Klassik' } - console.log(monsterMagnet); // { name: 'Monster Magnet', genre: 'Blues' } + monsterMagnet.genre = 'Blues'; + // { name: 'Kyuss', genre: 'Klassik' } + console.log(kyuss); + // { name: 'Monster Magnet', genre: 'Blues' } + console.log(monsterMagnet); kyuss.replaceFromMemento(artistStorage.get(1)); - monsterMagnet.replaceFromMemento(artistStorage.get(2)); - console.log(kyuss); // { name: 'Kyuss', genre: 'Stonerrock' } - console.log(monsterMagnet); // { name: 'Monster Magnet', genre: 'Spacerock' } + monsterMagnet.replaceFromMemento(artistStorage.get(2)); + // { name: 'Kyuss', genre: 'Stonerrock' } + console.log(kyuss); + // { name: 'Monster Magnet', genre: 'Spacerock' } + console.log(monsterMagnet); })(); \ No newline at end of file diff --git a/Kapitel8/State/ES2015/State.js b/Kapitel8/State/ES2015/State.js new file mode 100644 index 0000000..7a16952 --- /dev/null +++ b/Kapitel8/State/ES2015/State.js @@ -0,0 +1,114 @@ +(function() { + + class VideoPlayer { + + constructor() { + this.status = 'stopped'; + } + + play() { + if (this.status === 'playing') { + console.log('Spielt schon'); + return; + } else if (this.status === 'stopped') { + console.log('Video abspielen'); + this.status = 'playing'; + } + } + + stop() { + if (this.status === 'playing') { + console.log('Video stoppen'); + this.status = 'stopped'; + } else if (this.status === 'stopped') { + console.log('Schon gestoppt'); + return; + } + } + + } + + const videoPlayer = new VideoPlayer(); + videoPlayer.play(); + videoPlayer.play(); // Spielt schon + videoPlayer.stop(); + videoPlayer.stop(); // Schon gestoppt + videoPlayer.play(); + videoPlayer.stop(); +})(); + +(function() { + + class VideoPlayerState { + + constructor(videoPlayer) { + this.videoPlayer = videoPlayer; + } + + } + + class PlayingState extends VideoPlayerState { + + play() { + console.log('Spielt schon'); + } + + stop() { + console.log('Video stoppen'); + this.videoPlayer.changeState(this.videoPlayer.states.stopped); + } + + } + + class StoppedState extends VideoPlayerState { + + play() { + console.log('Video abspielen'); + this.videoPlayer.changeState(this.videoPlayer.states.playing); + } + + stop() { + console.log('Schon gestoppt'); + } + + } + + class VideoPlayer { + + constructor() { + this.status = 'stopped'; + this.states = { + playing: new PlayingState(this), + stopped: new StoppedState(this) + } + this.initialize(); + } + + changeState(state) { + if (this.state !== state) { + this.state = state; + } + } + + play() { + this.state.play(); + } + + stop() { + this.state.stop(); + } + + initialize() { + this.state = this.states.stopped; + } + + } + + const videoPlayer = new VideoPlayer(); + videoPlayer.play(); + videoPlayer.play(); // Spielt schon + videoPlayer.stop(); + videoPlayer.stop(); // Schon gestoppt + videoPlayer.play(); + videoPlayer.stop(); +})(); \ No newline at end of file diff --git a/Kapitel8/State/State.js b/Kapitel8/State/ES5/State.js similarity index 68% rename from Kapitel8/State/State.js rename to Kapitel8/State/ES5/State.js index 8ae5062..6d3f405 100644 --- a/Kapitel8/State/State.js +++ b/Kapitel8/State/ES5/State.js @@ -1,9 +1,8 @@ (function() { - /* Listing 7.38 */ - var videoplayer = { + var videoPlayer = { status: 'stopped', play: function() { - if (this.status == 'playing') { + if (this.status === 'playing') { console.log('Spielt schon'); return; } else if (this.status === 'stopped') { @@ -12,7 +11,7 @@ } }, stop: function() { - if (this.status == 'playing') { + if (this.status === 'playing') { console.log('Video stoppen'); this.status = 'stopped'; } else if (this.status === 'stopped') { @@ -21,17 +20,16 @@ } } } - videoplayer.play(); - videoplayer.play(); // Spielt schon - videoplayer.stop(); - videoplayer.stop(); // Schon gestoppt - videoplayer.play(); - videoplayer.stop(); + videoPlayer.play(); + videoPlayer.play(); // Spielt schon + videoPlayer.stop(); + videoPlayer.stop(); // Schon gestoppt + videoPlayer.play(); + videoPlayer.stop(); })(); (function() { - /* Listing 7.39 */ - var videoplayer = { + var videoPlayer = { state: undefined, states: { playing: { @@ -40,13 +38,13 @@ }, stop: function() { console.log('Video stoppen'); - videoplayer.changeState(videoplayer.states.stopped); + videoPlayer.changeState(videoPlayer.states.stopped); } }, stopped: { play: function() { console.log('Video abspielen'); - videoplayer.changeState(videoplayer.states.playing); + videoPlayer.changeState(videoPlayer.states.playing); }, stop: function() { console.log('Schon gestoppt'); @@ -68,11 +66,11 @@ this.state = this.states.stopped; } } - videoplayer.initialize(); - videoplayer.play(); - videoplayer.play(); // Spielt schon - videoplayer.stop(); - videoplayer.stop(); // Schon gestoppt - videoplayer.play(); - videoplayer.stop(); + videoPlayer.initialize(); + videoPlayer.play(); + videoPlayer.play(); // Spielt schon + videoPlayer.stop(); + videoPlayer.stop(); // Schon gestoppt + videoPlayer.play(); + videoPlayer.stop(); })(); \ No newline at end of file diff --git a/Kapitel8/Strategy/Klassensyntax/Strategy.js b/Kapitel8/Strategy/Klassensyntax/Strategy.js new file mode 100644 index 0000000..659c530 --- /dev/null +++ b/Kapitel8/Strategy/Klassensyntax/Strategy.js @@ -0,0 +1,43 @@ +(function () { + + class Comparator { + + compare (value1, value2) { + } + + } + + class DescendingComparator extends Comparator { + + compare(value1, value2) { + return value1 < value2; + } + + } + + class AscendingComparator extends Comparator { + + compare(value1, value2) { + return value1 > value2; + } + + } + + const descendingComparator = new DescendingComparator(); + const ascendingComparator = new AscendingComparator(); + const array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; + array.sort(descendingComparator.compare); + console.log(array); + array.sort(ascendingComparator.compare); + console.log(array); +})(); + +(function () { + const array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; + const descendingSorting = (value1, value2) => value1 < value2; + const ascendingSorting = (value1, value2) => value1 > value2; + array.sort(descendingSorting); + console.log(array); + array.sort(ascendingSorting); + console.log(array); +})(); diff --git a/Kapitel8/Strategy/Pseudoklassisch/Strategy.js b/Kapitel8/Strategy/Pseudoklassisch/Strategy.js new file mode 100644 index 0000000..ca7aa2b --- /dev/null +++ b/Kapitel8/Strategy/Pseudoklassisch/Strategy.js @@ -0,0 +1,39 @@ +(function () { + var Comparator = function () { + }; + Comparator.prototype.compare = function (value1, value2) { + }; + var DescendingComparator = function () { + }; + DescendingComparator.prototype = Object.create(Comparator.prototype); + DescendingComparator.prototype.compare = function (value1, value2) { + return value1 < value2; + } + var AscendingComparator = function () { + }; + AscendingComparator.prototype = Object.create(Comparator.prototype); + AscendingComparator.prototype.compare = function (value1, value2) { + return value1 > value2; + } + var descendingComparator = new DescendingComparator(); + var ascendingComparator = new AscendingComparator(); + var array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; + array.sort(descendingComparator.compare); + console.log(array); + array.sort(ascendingComparator.compare); + console.log(array); +})(); + +(function () { + var array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; + var descendingSorting = function (value1, value2) { + return value1 < value2; + }; + var ascendingSorting = function (value1, value2) { + return value1 > value2; + }; + array.sort(descendingSorting); + console.log(array); + array.sort(ascendingSorting); + console.log(array); +})(); diff --git a/Kapitel8/Strategy/Strategy.js b/Kapitel8/Strategy/Strategy.js deleted file mode 100644 index c1576a1..0000000 --- a/Kapitel8/Strategy/Strategy.js +++ /dev/null @@ -1,41 +0,0 @@ -(function () { - /* Listing 7.31 */ - var Comparator = function () { - }; - Comparator.prototype.compare = function (wert1, wert2) { - }; - var AbsteigendComparator = function () { - }; - AbsteigendComparator.prototype = Object.create(Comparator.prototype); - AbsteigendComparator.prototype.compare = function (wert1, wert2) { - return wert1 < wert2; - } - var AufsteigendComparator = function () { - }; - AufsteigendComparator.prototype = Object.create(Comparator.prototype); - AufsteigendComparator.prototype.compare = function (wert1, wert2) { - return wert1 > wert2; - } - var absteigendComparator = new AbsteigendComparator(); - var aufsteigendComparator = new AufsteigendComparator(); - var array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; - array.sort(absteigendComparator.compare); - console.log(array); - array.sort(aufsteigendComparator.compare); - console.log(array); -})(); - -(function () { - /* Listing 7.32 */ - var array = [4, 5, 8, 3, 4, 2, 9, 4, 5]; - var absteigendeSortierung = function (wert1, wert2) { - return wert1 < wert2; - }; - var aufsteigendeSortierung = function (wert1, wert2) { - return wert1 > wert2; - }; - array.sort(absteigendeSortierung); - console.log(array); - array.sort(aufsteigendeSortierung); - console.log(array); -})(); diff --git a/Kapitel8/TemplateMethod/TemplateMethod.js b/Kapitel8/TemplateMethod/TemplateMethod.js index afd3985..4ca2472 100644 --- a/Kapitel8/TemplateMethod/TemplateMethod.js +++ b/Kapitel8/TemplateMethod/TemplateMethod.js @@ -1,22 +1,26 @@ (function() { - /* Listing 7.25 */ - /* Funktioniert nur in ES6 */ + class Database { + getObjects() { this.connect(); var result = this.getResults(); this.disconnect(); return result; - } + } + connect() { console.log('Connect'); - } + } + disconnect() { console.log('Disconnect'); - } + } + } class ArtistRepository extends Database { + getResults() { console.log('Get results'); return [{ @@ -25,34 +29,39 @@ { name: 'Queens of the Stone Age' }]; - } - } - var artistRepository = new ArtistRepository(); - var artists = artistRepository.getObjects(); + } + + } + + const artistRepository = new ArtistRepository(); + const artists = artistRepository.getObjects(); })(); (function() { - /* Listing 7.26 */ - /* Funktioniert nur in ES6 */ + class Database { + getObjects(templateMethods) { this.connect(); var result = templateMethods[0](); this.disconnect(); return result; - } + } + connect() { console.log('Connect'); - } + } + disconnect() { console.log('Disconnect'); - } + } + } - var database = new Database(); - var artists = database.getObjects([ - function() { + const database = new Database(); + const artists = database.getObjects([ + () => { console.log('Get results'); return [{ name: 'Deep Purple' diff --git a/Kapitel8/Visitor/Klassensyntax/Visitor.js b/Kapitel8/Visitor/Klassensyntax/Visitor.js new file mode 100644 index 0000000..7008b6f --- /dev/null +++ b/Kapitel8/Visitor/Klassensyntax/Visitor.js @@ -0,0 +1,147 @@ +(function() { + + class Album { + + constructor(artist, title, year, price) { + this.artist = artist; + this.title = title; + this.year = year; + this.price = price; + } + + accept(visitor) { + visitor.visit(this); + } + + getPrice() { + return this.price; + } + + setPrice(newPrice) { + this.price = newPrice; + } + + toString() { + return `${this.artist}: ${this.title} (${this.year}) ${this.price}€`; + } + } + + class Discount { + + constructor(discount) { + this.discount = discount; + } + + visit(album) { + album.setPrice(Math.round(album.getPrice() * this.discount)); + } + } + + const albums = [ + new Album('The Doors', 'The Doors', 1967, 10), + new Album('The Doors', 'Strange Days', 1967, 10), + new Album('The Doors', 'Waiting for the Sun', 1968, 10), + new Album('The Doors', 'The Soft Parade', 1969, 10) + ]; + + const visitorDiscount = new Discount(0.8); + albums.forEach((album) => { + album.accept(visitorDiscount); + console.log(album.toString()); + }); +})(); + +(function() { + + class Album { + + constructor(artist, title, year, price) { + this.artist = artist; + this.title = title; + this.year = year; + this.price = price; + } + + getPrice() { + return this.price; + } + + setPrice(newPrice) { + this.price = newPrice; + } + + toString() { + return `${this.artist}: ${this.title} (${this.year}) ${this.price}€`; + } + } + + const albums = [ + new Album('The Doors', 'The Doors', 1967, 10), + new Album('The Doors', 'Strange Days', 1967, 10), + new Album('The Doors', 'Waiting for the Sun', 1968, 10), + new Album('The Doors', 'The Soft Parade', 1969, 10) + ]; + + Album.prototype.setDiscount = function(discount) { + this.setPrice(Math.round(this.getPrice() * discount)); + }; + + albums.forEach((album) => { + album.setDiscount(0.8); + console.log(album.toString()); + }); +})(); + +(function() { + + class Album { + + constructor(artist, title, year, price) { + this.artist = artist; + this.title = title; + this.year = year; + this.price = price; + } + + getPrice() { + return this.price; + } + + setPrice(newPrice) { + this.price = newPrice; + } + + toString() { + return `${this.artist}: ${this.title} (${this.year}) ${this.price}€`; + } + } + + const albums = [ + new Album('The Doors', 'The Doors', 1967, 10), + new Album('The Doors', 'Strange Days', 1967, 10), + new Album('The Doors', 'Waiting for the Sun', 1968, 10), + new Album('The Doors', 'The Soft Parade', 1969, 10) + ]; + + const extend = (target, source) => { + target = target || {}; + for(let property in source) { + if(source.hasOwnProperty(property)) { + target[property] = source[property]; + } + } + return target; + } + + const Discount = { + setDiscount(discount) { + this.setPrice(Math.round(this.getPrice() * discount)); + } + } + + albums.forEach((album) => { + extend(album, Discount); + album.setDiscount(0.8); + console.log(album.toString()); + }); +})(); \ No newline at end of file diff --git a/Kapitel8/Visitor/Visitor.js b/Kapitel8/Visitor/Pseudoklassisch/Visitor.js similarity index 90% rename from Kapitel8/Visitor/Visitor.js rename to Kapitel8/Visitor/Pseudoklassisch/Visitor.js index 7582977..f4b6156 100644 --- a/Kapitel8/Visitor/Visitor.js +++ b/Kapitel8/Visitor/Pseudoklassisch/Visitor.js @@ -1,5 +1,4 @@ (function() { - /* Listing 7.35 */ var Album = function (artist, title, year, price) { this.accept = function (visitor) { visitor.visit(this); @@ -36,7 +35,6 @@ })(); (function() { - /* Listing 7.36 */ var Album = function (artist, title, year, price) { this.getPrice = function () { return price; @@ -67,7 +65,6 @@ })(); (function() { - /* Listing 7.37 */ var Album = function (artist, title, year, price) { this.getPrice = function () { return price; @@ -87,14 +84,14 @@ new Album('The Doors', 'The Soft Parade', 1969, 10) ]; - function extend(ziel, quelle) { - ziel = ziel || {}; - for(var eigenschaft in quelle) { - if(quelle.hasOwnProperty(eigenschaft)) { - ziel[eigenschaft] = quelle[eigenschaft]; + function extend(target, source) { + target = target || {}; + for(var property in source) { + if(source.hasOwnProperty(property)) { + target[property] = source[property]; } } - return ziel; + return target; } var Discount = { From aa0f299ec346e63b3d199b2e492e4c1c7fe52daa Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Sun, 4 Feb 2018 21:36:05 +0100 Subject: [PATCH 15/42] Updated command, state and visitor patterns --- Kapitel8/Command/Klassensyntax/Command.js | 4 ++-- Kapitel8/State/ES2015/State.js | 2 +- Kapitel8/Visitor/Klassensyntax/Visitor.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Kapitel8/Command/Klassensyntax/Command.js b/Kapitel8/Command/Klassensyntax/Command.js index a0e79cc..f284613 100644 --- a/Kapitel8/Command/Klassensyntax/Command.js +++ b/Kapitel8/Command/Klassensyntax/Command.js @@ -124,9 +124,9 @@ // Client const videoPlayer = new VideoPlayer(); const buttonOn = new Button(videoPlayer.switchOn.bind(videoPlayer)); - const buttonOf = new Button(videoPlayer.switchOff.bind(videoPlayer)); + const buttonOff = new Button(videoPlayer.switchOff.bind(videoPlayer)); buttonOn.click(); - buttonOf.click(); + buttonOff.click(); })(); (function () { diff --git a/Kapitel8/State/ES2015/State.js b/Kapitel8/State/ES2015/State.js index 7a16952..905166a 100644 --- a/Kapitel8/State/ES2015/State.js +++ b/Kapitel8/State/ES2015/State.js @@ -80,7 +80,7 @@ this.states = { playing: new PlayingState(this), stopped: new StoppedState(this) - } + }; this.initialize(); } diff --git a/Kapitel8/Visitor/Klassensyntax/Visitor.js b/Kapitel8/Visitor/Klassensyntax/Visitor.js index 7008b6f..f23d604 100644 --- a/Kapitel8/Visitor/Klassensyntax/Visitor.js +++ b/Kapitel8/Visitor/Klassensyntax/Visitor.js @@ -82,7 +82,7 @@ new Album('The Doors', 'The Soft Parade', 1969, 10) ]; - Album.prototype.setDiscount = function(discount) { + Album.prototype.setDiscount = function(discount){ this.setPrice(Math.round(this.getPrice() * discount)); }; From ec4a985a7fc846ed211e8e38bd5f3d4921cd90c9 Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Thu, 8 Feb 2018 20:26:36 +0100 Subject: [PATCH 16/42] Several updates --- Kapitel6/casperjs/beispiel1.js | 18 --- Kapitel6/casperjs/beispiel2.js | 18 --- Kapitel6/casperjs/beispiel3.js | 17 --- Kapitel6/casperjs/example1.js | 23 ++++ Kapitel6/casperjs/example2.js | 26 +++++ Kapitel6/casperjs/example3.js | 23 ++++ Kapitel6/tdd/mocha/src/ArtistRepository.js | 57 ++++----- .../testdoubles/sinonjs/src/UserRepository.js | 40 +++---- .../sinonjs/test/UserRepositoryMockTest.js | 44 +++---- .../sinonjs/test/UserRepositoryTest.js | 110 +++++++++--------- 10 files changed, 198 insertions(+), 178 deletions(-) delete mode 100644 Kapitel6/casperjs/beispiel1.js delete mode 100644 Kapitel6/casperjs/beispiel2.js delete mode 100644 Kapitel6/casperjs/beispiel3.js create mode 100644 Kapitel6/casperjs/example1.js create mode 100644 Kapitel6/casperjs/example2.js create mode 100644 Kapitel6/casperjs/example3.js diff --git a/Kapitel6/casperjs/beispiel1.js b/Kapitel6/casperjs/beispiel1.js deleted file mode 100644 index a1b8a7e..0000000 --- a/Kapitel6/casperjs/beispiel1.js +++ /dev/null @@ -1,18 +0,0 @@ -var casper = require('casper').create(); -casper.start('http://www.heise.de/', function () { - this.echo(this.getTitle()); -}); -casper.then(function () { - this.clickLabel("Newsticker", "a"); -}); -casper.then(function () { - this.echo(this.getTitle()); - this.capture('ix.png', { - top: 0, left: 00, width: 800, height: 600 - }); -}); -casper.thenOpen('http://www.heise.de/ix/', function () { - this.echo(this.getTitle()); - this.download(this.getCurrentUrl(), 'ix.html'); -}); -casper.run(); diff --git a/Kapitel6/casperjs/beispiel2.js b/Kapitel6/casperjs/beispiel2.js deleted file mode 100644 index db16627..0000000 --- a/Kapitel6/casperjs/beispiel2.js +++ /dev/null @@ -1,18 +0,0 @@ -casper.test.begin('Heise Web-Site Test', 4, function suite(test) { - casper.start("http://www.heise.de/", function () { - this.echo('URL: ' + this.getCurrentUrl()); - test.assertTitle("heise online - IT-News, Nachrichten und Hintergründe", "hat den richtigen Titel"); - test.assertTitleMatch(/heise/, "enthält 'heise' im Titel"); - test.assertHttpStatus(200, "gibt 200 als HTTP-Status zurück"); - }); - casper.then(function () { - this.clickLabel("Newsticker", "a"); - }); - casper.then(function () { - this.echo('URL: ' + this.getCurrentUrl()); - test.assertTitleMatch(/heise/, "enthält 'heise' im Titel"); - }); - casper.run(function () { - test.done(); - }); -}); \ No newline at end of file diff --git a/Kapitel6/casperjs/beispiel3.js b/Kapitel6/casperjs/beispiel3.js deleted file mode 100644 index d62ea6b..0000000 --- a/Kapitel6/casperjs/beispiel3.js +++ /dev/null @@ -1,17 +0,0 @@ -casper.test.begin('Heise Homepage', 1, function suite(test) { - casper.start("http://www.heise.de/", function () { - var ueberschriften = casper.evaluate(function () { - var h2s = document.getElementsByTagName("h2"); - var ergebnis = new Array(); - for (var i = 0; i < h2s.length; i++) { - ergebnis[i] = h2s[i].textContent; - } - return ergebnis; - }); - test.assertEquals(ueberschriften.length, 6, - "hat die richtige Anzahl an Überschriften der Ebene 2"); - }); - casper.run(function () { - test.done(); - }); -}); diff --git a/Kapitel6/casperjs/example1.js b/Kapitel6/casperjs/example1.js new file mode 100644 index 0000000..b22f6e6 --- /dev/null +++ b/Kapitel6/casperjs/example1.js @@ -0,0 +1,23 @@ +const casper = require('casper').create(); + +casper.start('http://www.heise.de/', () => { + this.echo(this.getTitle()); +}); + +casper.then(() => { + this.clickLabel('Newsticker', 'a'); +}); + +casper.then(() => { + this.echo(this.getTitle()); + this.capture('ix.png', { + top: 0, left: 00, width: 800, height: 600 + }); +}); + +casper.thenOpen('http://www.heise.de/ix/', () => { + this.echo(this.getTitle()); + this.download(this.getCurrentUrl(), 'ix.html'); +}); + +casper.run(); diff --git a/Kapitel6/casperjs/example2.js b/Kapitel6/casperjs/example2.js new file mode 100644 index 0000000..f2b3221 --- /dev/null +++ b/Kapitel6/casperjs/example2.js @@ -0,0 +1,26 @@ +casper.test.begin('Heise Web-Site Test', 4, (test) => { + + casper.start('http://www.heise.de/', () => { + this.echo('URL: ' + this.getCurrentUrl()); + test.assertTitle( + 'heise online - IT-News, Nachrichten und Hintergründe', + 'hat den richtigen Titel'); + test.assertTitleMatch(/heise/, 'enthält "heise" im Titel'); + test.assertHttpStatus(200, 'gibt 200 als HTTP-Status zurück'); + }); + + casper.then(() => { + this.clickLabel('Newsticker', 'a'); + }); + + casper.then(() => { + this.echo('URL: ' + this.getCurrentUrl()); + test.assertTitleMatch(/heise/, 'enthält "heise" im Titel'); + }); + + casper.run(() => { + test.done(); + }); + +}); + \ No newline at end of file diff --git a/Kapitel6/casperjs/example3.js b/Kapitel6/casperjs/example3.js new file mode 100644 index 0000000..5dc2970 --- /dev/null +++ b/Kapitel6/casperjs/example3.js @@ -0,0 +1,23 @@ +casper.test.begin('Heise Homepage', 1, (test) => { + + casper.start('http://www.heise.de/', () => { + const headlines = casper.evaluate(() => { + const h2s = document.getElementsByTagName('h2'); + const result = new Array(); + for (let i = 0; i < h2s.length; i++) { + result[i] = h2s[i].textContent; + } + return result; + }); + test.assertEquals( + headlines.length, + 6, + 'hat die richtige Anzahl an Überschriften der Ebene 2' + ); + }); + + casper.run(() => { + test.done(); + }); + +}); diff --git a/Kapitel6/tdd/mocha/src/ArtistRepository.js b/Kapitel6/tdd/mocha/src/ArtistRepository.js index 25af251..aa6e819 100644 --- a/Kapitel6/tdd/mocha/src/ArtistRepository.js +++ b/Kapitel6/tdd/mocha/src/ArtistRepository.js @@ -1,27 +1,30 @@ -/** - * Created by philipackermann on 09.06.14. - */ -function ArtistRepository() { - this.artists = []; -}; -ArtistRepository.prototype.add = function(artist) { - if(!this.contains(artist)) { - if(artist && artist.name) { - this.artists.push(artist); - } else { - throw new Error('Wrong artist format.'); - } - } -}; -ArtistRepository.prototype.contains = function(newArtist) { - return this.artists.filter(function(artist) { - return artist.name === newArtist.name; - }).length > 0; -}; -ArtistRepository.prototype.getAll = function(artist) { - return this.artists; -}; -ArtistRepository.prototype.clearAll = function() { - this.artists = []; -}; -module.exports.ArtistRepository = ArtistRepository; \ No newline at end of file +module.exports = class ArtistRepository { + + constructor() { + this.artists = []; + } + + add(artist) { + if (!this.contains(artist)) { + if (artist && artist.name) { + this.artists.push(artist); + } else { + throw new Error('Wrong artist format.'); + } + } + } + + contains(newArtist) { + return this.artists.filter( + artist => artist.name === newArtist.name + ).length > 0; + } + + getAll(artist) { + return this.artists; + } + + clearAll() { + this.artists = []; + } +} diff --git a/Kapitel6/testdoubles/sinonjs/src/UserRepository.js b/Kapitel6/testdoubles/sinonjs/src/UserRepository.js index e2430d3..5be052b 100644 --- a/Kapitel6/testdoubles/sinonjs/src/UserRepository.js +++ b/Kapitel6/testdoubles/sinonjs/src/UserRepository.js @@ -1,25 +1,17 @@ -/** - * Created by philipackermann on 26.10.14. - */ -var WebService = { - listAllUsers: function() { - return [{ - name: 'Max', - lastname: 'Mustermann' - }]; - } -} -function UserRepository() { +const UserService = require('./UserService'); + +module.exports = class UserRepository { + + listAllUsers() { + const cache = UserService.listAllUsers(); + UserRepository.prototype.listAllUsers = () => { + return cache; + } + return cache; + } + + filterUsers(filter) { + return this.listAllUsers().filter(filter); + } + }; -UserRepository.prototype.listAllUsers = function() { - var cache = WebService.listAllUsers(); - UserRepository.prototype.listAllUsers = function() { - return cache; - } - return cache; -}; -UserRepository.prototype.filterUsers = function(filter) { - return this.listAllUsers().filter(filter); -}; -module.exports.WebService = WebService; -module.exports.UserRepository = UserRepository; \ No newline at end of file diff --git a/Kapitel6/testdoubles/sinonjs/test/UserRepositoryMockTest.js b/Kapitel6/testdoubles/sinonjs/test/UserRepositoryMockTest.js index c7de617..cc4575e 100644 --- a/Kapitel6/testdoubles/sinonjs/test/UserRepositoryMockTest.js +++ b/Kapitel6/testdoubles/sinonjs/test/UserRepositoryMockTest.js @@ -1,23 +1,23 @@ -/** - * Created by philipackermann on 26.10.14. - */ -var UserRepository = require('../src/UserRepository').UserRepository; -var WebService = require('../src/UserRepository').WebService; -var assert = require('assert'); -var sinon = require('../bower_components/sinon/lib/sinon'); -describe('UserRepository', function() { - var userRepository; - var expectation; - before(function() { - userRepository = new UserRepository(); - var mock = sinon.mock(WebService); - expectation = mock.expects('listAllUsers').atMost(1); - }); - describe('#listAllUsers()', function(){ - it('should only call web service once and cache the results', function(){ - var users = userRepository.listAllUsers(); - var users2 = userRepository.listAllUsers(); - expectation.verify(); - }); - }); +const UserRepository = require('../src/UserRepository'); +const UserService = require('../src/UserService'); +const assert = require('assert'); +const sinon = require('sinon'); + +describe('UserRepository', () => { + let userRepository; + let expectation; + + before(() => { + userRepository = new UserRepository(); + const mock = sinon.mock(UserService); + expectation = mock.expects('listAllUsers').atMost(1); + }); + + describe('#listAllUsers()', () => { + it('should only call web service once and cache the results', () => { + const users = userRepository.listAllUsers(); + const users2 = userRepository.listAllUsers(); + expectation.verify(); + }); + }); }); \ No newline at end of file diff --git a/Kapitel6/testdoubles/sinonjs/test/UserRepositoryTest.js b/Kapitel6/testdoubles/sinonjs/test/UserRepositoryTest.js index d98a002..98c1824 100644 --- a/Kapitel6/testdoubles/sinonjs/test/UserRepositoryTest.js +++ b/Kapitel6/testdoubles/sinonjs/test/UserRepositoryTest.js @@ -1,54 +1,60 @@ -/** - * Created by philipackermann on 26.10.14. - */ -var UserRepository = require('../src/UserRepository').UserRepository; -var WebService = require('../src/UserRepository').WebService; -var assert = require('assert'); -var sinon = require('../bower_components/sinon/lib/sinon'); -describe('UserRepository', function() { - var userRepository; - var spy; - before(function() { - userRepository = new UserRepository(); - spy = sinon.spy(WebService, "listAllUsers"); - }); - after(function() { - spy.restore(); - }); - describe('#listAllUsers()', function(){ - it('should only call web service once and cache the results', function(){ - var users = userRepository.listAllUsers(); - var users2 = userRepository.listAllUsers(); - assert.equal(spy.callCount, 1); - }); - }); +const UserRepository = require('../src/UserRepository'); +const UserService = require('../src/UserService'); +const assert = require('assert'); +const sinon = require('sinon'); + +describe('UserRepository', () => { + let userRepository; + let spy; + + before(() => { + userRepository = new UserRepository(); + spy = sinon.spy(UserService, 'listAllUsers'); + }); + + after(() => { + spy.restore(); + }); + + describe('#listAllUsers()', () => { + it('should only call web service once and cache the results', () => { + const users = userRepository.listAllUsers(); + const users2 = userRepository.listAllUsers(); + assert.equal(spy.callCount, 1); + }); + }); }); -describe('UserRepository', function() { - var userRepository; - var stub; - before(function() { - userRepository = new UserRepository(); - stub = sinon.stub(userRepository, "listAllUsers"); - stub.returns([{ - name: 'Peter', - lastname: 'Mustermann' - }, { - name: 'Max', - lastname: 'Mustermann' - }, { - name: 'Moritz', - lastname: 'Mustermann' - }]); - }); - after(function() { - stub.restore(); - }); - describe('#filterUsers()', function(){ - it('should return users for given filter', function(){ - var users = userRepository.filterUsers(function(user) { - return user.name.indexOf('M') === 0; - }); - assert.equal(users.length, 2); - }); - }); + +describe('UserRepository', () => { + let userRepository; + let stub; + + before(() => { + userRepository = new UserRepository(); + stub = sinon.stub(userRepository, 'listAllUsers'); + stub.returns([{ + name: 'Peter', + lastname: 'Mustermann' + }, { + name: 'Max', + lastname: 'Mustermann' + }, { + name: 'Moritz', + lastname: 'Mustermann' + }]); + }); + + after(() => { + stub.restore(); + }); + + describe('#filterUsers()', () => { + it('should return users for given filter', () => { + const users = userRepository.filterUsers( + (user) => user.name.indexOf('M') === 0 + ); + assert.equal(users.length, 2); + }); + }); + }); \ No newline at end of file From 2ce49205227530b79f6e7dfc6fc71fa7d4ba75eb Mon Sep 17 00:00:00 2001 From: Philip Ackermann Date: Mon, 19 Feb 2018 20:08:26 +0100 Subject: [PATCH 17/42] Updated documentation examples --- Kapitel5/documentation/esdoc/.esdoc.json | 5 + .../esdoc/docs/ast/source/Calculator.js.json | 5565 +++++++++++++++++ .../esdoc/docs/ast/source/Person.js.json | 5565 +++++++++++++++++ Kapitel5/documentation/esdoc/docs/badge.svg | 17 + .../class/src/Calculator.js~Calculator.html | 533 ++ .../docs/class/src/Calculator.js~Person.html | 815 +++ .../docs/class/src/Person.js~Person.html | 815 +++ .../documentation/esdoc/docs/coverage.json | 22 + .../esdoc/docs/css/prettify-tomorrow.css | 132 + .../documentation/esdoc/docs/css/style.css | 1024 +++ Kapitel5/documentation/esdoc/docs/dump.json | 1082 ++++ .../esdoc/docs/file/src/Calculator.js.html | 103 + .../esdoc/docs/file/src/Person.js.html | 103 + .../documentation/esdoc/docs/identifiers.html | 94 + .../documentation/esdoc/docs/image/badge.svg | 17 + .../docs/image/esdoc-logo-mini-black.png | Bin 0 -> 5651 bytes .../esdoc/docs/image/esdoc-logo-mini.png | Bin 0 -> 6504 bytes .../documentation/esdoc/docs/image/github.png | Bin 0 -> 4268 bytes .../esdoc/docs/image/manual-badge.svg | 17 + .../documentation/esdoc/docs/image/search.png | Bin 0 -> 12704 bytes Kapitel5/documentation/esdoc/docs/index.html | 54 + .../documentation/esdoc/docs/package.json | 13 + .../esdoc/docs/script/inherited-summary.js | 28 + .../esdoc/docs/script/inner-link.js | 31 + .../documentation/esdoc/docs/script/manual.js | 11 + .../esdoc/docs/script/patch-for-local.js | 8 + .../script/prettify/Apache-License-2.0.txt} | 0 .../esdoc/docs/script/prettify/prettify.js | 28 + .../esdoc/docs/script/pretty-print.js | 25 + .../documentation/esdoc/docs/script/search.js | 117 + .../esdoc/docs/script/search_index.js | 398 ++ .../esdoc/docs/script/test-summary.js | 54 + Kapitel5/documentation/esdoc/docs/source.html | 79 + .../documentation/esdoc/package-lock.json | 1490 +++++ Kapitel5/documentation/esdoc/package.json | 13 + Kapitel5/documentation/esdoc/src/Person.js | 46 + Kapitel5/dokumentation/Album.js | 21 - Kapitel5/dokumentation/Rechner.js | 19 - Kapitel5/dokumentation/out/api.js | 9 - .../out/assets/css/external-small.png | Bin 491 -> 0 bytes .../dokumentation/out/assets/css/logo.png | Bin 6308 -> 0 bytes .../dokumentation/out/assets/css/main.css | 783 --- Kapitel5/dokumentation/out/assets/favicon.png | Bin 740 -> 0 bytes .../dokumentation/out/assets/img/spinner.gif | Bin 2685 -> 0 bytes Kapitel5/dokumentation/out/assets/index.html | 10 - .../dokumentation/out/assets/js/api-filter.js | 52 - .../dokumentation/out/assets/js/api-list.js | 251 - .../dokumentation/out/assets/js/api-search.js | 98 - .../dokumentation/out/assets/js/apidocs.js | 370 -- .../out/assets/js/yui-prettify.js | 17 - .../out/assets/vendor/prettify/CHANGES.html | 130 - .../out/assets/vendor/prettify/README.html | 203 - .../assets/vendor/prettify/prettify-min.css | 1 - .../assets/vendor/prettify/prettify-min.js | 1 - Kapitel5/dokumentation/out/classes/index.html | 10 - .../dokumentation/out/classes/undefined.html | 300 - Kapitel5/dokumentation/out/data.json | 58 - .../dokumentation/out/files/Album.js.html | 129 - Kapitel5/dokumentation/out/files/index.html | 10 - Kapitel5/dokumentation/out/index.html | 122 - Kapitel5/dokumentation/out/modules/index.html | 10 - 61 files changed, 18304 insertions(+), 2604 deletions(-) create mode 100644 Kapitel5/documentation/esdoc/.esdoc.json create mode 100644 Kapitel5/documentation/esdoc/docs/ast/source/Calculator.js.json create mode 100644 Kapitel5/documentation/esdoc/docs/ast/source/Person.js.json create mode 100644 Kapitel5/documentation/esdoc/docs/badge.svg create mode 100644 Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Calculator.html create mode 100644 Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Person.html create mode 100644 Kapitel5/documentation/esdoc/docs/class/src/Person.js~Person.html create mode 100644 Kapitel5/documentation/esdoc/docs/coverage.json create mode 100644 Kapitel5/documentation/esdoc/docs/css/prettify-tomorrow.css create mode 100644 Kapitel5/documentation/esdoc/docs/css/style.css create mode 100644 Kapitel5/documentation/esdoc/docs/dump.json create mode 100644 Kapitel5/documentation/esdoc/docs/file/src/Calculator.js.html create mode 100644 Kapitel5/documentation/esdoc/docs/file/src/Person.js.html create mode 100644 Kapitel5/documentation/esdoc/docs/identifiers.html create mode 100644 Kapitel5/documentation/esdoc/docs/image/badge.svg create mode 100644 Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini-black.png create mode 100644 Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini.png create mode 100644 Kapitel5/documentation/esdoc/docs/image/github.png create mode 100644 Kapitel5/documentation/esdoc/docs/image/manual-badge.svg create mode 100644 Kapitel5/documentation/esdoc/docs/image/search.png create mode 100644 Kapitel5/documentation/esdoc/docs/index.html create mode 100644 Kapitel5/documentation/esdoc/docs/package.json create mode 100644 Kapitel5/documentation/esdoc/docs/script/inherited-summary.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/inner-link.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/manual.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/patch-for-local.js rename Kapitel5/{dokumentation/out/assets/vendor/prettify/COPYING => documentation/esdoc/docs/script/prettify/Apache-License-2.0.txt} (100%) create mode 100644 Kapitel5/documentation/esdoc/docs/script/prettify/prettify.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/pretty-print.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/search.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/search_index.js create mode 100644 Kapitel5/documentation/esdoc/docs/script/test-summary.js create mode 100644 Kapitel5/documentation/esdoc/docs/source.html create mode 100644 Kapitel5/documentation/esdoc/package-lock.json create mode 100644 Kapitel5/documentation/esdoc/package.json create mode 100644 Kapitel5/documentation/esdoc/src/Person.js delete mode 100644 Kapitel5/dokumentation/Album.js delete mode 100644 Kapitel5/dokumentation/Rechner.js delete mode 100644 Kapitel5/dokumentation/out/api.js delete mode 100644 Kapitel5/dokumentation/out/assets/css/external-small.png delete mode 100644 Kapitel5/dokumentation/out/assets/css/logo.png delete mode 100644 Kapitel5/dokumentation/out/assets/css/main.css delete mode 100644 Kapitel5/dokumentation/out/assets/favicon.png delete mode 100644 Kapitel5/dokumentation/out/assets/img/spinner.gif delete mode 100644 Kapitel5/dokumentation/out/assets/index.html delete mode 100644 Kapitel5/dokumentation/out/assets/js/api-filter.js delete mode 100644 Kapitel5/dokumentation/out/assets/js/api-list.js delete mode 100644 Kapitel5/dokumentation/out/assets/js/api-search.js delete mode 100644 Kapitel5/dokumentation/out/assets/js/apidocs.js delete mode 100644 Kapitel5/dokumentation/out/assets/js/yui-prettify.js delete mode 100644 Kapitel5/dokumentation/out/assets/vendor/prettify/CHANGES.html delete mode 100644 Kapitel5/dokumentation/out/assets/vendor/prettify/README.html delete mode 100644 Kapitel5/dokumentation/out/assets/vendor/prettify/prettify-min.css delete mode 100644 Kapitel5/dokumentation/out/assets/vendor/prettify/prettify-min.js delete mode 100644 Kapitel5/dokumentation/out/classes/index.html delete mode 100644 Kapitel5/dokumentation/out/classes/undefined.html delete mode 100644 Kapitel5/dokumentation/out/data.json delete mode 100644 Kapitel5/dokumentation/out/files/Album.js.html delete mode 100644 Kapitel5/dokumentation/out/files/index.html delete mode 100644 Kapitel5/dokumentation/out/index.html delete mode 100644 Kapitel5/dokumentation/out/modules/index.html diff --git a/Kapitel5/documentation/esdoc/.esdoc.json b/Kapitel5/documentation/esdoc/.esdoc.json new file mode 100644 index 0000000..1750efb --- /dev/null +++ b/Kapitel5/documentation/esdoc/.esdoc.json @@ -0,0 +1,5 @@ +{ + "source": "./src", + "destination": "./docs", + "plugins": [{"name": "esdoc-standard-plugin"}] +} diff --git a/Kapitel5/documentation/esdoc/docs/ast/source/Calculator.js.json b/Kapitel5/documentation/esdoc/docs/ast/source/Calculator.js.json new file mode 100644 index 0000000..8d37851 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/ast/source/Calculator.js.json @@ -0,0 +1,5565 @@ +{ + "type": "File", + "start": 0, + "end": 735, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 735, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportDefaultDeclaration", + "start": 0, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "declaration": { + "type": "ClassDeclaration", + "start": 15, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 21, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 21 + }, + "end": { + "line": 1, + "column": 27 + }, + "identifierName": "Person" + }, + "name": "Person" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start": 28, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 200, + "end": 321, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 200, + "end": 211, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 8, + "column": 12 + }, + "identifierName": "constructor" + }, + "name": "constructor", + "leadingComments": null + }, + "static": false, + "kind": "constructor", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 212, + "end": 221, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 22 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + { + "type": "Identifier", + "start": 223, + "end": 231, + "loc": { + "start": { + "line": 8, + "column": 24 + }, + "end": { + "line": 8, + "column": 32 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + { + "type": "Identifier", + "start": 233, + "end": 236, + "loc": { + "start": { + "line": 8, + "column": 34 + }, + "end": { + "line": 8, + "column": 37 + }, + "identifierName": "age" + }, + "name": "age" + } + ], + "body": { + "type": "BlockStatement", + "start": 238, + "end": 321, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 242, + "end": 270, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 30 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 242, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 29 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 242, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 242, + "end": 246, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 247, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 7 + }, + "end": { + "line": 9, + "column": 17 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 260, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 20 + }, + "end": { + "line": 9, + "column": 29 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + } + }, + { + "type": "ExpressionStatement", + "start": 273, + "end": 299, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 28 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 273, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 27 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 273, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 273, + "end": 277, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 278, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 16 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 290, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 19 + }, + "end": { + "line": 10, + "column": 27 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + } + }, + { + "type": "ExpressionStatement", + "start": 302, + "end": 318, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 18 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 302, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 17 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 302, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 11 + } + }, + "object": { + "type": "ThisExpression", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 307, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 11 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 314, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 14 + }, + "end": { + "line": 11, + "column": 17 + }, + "identifierName": "age" + }, + "name": "age" + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 324, + "end": 354, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 324, + "end": 329, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 6 + }, + "identifierName": "greet" + }, + "name": "greet" + }, + "static": false, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 332, + "end": 354, + "loc": { + "start": { + "line": 14, + "column": 9 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 336, + "end": 351, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 17 + } + }, + "argument": { + "type": "StringLiteral", + "start": 343, + "end": 350, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 16 + } + }, + "extra": { + "rawValue": "Hello", + "raw": "'Hello'" + }, + "value": "Hello" + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 357, + "end": 437, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 20, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 357, + "end": 365, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 9 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "static": false, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 368, + "end": 437, + "loc": { + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 20, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 372, + "end": 434, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 64 + } + }, + "argument": { + "type": "TemplateLiteral", + "start": 379, + "end": 433, + "loc": { + "start": { + "line": 19, + "column": 9 + }, + "end": { + "line": 19, + "column": 63 + } + }, + "expressions": [ + { + "type": "MemberExpression", + "start": 382, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 382, + "end": 386, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 387, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 26 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 400, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 43 + } + }, + "object": { + "type": "ThisExpression", + "start": 400, + "end": 404, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 34 + } + } + }, + "property": { + "type": "Identifier", + "start": 405, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 35 + }, + "end": { + "line": 19, + "column": 43 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 418, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 56 + } + }, + "object": { + "type": "ThisExpression", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 52 + } + } + }, + "property": { + "type": "Identifier", + "start": 423, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 53 + }, + "end": { + "line": 19, + "column": 56 + }, + "identifierName": "age" + }, + "name": "age" + }, + "computed": false + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 380, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 10 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 397, + "end": 398, + "loc": { + "start": { + "line": 19, + "column": 27 + }, + "end": { + "line": 19, + "column": 28 + } + }, + "value": { + "raw": " ", + "cooked": " " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 414, + "end": 416, + "loc": { + "start": { + "line": 19, + "column": 44 + }, + "end": { + "line": 19, + "column": 46 + } + }, + "value": { + "raw": ", ", + "cooked": ", " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 427, + "end": 432, + "loc": { + "start": { + "line": 19, + "column": 57 + }, + "end": { + "line": 19, + "column": 62 + } + }, + "value": { + "raw": " old.", + "cooked": " old." + }, + "tail": true + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 440, + "end": 486, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 24, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 444, + "end": 453, + "loc": { + "start": { + "line": 22, + "column": 5 + }, + "end": { + "line": 22, + "column": 14 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 456, + "end": 486, + "loc": { + "start": { + "line": 22, + "column": 17 + }, + "end": { + "line": 24, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 460, + "end": 483, + "loc": { + "start": { + "line": 23, + "column": 2 + }, + "end": { + "line": 23, + "column": 25 + } + }, + "argument": { + "type": "MemberExpression", + "start": 467, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 467, + "end": 471, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 472, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 14 + }, + "end": { + "line": 23, + "column": 24 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 489, + "end": 549, + "loc": { + "start": { + "line": 26, + "column": 1 + }, + "end": { + "line": 28, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 493, + "end": 502, + "loc": { + "start": { + "line": 26, + "column": 5 + }, + "end": { + "line": 26, + "column": 14 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 503, + "end": 512, + "loc": { + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 26, + "column": 24 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + ], + "body": { + "type": "BlockStatement", + "start": 514, + "end": 549, + "loc": { + "start": { + "line": 26, + "column": 26 + }, + "end": { + "line": 28, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 518, + "end": 546, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 30 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 518, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 29 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 518, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 518, + "end": 522, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 523, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 7 + }, + "end": { + "line": 27, + "column": 17 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 536, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 27, + "column": 29 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 552, + "end": 596, + "loc": { + "start": { + "line": 30, + "column": 1 + }, + "end": { + "line": 32, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 556, + "end": 564, + "loc": { + "start": { + "line": 30, + "column": 5 + }, + "end": { + "line": 30, + "column": 13 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 567, + "end": 596, + "loc": { + "start": { + "line": 30, + "column": 16 + }, + "end": { + "line": 32, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 571, + "end": 593, + "loc": { + "start": { + "line": 31, + "column": 2 + }, + "end": { + "line": 31, + "column": 24 + } + }, + "argument": { + "type": "MemberExpression", + "start": 578, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 578, + "end": 582, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 583, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 14 + }, + "end": { + "line": 31, + "column": 23 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 599, + "end": 655, + "loc": { + "start": { + "line": 34, + "column": 1 + }, + "end": { + "line": 36, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 603, + "end": 611, + "loc": { + "start": { + "line": 34, + "column": 5 + }, + "end": { + "line": 34, + "column": 13 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 612, + "end": 620, + "loc": { + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 34, + "column": 22 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + ], + "body": { + "type": "BlockStatement", + "start": 622, + "end": 655, + "loc": { + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 36, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 626, + "end": 652, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 28 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 626, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 27 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 626, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 626, + "end": 630, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 631, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 7 + }, + "end": { + "line": 35, + "column": 16 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 643, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 19 + }, + "end": { + "line": 35, + "column": 27 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 658, + "end": 692, + "loc": { + "start": { + "line": 38, + "column": 1 + }, + "end": { + "line": 40, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 662, + "end": 665, + "loc": { + "start": { + "line": 38, + "column": 5 + }, + "end": { + "line": 38, + "column": 8 + }, + "identifierName": "age" + }, + "name": "age" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 668, + "end": 692, + "loc": { + "start": { + "line": 38, + "column": 11 + }, + "end": { + "line": 40, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 672, + "end": 689, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 19 + } + }, + "argument": { + "type": "MemberExpression", + "start": 679, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 679, + "end": 683, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 684, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 14 + }, + "end": { + "line": 39, + "column": 18 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 695, + "end": 731, + "loc": { + "start": { + "line": 42, + "column": 1 + }, + "end": { + "line": 44, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 699, + "end": 702, + "loc": { + "start": { + "line": 42, + "column": 5 + }, + "end": { + "line": 42, + "column": 8 + }, + "identifierName": "age" + }, + "name": "age" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 703, + "end": 706, + "loc": { + "start": { + "line": 42, + "column": 9 + }, + "end": { + "line": 42, + "column": 12 + }, + "identifierName": "age" + }, + "name": "age" + } + ], + "body": { + "type": "BlockStatement", + "start": 708, + "end": 731, + "loc": { + "start": { + "line": 42, + "column": 14 + }, + "end": { + "line": 44, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 712, + "end": 728, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 18 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 712, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 17 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 712, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 11 + } + }, + "object": { + "type": "ThisExpression", + "start": 712, + "end": 716, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 717, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 7 + }, + "end": { + "line": 43, + "column": 11 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 724, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 14 + }, + "end": { + "line": 43, + "column": 17 + }, + "identifierName": "age" + }, + "name": "age" + } + } + } + ], + "directives": [] + } + } + ] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "default", + "keyword": "default", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "default", + "start": 7, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 14 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 15, + "end": 20, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Person", + "start": 21, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 21 + }, + "end": { + "line": 1, + "column": 27 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 28, + "end": 29, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 1, + "column": 29 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 200, + "end": 211, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 8, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 211, + "end": 212, + "loc": { + "start": { + "line": 8, + "column": 12 + }, + "end": { + "line": 8, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 212, + "end": 221, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 221, + "end": 222, + "loc": { + "start": { + "line": 8, + "column": 22 + }, + "end": { + "line": 8, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 223, + "end": 231, + "loc": { + "start": { + "line": 8, + "column": 24 + }, + "end": { + "line": 8, + "column": 32 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 231, + "end": 232, + "loc": { + "start": { + "line": 8, + "column": 32 + }, + "end": { + "line": 8, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 233, + "end": 236, + "loc": { + "start": { + "line": 8, + "column": 34 + }, + "end": { + "line": 8, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 236, + "end": 237, + "loc": { + "start": { + "line": 8, + "column": 37 + }, + "end": { + "line": 8, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 238, + "end": 239, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 8, + "column": 40 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 242, + "end": 246, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 246, + "end": 247, + "loc": { + "start": { + "line": 9, + "column": 6 + }, + "end": { + "line": 9, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 247, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 7 + }, + "end": { + "line": 9, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 258, + "end": 259, + "loc": { + "start": { + "line": 9, + "column": 18 + }, + "end": { + "line": 9, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 260, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 20 + }, + "end": { + "line": 9, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 269, + "end": 270, + "loc": { + "start": { + "line": 9, + "column": 29 + }, + "end": { + "line": 9, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 273, + "end": 277, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 277, + "end": 278, + "loc": { + "start": { + "line": 10, + "column": 6 + }, + "end": { + "line": 10, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 278, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 16 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 288, + "end": 289, + "loc": { + "start": { + "line": 10, + "column": 17 + }, + "end": { + "line": 10, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 290, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 19 + }, + "end": { + "line": 10, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 298, + "end": 299, + "loc": { + "start": { + "line": 10, + "column": 27 + }, + "end": { + "line": 10, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 306, + "end": 307, + "loc": { + "start": { + "line": 11, + "column": 6 + }, + "end": { + "line": 11, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 307, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 312, + "end": 313, + "loc": { + "start": { + "line": 11, + "column": 12 + }, + "end": { + "line": 11, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 314, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 14 + }, + "end": { + "line": 11, + "column": 17 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 317, + "end": 318, + "loc": { + "start": { + "line": 11, + "column": 17 + }, + "end": { + "line": 11, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 320, + "end": 321, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "greet", + "start": 324, + "end": 329, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 329, + "end": 330, + "loc": { + "start": { + "line": 14, + "column": 6 + }, + "end": { + "line": 14, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 330, + "end": 331, + "loc": { + "start": { + "line": 14, + "column": 7 + }, + "end": { + "line": 14, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 332, + "end": 333, + "loc": { + "start": { + "line": 14, + "column": 9 + }, + "end": { + "line": 14, + "column": 10 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 336, + "end": 342, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 8 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Hello", + "start": 343, + "end": 350, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 16 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 350, + "end": 351, + "loc": { + "start": { + "line": 15, + "column": 16 + }, + "end": { + "line": 15, + "column": 17 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 353, + "end": 354, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 357, + "end": 365, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 365, + "end": 366, + "loc": { + "start": { + "line": 18, + "column": 9 + }, + "end": { + "line": 18, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 366, + "end": 367, + "loc": { + "start": { + "line": 18, + "column": 10 + }, + "end": { + "line": 18, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 368, + "end": 369, + "loc": { + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 18, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 372, + "end": 378, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 8 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 379, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 9 + }, + "end": { + "line": 19, + "column": 10 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 380, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 10 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 380, + "end": 382, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 382, + "end": 386, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 386, + "end": 387, + "loc": { + "start": { + "line": 19, + "column": 16 + }, + "end": { + "line": 19, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 387, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 396, + "end": 397, + "loc": { + "start": { + "line": 19, + "column": 26 + }, + "end": { + "line": 19, + "column": 27 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": " ", + "start": 397, + "end": 398, + "loc": { + "start": { + "line": 19, + "column": 27 + }, + "end": { + "line": 19, + "column": 28 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 398, + "end": 400, + "loc": { + "start": { + "line": 19, + "column": 28 + }, + "end": { + "line": 19, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 400, + "end": 404, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 34 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 404, + "end": 405, + "loc": { + "start": { + "line": 19, + "column": 34 + }, + "end": { + "line": 19, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 405, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 35 + }, + "end": { + "line": 19, + "column": 43 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 413, + "end": 414, + "loc": { + "start": { + "line": 19, + "column": 43 + }, + "end": { + "line": 19, + "column": 44 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": ", ", + "start": 414, + "end": 416, + "loc": { + "start": { + "line": 19, + "column": 44 + }, + "end": { + "line": 19, + "column": 46 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 416, + "end": 418, + "loc": { + "start": { + "line": 19, + "column": 46 + }, + "end": { + "line": 19, + "column": 48 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 422, + "end": 423, + "loc": { + "start": { + "line": 19, + "column": 52 + }, + "end": { + "line": 19, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 423, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 53 + }, + "end": { + "line": 19, + "column": 56 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 426, + "end": 427, + "loc": { + "start": { + "line": 19, + "column": 56 + }, + "end": { + "line": 19, + "column": 57 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": " old.", + "start": 427, + "end": 432, + "loc": { + "start": { + "line": 19, + "column": 57 + }, + "end": { + "line": 19, + "column": 62 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 432, + "end": 433, + "loc": { + "start": { + "line": 19, + "column": 62 + }, + "end": { + "line": 19, + "column": 63 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 433, + "end": 434, + "loc": { + "start": { + "line": 19, + "column": 63 + }, + "end": { + "line": 19, + "column": 64 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 436, + "end": 437, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 440, + "end": 443, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 444, + "end": 453, + "loc": { + "start": { + "line": 22, + "column": 5 + }, + "end": { + "line": 22, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 453, + "end": 454, + "loc": { + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 22, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 454, + "end": 455, + "loc": { + "start": { + "line": 22, + "column": 15 + }, + "end": { + "line": 22, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 456, + "end": 457, + "loc": { + "start": { + "line": 22, + "column": 17 + }, + "end": { + "line": 22, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 460, + "end": 466, + "loc": { + "start": { + "line": 23, + "column": 2 + }, + "end": { + "line": 23, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 467, + "end": 471, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 471, + "end": 472, + "loc": { + "start": { + "line": 23, + "column": 13 + }, + "end": { + "line": 23, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 472, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 14 + }, + "end": { + "line": 23, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 482, + "end": 483, + "loc": { + "start": { + "line": 23, + "column": 24 + }, + "end": { + "line": 23, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 485, + "end": 486, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 489, + "end": 492, + "loc": { + "start": { + "line": 26, + "column": 1 + }, + "end": { + "line": 26, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 493, + "end": 502, + "loc": { + "start": { + "line": 26, + "column": 5 + }, + "end": { + "line": 26, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 502, + "end": 503, + "loc": { + "start": { + "line": 26, + "column": 14 + }, + "end": { + "line": 26, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 503, + "end": 512, + "loc": { + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 26, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 512, + "end": 513, + "loc": { + "start": { + "line": 26, + "column": 24 + }, + "end": { + "line": 26, + "column": 25 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 514, + "end": 515, + "loc": { + "start": { + "line": 26, + "column": 26 + }, + "end": { + "line": 26, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 518, + "end": 522, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 522, + "end": 523, + "loc": { + "start": { + "line": 27, + "column": 6 + }, + "end": { + "line": 27, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 523, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 7 + }, + "end": { + "line": 27, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 534, + "end": 535, + "loc": { + "start": { + "line": 27, + "column": 18 + }, + "end": { + "line": 27, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 536, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 27, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 545, + "end": 546, + "loc": { + "start": { + "line": 27, + "column": 29 + }, + "end": { + "line": 27, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 548, + "end": 549, + "loc": { + "start": { + "line": 28, + "column": 1 + }, + "end": { + "line": 28, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 552, + "end": 555, + "loc": { + "start": { + "line": 30, + "column": 1 + }, + "end": { + "line": 30, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 556, + "end": 564, + "loc": { + "start": { + "line": 30, + "column": 5 + }, + "end": { + "line": 30, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 564, + "end": 565, + "loc": { + "start": { + "line": 30, + "column": 13 + }, + "end": { + "line": 30, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 565, + "end": 566, + "loc": { + "start": { + "line": 30, + "column": 14 + }, + "end": { + "line": 30, + "column": 15 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 567, + "end": 568, + "loc": { + "start": { + "line": 30, + "column": 16 + }, + "end": { + "line": 30, + "column": 17 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 571, + "end": 577, + "loc": { + "start": { + "line": 31, + "column": 2 + }, + "end": { + "line": 31, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 578, + "end": 582, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 582, + "end": 583, + "loc": { + "start": { + "line": 31, + "column": 13 + }, + "end": { + "line": 31, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 583, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 14 + }, + "end": { + "line": 31, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 592, + "end": 593, + "loc": { + "start": { + "line": 31, + "column": 23 + }, + "end": { + "line": 31, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 595, + "end": 596, + "loc": { + "start": { + "line": 32, + "column": 1 + }, + "end": { + "line": 32, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 599, + "end": 602, + "loc": { + "start": { + "line": 34, + "column": 1 + }, + "end": { + "line": 34, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 603, + "end": 611, + "loc": { + "start": { + "line": 34, + "column": 5 + }, + "end": { + "line": 34, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 611, + "end": 612, + "loc": { + "start": { + "line": 34, + "column": 13 + }, + "end": { + "line": 34, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 612, + "end": 620, + "loc": { + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 34, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 620, + "end": 621, + "loc": { + "start": { + "line": 34, + "column": 22 + }, + "end": { + "line": 34, + "column": 23 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 622, + "end": 623, + "loc": { + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 34, + "column": 25 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 626, + "end": 630, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 630, + "end": 631, + "loc": { + "start": { + "line": 35, + "column": 6 + }, + "end": { + "line": 35, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 631, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 7 + }, + "end": { + "line": 35, + "column": 16 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 641, + "end": 642, + "loc": { + "start": { + "line": 35, + "column": 17 + }, + "end": { + "line": 35, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 643, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 19 + }, + "end": { + "line": 35, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 651, + "end": 652, + "loc": { + "start": { + "line": 35, + "column": 27 + }, + "end": { + "line": 35, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 654, + "end": 655, + "loc": { + "start": { + "line": 36, + "column": 1 + }, + "end": { + "line": 36, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 658, + "end": 661, + "loc": { + "start": { + "line": 38, + "column": 1 + }, + "end": { + "line": 38, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 662, + "end": 665, + "loc": { + "start": { + "line": 38, + "column": 5 + }, + "end": { + "line": 38, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 665, + "end": 666, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 666, + "end": 667, + "loc": { + "start": { + "line": 38, + "column": 9 + }, + "end": { + "line": 38, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 668, + "end": 669, + "loc": { + "start": { + "line": 38, + "column": 11 + }, + "end": { + "line": 38, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 672, + "end": 678, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 679, + "end": 683, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 683, + "end": 684, + "loc": { + "start": { + "line": 39, + "column": 13 + }, + "end": { + "line": 39, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 684, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 14 + }, + "end": { + "line": 39, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 688, + "end": 689, + "loc": { + "start": { + "line": 39, + "column": 18 + }, + "end": { + "line": 39, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 691, + "end": 692, + "loc": { + "start": { + "line": 40, + "column": 1 + }, + "end": { + "line": 40, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 695, + "end": 698, + "loc": { + "start": { + "line": 42, + "column": 1 + }, + "end": { + "line": 42, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 699, + "end": 702, + "loc": { + "start": { + "line": 42, + "column": 5 + }, + "end": { + "line": 42, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 702, + "end": 703, + "loc": { + "start": { + "line": 42, + "column": 8 + }, + "end": { + "line": 42, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 703, + "end": 706, + "loc": { + "start": { + "line": 42, + "column": 9 + }, + "end": { + "line": 42, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 706, + "end": 707, + "loc": { + "start": { + "line": 42, + "column": 12 + }, + "end": { + "line": 42, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 708, + "end": 709, + "loc": { + "start": { + "line": 42, + "column": 14 + }, + "end": { + "line": 42, + "column": 15 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 712, + "end": 716, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 716, + "end": 717, + "loc": { + "start": { + "line": 43, + "column": 6 + }, + "end": { + "line": 43, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 717, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 7 + }, + "end": { + "line": 43, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 722, + "end": 723, + "loc": { + "start": { + "line": 43, + "column": 12 + }, + "end": { + "line": 43, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 724, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 14 + }, + "end": { + "line": 43, + "column": 17 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 727, + "end": 728, + "loc": { + "start": { + "line": 43, + "column": 17 + }, + "end": { + "line": 43, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 730, + "end": 731, + "loc": { + "start": { + "line": 44, + "column": 1 + }, + "end": { + "line": 44, + "column": 2 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 733, + "end": 734, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 735, + "end": 735, + "loc": { + "start": { + "line": 47, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/Kapitel5/documentation/esdoc/docs/ast/source/Person.js.json b/Kapitel5/documentation/esdoc/docs/ast/source/Person.js.json new file mode 100644 index 0000000..8d37851 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/ast/source/Person.js.json @@ -0,0 +1,5565 @@ +{ + "type": "File", + "start": 0, + "end": 735, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 735, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + }, + "sourceType": "module", + "body": [ + { + "type": "ExportDefaultDeclaration", + "start": 0, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "declaration": { + "type": "ClassDeclaration", + "start": 15, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 21, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 21 + }, + "end": { + "line": 1, + "column": 27 + }, + "identifierName": "Person" + }, + "name": "Person" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start": 28, + "end": 734, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 46, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 200, + "end": 321, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 200, + "end": 211, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 8, + "column": 12 + }, + "identifierName": "constructor" + }, + "name": "constructor", + "leadingComments": null + }, + "static": false, + "kind": "constructor", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 212, + "end": 221, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 22 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + { + "type": "Identifier", + "start": 223, + "end": 231, + "loc": { + "start": { + "line": 8, + "column": 24 + }, + "end": { + "line": 8, + "column": 32 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + { + "type": "Identifier", + "start": 233, + "end": 236, + "loc": { + "start": { + "line": 8, + "column": 34 + }, + "end": { + "line": 8, + "column": 37 + }, + "identifierName": "age" + }, + "name": "age" + } + ], + "body": { + "type": "BlockStatement", + "start": 238, + "end": 321, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 12, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 242, + "end": 270, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 30 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 242, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 29 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 242, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 242, + "end": 246, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 247, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 7 + }, + "end": { + "line": 9, + "column": 17 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 260, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 20 + }, + "end": { + "line": 9, + "column": 29 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + } + }, + { + "type": "ExpressionStatement", + "start": 273, + "end": 299, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 28 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 273, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 27 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 273, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 273, + "end": 277, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 278, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 16 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 290, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 19 + }, + "end": { + "line": 10, + "column": 27 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + } + }, + { + "type": "ExpressionStatement", + "start": 302, + "end": 318, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 18 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 302, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 17 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 302, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 11 + } + }, + "object": { + "type": "ThisExpression", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 307, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 11 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 314, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 14 + }, + "end": { + "line": 11, + "column": 17 + }, + "identifierName": "age" + }, + "name": "age" + } + } + } + ], + "directives": [] + }, + "leadingComments": [ + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + } + ] + }, + { + "type": "ClassMethod", + "start": 324, + "end": 354, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 324, + "end": 329, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 6 + }, + "identifierName": "greet" + }, + "name": "greet" + }, + "static": false, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 332, + "end": 354, + "loc": { + "start": { + "line": 14, + "column": 9 + }, + "end": { + "line": 16, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 336, + "end": 351, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 17 + } + }, + "argument": { + "type": "StringLiteral", + "start": 343, + "end": 350, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 16 + } + }, + "extra": { + "rawValue": "Hello", + "raw": "'Hello'" + }, + "value": "Hello" + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 357, + "end": 437, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 20, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 357, + "end": 365, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 9 + }, + "identifierName": "toString" + }, + "name": "toString" + }, + "static": false, + "kind": "method", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 368, + "end": 437, + "loc": { + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 20, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 372, + "end": 434, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 64 + } + }, + "argument": { + "type": "TemplateLiteral", + "start": 379, + "end": 433, + "loc": { + "start": { + "line": 19, + "column": 9 + }, + "end": { + "line": 19, + "column": 63 + } + }, + "expressions": [ + { + "type": "MemberExpression", + "start": 382, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 26 + } + }, + "object": { + "type": "ThisExpression", + "start": 382, + "end": 386, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 16 + } + } + }, + "property": { + "type": "Identifier", + "start": 387, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 26 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 400, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 43 + } + }, + "object": { + "type": "ThisExpression", + "start": 400, + "end": 404, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 34 + } + } + }, + "property": { + "type": "Identifier", + "start": 405, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 35 + }, + "end": { + "line": 19, + "column": 43 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "computed": false + }, + { + "type": "MemberExpression", + "start": 418, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 56 + } + }, + "object": { + "type": "ThisExpression", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 52 + } + } + }, + "property": { + "type": "Identifier", + "start": 423, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 53 + }, + "end": { + "line": 19, + "column": 56 + }, + "identifierName": "age" + }, + "name": "age" + }, + "computed": false + } + ], + "quasis": [ + { + "type": "TemplateElement", + "start": 380, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 10 + } + }, + "value": { + "raw": "", + "cooked": "" + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 397, + "end": 398, + "loc": { + "start": { + "line": 19, + "column": 27 + }, + "end": { + "line": 19, + "column": 28 + } + }, + "value": { + "raw": " ", + "cooked": " " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 414, + "end": 416, + "loc": { + "start": { + "line": 19, + "column": 44 + }, + "end": { + "line": 19, + "column": 46 + } + }, + "value": { + "raw": ", ", + "cooked": ", " + }, + "tail": false + }, + { + "type": "TemplateElement", + "start": 427, + "end": 432, + "loc": { + "start": { + "line": 19, + "column": 57 + }, + "end": { + "line": 19, + "column": 62 + } + }, + "value": { + "raw": " old.", + "cooked": " old." + }, + "tail": true + } + ] + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 440, + "end": 486, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 24, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 444, + "end": 453, + "loc": { + "start": { + "line": 22, + "column": 5 + }, + "end": { + "line": 22, + "column": 14 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 456, + "end": 486, + "loc": { + "start": { + "line": 22, + "column": 17 + }, + "end": { + "line": 24, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 460, + "end": 483, + "loc": { + "start": { + "line": 23, + "column": 2 + }, + "end": { + "line": 23, + "column": 25 + } + }, + "argument": { + "type": "MemberExpression", + "start": 467, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 24 + } + }, + "object": { + "type": "ThisExpression", + "start": 467, + "end": 471, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 472, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 14 + }, + "end": { + "line": 23, + "column": 24 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 489, + "end": 549, + "loc": { + "start": { + "line": 26, + "column": 1 + }, + "end": { + "line": 28, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 493, + "end": 502, + "loc": { + "start": { + "line": 26, + "column": 5 + }, + "end": { + "line": 26, + "column": 14 + }, + "identifierName": "firstName" + }, + "name": "firstName" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 503, + "end": 512, + "loc": { + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 26, + "column": 24 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + ], + "body": { + "type": "BlockStatement", + "start": 514, + "end": 549, + "loc": { + "start": { + "line": 26, + "column": 26 + }, + "end": { + "line": 28, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 518, + "end": 546, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 30 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 518, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 29 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 518, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 17 + } + }, + "object": { + "type": "ThisExpression", + "start": 518, + "end": 522, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 523, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 7 + }, + "end": { + "line": 27, + "column": 17 + }, + "identifierName": "_firstName" + }, + "name": "_firstName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 536, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 27, + "column": 29 + }, + "identifierName": "firstName" + }, + "name": "firstName" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 552, + "end": 596, + "loc": { + "start": { + "line": 30, + "column": 1 + }, + "end": { + "line": 32, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 556, + "end": 564, + "loc": { + "start": { + "line": 30, + "column": 5 + }, + "end": { + "line": 30, + "column": 13 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 567, + "end": 596, + "loc": { + "start": { + "line": 30, + "column": 16 + }, + "end": { + "line": 32, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 571, + "end": 593, + "loc": { + "start": { + "line": 31, + "column": 2 + }, + "end": { + "line": 31, + "column": 24 + } + }, + "argument": { + "type": "MemberExpression", + "start": 578, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 23 + } + }, + "object": { + "type": "ThisExpression", + "start": 578, + "end": 582, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 583, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 14 + }, + "end": { + "line": 31, + "column": 23 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 599, + "end": 655, + "loc": { + "start": { + "line": 34, + "column": 1 + }, + "end": { + "line": 36, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 603, + "end": 611, + "loc": { + "start": { + "line": 34, + "column": 5 + }, + "end": { + "line": 34, + "column": 13 + }, + "identifierName": "lastName" + }, + "name": "lastName" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 612, + "end": 620, + "loc": { + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 34, + "column": 22 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + ], + "body": { + "type": "BlockStatement", + "start": 622, + "end": 655, + "loc": { + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 36, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 626, + "end": 652, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 28 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 626, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 27 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 626, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 16 + } + }, + "object": { + "type": "ThisExpression", + "start": 626, + "end": 630, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 631, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 7 + }, + "end": { + "line": 35, + "column": 16 + }, + "identifierName": "_lastName" + }, + "name": "_lastName" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 643, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 19 + }, + "end": { + "line": 35, + "column": 27 + }, + "identifierName": "lastName" + }, + "name": "lastName" + } + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 658, + "end": 692, + "loc": { + "start": { + "line": 38, + "column": 1 + }, + "end": { + "line": 40, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 662, + "end": 665, + "loc": { + "start": { + "line": 38, + "column": 5 + }, + "end": { + "line": 38, + "column": 8 + }, + "identifierName": "age" + }, + "name": "age" + }, + "static": false, + "kind": "get", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 668, + "end": 692, + "loc": { + "start": { + "line": 38, + "column": 11 + }, + "end": { + "line": 40, + "column": 2 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 672, + "end": 689, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 19 + } + }, + "argument": { + "type": "MemberExpression", + "start": 679, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 18 + } + }, + "object": { + "type": "ThisExpression", + "start": 679, + "end": 683, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 13 + } + } + }, + "property": { + "type": "Identifier", + "start": 684, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 14 + }, + "end": { + "line": 39, + "column": 18 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + } + } + ], + "directives": [] + } + }, + { + "type": "ClassMethod", + "start": 695, + "end": 731, + "loc": { + "start": { + "line": 42, + "column": 1 + }, + "end": { + "line": 44, + "column": 2 + } + }, + "computed": false, + "key": { + "type": "Identifier", + "start": 699, + "end": 702, + "loc": { + "start": { + "line": 42, + "column": 5 + }, + "end": { + "line": 42, + "column": 8 + }, + "identifierName": "age" + }, + "name": "age" + }, + "static": false, + "kind": "set", + "id": null, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 703, + "end": 706, + "loc": { + "start": { + "line": 42, + "column": 9 + }, + "end": { + "line": 42, + "column": 12 + }, + "identifierName": "age" + }, + "name": "age" + } + ], + "body": { + "type": "BlockStatement", + "start": 708, + "end": 731, + "loc": { + "start": { + "line": 42, + "column": 14 + }, + "end": { + "line": 44, + "column": 2 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 712, + "end": 728, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 18 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 712, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 17 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 712, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 11 + } + }, + "object": { + "type": "ThisExpression", + "start": 712, + "end": 716, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 6 + } + } + }, + "property": { + "type": "Identifier", + "start": 717, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 7 + }, + "end": { + "line": 43, + "column": 11 + }, + "identifierName": "_age" + }, + "name": "_age" + }, + "computed": false + }, + "right": { + "type": "Identifier", + "start": 724, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 14 + }, + "end": { + "line": 43, + "column": 17 + }, + "identifierName": "age" + }, + "name": "age" + } + } + } + ], + "directives": [] + } + } + ] + }, + "leadingComments": [], + "trailingComments": [] + } + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "export", + "keyword": "export", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "export", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "default", + "keyword": "default", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "default", + "start": 7, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 14 + } + } + }, + { + "type": { + "label": "class", + "keyword": "class", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "class", + "start": 15, + "end": 20, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 20 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "Person", + "start": 21, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 21 + }, + "end": { + "line": 1, + "column": 27 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 28, + "end": 29, + "loc": { + "start": { + "line": 1, + "column": 28 + }, + "end": { + "line": 1, + "column": 29 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t", + "start": 32, + "end": 198, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 7, + "column": 3 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "constructor", + "start": 200, + "end": 211, + "loc": { + "start": { + "line": 8, + "column": 1 + }, + "end": { + "line": 8, + "column": 12 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 211, + "end": 212, + "loc": { + "start": { + "line": 8, + "column": 12 + }, + "end": { + "line": 8, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 212, + "end": 221, + "loc": { + "start": { + "line": 8, + "column": 13 + }, + "end": { + "line": 8, + "column": 22 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 221, + "end": 222, + "loc": { + "start": { + "line": 8, + "column": 22 + }, + "end": { + "line": 8, + "column": 23 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 223, + "end": 231, + "loc": { + "start": { + "line": 8, + "column": 24 + }, + "end": { + "line": 8, + "column": 32 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 231, + "end": 232, + "loc": { + "start": { + "line": 8, + "column": 32 + }, + "end": { + "line": 8, + "column": 33 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 233, + "end": 236, + "loc": { + "start": { + "line": 8, + "column": 34 + }, + "end": { + "line": 8, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 236, + "end": 237, + "loc": { + "start": { + "line": 8, + "column": 37 + }, + "end": { + "line": 8, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 238, + "end": 239, + "loc": { + "start": { + "line": 8, + "column": 39 + }, + "end": { + "line": 8, + "column": 40 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 242, + "end": 246, + "loc": { + "start": { + "line": 9, + "column": 2 + }, + "end": { + "line": 9, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 246, + "end": 247, + "loc": { + "start": { + "line": 9, + "column": 6 + }, + "end": { + "line": 9, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 247, + "end": 257, + "loc": { + "start": { + "line": 9, + "column": 7 + }, + "end": { + "line": 9, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 258, + "end": 259, + "loc": { + "start": { + "line": 9, + "column": 18 + }, + "end": { + "line": 9, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 260, + "end": 269, + "loc": { + "start": { + "line": 9, + "column": 20 + }, + "end": { + "line": 9, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 269, + "end": 270, + "loc": { + "start": { + "line": 9, + "column": 29 + }, + "end": { + "line": 9, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 273, + "end": 277, + "loc": { + "start": { + "line": 10, + "column": 2 + }, + "end": { + "line": 10, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 277, + "end": 278, + "loc": { + "start": { + "line": 10, + "column": 6 + }, + "end": { + "line": 10, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 278, + "end": 287, + "loc": { + "start": { + "line": 10, + "column": 7 + }, + "end": { + "line": 10, + "column": 16 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 288, + "end": 289, + "loc": { + "start": { + "line": 10, + "column": 17 + }, + "end": { + "line": 10, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 290, + "end": 298, + "loc": { + "start": { + "line": 10, + "column": 19 + }, + "end": { + "line": 10, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 298, + "end": 299, + "loc": { + "start": { + "line": 10, + "column": 27 + }, + "end": { + "line": 10, + "column": 28 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 302, + "end": 306, + "loc": { + "start": { + "line": 11, + "column": 2 + }, + "end": { + "line": 11, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 306, + "end": 307, + "loc": { + "start": { + "line": 11, + "column": 6 + }, + "end": { + "line": 11, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 307, + "end": 311, + "loc": { + "start": { + "line": 11, + "column": 7 + }, + "end": { + "line": 11, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 312, + "end": 313, + "loc": { + "start": { + "line": 11, + "column": 12 + }, + "end": { + "line": 11, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 314, + "end": 317, + "loc": { + "start": { + "line": 11, + "column": 14 + }, + "end": { + "line": 11, + "column": 17 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 317, + "end": 318, + "loc": { + "start": { + "line": 11, + "column": 17 + }, + "end": { + "line": 11, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 320, + "end": 321, + "loc": { + "start": { + "line": 12, + "column": 1 + }, + "end": { + "line": 12, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "greet", + "start": 324, + "end": 329, + "loc": { + "start": { + "line": 14, + "column": 1 + }, + "end": { + "line": 14, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 329, + "end": 330, + "loc": { + "start": { + "line": 14, + "column": 6 + }, + "end": { + "line": 14, + "column": 7 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 330, + "end": 331, + "loc": { + "start": { + "line": 14, + "column": 7 + }, + "end": { + "line": 14, + "column": 8 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 332, + "end": 333, + "loc": { + "start": { + "line": 14, + "column": 9 + }, + "end": { + "line": 14, + "column": 10 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 336, + "end": 342, + "loc": { + "start": { + "line": 15, + "column": 2 + }, + "end": { + "line": 15, + "column": 8 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "Hello", + "start": 343, + "end": 350, + "loc": { + "start": { + "line": 15, + "column": 9 + }, + "end": { + "line": 15, + "column": 16 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 350, + "end": 351, + "loc": { + "start": { + "line": 15, + "column": 16 + }, + "end": { + "line": 15, + "column": 17 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 353, + "end": 354, + "loc": { + "start": { + "line": 16, + "column": 1 + }, + "end": { + "line": 16, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "toString", + "start": 357, + "end": 365, + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 9 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 365, + "end": 366, + "loc": { + "start": { + "line": 18, + "column": 9 + }, + "end": { + "line": 18, + "column": 10 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 366, + "end": 367, + "loc": { + "start": { + "line": 18, + "column": 10 + }, + "end": { + "line": 18, + "column": 11 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 368, + "end": 369, + "loc": { + "start": { + "line": 18, + "column": 12 + }, + "end": { + "line": 18, + "column": 13 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 372, + "end": 378, + "loc": { + "start": { + "line": 19, + "column": 2 + }, + "end": { + "line": 19, + "column": 8 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 379, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 9 + }, + "end": { + "line": 19, + "column": 10 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "", + "start": 380, + "end": 380, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 10 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 380, + "end": 382, + "loc": { + "start": { + "line": 19, + "column": 10 + }, + "end": { + "line": 19, + "column": 12 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 382, + "end": 386, + "loc": { + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 19, + "column": 16 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 386, + "end": 387, + "loc": { + "start": { + "line": 19, + "column": 16 + }, + "end": { + "line": 19, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 387, + "end": 396, + "loc": { + "start": { + "line": 19, + "column": 17 + }, + "end": { + "line": 19, + "column": 26 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 396, + "end": 397, + "loc": { + "start": { + "line": 19, + "column": 26 + }, + "end": { + "line": 19, + "column": 27 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": " ", + "start": 397, + "end": 398, + "loc": { + "start": { + "line": 19, + "column": 27 + }, + "end": { + "line": 19, + "column": 28 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 398, + "end": 400, + "loc": { + "start": { + "line": 19, + "column": 28 + }, + "end": { + "line": 19, + "column": 30 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 400, + "end": 404, + "loc": { + "start": { + "line": 19, + "column": 30 + }, + "end": { + "line": 19, + "column": 34 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 404, + "end": 405, + "loc": { + "start": { + "line": 19, + "column": 34 + }, + "end": { + "line": 19, + "column": 35 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 405, + "end": 413, + "loc": { + "start": { + "line": 19, + "column": 35 + }, + "end": { + "line": 19, + "column": 43 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 413, + "end": 414, + "loc": { + "start": { + "line": 19, + "column": 43 + }, + "end": { + "line": 19, + "column": 44 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": ", ", + "start": 414, + "end": 416, + "loc": { + "start": { + "line": 19, + "column": 44 + }, + "end": { + "line": 19, + "column": 46 + } + } + }, + { + "type": { + "label": "${", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 416, + "end": 418, + "loc": { + "start": { + "line": 19, + "column": 46 + }, + "end": { + "line": 19, + "column": 48 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 418, + "end": 422, + "loc": { + "start": { + "line": 19, + "column": 48 + }, + "end": { + "line": 19, + "column": 52 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 422, + "end": 423, + "loc": { + "start": { + "line": 19, + "column": 52 + }, + "end": { + "line": 19, + "column": 53 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 423, + "end": 426, + "loc": { + "start": { + "line": 19, + "column": 53 + }, + "end": { + "line": 19, + "column": 56 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 426, + "end": 427, + "loc": { + "start": { + "line": 19, + "column": 56 + }, + "end": { + "line": 19, + "column": 57 + } + } + }, + { + "type": { + "label": "template", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": " old.", + "start": 427, + "end": 432, + "loc": { + "start": { + "line": 19, + "column": 57 + }, + "end": { + "line": 19, + "column": 62 + } + } + }, + { + "type": { + "label": "`", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 432, + "end": 433, + "loc": { + "start": { + "line": 19, + "column": 62 + }, + "end": { + "line": 19, + "column": 63 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 433, + "end": 434, + "loc": { + "start": { + "line": 19, + "column": 63 + }, + "end": { + "line": 19, + "column": 64 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 436, + "end": 437, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 20, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 440, + "end": 443, + "loc": { + "start": { + "line": 22, + "column": 1 + }, + "end": { + "line": 22, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 444, + "end": 453, + "loc": { + "start": { + "line": 22, + "column": 5 + }, + "end": { + "line": 22, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 453, + "end": 454, + "loc": { + "start": { + "line": 22, + "column": 14 + }, + "end": { + "line": 22, + "column": 15 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 454, + "end": 455, + "loc": { + "start": { + "line": 22, + "column": 15 + }, + "end": { + "line": 22, + "column": 16 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 456, + "end": 457, + "loc": { + "start": { + "line": 22, + "column": 17 + }, + "end": { + "line": 22, + "column": 18 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 460, + "end": 466, + "loc": { + "start": { + "line": 23, + "column": 2 + }, + "end": { + "line": 23, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 467, + "end": 471, + "loc": { + "start": { + "line": 23, + "column": 9 + }, + "end": { + "line": 23, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 471, + "end": 472, + "loc": { + "start": { + "line": 23, + "column": 13 + }, + "end": { + "line": 23, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 472, + "end": 482, + "loc": { + "start": { + "line": 23, + "column": 14 + }, + "end": { + "line": 23, + "column": 24 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 482, + "end": 483, + "loc": { + "start": { + "line": 23, + "column": 24 + }, + "end": { + "line": 23, + "column": 25 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 485, + "end": 486, + "loc": { + "start": { + "line": 24, + "column": 1 + }, + "end": { + "line": 24, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 489, + "end": 492, + "loc": { + "start": { + "line": 26, + "column": 1 + }, + "end": { + "line": 26, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 493, + "end": 502, + "loc": { + "start": { + "line": 26, + "column": 5 + }, + "end": { + "line": 26, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 502, + "end": 503, + "loc": { + "start": { + "line": 26, + "column": 14 + }, + "end": { + "line": 26, + "column": 15 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 503, + "end": 512, + "loc": { + "start": { + "line": 26, + "column": 15 + }, + "end": { + "line": 26, + "column": 24 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 512, + "end": 513, + "loc": { + "start": { + "line": 26, + "column": 24 + }, + "end": { + "line": 26, + "column": 25 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 514, + "end": 515, + "loc": { + "start": { + "line": 26, + "column": 26 + }, + "end": { + "line": 26, + "column": 27 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 518, + "end": 522, + "loc": { + "start": { + "line": 27, + "column": 2 + }, + "end": { + "line": 27, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 522, + "end": 523, + "loc": { + "start": { + "line": 27, + "column": 6 + }, + "end": { + "line": 27, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_firstName", + "start": 523, + "end": 533, + "loc": { + "start": { + "line": 27, + "column": 7 + }, + "end": { + "line": 27, + "column": 17 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 534, + "end": 535, + "loc": { + "start": { + "line": 27, + "column": 18 + }, + "end": { + "line": 27, + "column": 19 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "firstName", + "start": 536, + "end": 545, + "loc": { + "start": { + "line": 27, + "column": 20 + }, + "end": { + "line": 27, + "column": 29 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 545, + "end": 546, + "loc": { + "start": { + "line": 27, + "column": 29 + }, + "end": { + "line": 27, + "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 548, + "end": 549, + "loc": { + "start": { + "line": 28, + "column": 1 + }, + "end": { + "line": 28, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 552, + "end": 555, + "loc": { + "start": { + "line": 30, + "column": 1 + }, + "end": { + "line": 30, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 556, + "end": 564, + "loc": { + "start": { + "line": 30, + "column": 5 + }, + "end": { + "line": 30, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 564, + "end": 565, + "loc": { + "start": { + "line": 30, + "column": 13 + }, + "end": { + "line": 30, + "column": 14 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 565, + "end": 566, + "loc": { + "start": { + "line": 30, + "column": 14 + }, + "end": { + "line": 30, + "column": 15 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 567, + "end": 568, + "loc": { + "start": { + "line": 30, + "column": 16 + }, + "end": { + "line": 30, + "column": 17 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 571, + "end": 577, + "loc": { + "start": { + "line": 31, + "column": 2 + }, + "end": { + "line": 31, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 578, + "end": 582, + "loc": { + "start": { + "line": 31, + "column": 9 + }, + "end": { + "line": 31, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 582, + "end": 583, + "loc": { + "start": { + "line": 31, + "column": 13 + }, + "end": { + "line": 31, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 583, + "end": 592, + "loc": { + "start": { + "line": 31, + "column": 14 + }, + "end": { + "line": 31, + "column": 23 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 592, + "end": 593, + "loc": { + "start": { + "line": 31, + "column": 23 + }, + "end": { + "line": 31, + "column": 24 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 595, + "end": 596, + "loc": { + "start": { + "line": 32, + "column": 1 + }, + "end": { + "line": 32, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 599, + "end": 602, + "loc": { + "start": { + "line": 34, + "column": 1 + }, + "end": { + "line": 34, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 603, + "end": 611, + "loc": { + "start": { + "line": 34, + "column": 5 + }, + "end": { + "line": 34, + "column": 13 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 611, + "end": 612, + "loc": { + "start": { + "line": 34, + "column": 13 + }, + "end": { + "line": 34, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 612, + "end": 620, + "loc": { + "start": { + "line": 34, + "column": 14 + }, + "end": { + "line": 34, + "column": 22 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 620, + "end": 621, + "loc": { + "start": { + "line": 34, + "column": 22 + }, + "end": { + "line": 34, + "column": 23 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 622, + "end": 623, + "loc": { + "start": { + "line": 34, + "column": 24 + }, + "end": { + "line": 34, + "column": 25 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 626, + "end": 630, + "loc": { + "start": { + "line": 35, + "column": 2 + }, + "end": { + "line": 35, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 630, + "end": 631, + "loc": { + "start": { + "line": 35, + "column": 6 + }, + "end": { + "line": 35, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_lastName", + "start": 631, + "end": 640, + "loc": { + "start": { + "line": 35, + "column": 7 + }, + "end": { + "line": 35, + "column": 16 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 641, + "end": 642, + "loc": { + "start": { + "line": 35, + "column": 17 + }, + "end": { + "line": 35, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "lastName", + "start": 643, + "end": 651, + "loc": { + "start": { + "line": 35, + "column": 19 + }, + "end": { + "line": 35, + "column": 27 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 651, + "end": 652, + "loc": { + "start": { + "line": 35, + "column": 27 + }, + "end": { + "line": 35, + "column": 28 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 654, + "end": 655, + "loc": { + "start": { + "line": 36, + "column": 1 + }, + "end": { + "line": 36, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "get", + "start": 658, + "end": 661, + "loc": { + "start": { + "line": 38, + "column": 1 + }, + "end": { + "line": 38, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 662, + "end": 665, + "loc": { + "start": { + "line": 38, + "column": 5 + }, + "end": { + "line": 38, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 665, + "end": 666, + "loc": { + "start": { + "line": 38, + "column": 8 + }, + "end": { + "line": 38, + "column": 9 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 666, + "end": 667, + "loc": { + "start": { + "line": 38, + "column": 9 + }, + "end": { + "line": 38, + "column": 10 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 668, + "end": 669, + "loc": { + "start": { + "line": 38, + "column": 11 + }, + "end": { + "line": 38, + "column": 12 + } + } + }, + { + "type": { + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "return", + "start": 672, + "end": 678, + "loc": { + "start": { + "line": 39, + "column": 2 + }, + "end": { + "line": 39, + "column": 8 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 679, + "end": 683, + "loc": { + "start": { + "line": 39, + "column": 9 + }, + "end": { + "line": 39, + "column": 13 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 683, + "end": 684, + "loc": { + "start": { + "line": 39, + "column": 13 + }, + "end": { + "line": 39, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 684, + "end": 688, + "loc": { + "start": { + "line": 39, + "column": 14 + }, + "end": { + "line": 39, + "column": 18 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 688, + "end": 689, + "loc": { + "start": { + "line": 39, + "column": 18 + }, + "end": { + "line": 39, + "column": 19 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 691, + "end": 692, + "loc": { + "start": { + "line": 40, + "column": 1 + }, + "end": { + "line": 40, + "column": 2 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "set", + "start": 695, + "end": 698, + "loc": { + "start": { + "line": 42, + "column": 1 + }, + "end": { + "line": 42, + "column": 4 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 699, + "end": 702, + "loc": { + "start": { + "line": 42, + "column": 5 + }, + "end": { + "line": 42, + "column": 8 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 702, + "end": 703, + "loc": { + "start": { + "line": 42, + "column": 8 + }, + "end": { + "line": 42, + "column": 9 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 703, + "end": 706, + "loc": { + "start": { + "line": 42, + "column": 9 + }, + "end": { + "line": 42, + "column": 12 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 706, + "end": 707, + "loc": { + "start": { + "line": 42, + "column": 12 + }, + "end": { + "line": 42, + "column": 13 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 708, + "end": 709, + "loc": { + "start": { + "line": 42, + "column": 14 + }, + "end": { + "line": 42, + "column": 15 + } + } + }, + { + "type": { + "label": "this", + "keyword": "this", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "this", + "start": 712, + "end": 716, + "loc": { + "start": { + "line": 43, + "column": 2 + }, + "end": { + "line": 43, + "column": 6 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 716, + "end": 717, + "loc": { + "start": { + "line": 43, + "column": 6 + }, + "end": { + "line": 43, + "column": 7 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "_age", + "start": 717, + "end": 721, + "loc": { + "start": { + "line": 43, + "column": 7 + }, + "end": { + "line": 43, + "column": 11 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 722, + "end": 723, + "loc": { + "start": { + "line": 43, + "column": 12 + }, + "end": { + "line": 43, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "age", + "start": 724, + "end": 727, + "loc": { + "start": { + "line": 43, + "column": 14 + }, + "end": { + "line": 43, + "column": 17 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 727, + "end": 728, + "loc": { + "start": { + "line": 43, + "column": 17 + }, + "end": { + "line": 43, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 730, + "end": 731, + "loc": { + "start": { + "line": 44, + "column": 1 + }, + "end": { + "line": 44, + "column": 2 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 733, + "end": 734, + "loc": { + "start": { + "line": 46, + "column": 0 + }, + "end": { + "line": 46, + "column": 1 + } + } + }, + { + "type": { + "label": "eof", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 735, + "end": 735, + "loc": { + "start": { + "line": 47, + "column": 0 + }, + "end": { + "line": 47, + "column": 0 + } + } + } + ] +} \ No newline at end of file diff --git a/Kapitel5/documentation/esdoc/docs/badge.svg b/Kapitel5/documentation/esdoc/docs/badge.svg new file mode 100644 index 0000000..7a927d9 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + 10% + 10% + + diff --git a/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Calculator.html b/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Calculator.html new file mode 100644 index 0000000..c1e92e8 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Calculator.html @@ -0,0 +1,533 @@ + + + + + + Calculator | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +
+
import Calculator from 'esdoc-examples/src/Calculator.js'
+ public + class + + + + | source +
+ +
+

Calculator

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

Method Summary

+ + + + + + + + + + + + + + + + + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + add(x: number, b: number): number +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + div(x: *, y: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + prod(x: *, y: *): * +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + sub(x: *, y: *): * +

+
+
+ + + +
+
+ + +
+
+ + + + + + + +

Public Methods

+ +
+

+ public + + + + + + add(x: number, b: number): number + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
xnumber

First number.

+
bnumber

Second number.

+
+
+
+ +
+

Return:

+ + + + + + + +
number

Sum of both numbers.

+
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + div(x: *, y: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
x*
y*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + prod(x: *, y: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
x*
y*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + sub(x: *, y: *): * + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
x*
y*
+
+
+ +
+

Return:

+ + + + + + + +
*
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Person.html b/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Person.html new file mode 100644 index 0000000..d66967f --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/class/src/Calculator.js~Person.html @@ -0,0 +1,815 @@ + + + + + + Person | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +
+ + public + class + + + + | source +
+ +
+

Person

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

Constructor Summary

+ + + + + + + + + +
Public Constructor
+ public + + + + + +
+

+ + + constructor(firstName: string, lastName: string, age: number) +

+
+
+ + + +
+
+ + +
+
+

Member Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Public Members
+ public + + get + + + +
+

+ + + age: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + age: * +

+
+
+ + + +
+
+ + +
+ public + + get + + + +
+

+ + + firstName: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + firstName: * +

+
+
+ + + +
+
+ + +
+ public + + get + + + +
+

+ + + lastName: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + lastName: * +

+
+
+ + + +
+
+ + +
+
+

Method Summary

+ + + + + + + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + greet(): string +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + toString(): string +

+
+
+ + + +
+
+ + +
+
+ + + + + +

Public Constructors

+ +
+

+ public + + + + + + constructor(firstName: string, lastName: string, age: number) + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
firstNamestring

First name of the person.

+
lastNamestring

Last name of the person.

+
agenumber

Age of the person.

+
+
+
+ + + + + + + + + + + + + + + + + +
+
+

Public Members

+ +
+

+ public + + get + + + + age: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + age: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + get + + + + firstName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + firstName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + get + + + + lastName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + lastName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

Public Methods

+ +
+

+ public + + + + + + greet(): string + + + + source + +

+ + + + + + + + +
+
+ +
+

Return:

+ + + + + + + +
string
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toString(): string + + + + source + +

+ + + + + + + + +
+
+ +
+

Return:

+ + + + + + + +
string
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/class/src/Person.js~Person.html b/Kapitel5/documentation/esdoc/docs/class/src/Person.js~Person.html new file mode 100644 index 0000000..19ac9f5 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/class/src/Person.js~Person.html @@ -0,0 +1,815 @@ + + + + + + Person | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +
+
import Person from 'esdoc-examples/src/Person.js'
+ public + class + + + + | source +
+ +
+

Person

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

Constructor Summary

+ + + + + + + + + +
Public Constructor
+ public + + + + + +
+

+ + + constructor(firstName: string, lastName: string, age: number) +

+
+
+ + + +
+
+ + +
+
+

Member Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Public Members
+ public + + get + + + +
+

+ + + age: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + age: * +

+
+
+ + + +
+
+ + +
+ public + + get + + + +
+

+ + + firstName: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + firstName: * +

+
+
+ + + +
+
+ + +
+ public + + get + + + +
+

+ + + lastName: * +

+
+
+ + + +
+
+ + +
+ public + + set + + + +
+

+ + + lastName: * +

+
+
+ + + +
+
+ + +
+
+

Method Summary

+ + + + + + + + + + + + + + +
Public Methods
+ public + + + + + +
+

+ + + greet(): string +

+
+
+ + + +
+
+ + +
+ public + + + + + +
+

+ + + toString(): string +

+
+
+ + + +
+
+ + +
+
+ + + + + +

Public Constructors

+ +
+

+ public + + + + + + constructor(firstName: string, lastName: string, age: number) + + + + source + +

+ + + + + + + + +
+

Params:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributeDescription
firstNamestring

First name of the person.

+
lastNamestring

Last name of the person.

+
agenumber

Age of the person.

+
+
+
+ + + + + + + + + + + + + + + + + +
+
+

Public Members

+ +
+

+ public + + get + + + + age: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + age: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + get + + + + firstName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + firstName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + get + + + + lastName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

+ public + + set + + + + lastName: * + + + + source + +

+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+

Public Methods

+ +
+

+ public + + + + + + greet(): string + + + + source + +

+ + + + + + + + +
+
+ +
+

Return:

+ + + + + + + +
string
+
+
+
+ + + + + + + + + + + + + + + +
+
+

+ public + + + + + + toString(): string + + + + source + +

+ + + + + + + + +
+
+ +
+

Return:

+ + + + + + + +
string
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/coverage.json b/Kapitel5/documentation/esdoc/docs/coverage.json new file mode 100644 index 0000000..f54e600 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/coverage.json @@ -0,0 +1,22 @@ +{ + "coverage": "10%", + "expectCount": 10, + "actualCount": 1, + "files": { + "src/Person.js": { + "expectCount": 10, + "actualCount": 1, + "undocumentLines": [ + 1, + 38, + 42, + 22, + 26, + 14, + 30, + 34, + 18 + ] + } + } +} \ No newline at end of file diff --git a/Kapitel5/documentation/esdoc/docs/css/prettify-tomorrow.css b/Kapitel5/documentation/esdoc/docs/css/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/css/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/Kapitel5/documentation/esdoc/docs/css/style.css b/Kapitel5/documentation/esdoc/docs/css/style.css new file mode 100644 index 0000000..5ad3785 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/css/style.css @@ -0,0 +1,1024 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600,700); + +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +html +{ + font-family: 'Source Sans Pro', 'Roboto', sans-serif; + overflow: auto; + /*font-size: 14px;*/ + /*color: #4d4e53;*/ + /*color: rgba(0, 0, 0, .68);*/ + color: #555; + background-color: #fff; +} + +a { + /*color: #0095dd;*/ + /*color:rgb(37, 138, 175);*/ + color: #039BE5; +} + +code a:hover { + text-decoration: underline; +} + +ul, ol { + padding-left: 20px; +} + +ul li { + list-style: disc; + margin: 4px 0; +} + +ol li { + margin: 4px 0; +} + +h1 { + margin-bottom: 10px; + font-size: 34px; + font-weight: 300; + border-bottom: solid 1px #ddd; +} + +h2 { + margin-top: 24px; + margin-bottom: 10px; + font-size: 20px; + border-bottom: solid 1px #ddd; + font-weight: 300; +} + +h3 { + position: relative; + font-size: 16px; + margin-bottom: 12px; + background-color: #E2E2E2; + padding: 4px; + font-weight: 300; +} + +del { + text-decoration: line-through; +} + +p { + margin-bottom: 15px; + line-height: 1.5; +} + +pre > code { + display: block; +} + +pre.prettyprint, pre > code { + padding: 4px; + margin: 1em 0; + background-color: #f5f5f5; + border-radius: 3px; +} + +pre.prettyprint > code { + margin: 0; +} + +p > code, +li > code { + padding: 0.2em 0.5em; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +.import-path pre.prettyprint, +.import-path pre.prettyprint code { + margin: 0; + padding: 0; + border: none; + background: white; +} + +.layout-container { + /*display: flex;*/ + /*flex-direction: row;*/ + /*justify-content: flex-start;*/ + /*align-items: stretch;*/ +} + +.layout-container > header { + height: 40px; + line-height: 40px; + font-size: 16px; + padding: 0 10px; + margin: 0; + position: fixed; + width: 100%; + z-index: 1; + background-color: #fafafa; + top: 0; + border-bottom: solid 1px #ddd; +} +.layout-container > header > a{ + margin: 0 5px; + color: #444; +} + +.layout-container > header > a.repo-url-github { + font-size: 0; + display: inline-block; + width: 20px; + height: 38px; + background: url("../image/github.png") no-repeat center; + background-size: 20px; + vertical-align: top; +} + +.navigation { + position: fixed; + top: 0; + left: 0; + box-sizing: border-box; + width: 250px; + height: 100%; + padding-top: 40px; + padding-left: 15px; + padding-bottom: 2em; + margin-top:1em; + overflow-x: scroll; + box-shadow: rgba(255, 255, 255, 1) -1px 0 0 inset; + border-right: 1px solid #ddd; +} + +.navigation ul { + padding: 0; +} + +.navigation li { + list-style: none; + margin: 4px 0; + white-space: nowrap; +} + +.navigation li a { + color: #666; +} + +.navigation .nav-dir-path { + margin-top: 0.7em; + margin-bottom: 0.25em; + font-size: 0.8em; + color: #aaa; +} + +.kind-class, +.kind-interface, +.kind-function, +.kind-typedef, +.kind-variable, +.kind-external { + margin-left: 0.75em; + width: 1.2em; + height: 1.2em; + display: inline-block; + text-align: center; + border-radius: 0.2em; + margin-right: 0.2em; + font-weight: bold; +} + +.kind-class { + color: #009800; + background-color: #bfe5bf; +} + +.kind-interface { + color: #fbca04; + background-color: #fef2c0; +} + +.kind-function { + color: #6b0090; + background-color: #d6bdde; +} + +.kind-variable { + color: #eb6420; + background-color: #fad8c7; +} + +.kind-typedef { + color: #db001e; + background-color: #edbec3; +} + +.kind-external { + color: #0738c3; + background-color: #bbcbea; +} + +h1 .version, +h1 .url a { + font-size: 14px; + color: #aaa; +} + +.content { + margin-top: 40px; + margin-left: 250px; + padding: 10px 50px 10px 20px; +} + +.header-notice { + font-size: 14px; + color: #aaa; + margin: 0; +} + +.expression-extends .prettyprint { + margin-left: 10px; + background: white; +} + +.extends-chain { + border-bottom: 1px solid#ddd; + padding-bottom: 10px; + margin-bottom: 10px; +} + +.extends-chain span:nth-of-type(1) { + padding-left: 10px; +} + +.extends-chain > div { + margin: 5px 0; +} + +.description table { + font-size: 14px; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +.description thead { + background: #999; + color: white; +} + +.description table td, +.description table th { + border: solid 1px #ddd; + padding: 4px; + font-weight: normal; +} + +.flat-list ul { + padding-left: 0; +} + +.flat-list li { + display: inline; + list-style: none; +} + +table.summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.summary thead { + background: #999; + color: white; +} + +table.summary td { + border: solid 1px #ddd; + padding: 4px 10px; +} + +table.summary tbody td:nth-child(1) { + text-align: right; + white-space: nowrap; + min-width: 64px; + vertical-align: top; +} + +table.summary tbody td:nth-child(2) { + width: 100%; + border-right: none; +} + +table.summary tbody td:nth-child(3) { + white-space: nowrap; + border-left: none; + vertical-align: top; +} + +table.summary td > div:nth-of-type(2) { + padding-top: 4px; + padding-left: 15px; +} + +table.summary td p { + margin-bottom: 0; +} + +.inherited-summary thead td { + padding-left: 2px; +} + +.inherited-summary thead a { + color: white; +} + +.inherited-summary .summary tbody { + display: none; +} + +.inherited-summary .summary .toggle { + padding: 0 4px; + font-size: 12px; + cursor: pointer; +} +.inherited-summary .summary .toggle.closed:before { + content: "▶"; +} +.inherited-summary .summary .toggle.opened:before { + content: "▼"; +} + +.member, .method { + margin-bottom: 24px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #eee; + color: #aaa; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.content .detail > * { + margin: 15px 0; +} + +.content .detail > h3 { + color: black; +} + +.content .detail > div { + margin-left: 10px; +} + +.content .detail > .import-path { + margin-top: -8px; +} + +.content .detail + .detail { + margin-top: 30px; +} + +.content .detail .throw td:first-child { + padding-right: 10px; +} + +.content .detail h4 + :not(pre) { + padding-left: 0; + margin-left: 10px; +} + +.content .detail h4 + ul li { + list-style: none; +} + +.return-param * { + display: inline; +} + +.argument-params { + margin-bottom: 20px; +} + +.return-type { + padding-right: 10px; + font-weight: normal; +} + +.return-desc { + margin-left: 10px; + margin-top: 4px; +} + +.return-desc p { + margin: 0; +} + +.deprecated, .experimental, .instance-docs { + border-left: solid 5px orange; + padding-left: 4px; + margin: 4px 0; +} + +tr.listen p, +tr.throw p, +tr.emit p{ + margin-bottom: 10px; +} + +.version, .since { + color: #aaa; +} + +h3 .right-info { + position: absolute; + right: 4px; + font-size: 14px; +} + +.version + .since:before { + content: '| '; +} + +.see { + margin-top: 10px; +} + +.see h4 { + margin: 4px 0; +} + +.content .detail h4 + .example-doc { + margin: 6px 0; +} + +.example-caption { + position: relative; + bottom: -1px; + display: inline-block; + padding: 4px; + font-style: italic; + background-color: #f5f5f5; + font-weight: bold; + border-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.example-caption + pre.source-code { + margin-top: 0; + border-top-left-radius: 0; +} + +footer, .file-footer { + text-align: right; + font-style: italic; + font-weight: 100; + font-size: 13px; + margin-right: 50px; + margin-left: 270px; + border-top: 1px solid #ddd; + padding-top: 30px; + margin-top: 20px; + padding-bottom: 10px; +} + +footer img { + width: 24px; + vertical-align: middle; + padding-left: 4px; + position: relative; + top: -3px; + opacity: 0.6; +} + +pre.source-code { + background: #f5f5f5; + padding: 4px; +} + +pre.raw-source-code > code { + padding: 0; + margin: 0; +} + +pre.source-code.line-number { + padding: 0; +} + +pre.source-code ol { + background: #eee; + padding-left: 40px; +} + +pre.source-code li { + background: white; + padding-left: 4px; + list-style: decimal; + margin: 0; +} + +pre.source-code.line-number li.active { + background: rgb(255, 255, 150); +} + +pre.source-code.line-number li.error-line { + background: #ffb8bf; +} + +table.files-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; + text-align: right; +} + +table.files-summary tbody tr:hover { + background: #eee; +} + +table.files-summary td:first-child, +table.files-summary td:nth-of-type(2) { + text-align: left; +} + +table.files-summary[data-use-coverage="false"] td.coverage { + display: none; +} + +table.files-summary thead { + background: #999; + color: white; +} + +table.files-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.files-summary td.identifiers > span { + display: block; + margin-top: 4px; +} +table.files-summary td.identifiers > span:first-child { + margin-top: 0; +} + +table.files-summary .coverage-count { + font-size: 12px; + color: #aaa; + display: inline-block; + min-width: 40px; +} + +.total-coverage-count { + position: relative; + bottom: 2px; + font-size: 12px; + color: #666; + font-weight: 500; + padding-left: 5px; +} + +table.test-summary thead { + background: #999; + color: white; +} + +table.test-summary thead .test-description { + width: 50%; +} + +table.test-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.test-summary thead .test-count { + width: 3em; +} + +table.test-summary tbody tr:hover { + background-color: #eee; +} + +table.test-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.test-summary td p { + margin: 0; +} + +table.test-summary tr.test-describe .toggle { + display: inline-block; + float: left; + margin-right: 4px; + cursor: pointer; + font-size: 0.8em; + padding-top: 0.25em; +} + +table.test-summary tr.test-describe .toggle.opened:before { + content: '▼'; +} + +table.test-summary tr.test-describe .toggle.closed:before { + content: '▶'; +} + +table.test-summary .test-target > span { + display: block; + margin-top: 4px; +} +table.test-summary .test-target > span:first-child { + margin-top: 0; +} + +.inner-link-active { + background: rgb(255, 255, 150); +} + +/* search box */ +.search-box { + position: absolute; + top: 10px; + right: 50px; + padding-right: 8px; + padding-bottom: 10px; + line-height: normal; + font-size: 12px; +} + +.search-box img { + width: 20px; + vertical-align: top; +} + +.search-input { + display: inline; + visibility: hidden; + width: 0; + padding: 2px; + height: 1.5em; + outline: none; + background: transparent; + border: 1px #0af; + border-style: none none solid none; + vertical-align: bottom; +} + +.search-input-edge { + display: none; + width: 1px; + height: 5px; + background-color: #0af; + vertical-align: bottom; +} + +.search-result { + position: absolute; + display: none; + height: 600px; + width: 100%; + padding: 0; + margin-top: 5px; + margin-left: 24px; + background: white; + box-shadow: 1px 1px 4px rgb(0,0,0); + white-space: nowrap; + overflow-y: scroll; +} + +.search-result-import-path { + color: #aaa; + font-size: 12px; +} + +.search-result li { + list-style: none; + padding: 2px 4px; +} + +.search-result li a { + display: block; +} + +.search-result li.selected { + background: #ddd; +} + +.search-result li.search-separator { + background: rgb(37, 138, 175); + color: white; +} + +.search-box.active .search-input { + visibility: visible; + transition: width 0.2s ease-out; + width: 300px; +} + +.search-box.active .search-input-edge { + display: inline-block; +} + +.github-markdown .manual-toc { + padding-left: 0; +} + +/** manual */ + +.manual-index .manual-cards { + display: flex; + flex-wrap: wrap; +} + +.manual-index .manual-card-wrap { + width: 280px; + padding: 10px 20px 10px 0; + box-sizing: border-box; +} + +.manual-index .manual-card-wrap > h1 { + margin: 0; + font-size: 1em; + font-weight: 600; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em 0.1em 0 0; + border: none; +} + +.manual-index .manual-card-wrap > h1 span { + color: #555; +} + +.manual-index .manual-card { + height: 200px; + overflow: hidden; + border: solid 1px rgba(230, 230, 230, 0.84); + border-radius: 0 0 0.1em 0.1em; + padding: 8px; + position: relative; + border-top: none; +} + +.manual-index .manual-card > div { + transform: scale(0.4); + transform-origin: 0 0; + width: 250%; +} + +.manual-index .manual-card > a { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(210, 210, 210, 0.1); +} + +.manual-index .manual-card > a:hover { + background: none; +} + +.manual-index .manual-badge { + margin: 0; +} + +.manual-index .manual-user-index { + margin-bottom: 1em; + border-bottom: solid 1px #ddd; +} + +.manual-root .navigation { + padding-left: 4px; + margin-top: 4px; +} + +.navigation .manual-toc { + margin-top: -0.25em; +} + +.navigation .manual-toc-root > div { + padding-top: 1px; + padding-left: 0.25em; + padding-right: 0.75em; +} + +.github-markdown .manual-toc-title a { + color: inherit; +} + +.manual-breadcrumb-list { + font-size: 0.8em; + margin-bottom: 1em; +} + +.manual-toc-title a:hover { + color: #039BE5; +} + +.manual-toc li { + margin: 0.75em 0; + list-style-type: none; +} + +.navigation .manual-toc [class^="indent-h"] a { + color: #666; +} + +.navigation .manual-toc .indent-h1 a { + color: #555; + font-weight: 600; + display: block; +} + +.manual-toc .indent-h1 { + display: block; + margin: 1em 0 0 0.25em; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em; +} +.manual-toc .indent-h2 { + display: none; + margin-left: 1.5em; +} +.manual-toc .indent-h3 { + display: none; + margin-left: 2.5em; +} +.manual-toc .indent-h4 { + display: none; + margin-left: 3.5em; +} +.manual-toc .indent-h5 { + display: none; + margin-left: 4.5em; +} + +.manual-color { + position: relative; +} + +.manual-color:after { + content: attr(data-section-count); + font-size: 0.5em; + opacity: 0.5; + position: absolute; + right: 0.5em; + top: 0.5em; +} + +.manual-color-overview, +.manual-color-design { + color: #db001e; + background-color: #edbec3; +} + +.manual-color-installation, +.manual-color-tutorial, +.manual-color-usage, +.manual-color-configuration, +.manual-color-advanced { + color: #009800; + background-color: #bfe5bf; +} + +.manual-color-example { + color: #eb6420; + background-color: #fad8c7; +} + +.manual-color-reference { + color: #6b0090; + background-color: #d6bdde; +} + +.manual-color-faq, +.manual-color-changelog { + color: #0738c3; + background-color: #bbcbea; +} + +.manual-nav li { + margin: 0.75em 0; +} + +/* github markdown */ +.github-markdown { + font-size: 16px; +} + +.github-markdown h1, +.github-markdown h2, +.github-markdown h3, +.github-markdown h4, +.github-markdown h5 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + padding: 0; +} + +.github-markdown h1:nth-of-type(1) { + margin-top: 0; +} + +.github-markdown h1 { + font-size: 2em; + padding-bottom: 0.3em; +} + +.github-markdown h2 { + font-size: 1.75em; + padding-bottom: 0.3em; +} + +.github-markdown h3 { + font-size: 1.5em; + background-color: transparent; +} + +.github-markdown h4 { + font-size: 1.25em; +} + +.github-markdown h5 { + font-size: 1em; +} + +.github-markdown ul, .github-markdown ol { + padding-left: 2em; +} + +.github-markdown pre > code { + font-size: 0.85em; +} + +.github-markdown table { + margin-bottom: 1em; + border-collapse: collapse; + border-spacing: 0; +} + +.github-markdown table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +.github-markdown table th, +.github-markdown table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +.github-markdown table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.github-markdown hr { + border-right: 0; + border-bottom: 1px solid #e5e5e5; + border-left: 0; + border-top: 0; +} + +/** badge(.svg) does not have border */ +.github-markdown img:not([src*=".svg"]) { + max-width: 100%; + box-shadow: 1px 1px 1px rgba(0,0,0,0.5); +} diff --git a/Kapitel5/documentation/esdoc/docs/dump.json b/Kapitel5/documentation/esdoc/docs/dump.json new file mode 100644 index 0000000..32bf358 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/dump.json @@ -0,0 +1,1082 @@ +[ + { + "__docId__": 0, + "kind": "file", + "name": "src/Person.js", + "content": "export default class Person {\n\n\t/**\n \t* @param {string} firstName - First name of the person.\n\t* @param {string} lastName - Last name of the person.\n\t* @param {number} age - Age of the person.\n\t*/\n\tconstructor(firstName, lastName, age) {\n\t\tthis._firstName = firstName;\n\t\tthis._lastName = lastName;\n\t\tthis._age = age;\n\t}\n\n\tgreet() {\n\t\treturn 'Hello';\n\t}\n\n\ttoString() {\n\t\treturn `${this.firstName} ${this.lastName}, ${this.age} old.`;\n\t}\n\n\tget firstName() {\n\t\treturn this._firstName;\n\t}\n\n\tset firstName(firstName) {\n\t\tthis._firstName = firstName;\n\t}\n\n\tget lastName() {\n\t\treturn this._lastName;\n\t}\n\n\tset lastName(lastName) {\n\t\tthis._lastName = lastName;\n\t}\n\n\tget age() {\n\t\treturn this._age;\n\t}\n\n\tset age(age) {\n\t\tthis._age = age;\n\t}\n\n}\n", + "static": true, + "longname": "src/Person.js", + "access": null, + "description": null, + "lineNumber": 1 + }, + { + "__docId__": 1, + "kind": "class", + "name": "Person", + "memberof": "src/Person.js", + "static": true, + "longname": "src/Person.js~Person", + "access": null, + "export": true, + "importPath": "esdoc-examples/src/Person.js", + "importStyle": "Person", + "description": null, + "lineNumber": 1, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "interface": false + }, + { + "__docId__": 2, + "kind": "constructor", + "name": "constructor", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#constructor", + "access": null, + "description": "", + "lineNumber": 8, + "params": [ + { + "nullable": null, + "types": [ + "string" + ], + "spread": false, + "optional": false, + "name": "firstName", + "description": "First name of the person." + }, + { + "nullable": null, + "types": [ + "string" + ], + "spread": false, + "optional": false, + "name": "lastName", + "description": "Last name of the person." + }, + { + "nullable": null, + "types": [ + "number" + ], + "spread": false, + "optional": false, + "name": "age", + "description": "Age of the person." + } + ] + }, + { + "__docId__": 3, + "kind": "member", + "name": "_firstName", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_firstName", + "access": null, + "description": null, + "lineNumber": 9, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 4, + "kind": "member", + "name": "_lastName", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_lastName", + "access": null, + "description": null, + "lineNumber": 10, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 5, + "kind": "member", + "name": "_age", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_age", + "access": null, + "description": null, + "lineNumber": 11, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 6, + "kind": "method", + "name": "greet", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#greet", + "access": null, + "description": null, + "lineNumber": 14, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "params": [], + "return": { + "types": [ + "string" + ] + } + }, + { + "__docId__": 7, + "kind": "method", + "name": "toString", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#toString", + "access": null, + "description": null, + "lineNumber": 18, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "params": [], + "return": { + "types": [ + "string" + ] + } + }, + { + "__docId__": 8, + "kind": "get", + "name": "firstName", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#firstName", + "access": null, + "description": null, + "lineNumber": 22, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 9, + "kind": "set", + "name": "firstName", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#firstName", + "access": null, + "description": null, + "lineNumber": 26, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 10, + "kind": "member", + "name": "_firstName", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_firstName", + "access": null, + "description": null, + "lineNumber": 27, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 11, + "kind": "get", + "name": "lastName", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#lastName", + "access": null, + "description": null, + "lineNumber": 30, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 12, + "kind": "set", + "name": "lastName", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#lastName", + "access": null, + "description": null, + "lineNumber": 34, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 13, + "kind": "member", + "name": "_lastName", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_lastName", + "access": null, + "description": null, + "lineNumber": 35, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 14, + "kind": "get", + "name": "age", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#age", + "access": null, + "description": null, + "lineNumber": 38, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 15, + "kind": "set", + "name": "age", + "memberof": "src/Person.js~Person", + "generator": false, + "async": false, + "static": false, + "longname": "src/Person.js~Person#age", + "access": null, + "description": null, + "lineNumber": 42, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 16, + "kind": "member", + "name": "_age", + "memberof": "src/Person.js~Person", + "static": false, + "longname": "src/Person.js~Person#_age", + "access": null, + "description": null, + "lineNumber": 43, + "undocument": true, + "unknown": [ + { + "tagName": "@_undocument", + "tagValue": "" + } + ], + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 18, + "kind": "external", + "name": "Infinity", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Infinity", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 19, + "kind": "external", + "name": "NaN", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~NaN", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 20, + "kind": "external", + "name": "undefined", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~undefined", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 21, + "kind": "external", + "name": "null", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~null", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 22, + "kind": "external", + "name": "Object", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Object", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 23, + "kind": "external", + "name": "object", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~object", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 24, + "kind": "external", + "name": "Function", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Function", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 25, + "kind": "external", + "name": "function", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~function", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 26, + "kind": "external", + "name": "Boolean", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Boolean", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 27, + "kind": "external", + "name": "boolean", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~boolean", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 28, + "kind": "external", + "name": "Symbol", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Symbol", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 29, + "kind": "external", + "name": "Error", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Error", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 30, + "kind": "external", + "name": "EvalError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~EvalError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 31, + "kind": "external", + "name": "InternalError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~InternalError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 32, + "kind": "external", + "name": "RangeError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~RangeError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 33, + "kind": "external", + "name": "ReferenceError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~ReferenceError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 34, + "kind": "external", + "name": "SyntaxError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~SyntaxError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 35, + "kind": "external", + "name": "TypeError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~TypeError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 36, + "kind": "external", + "name": "URIError", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~URIError", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 37, + "kind": "external", + "name": "Number", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Number", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 38, + "kind": "external", + "name": "number", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~number", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 39, + "kind": "external", + "name": "Date", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Date", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 40, + "kind": "external", + "name": "String", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~String", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 41, + "kind": "external", + "name": "string", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~string", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 42, + "kind": "external", + "name": "RegExp", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~RegExp", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 43, + "kind": "external", + "name": "Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 44, + "kind": "external", + "name": "Int8Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Int8Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 45, + "kind": "external", + "name": "Uint8Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 46, + "kind": "external", + "name": "Uint8ClampedArray", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 47, + "kind": "external", + "name": "Int16Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Int16Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 48, + "kind": "external", + "name": "Uint16Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint16Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 49, + "kind": "external", + "name": "Int32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Int32Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 50, + "kind": "external", + "name": "Uint32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint32Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 51, + "kind": "external", + "name": "Float32Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Float32Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 52, + "kind": "external", + "name": "Float64Array", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Float64Array", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 53, + "kind": "external", + "name": "Map", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Map", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 54, + "kind": "external", + "name": "Set", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Set", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 55, + "kind": "external", + "name": "WeakMap", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakMap", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 56, + "kind": "external", + "name": "WeakSet", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakSet", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 57, + "kind": "external", + "name": "ArrayBuffer", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 58, + "kind": "external", + "name": "DataView", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~DataView", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 59, + "kind": "external", + "name": "JSON", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~JSON", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 60, + "kind": "external", + "name": "Promise", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Promise", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 61, + "kind": "external", + "name": "Generator", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Generator", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 62, + "kind": "external", + "name": "GeneratorFunction", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 63, + "kind": "external", + "name": "Reflect", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Reflect", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 64, + "kind": "external", + "name": "Proxy", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy", + "memberof": "BuiltinExternal/ECMAScriptExternal.js", + "static": true, + "longname": "BuiltinExternal/ECMAScriptExternal.js~Proxy", + "access": null, + "description": "", + "lineNumber": 193, + "builtinExternal": true + }, + { + "__docId__": 66, + "kind": "external", + "name": "CanvasRenderingContext2D", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 67, + "kind": "external", + "name": "DocumentFragment", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~DocumentFragment", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 68, + "kind": "external", + "name": "Element", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Element", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~Element", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 69, + "kind": "external", + "name": "Event", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Event", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~Event", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 70, + "kind": "external", + "name": "Node", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Node", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~Node", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 71, + "kind": "external", + "name": "NodeList", + "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~NodeList", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 72, + "kind": "external", + "name": "XMLHttpRequest", + "externalLink": "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest", + "access": null, + "description": "", + "builtinExternal": true + }, + { + "__docId__": 73, + "kind": "external", + "name": "AudioContext", + "externalLink": "https://developer.mozilla.org/en/docs/Web/API/AudioContext", + "memberof": "BuiltinExternal/WebAPIExternal.js", + "static": true, + "longname": "BuiltinExternal/WebAPIExternal.js~AudioContext", + "access": null, + "description": "", + "lineNumber": 34, + "builtinExternal": true + } +] \ No newline at end of file diff --git a/Kapitel5/documentation/esdoc/docs/file/src/Calculator.js.html b/Kapitel5/documentation/esdoc/docs/file/src/Calculator.js.html new file mode 100644 index 0000000..1b2b29a --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/file/src/Calculator.js.html @@ -0,0 +1,103 @@ + + + + + + src/Calculator.js | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +

src/Calculator.js

+
export default class Person {
+
+	/**
+   	* @param {string} firstName - First name of the person.
+	* @param {string} lastName - Last name of the person.
+	* @param {number} age - Age of the person.
+	*/
+	constructor(firstName, lastName, age) {
+		this._firstName = firstName;
+		this._lastName = lastName;
+		this._age = age;
+	}
+
+	greet() {
+		return 'Hello';
+	}
+
+	toString() {
+		return `${this.firstName} ${this.lastName}, ${this.age} old.`;
+	}
+
+	get firstName() {
+		return this._firstName;
+	}
+
+	set firstName(firstName) {
+		this._firstName = firstName;
+	}
+
+	get lastName() {
+		return this._lastName;
+	}
+
+	set lastName(lastName) {
+		this._lastName = lastName;
+	}
+
+	get age() {
+		return this._age;
+	}
+
+	set age(age) {
+		this._age = age;
+	}
+
+}
+
+ +
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/file/src/Person.js.html b/Kapitel5/documentation/esdoc/docs/file/src/Person.js.html new file mode 100644 index 0000000..80074b5 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/file/src/Person.js.html @@ -0,0 +1,103 @@ + + + + + + src/Person.js | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +

src/Person.js

+
export default class Person {
+
+	/**
+   	* @param {string} firstName - First name of the person.
+	* @param {string} lastName - Last name of the person.
+	* @param {number} age - Age of the person.
+	*/
+	constructor(firstName, lastName, age) {
+		this._firstName = firstName;
+		this._lastName = lastName;
+		this._age = age;
+	}
+
+	greet() {
+		return 'Hello';
+	}
+
+	toString() {
+		return `${this.firstName} ${this.lastName}, ${this.age} old.`;
+	}
+
+	get firstName() {
+		return this._firstName;
+	}
+
+	set firstName(firstName) {
+		this._firstName = firstName;
+	}
+
+	get lastName() {
+		return this._lastName;
+	}
+
+	set lastName(lastName) {
+		this._lastName = lastName;
+	}
+
+	get age() {
+		return this._age;
+	}
+
+	set age(age) {
+		this._age = age;
+	}
+
+}
+
+ +
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/identifiers.html b/Kapitel5/documentation/esdoc/docs/identifiers.html new file mode 100644 index 0000000..4eb90c0 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/identifiers.html @@ -0,0 +1,94 @@ + + + + + + Index | API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +

References

+

Class Summary

+ + + + + + + + + +
Static Public Class Summary
+ public + + + + + +
+

+ + + Person +

+
+
+ + + +
+
+ + +
+
+ + + + + +
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/image/badge.svg b/Kapitel5/documentation/esdoc/docs/image/badge.svg new file mode 100644 index 0000000..b18426b --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/image/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + @ratio@ + @ratio@ + + diff --git a/Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini-black.png b/Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini-black.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5f9a254a27bdd14a2156eb3c66fbe2daa89459 GIT binary patch literal 5651 zcmY*d2UJtdwmt!Zp;zf86hWkgE*%2W3`L{`P)aC4S|C(G2u*qurArqD=>pPAKoF#Z zNC!nJA`qoW6E6PuzWd%gYt5ONz4v_Ie0$BDwbzL?GSH?XXCnsyfJ#?K)A+Ji``aL- zm+x{Hucgb5#93Wm9RO;RDbDP`mvbme$5eE)oDvE={-%0PuwYz;{~!P{;%T zW=w9&9i>YL8Ab<*1po?$zYPRr=du6*2&33+*WahRmIq@?I&geW%9!^bW_ z)C0@+Z;=1N(R9S3yj?IpE}kCHzqoexp1wZHyu5#j{`>rUpFS>5|I6fo{g13mf#QEX z;u2yo@&969E>-$#RWS5+alB;yi?1S~^iSmfv;BuhN&GMQ|JlsHmHuPBl&V6mB>vyD zsgNV^f=B>hLOGG@svstB_ zrWm`Ox%8gLS?SW%>$}c9A;OeCH!6OG>Q7Rvu;~n0c9Wggr+RKOC--3LRl}0iMzbEc zG{p2+*D-6*{$TVO&dL4Fuq;;PWTV(-Y7Gaq5cH(lU3mI19s=y8b5}EiU<`hXzMss7 zvt_n~1q{tLc^*qX@F=qU*r$#PA7rx&DVOlnV;Pn4SU5@?RXL?p2Z=$Z7evr3w_apm z_N4FbPLT;kp+G=ZfP=>R5^rso|W&8+^QMsnqa z(NMGZ?iQ_6!3EEv^qJJAS|pOPJ|tJuc4wHHnAATTI4v58V9Raxc2(e;Iv=u5ya%Q4 zQ&L`TUG$q*W24Sq{o9R)!{$ug)E%jE7%ThK>KR*y2lJfxq-rGL5Ul>+sm5QL0JQ z8e?A**woDI@!D`s^ls;cO7Ou)bEvbT|Bm%*`5XuvS!ly_o6Bc>l>cNbEn_@FqD_t@ zBn=1-Tl8OUZx;xKQyyqe#!YXjoFAv7VMGC` zR!JzQEg_LG8_l5Of3C$og;Oo9BwYdLTLc9#i{4bH@Jlb9-jWw)a8#7qKHOPU+~1y; zlcL;>st#lLqwL9WU^xlY~xX<>SjMBl> z-D%O+ua3TD*pzE(Bu-bGJj(mdDU~$@MRw`EY`|36?^4kNPSvrlynEv4?nBFzlBks_ zmdPuyd-aVU#9AYzMsD)$Z;bOHGGRPz2h&!dZd)q%`Nntlh{+w&qed2TVe=}=cxG|x z-Hua_qm!-bL@$z9N8D;v_rnC!djoYv;LrK58e@xonvA!U7s6*=0SoIAL86gsWuIK^ zm`1TY&JdoJ)1V)<+D&WOu6QuBwXKtWPI!7&9byI(Lt#M#cbP2JpK+~j9}0(+Z@*n$ z!kAUxci$oLpev{~z?YeZijN;Qp}BDQDe6#16dVcC6te7^)HIAa9)%`PLd?P`EmB zyjVMW_Kowp*`!St8a-YVl^E;fhN{WF%#Ii$_vSb`u~^GS5oRsR`Ed`m;*cLP23M+| zV|kBoMQfN-diOt6W4s^z18A$T{n8g5~{TZ?HniWU_v+M z{CNG!HsteTb`Kb+X0R}t>p?)KWGir zGFi~vTmi6x%pngt*oLEp#LPFZ@eKLN8GPnXCX>>oDE8L9CCZw2zuyHfYd`%*MLh}w z>8tQ;-EPDTT+6Tkwl1X|eTf$*k_ky}(xRwIfpJVzt{b!U;cUr4IHc`S`e+>!~v+{?()31rtO%sUnTJ4M4S!|8ooP248 z=pN<@IkKC#J6sOEz(L~yGox$Y^zV54Cj6olX?jIFfuf5c18)o4+JR+mOzEbQzKNUg zvu(aSDRsP1Mf+Yz5c3|g+2HUUv(3=pS)JrTMP@Dj&EZK!IO=dEf@VZ7Ms_V1J2DVL z=)QvdMnootV%)D=4&Kv0tnKHLQUc4qc0?kb#Y?3z( z0;M5mk10Wp?EUIK-CwW-U(~v5H5?0f#L1GOGgZpAyTXWvf5c8XxW)0U^}9u(Cn->~ zWQ>`J_&+BHQt@5O-F9uObv?9FEk2v}-^R7MqeyNSC8?et74#Sd9L_q6GT8=#J#f6P z4q*NV`Y#efzjK1vlFO;+`zChh4o@D`B^@3rrOgW&{usRO32rbpYrIG`>&gVU~Oh0*xotspb#YDZOcT=6yf;>5|h z44V*_N9d%5d;Y|S1_iv>h+`t`ese`Bjr{=AILGKW0&DMFt^_TcnwlnEt{gz}tY~)b z3wMTI{!!8)eI7mNz2G)7dsDz(l1{$byXa>qwW6jgVmxd+VG#tE?MtC3m0iNoAslIzvln<#1W(j31=zsI?8F0lZk8{!*$?XXdo z^0xAy{mFE6Ed}POz;n`@=-OLPB#9yABu#*2Ur4B2C!~GaS-kw} z^rY};h%jN^t4ldVJ+%k!Mvzj~J&$0w(GyyMGk)MXZvGM{j3<2V5f!w3G)EVCrl3ab zlTIH#xAoJBDCMwHLp^G%>g@Ep&Q*ruTScO3)LrmiAUK~-VjjxOV*%=>z(Y)$!0E&) zt4+L$zZbBg8SBzydv34MwA~Wv@??HWQc1-JI1n-Zqqz;I-@Lor{Na(4+PEA!1FqGS zzuBUpv1VMfi=+VjDTb_Lf(bm7_J;{iaEGAo7$YHl(q1nH(gdv>oJL8LZDVZsG&41e zhp-d6g0l)u#2#TaN|^BIi()%oC792K5f+?$)S*%ZQL`bdc~vHF-gnO5bP8cmJDX0w z>lLz(Sc@WKviHgZEsb+HKlH$XPI6i6lMN$!q|74JB(oA6y;mmI0#<$vwV^XDFqhSH zmJwM8_2xl)r4ChUUk&;`+o}8t>rWTZ(cYJsr#eC%?00q8?;0|M!(gTmC&RU)^4$}s ztLP`^J|G%WI@(b**KNJk8iDDE7XU|FjpVc=<;vFi{@oEY@->NtB>!2|{s$R`rCb-b z?HS>c<~w!!-%Kj5Fhv;cdx2@F@q2`1f4yu5=qttu_>z+JxKO|U)jo`2G@xpL)1%|q>2_Tc;7A2*uZCQf@NMm=^IoF-9yV+!Es#-kkzT{p zf7p8#DDLC4BxEf_GaX5z1qx6^B?R~ps~8=v!(#ALzESQW@8y&seVWZuCGCY>X64*g zGn`Q83q#dE(rt%xuIXqV%?eEkVUEiZ*RNDZ_*w(0xs3(p`AN`iph;#o@ON$$kx?kM zZcw1G3o4Fj-U?0-$M5HqlIfvStJTrr71SAB%D}H+72A{pP)Qq!$b&}Fki&2nVt&P7 zUEUY(a;35okQ7uq{1A$CN zZpE@`g7$+6$FeXja9i(Hiv-&Zt1k_o?z?IpeY-B$C72&PK`z&PR&k3PP87|b*(V9{ zrp^=t(G(ij2t+;{6ne=*-tX2Slf+6a)V)J$%XOPai&5f_<@kH^Lf`T~Pr)>PTkdJS zst3JH^TQ@jIZOxN3b=$VAxb;iiY1xU^ggt=Eq_d{?}COUclCB(VO|M9C=T(c>9I{X zA-K8Kt6IL_P&8OwhU5Z2wo=@^B}H?!vGn~%&w=0B#SIaZiCa^XD%Z z^_{Wf1D3Cv1%|L-e#5aZDk+&bwHRVR)!%Elh8P&(_Z7l`QV)q>+uYhS^vL+YKUVP6 zz$3QE!(-*oIwwKTjt?y87byhk_b|ph-1!3Go^ekECC zz;6}beQD63rnj(?l|N&50s((MIlKQd){K2f&Q5IHFN0_;W`^d`E&X@>f|LOowR4ZI zrwzCXf)G>T?Y#vQg(bA(l5m{MN{R+`t*dB=T(9AMTFP{Fj^^`|tsV^;Wrw%AZZCVO zDxLAV$omq%M8v}Qvio9=Kkyp2D|gPUc#Ea1tZG2iof?dX@^AFzeGC^-o2|*e#^+6g zj^7w|N&54sn@BNXwwY_vPYptH6Ne>1I{5lFB#QPZWjp4qMn9JTG2D~EA#w|Y;eq!m97s&hZ)3Od{U>EyMP)M+|ukM0?I+`yZU zrn;2ljY&PuXkg z)g7muqqmSo|4x>7zIw1x-t@0y)$;3Ql<^?Ldk1&#v3*cihJWCBdGe$}5593DTsx*9 zB=!0jhQe)O{ViJ`EfFFf?du8DDMxDBG8_%1v(v@{L*;5IQic7t7g7KNN1$>`gdv_UxV7U3OV0%d0Es?^ z;D5*cEJLs`$RbqQsqayR57Xg9S6KPP^$cHs-4%>Y#vVLOu3O z1ylHre28dj|20AXEb!y%m$H$Q$sIIR4#D{inD*0tN*)P*gRQ@;Gg(jWnV6UUhF7XjZ{(!~X@J%1mzn literal 0 HcmV?d00001 diff --git a/Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini.png b/Kapitel5/documentation/esdoc/docs/image/esdoc-logo-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..76ba5b7d8e547bb469f0479736e96707453718b4 GIT binary patch literal 6504 zcmY*;bzD?W-}a%U86yUr-GCsor|Oo z-uM09@AI6`XU@!AbIoV__G5*$QuB-et<%D0Kkh60CueaKq4Igs9$BZXiGf| z;J#8ZMgRal`QL&De8>U;0GhFbo{^`KhPs4}n+vbCts4}^>+ACBfeipsz7h{j7nr9t zldp@jD?-8-!u&6W#6$Zp3}$Bf7sb;F!fd3W#iZco0b>&872@S%md0aZVv_Q(g-hrt zD*tEtLl44i@9FtU0u1)?@!|Cm}FOMsN<=-Oz zPe&1ku<>ws<>}z&%Jf&)8tUfd31MdbYxLje-|O^rfd79dSHyq9dI%8wcLdDO%Lo3i z_QO=Ezo>+!hXd@v`LDh-ztq2&{|Ebzj}-W?`TttXza#w@`Vgu#o)q}MpG_K1z2~X% z!w&eVD$42kqHSmTC7A1H4+LL!RL-a>$cM;=)Npi%^iF@I!c(H-NP*xA(bj^v)p}`W zyJ<`6YWlHDYu|h-N%}Bdz)d6ac#O5%8bMJgr)-8q;?;3T;$kkzPmcr~txB#<9Ic*R zw~z0=R7d{tEwfnL&I%Ymx`cEd+>Sfccb<{mRbDaD)5j18?|ibC#UO4!Pl{jbT(HP^ z?5+q856`f$4R-qAz2v*WI*g6|;u374H*|e75)MCU!XClYvY%*QKAKkbpOK7o7_$`; z5~2vUvM*VRT_4btsuc<7kI7kw*Q?(R?$~c$U=V@C9k+-3dr{%&2cPfnKX-P@e4`{g zEkgSqLrl=yFhMBltes7r_Na8CmtX!a&TNeWI85?&Y9c2E1X254T@2eokS8N` zy5}4A{D{d0ol>(n1mR?W+fM8p19NYirQd>zE}cdaY5Qxl_)A3x|B=+%+E(KBO`?!G zK(WD*(&kWai4$NdFrT#qfyBgAlY%F?!PWgIw>dgP8KIww(hXEE5DL`k#Ip*>)omk{ zeYEmCOXIG#srT%#rRqA47G9o|`@InTa*K6I=e|6zy${#+P@hjLE*3tZ5a_)5zyjE^ z!%jrRI~0C>`>lLV{DQUC`cCgwQxf4XI+q?wTD8tFV*J4(^&cQcc{7nCu6or6weQ5T zM8IyHGP_an`2E{bWN2s=)>gbp^El!BTiD3Bdi{P~#@ue0_Smcug>c~>d<>pdD1bAF z8mBlf)Z0iiN$M5c5W}XSnQUc!nYQ2QeGurmCjBIM>{YO^d#E2x^J;}zhdlGO=CoVy zY~hoYnorJiWlA^u;fv^sL0FL}Mm=n2kBh+-cg7&VxHLUB&IGkzPsM35czyjLv29?~ zgvYU}3(2w&HAXsDlYybs3zucCsWPq%o&6f%u?OZPfV;T+q(s zf`zfxb5mI@=$s`QwJNEB<*P|=SWBLnyd@L)TzPyz1)FvNC;NK*?s!(?bb0dRt>Czr zeE6T{^x#Z5Q{t-K^pK;32s{H>`Z%!Rf*uhQ+jf?1(0K(PVF;XczV;lk@E^*Ehfg%w zPe8`b!yQUhrN2}UR^4rbQ(cyO)idWDS35kXRYhEW>6FuZrxRA2I}xIhO=QzOk5z8W zDT=KXszjzDur^mUd5t~1JmpAiKi&pxI%!!19z{GgjHWoSg9t28O2div=FP zdq1a=K-B4ofi7dCPv^?UH*Y~zGa{-rN-h>y;-FF9yBbK@T(U*g!a~Pu)Kc+t(Qge7 z0dkA%08e(>qTm_dAOC!9>J3WvHEp7nif1Ckq-lmV!=X4P+ihox>rU*PwR$aCyV8jq zb}TG-!CUjB!DHS+HgEfq;!dAL8XYX!m`gz4NgwFkG5dugn@ly!6PnLc{M$K6t}P!k zbgbW>jZ2afyBjj(symPuVTKUJO^>#Ak9gg?j7p6TX-bz?y}jp8~qvB#5Se5^V=}aW80I%R>_i8 zBEv;?G;412xzG%IwF07IC2+fEEW^Z8iUAGf@bKySLzoT_MT{8Xb&Br}Fz1MN>iA{L zfSrD2Xi1r!(RYd-YnM}78*o^AUD<3RA@pWlAlXq7hu$g?zLeowj7yrPSU~otmhrZ0 zHwpW^(|hBcK{A)pOwl&>`Os4yiQ8io_zQ%IHE)U{B+&n^4n{m`UJs8TmC)2C$*n51 z?D6}it6BK_N{7N+JSxbkV|H=MHIO1b__uX=&<44I3F&hq z%rkUs$#n+c5)_1~fj-_xuSz1D*ei2)cU0+qbCCMz>kDfc+Pwu+)K`SX(He{2W(4Td zlL;-IbHDRGe5$Xj&HfkBB`3p#bS*FB41usi-!}`+7S$ZiVB?jRez|kW==5O*|G~1{ zKW$^b7YCg8MLTQP!LPe3#W(iVSq^ukdN+1C^;F^$cYS8^U{ zNgj%oxBZ07|6ZElUTIs(TeTSbr^^XLu04gqd%;e>Jdj1TZbCm^>NGI@Pei01^jfld;$<3;r#y?$SmVa7OW{(=8!6JQ+ z{bYP|aj{5_2~0G(O*=h*36$ZmH{ixQt{AIW)eN6TXw>`V=Cz5-lbKFBfJp++4g6&` z>DFqJV&;k_UiU))UfyI)uv+l5D4Y!l>e%?j_8uLy?CJ}nSBwvWj{)HCO6W4onPI@g+O;RPdB8wY5UTIq<5 z{&wwQwkaR-yH{8NM|V`($wk6OznJJpNqA)j7|!^((m{ml?8nj%x4;nrnvR|C z;aK`h{@~Wp%@8B$PPV-3s-mTeJ<-!KHxu?W^y`ZZNC;CY4a-{c6*?Bslsz)8yymxZgOG+*F=gf(< zISZrQb~LRiNIp#H(;j!z#`_?rK>^W@ONby^cMQtHGx0*j(wyx0E&}|Ns0)HZCjN4? zncg%K6uU#@)^iD#PC*PfmIJidIDbLzJom2l?Xrzyc1zkYyR|Q31kGH4w!)Wa=vb_I z?cEYe+w}KLOW}SWVxNN_0|cD0eWpn?6+exq{R`5X$Ns!s3f{mix2Jl6=P+RV{xvo$ zsxdzJt0P%}87;y0!$)B~@jkQq+cf^R+ySZJ=DHAd{`a)thRqjfQX#*L+ZG4%HO`7< z8jA`l%Q*NyNG>Qit9K9+f(=2$CF_A!U&6DmLnD6shSvDGW zQm%tTr3|v@f%WVrh;ovoxU;AV_|-}e4dR&IHGOLU_)h(}GE;f8D~aQkZ=(g` zfS71bZjt`tijQv>Avb5afv61yVqs#-3{}vF3a#P}Da`&m{&~HFU(XNJ5I>A!VznLa z*NIadvQ8ye6RSZ_!+uttKaJ9{pL!JS7eR}RrgG;2<{>AFM6wh-tdR@YvO8Rzd2V&L zhntk0EK!G>O2A3m4I*TjN@4cPZxr9eAeL3pw(w>FIwU24$J*zks+A|r3=NO-QjgtB zNsa3~9d(gr9)RlN;+5B2zR!0wAJdaH&<3Y<)u>hbP6 z34+Q$X(wZ;q2iR`D@j0LbPhS)cedTj)y(otGfw9CPhKes7oU%qHA1QDM!0ZJ?WUeY zZnf>MqFGhP;dwjvUO2Of`)z5SK;m84c6c!H2=XMr0#O%x)y@1oflrphX}Nad-99(1 z{j~Jz$TzotmbVGLlJs9NpEqh8X5I!_3F+>y*T)ri1E(5kd8F%dr3!(`FhtwCu=b5W zB3Wd@VwDb-q=+sx2o5I+tP{r5zcUs@WBOuf;gD~F*BXHFXbdEmXc-;wR03dT>Gx=! ztFn)FXUPz#=(5uz{rJ>m&Jrp1PEM*+z9K~QQ|Doypr|}lw9Lyz`27|AS|P0ZWlEo? zj^HOIWxlxeM7&<;=gY4M7rkpu)*YunXAH&QUup(2SGMK$JeoxV`snER-v@8s)T9Z^ z>#CViTerOn0<|fst@Td?yAEjvK}qK=Y~U}dzTX5i{4RU!S1@O6mT0R)#*WiPlL%7r zk%-2aymF+^#yvu4+wlFvoE~O1k5;G|IQ&+a&Z~0%H4nIyiF6pR>MHxl7kw6jg~?nd z@V*foG*tvP{gL{5q`A{&>?mkKo%G3tt0K%kR*_2$x{aQIZIA?0%5A5uR$n&nlbgi^ z^@}YQRz3n-c-D>*g&a+k6Sg+ALm)OEepcf5=069~@$dX{g%tZ@5)ud+ZTB}Wm=sVx zRvyBQwC-7xe-0t9IO;d3s7Wg5vopS|%^UW<`JS^t}IC?7M0An)*EzIG~ zkpdY7eQfql!=`S%p#%nY?kqczMn2hNl^zVVOp2X?aX>bIlmL-`IGX1G%a z>nXgm6-Dt+oJFIm>Q)gn5W@SWV?@Xg`Vb!v^lvMs>DQh>?;_nrbP*;8wC|>ayKBuvxhEn;m(%F->~1( z?jBK3U;TXfDcFLWd>cKNR|4h!`=dTcQQdEu4zAb6(<@t3MajmkY62fV@iBrUo&QYb z(EKz%sq_IYAIn1A-*!RQm0Y{^NvsfWrCz==tPn{K?HXKGtQ8x{DOl;aIx}sf)GatZ zPBoS76U)--9iOE%+9B!zQA|-I7*MC90c95$Z<1ncVhEX*v}gUoU4yOYwOSiDAy#U! z$Gpg(0Qa8rY;Y?Le&c#(rJ8|`%mp_cW#w{_P6i0~l(zzl^%=2;*r!L4k^yh5fP`AL zrTz_?4GePse(7Fk7k$RkIKU9u%4UA{GF z(-r`QvhEOyhv)ayQjp$>WyZZH!nC5OodrK3`=W9}p8yU4FoTI@B~8$4_+kT`h&`j+ z(*eu4O*AB^7M$HT1oky<4sfr5epI=cYA8fsh74g}m}L$9Q;f`(Ys0``RNOl)>M^I1 zH(EE4vxU*=#4st!Q?LQ=Wn6B+2Wasf#@BTz%Katj6i2dNwjVNI#CYz@Hecq%)7?x< zj~o^ZCwI6=H3Ai<8 z?Tnh${RjUIKNc@9O^NDnG?Jq${(6DBQr4Kjh+V@DXkePfuAJ@&*0geywfaADseQ>v znd!_V3QGHChs=Ek6=&+;97!f!1)0qO_{P~t>Ya^c={e&v1sbp%+l+-tIuWO(vGi>< zG}O#Y*v7O0nt#s45%#^sJ8IX2o6X2#+U`2_z}-$-g{b8jX(VSIL@@~li(6uYt5tl$ zbT+@in0f!0ofz#&zCVM3*a1E(_M4)nJP};7EL-EU%0}W*)A}DdH9x23D-iVxj4peq4Q z3UOO|$(HmCFPUt;XCtF4yKG%ZN0!rA$Jrvf-V7Q2UKe(9-tVX5nHeIf)0$y3_c{=X zwHJIV{B8yJIztQdd7WvY&UDk&7~jzx{QwU;hY-$a+%zxNUK+P}b+e9fZQ&B8MbIV} z#zx&J@|mPm!I#X=yGmg%rZ98*UWQ9OleR^FaNDFKUYwXx7^#wg)JINutje@c6q2YG zMYfX2_-9dB=*vD@osX>4$K)plGavGKFJ4UEg%b^bJ5c;a-B5Q6qmhY-o!YpYuej>0 zS>t4o7#36Lb1GnR<~(Y>TwU;>b%GblbAQ7{@F6R16~FEnb~KToIL1(Glk#qA@5^WQjCjA;>Ytl6Gov!q$Nz6(KZyNiBF z(|mtb+rn*%c2+ZQ`T2_I@S=ti5MuJ$AAmN9B%poXYE-sK$52IoUer_xpkF`Ru>R^L z`8x=1N}y!Y?PvC}39s%HMG{Bxis#VO39Y5L5`;ovV(KBq)?P@wreAu;D=kAZzf-O^ zyi6acxN@C#Ca`(F$QsGog5LE!t7|I(^XIWxlrkS0ZrL)|@~d3JhtxyJ`hZ|}Qb(ch zmWpJ~RfKn+Aoldiq>_V+k^GI=y~k~Q-j}!D4P_qdrL()am&UE$`Eet!I!bl@ z2V{QnqRmF%#*n9fMG(d3+b<)2CWhJVaFfhi_`*Y(fknthP9K4jFZkd9?FCbB2{r@z z4;V1SEUrR+;}Xn!s8ka6wxUOI=-N`s=VJE{44t~tOq}!Vbr~r;*qIGyvs+w>uuinN zRxCm9wQwosmGcx*J<;2JiJwbV;}}2&=%czj?uKjux+|68dc;+Xh=kZ zx{ejY=f+HzWzzf0yZNeiE+PGIZ!&O&ue?qzR+j%EQjM`Nue1H3LQy&Q>0J;JE2YLV zbiFCQhlilfnpv4SVzLxP>Xc>%otco9TnHW$xc@`QrbBLg|8NyKYnLuiB3lR4``UVQ zGSWr_m&z!0mdx8!eyab~hR9kT8u-Kj}4bJNgB^55|;N-T6gwg!yF=mA&?& zZHS({Iv`FK3?XGUq{hp832YTB4x&i*oiqL5O;srtg@$W_XQ6%tR0<5&xw|dqz@!{t z-9+@nb(2LdyOL7n|jXx%fF6*^yFNl2`^~&;H+_0|+zFIXChjxtJo2 zO>EDkj0K|-D`uw&hbg_MM)yk4U{X))lcEUDTy7AN9%P4?=VXVn; zf2H;7he_13>fwrZkQ@%N;#?uU3iPD6mcnb91T^ToBV%@<+#J#+4e$fgp|*q4VrSVl z%s(jZ37@8T`Ix8S;Tnyo8WqY>JOeNwOR-4H@7+U0#l8qgLCKgnLRU0{J-6bz9UGlRJ>h`G$ z0TWW&`srbzFmk(F^5{`rGbrn-b8fuI{iOyPljj2A zqg}C#?sd$u%hwQwlA+xEP@l7Q2?)}U2)Dh+hfc*D|KoGI7gleBy1h3)G`i~N7n9I|KRMVuNYQI*{uBipP{PsQn5ts_(NG7gl9g!!zGxB>O!oD`5|znnkUw>mY4f9P83_1K2+3Ow@|RP#rsiNB z903hhkd~8jmxV&XaJV#7UI7k=N`hgsP?(G??SxA~<&_oS$}mOn-v@+djezn{w$#=C z+ZJu52Js@1@X9hWfq{Y2fpXF~f~O1=fj}H-z+h4|gcLCdOG1*RuteeC3c6^bI{||y zVQ^URks{I!=TB0D&^-Ms1Yi6=vRLBZX`&@ehK$6^K&54mLi!CfHU0mgzP|sUi6l$( z|N8r{!bGbeJX*#QO~m;V+-ZgL5I!=6SJok*kt7_!3WxLgokepm90^DC!r{R>SKwfA zQ=~fvd$e)kPllD+ zRvxaUgpifj{ms?Ix%>N~v83Nz6pahhl84G`Y3tCq(0}C~HG?mnW?2_azyzRC`UIRW z_|Kq~G5_t0?0@_67Z>#}zWf~rt)x_q6t=RejnvErW>9V+3xJmC z`WZuvjAn72w+0gZ!c zA#ROc&m%S~RCo}xuD5jUEbXg(tZCM@w!T|#S$ju3+PKnZvOq!Te!k1i>ZlAY2d$hq zcr3hl)6*dTc>dY=Qd5hg9F-3ZJx12?th3 zY?KG;EA_?MEA`bUgvx84mEd_1K6WD6Zh&~3v&UiJT=<@uGaZ9%(IN9U?-o?uhZNz# z0#o|=;zl}_TF1jsmf+jyEQ<#bNr0KCAUYnr%4g{D(N{m#MffRnz-^cE<1DqGVEx5r zS9<&IEpl`xM442IxYkCk*}6`7oUa@Kl_Om(Wi)GrS2ItP;Ou5QroVSmsVXN0)hk8e z;lQ7wszq5KKkzMEul9)W#^WhAdM9n0$1xd~J`)gN+?&lyrT2u#TL&e_WNZu=06!YS z_X6e%y?CXFn(qe)=6ByvLZ1sdi9L_*4O%9s*q`)g@<+ngXLPynb=p>5ndD-SPd(4C`aTbdZ?bxKHELC zZeth7;3PqZD?s#@He`g7m$B$qvPY*AnR5l@#vg7e+&xsaNZJ7s<$W$OK|T@wSM zh`E>hGt7-jtmLJrt}Ivhf&`2+J~l%A7}}Xca7jJxI^wvclcjQLM5Eta<3kf9Toscy z2I56cmFzMI1s+2ser!B|B({ns8CaFV`-AdpPxNlkWi`M4xfYlJ>bcQa_Db9t&LAY; zx^2E~@4$Karl&<}9jvxNSjTQMt#zzn;Qqi*Jw&F8Na(c1_Jsc6N8&(xJElah#X~^m zO$FtV=RBR5){5SC5(*jhk?uKK7`fi`Y}eJ#ci%vh-fi6~JE0;=vP_jpjlbT?{#e-Q zg~+X2Dcc7K^U`4_pWG;HNCdX~rJUssvKg;+f3y~ob_om7(fWQVrk~|8c+5Oyh)!0u zH&@f%C3-|i_!B$Ex|tDNvP7;t@z^Uj(%<;2W8RZEAuh0EPbru^)k9_D$^x*({E+n& z{y0*heI0x$J9Uj|T}LA6SZHS^U1@BX{##YX50iv${&P>g_W{k;`KLa}>>L)9+be$H za1Hq$db|JP;I|C#s!D6abpfQ!SMEJxNrX5Po=~2~$zN$@d{C4ae%`0;u5lJIc<5zV zW0x;w_KUnGPtktlP2P#J6QNQr*8K9PVlhCrtEJW_VcAdqvfOn2!G(Z&x2T5n3f@d6yv9qGdpFIWgxra94$P&Yhsnc!#t)-Gv2pxFx>U@5&M# z7#U*2+|*`pSdAT(GQiPE$Ex`}N+I!wwb~zatxGDuvCL1$dV-cI>A&21r3eoG;Lk8> zhmAcpb*$KgS=PzD#t!=+rn>kYXx#YR)Dn+tD7G%>f%NHRvzUhtr}1(z(HiB$A-%vD z`5X-Jp!>%UspC}u?_WmmD;h%*I*Zz09eZ~A{G;;OSqJ&?c>WA=&gyqG%p)(6V*26E z{`k1QNoE~O9dKi0)Wme|c} zpD9V60svR6jT^^lPq@XY4fnzWFP@(qA|#AoRZ#%ui7nS&g(Xw!JO=DIRz0X4b&exr zkY`td`J1Q{ea9M&%2%T#Ta;&a<1sj6L)n2PV_y7NO8EsgholQRo&m^2^@skl2bJt` zu{-&e43fXh6JRAQ*3k{gK53WkKIN2vD)Z{THopDGy|Ji5&I%H;Ecs!{lt{IB9_h<_F@CJB{)}FVpTFvK zXP(=eD=e5uI3>NH`X-wAtvibZtmZ?rL z7wsuLRIVuCeEjQ}R}+ZAfvu;^h{(w;f2~*YCtDTpuuti0eA}tHeTR8%o~dzA^q5{z zUQNy_)>BQCr4&n zY9ifZI%XxIcTU~-B#>+|02RG{!zI=^*x31j0>MV-*^bTh_(BK8Ju&5MRoaw8+1sG1 zL%CEWY*}Ha7nicSa&3PfVrP_f!DVI}!S&!{Ym;aR{feM{vMO6NOZr%GWB(&Z`wMOR z#)*@43&=FFCXmN^kEWAz)MHgZ6DzNPf8RC_rbOG((u3cI+!P)?mdoPYwy+W=xS^mz zfWC?vOdizPc*paTy;7&k%4PvouNbGIDHnoj<91_&*-aZqO)}LOa&*pZeF>N7l>Pz< zd;rv0z9>AUFFFYW!822_#dpkxb^lmTJyFw~@j`t0>4*7~9p0D`MHX1=O>e$JdK(YU zaj~=9#M%X_gvkYeC*Lkko|dT;vWBG#k0&O6W2g6_Mv4}FWx^J#7cBEjg3w2YH@g)Q zuPcXBzOk0d9;`^u*e`sV2s~bPHkR-tDYRo6Xua4hTUwLG+tvh)QIX*oR|Y1Ov28Zk zylyfJyrpjDH=Jjhz5$=Jg(|PB@fV!q?btPZ{rS$TKfdo!+1YTi23~<47U94_5&pH} znfUigS(B@ik&Xh(E?Ua@PItu=bDG)ZUT{R;eznP5G{Em}%@vdRrM`+tN6I(JQMxzt zzG?+!S4Ta~BX5?vtMn^pahCg%YIEzN%1z!wZj%6cu}N6lF1c=c&0t!fJ{z?E+8|pX ztL03D#Wef7T$WgBgBg5GX1JT$UHCk!=iSaW`dgj`dWdyaEzWVS!D%kH>i&#|Y?8|9 z-4$lE_MykI*a<$47lk7Bjbdv}w_`*zdXZuGN3Iu`_YOWZs2xJ(qa;J)R&SUlR@|sR zt8oL;Vk6BgD)ama+gNdT3rq5$E=wTS_vPNL5v7O8(WRT)ia$MvhreFxtoojl@A>L* z?V3N9{Or`QzB8zrK~Wzy9(B6iNvvA2IDC!4FDT_F{|-W_zsO%Zd!zcZU$$SrY)QbT z+}KQlk=a`^_W*hzPZ#yMhjHq8PQ9i6db5c4WxBN_N7p?>>OOl+NcT)WrFk4NdiE{l z;%pD)D#!i39~nk@^PUQri!2Iu0oQ(*7KqFFs)#t$B7j`oGM}O2VyLY`9N-5vh@n;< zRNIc6&UJhY@?%IVdD-=xjGWJqn^0=jZBU)tv{v1U7ED&2v5=oi(iJ2&r=CAe0V;*$ zW$8S9fv(wveNqLlBQuhxlIr{{L<<*+21HMjNzwF5+p`Q`+5~JF9k>|vUCpaTL{(Py zw>le+8;vV|Ci0p)i8;A|+2>n*&Llb{e1az3q!#5`h2t?5>RN5A0%e*-$ySQrj$M&HIK~a9W)6d?W8J*D|_Nsk$ zGP@D92-<(_m%Dt`w&=aK1L=et-x-8!#A~nMjd>p5y_E~xqvBa(g-xz$rbrZzJy}@V zMDqqtV5Q@0Jnd^ZegdA!J_j+KUwf*Q89r!GpX^tCjM-_vCiKDr%LHG*Tq?b|4*FY1 zr|I5VzQbkN?NfI!QSV9w{6i7N+PZuZNn#B7s)KDhPO1TQJe zZL1UgBIOOdRP;I*>7?O<3ezgLDn5OQ67L#>r1#{bKe8hz0Pg XLyRvu{aX3a{{tgEGu={c*U0|?Dtn-9 literal 0 HcmV?d00001 diff --git a/Kapitel5/documentation/esdoc/docs/image/manual-badge.svg b/Kapitel5/documentation/esdoc/docs/image/manual-badge.svg new file mode 100644 index 0000000..54224bc --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/image/manual-badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + manual + manual + @value@ + @value@ + + diff --git a/Kapitel5/documentation/esdoc/docs/image/search.png b/Kapitel5/documentation/esdoc/docs/image/search.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d84b697dad0c856a822c2df0a0da46ee3e9be3 GIT binary patch literal 12704 zcmaKTWn9x?_ct&$YBY?JE+wS96+raD)ZuW1T?Qn3UDI*M)-R57?D8{(G_ySR4Gggm^{a$ULZ`#Vl zSlI`9mR!860V&>^<>UGzD;4vViC})Ksa(fDL<)3`tNaT<{#2fw6lCrH>lD%OOh1aR z{Ml3g&0cbLo?W29O1rl;uYT|AlgnY5Wtk1R4fA56Y@{{Pk0y=hB9{g+(RJ5@-qNKjvOa^8CutOT_;keeKu@ z_jbkrr}T`M16BPOI@rG9dBd#DW>VRJ{#&#a8mSRjo@tTgVYnW?I9&fK^9LShqHR~{ z$R8L1OsSy~UIrW)mz5GLf*fiZIk{GSRhg^GGSMTs5zUk{PaJsQ(w^F#!a7XW=3U4z z4AJNt+u{kXwD)tMoSOx<=h4l5%wHVe@dVNP&MLuWh1Nm$=FKKwST}t}sBfyOa%w{a zt*5?f$bHex6HV#uP?MDB799wW=oz*W;m{eUa$fY6N&MX(9$!b-Ay}kWEZ1M{-ZfZj ztfc=7_nOtZen*(ef%;30)NJ++p(aumNd_c-=ORnXHxYRM-9%7MW`)tAhQMZFkn_GZc{UxHU(d&vI}-CD{u{JKt_sfMQ2f+e~1PX}g) z=yU{p!`wmdNnG#vywP9q0H0o*oEwx2n(2G_J-osbVltnfT=GJ4pl|k=v()=_&RSY5 zR5mY`_i4<2oKA25su*5#9{k+=oTsJ)aB`bWEi5aGb`j9x9uQm2mGv-ua!l-*Jvw3* z1X?C5dRE~*EjdJM^sBnO`TZP9lzJ5Hh&U~3?Y^W>OGkIyXRgjLjt`qEOIMvw zycfYPd#0*UcinQ^hHp&Er~`K?PP!Q9A~D(l>taQ51Sf4Bs~ex6{sATF%hoJkF>h(E zE_ybPL1AYGC|*@LRw>52Dk(-e3ywR;nB9?*362NUnTeko2S-rqnX1Z5DDG|`si(nI zrsM^8EfpT&5bu|0HkTVsJmagd1P@u}avO(Ek;zcy^VBCsU9!U`GR!yY4wWC8emffV zYafJtq~HooGv@!Utu_nFlx!q^>QKY1*1BJ`&_mJVb8v@TUtd?)o~d?o zuYZ{K1mtW53*8t^9!?W%XEb^BK)VaL>P@Za7JeS@Zk$t5s&dY#hc=H!vsn5wx0su> zzFWJhGVJaifQ5i{F;t#&p+FKf2Rpk|Wi1VMwqlA;+f?!f->oRRnnMCfYTVwsxh=mk zGYfnK6b@wrD2gg0<5VQ~T1inT)E#5^^SYK7(cekWU4a%9U9N=7inEQtSKfgZKS0FE%iFV;^>)0OMy$LK|I|vXh zhzS`bUcxGt*WTX#XN1@~M{>JivVMc5%K8~u&7`NN=j1n&`t`(D?vw;ry2`WoLc6zD z`&~@73ej4wk^1A^P?oyR-I}Y?3d71vQpNV30bCc!{E!+#^UF`%n)d9;{`8N0K3}+! z{KO;7*YfdoKKVPv6jH=5&Gju4%!PtYg-Ut-o%~i*RCI+&>0W-c$-}Edj*9+{6TZ*3 z&VKu5rpiobW@cu%fZ%Qb<_G#l1ON2tQ_izw9>GUyXB16%C+5QRY;_%+vn)!Uo4Qle zm8Pa($%xU%2$)M~dQ8=}5BobMWi=lI!t2sLRoeho<@2EUsy$-ZUtK`F@_;fc=o_Vc zd|ME$zGmJZg*L?{Qgp?_@1B&jHTtPQ3D{o~ZU*`k+}}VQmWysauEfuUBkJ}JaD_0x z;g76ITZ75>bgT^0qs|Gl*|kZCet^Svwfbq2uSD1m@EB*(YxH(fr1b+rx*na|A2ht3 z(6-UF;Vtmsi=(;=XNXMVz|GB$jNf}^>p9W0Bd_nQ-ggGVcb8em><`TyD-)-f?Bmf^y4J)XZpWkt?yEJIHL;|^ zqGfuKDhYtv#8n|%1QRHJ;L~VC2RW)^T7L&lgr}rQ%eva#_&DINL&vu`Fd?8^On$5T z!#$Zpi?OGWF|$($sMo<*n?sZ%?@a zE$BdYA)$SKo4)u92}8@3c8QmMgRgZ%9H1>0KHNN1Gwh>rKZ=tE7VU8|mmX@p%rh}D zxhR~stA}GmDK_Qd7e^Zwao_eNV$Glc;j}d>YAPlw&e{(vL82c803mkJIEWzMrypc0 zfp&ETz5!5r#QPRjjS?dRgGPRN!-*Hw^n_eJVY7>oNwbwSa@7ltI;~WkRQyz8r^Zh- zL#+{KU>#98B1=z`!%)$zldOK6y{%m2Hiu@$R_2D>^XR}4%%31FTUe-d=>uXgf`jg9 z4D-^27{Vl${W5K3@Xfb{@V>t6(OAGEIq`)Fe}Z`9HT>G#2SbS1!0#RKEKf@m$i+fR%YM7?i7qaDm~gM-c1?+)uTau(h;h~V$@ z12S1=(pY?7?|3I}iuh;0F%;}Pr>BW|9ukd8i;az4tm&=(!O0vzSG4zHQg9yZ zoSr>sdsyb7_kdtohdY=DMaTrmBg_+6%FNEb0^#qArBPq9FwRe8u%4R2Kd+F^&K349 zX~6-uvg>k7M63fZ{^lEm4pY-(kQZ3TvGrPYlG?A5Z_*1HCouf5daZqluY{wIElxIU zSH^jJG<7a=QMF>l%yHSdQ`I*HZnB!{M?2$Ev_qK`1=*Dq5bslHgutrLBu!f z!c5OzwFFQjb7nZ)-aYwi0^ecQup3fom_0zu+SF-X2!mqubfL?P$t%0DL>M5GrSuBf zr_ON~s%6hXi2d046z zJ|L$SM7XmYfw9YY0}%FMpSUX8ZRP@>Jh!aTAHj@MzPzIgbts?R1>FKO%sG<7FX*h; zIIfrbJ<}XtQAl!TJGKSg;i{YnW2hPv?k;coB8@U!I)rQkw zl5ly$AeqKlo6qp!&#cez)wXXL$wqG%D*EWRq8_|MW`u3=^SUFiEN+5cUM9ZI;I_xD zrq50TvZU16Nqzf5Am}c%;ZIm_Q8F5ejENH2zP-x`ouSF0CphWJw)JP;0{>s?+{^tcB z4xW3<n?TI268$OEjv^(LV{gTY{{8e~Ct41a%03AJRl?|+|V8n3x zv<$)A1zwYER6%xBtf<0&(nRQj2mwzod-b6Yz3x4|LGWuZx5-@PQ zr0R1J=;^jEi6~)$d3-Vmh}VX2!EsIJJ=@9n)jHyMeHi|J zMe#NX$-*uoPSkv~MZZ#QQ*sDen^VVklQ(sef z7gvw+Yh=$Qj*nC4tIt-sNP$a}fKU#GW`F;0=Z^w7IuDw7Hi|X1G@a#yLL9ONu#3a= z$Q>oYXYpw-4Gfsa<3-|UdwExx)|x6lxU4NO5V`3hd&KIgJ-BlUr$pn4tNuK~dDS6i z8-1=8@P)Rpx2dfKI@jP=9TBNY6-)LY z<%0@q6{8Dry;g5WLn}?2n=-V5=xgECRGTy40r&8UNZ5ldi256EHr*- z?#R_gJ7jhvaFAiYH5)_v1M|~ssE92}zKw{G9YhO#FD27C+YwKw-OsFL7lgvlAp~Bb zQT@poizbi)Y+~Z!so;Bm^!hQiycXhK0)MqYNaZ>?w8_TPt({RBf0Y=ps((<)AJO_U zy0^0dH$B!ygqUHI7n%Vx32iW+Vzic@E(f_qSTJ{wW=n*Wh0llzD;WU@zD3E8umDT(y2YHDiA?5s=1JrKlS zmw7(@)(Mc+Qj0tM1Zmpj{A=pzR`rA}4P%e&b7=JUKBnV?+^BYn$#D7}P! z>S9RFSo=%j#TI76+ zJ7)F1agox(sZP(pbW}Bd%lIKN%ZrO_afYyT#I+$ci}k?=T$j%2X$ag#F@W2GMn0oz zU7@I@`n~H&mV{e4ig~5MI6zR*$hIS^sUVt~zu=f~DM#jgpOvS^#5>)2gliNncp_RA zi&^7P2G`F_KS~zjfmK?DloQcw>+9uzf3D{J7w$*Eh*zVIaetEi zjYtSnX3F(~T1nD+Z2i59OSf7+ft7wDdWC0KLggh(rS`(`+izuMXcE7oB%1@pgVuBN zxR|WDaEP`uVvG|iY#R!(akr}^NP8#y5x)Y?$v}OG}|Dh(8H7cXZ^2rVG4HyH`DUHqP_K#rTonNVM?Byrd+L2p-8-uU_4U zX5Cxmgt&ChOiKoMMl>1}lQT&=r$Dydm%sS-M3SmEpxMcS87P)D!RMwX0Rf*53e5VwKlA$<$2}XGi-f$2?+e*d+sYD!PpH*D!#og!>0Oqj zka&E>dG6A~o&3lmK7QQ1DgyX=5#@+{bPp+9AOMs^_m0-9PK(N$I^_hUkqz3hSUzkIhCj5JUuf)@|>pjFv1;l|5RXPf9N|a6KhKB!no&_dXQL^3|FOGQltKS-I zr5y0Ea|X`{ds24{sk9$Hxyh8u^FAD%uRQX-s|tX*fU3&p(ESki$x%+|$jFGlcxK!c zwArcqvA~iTY)5)9v ziv^!%KfMOCyd?%Ggwo-*8~2}o^Tav0riU*Ax`p!-+f ztCqDP-?<_fhGwrc+VFhs+vRb0bEZ?Da9uOU*-4Y{SZ`so$dS>X zvNbUJRtNtWjS4Cn(~9wm@lBYG9y9|L5$C-OAb9MEoIZI^#Uyi)*A!>mu%&rw1i9Zck3mV)@DU<12 zto>MgY-g#9G_AKEVIA{YSUSUhzI*^37xhfHf7`7pfF;{W$r{+EJ|h+5660Z37Tu=_ z0@1>sepfo7QZBdS^f&H!GsdwL_AK>jI*Kko+U@nj>D|?r{Y~?Ib#V5_tHev?1{FbJ z{DpJP(kr*REarIiloKqG&`RSgU}c+pEnCX$d9x-7fO!B*UI+ zv?i9An7BN|V^q&!MAA51@Oc2c;+V5OSBXL8O?MUSB@*DiB zIr2AsZ{#F<2fNs`JF9N&V&H}SBhJol#f3!LNU}vpO|IhvnOi0(?UtvsZJ~R-B zgJ)$syj-a`QxB1K1#nmCL!)y!TS$F^IC zBRUs&13r|;h{OHa{Px8r-m6-5^FFiZwT=?}YOK+Mw@?0M(-&2n#rTPM92<-I(9qHO zu(jN2B>+WW(VHv#uF>X9s{2#)Q64_T-~k1>tv<$#UuKRHPxfD^3EU_>KvI*jv7G3a zYTsz$U!?N5@y2dQwv(Xqf$ zb@D?Oa$vj9ekaUVt8@%!Pc()a%^d5mV@Lm^h4}N&I~|a_*~NiF??Sx+(w&#zCwzEdS9~wq@FnAWVSW1|1xUJ9 z7=`Z&8HneW!GfRN`>w~Qf3y5!X5Pc#FX21}NT$#&mi|$NdkK*qni@~>WEqOmKkOQM zx(!?Pi)gj~qNAXpox+CYKG=9fswY2~W1$R(R-Q1{9HZzC4B^M7M@>xj29h`})B&wy zv@dZXp%3@|Z#JmHn^ak7^MR01m!A12Qr0v-y-sesI)A4YPBTjR70Z?G2z^@`@=T-y zctbTUGRbRPvhYAD)-K#T!xd$DF4FOaQPrG>BABG}y&wyyVgj>#-wz}=I)$VDyOo?n z&qkOPQ1BRR{prNkr-4%?LbSb228ypW;#0w7Wu@nmp)gB{>y`b6lGQi-IsJT>p zd?27jncg5HVp!;NuKd5-j8=Yq`pVyQ<-pVm{7-b&svze?Fy~ z0SdiS+V2`IaMgA4B1W(UIMgUaxiFX1J3rQ&ODEFlIsP<{PV}AKLzbK>P(NtlF4KSD zry{anV?G1aasTlzMUE{&xy`yO36WLrvv2z|CRW@)s;~S3{f?QvIWhj_6COGz+UICR z^riDXx%2w>p!a{QKyDsNW7u~30D78ey+OWmG1 zahql0m=l7FDO%?Bs%<^XX9U0l&&>@q$Btr6(uYs9F!;P}FZkVU0$PVN67G|&P7scL zjly9;Y=mIl^8ZV;f~0prr6XAA$Mz4}85&OiSEkhpU*t6O%O(TbR0l|YIz0a~D5ejZ zi2M2+kCI~wtVs5lFdO3wxyyfS=ndgSI;`m{qnoW-biv6w_uk8VV2E5kJdnY?+qlF_ zNtL#O6>Wq|u%ZrLVg85|7yj-~td8?+3=mH+ND5J=FW3Y=^0!Vcxqf2;ceF)5moL5C zUg?RtW2j56J@~M(Z;NmTozrJo6O>$qR902(f!mzL#-8~1Ctey8Fc49L=_v0EfaYoKHUQVF@ArA&DYRL=8=<{MpV@8}pnr3P{;vE{+ zx63E#>FQ#{tNa4MBZXqVukO=J$7*5hjN6DRJnonjO8Lib6d0-M^+olw(I@m_#UIvx4-2wEH=(O_L#B6%z{m2_A}7YoH@t@*)~t`?)9C2v zN>`YNtC64&ho>H2D3LsFk9%%nQ+HNR4|0$ecE^;Y?->I4DpcLVE$YFN>Vlq_D*^#o z|9tuJuaGY&L_CH33jW!Nt=)3MY<%#qW|X3#0W;%@xpTeWz67#57#BvPkO=3Zqje4@ z?c`S|?=G{R@_s91SKHZX-qzw&J2&KRi$8&B7qJffD#(7*MMCXpBrYi#)Lv4u9%fF4 zo@p-8&gJ7cH)_dXpib;KZwwBdaCY|j947~PJ%j63*50BP3u;Ya_-C`8feR1TF=eusR?=)c)HW)h7v;Lndw1a~Z znfg!lK5TvR@)4J>>Ht@p2c=(mW#w++-@kvU2UC>CG$REa`im-e`gbG7hlYm8b5kw% zOr{C(&E;<*70B@98+3K$j{!UdG6@2^fa`^LR@sQ>9QO|w9CL;61bWIJ7cRbIt z8VI|w_1e($strnQ2G{^I@>F_B+o;iNdm2)@rYe_MM3+G8a~ARZ7+d09`iSt15&-w3 z5^MvK{m+iXyg;M6WEyHwzpf=R_D1vkV#YKJHlJ*KAL+27Qm6n{>*x;f3DmO%kRP#F zuo~VAc=CIeq|hI1Hj^N&us2W<#s|uIG{&SHvn|)n;b%n&U&49T^D?dd02M~j$%o(LaX!#3d9tJOP|8oji^l;B?+RO=Ba}V22b_bZuXk%~Z;=IlBR_ zAePIadw-{GSufs^L}jn(9xvF6`I$7uumFYH@_+A{{Y%*$%5#vxfvZ0Mnj|vHTJECQ zQln1oE(cfwZt2Wp8|?nYoxj_?f@u`?%^Z_A^)RpF(`DYT#}AK;bP#n*F>pXhWAk8^ zt)M#{MB0Y6!DHP$2InZfz4rTO!o9m@*TFTdt-h$slkGL&&%%p;x8AWgjh2K=7XwdB z&0}=e5vI$Wrp4x#m?C~)hzVEkU%SgF)>CTLJ^ihFkrH;$LAq?ZM*V0y(rg3cOSKUk zfUPPfOW)Znymv~oxi}*NU>V~?g0NcjW##>bb#*9@_ZiXMZo3YHH&v;N#B5n<2G(WItdU&dH=i`0=5^b);) zWC1Pxs>t`bQ=33Xhyt;>XTC>uAhs_h;P~smTXI2<|BX)?G>Q`iGV+&pn!fKx19$JU z-u%`_xEe9aP>HZ~!BWzvpb1AS0E}P6g>EQ}=sAsYVV9LXT-BbZM-%{oLdvC%lvvs@ z6-0TU9il9q=3*#bC-p4_RslLc?In<+qjPh7LbMwe2r#}Nb}I}3o4V>ze*S#KS0I_S z+$Zq7$N8`k{{eRD&&_wSA9iS1>*($ymK3bUcVanTi4g+mTME#m-HFReKz6K}yE=Yc z;@RMk?ldC!9KP!@U`+q%U=fikDGKvBy(QTD?KS@@OF~4hbOW-^ZZysiP7EqZOBiU)4~k2ZOG$44Vi4yvSbzH#9fj4ZWjIkVH9QwZy>8 zf}bw{n3|fZ<{X~S-tm=RQUbyMec#|9+vk4t#+3xbNvbvoe(c&OHrZF-?9n~sO5aq{ zW}F+7AoLp%SUCg;!C4>g0fgX~N7VRkF7F%;HreRi|M9H?P4aTIL`P95JY*MfK4!nN+l-dGOT+LirWWqu1|nJ#8S`Xfl_g1m$|A3(!udzK#!BGyN;g>q!Q9C@Cg1kP+6_0+t*Pb0B* zGO6~XKE_(4=cdpeC;1af?>HVDa=@wn;o3yt4?K!4j$w~n0dRG;@0N{)CoZn8doG&~ zX~Xj<9uq3t2ThDfEngpE3*I0&G?yWdU7PENCB0<{9eDriWNekoD{LlDNVg9s&?YjS zxL#h01}r=wh8h_d=!ZZcol$!8i-BY0x`8H<-S2omhRj7`hQ&O_+_f9bh5oTs3WQjDiT9z3CRk*I^!7jFB6g^Hn)&G z&joW~?T`@er<8km$SZ4K-;0C}_xsQeEle_)3yGZ}s>4$h$0B@hA$($UA?j-`z%#62 z()?5dBkPC5{q?+1*8SM0nuBoMwS*OwE+^8%GiscF)oq2QgqAK_sFvkm&E7i#TyrBM zqpt;D&|7D;l#JLTbvlw=sl#dHPl7m<^|3I1>x8DQ(E_&(+}WsAof!Q?7gQrZwq{)W znJmG1wDA{M0%bf~Sy?$F)+06@h+mb8Ywstk5Y~9eb2KKJ+sV$?!+^GVb9pa1B+idG zPqB+4i5nY@P0Ab!19ftB2nTqu#@P=ZLo}fN0P1(G!j*;+x zqJxJetputfNtVb}DX6d;kg|-SKCu%oLQim=$Qb}RbyQ_NrVpSYhp3^R0jzF>tMfmj zfqe@6WMTlC4rRCwk|f;QPy_VOvM&oG?z?b`$p_0gxY!o3V&{WAp_k+!K{7pzd~rrZ za>zNB!PWPF`Y53d@u3@_B!MvSmmw@w1JLjMd~99h6g!Fy5c2PWQtm4Cm?&8DI_P8Wc?={EC<|j{rrKcswfGg=0y7neDnOsug<+#C z+<)WVFXygcu>gL|Tu!T@ZO%K0O#eH3E%lgh9Lh40}t?f*`y9eOD&)}tArkf({2#qw-# zkyqHo&P7{WTT=B8gfQQc8K=*M?&0eerZ8%uQVl6F_)CUA7q$pX5ai)&X>NZ0?G1_! zr73$Xy}@u`#yXX8ERl5+?r_%z%hUNFh&dFxqF0*>a#&hv$N;n z@-nMDEW~-)&UFH!mePQKjfA*kS4EYio;f-}dEZV;8DdlBw9=@qQecD%!pTuTOSFcIc&hy{iZ!&NJ1j z!^-~vu(r0AEK+VtymG~;m9p`^+S`$@_qm$s9re6q%0W9el!+Vgk`@&Db#%+LSA9J+ Vu(5TF{pSVFvnSfBRgWw~{|7^yU3&lk literal 0 HcmV?d00001 diff --git a/Kapitel5/documentation/esdoc/docs/index.html b/Kapitel5/documentation/esdoc/docs/index.html new file mode 100644 index 0000000..4166bd0 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/index.html @@ -0,0 +1,54 @@ + + + + + + API Document + + + + + + + + + +
+ Home + + Reference + Source + + + +
+ + + +
Please create README.md
+ + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/docs/package.json b/Kapitel5/documentation/esdoc/docs/package.json new file mode 100644 index 0000000..73d718d --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/package.json @@ -0,0 +1,13 @@ +{ + "name": "esdoc-examples", + "version": "1.0.0", + "description": "", + "main": "index.js", + "keywords": [], + "author": "Philip Ackermann", + "license": "MIT", + "devDependencies": { + "esdoc": "^1.0.4", + "esdoc-standard-plugin": "^1.0.0" + } +} diff --git a/Kapitel5/documentation/esdoc/docs/script/inherited-summary.js b/Kapitel5/documentation/esdoc/docs/script/inherited-summary.js new file mode 100644 index 0000000..0a35b6d --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/inherited-summary.js @@ -0,0 +1,28 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TABLE' && parent.classList.contains('summary')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var tbody = parent.querySelector('tbody'); + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + tbody.style.display = 'none'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + tbody.style.display = 'block'; + } + } + + var buttons = document.querySelectorAll('.inherited-summary thead .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } +})(); diff --git a/Kapitel5/documentation/esdoc/docs/script/inner-link.js b/Kapitel5/documentation/esdoc/docs/script/inner-link.js new file mode 100644 index 0000000..69a7477 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/inner-link.js @@ -0,0 +1,31 @@ +// inner link(#foo) can not correctly scroll, because page has fixed header, +// so, I manually scroll. +(function(){ + var matched = location.hash.match(/errorLines=([\d,]+)/); + if (matched) return; + + function adjust() { + window.scrollBy(0, -55); + var el = document.querySelector('.inner-link-active'); + if (el) el.classList.remove('inner-link-active'); + + // ``[ ] . ' " @`` are not valid in DOM id. so must escape these. + var id = location.hash.replace(/([\[\].'"@$])/g, '\\$1'); + var el = document.querySelector(id); + if (el) el.classList.add('inner-link-active'); + } + + window.addEventListener('hashchange', adjust); + + if (location.hash) { + setTimeout(adjust, 0); + } +})(); + +(function(){ + var els = document.querySelectorAll('[href^="#"]'); + for (var i = 0; i < els.length; i++) { + var el = els[i]; + el.href = location.href + el.getAttribute('href'); // because el.href is absolute path + } +})(); diff --git a/Kapitel5/documentation/esdoc/docs/script/manual.js b/Kapitel5/documentation/esdoc/docs/script/manual.js new file mode 100644 index 0000000..4c2b169 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/manual.js @@ -0,0 +1,11 @@ +(function(){ + var matched = location.pathname.match(/\/(manual\/.*?\/.*\.html)$/); + if (!matched) return; + + var currentName = matched[1]; + var cssClass = '.navigation .manual-toc li[data-link="' + currentName + '"]'; + var styleText = cssClass + '{ display: block; }\n'; + var style = document.createElement('style'); + style.textContent = styleText; + document.querySelector('head').appendChild(style); +})(); diff --git a/Kapitel5/documentation/esdoc/docs/script/patch-for-local.js b/Kapitel5/documentation/esdoc/docs/script/patch-for-local.js new file mode 100644 index 0000000..5756d13 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/patch-for-local.js @@ -0,0 +1,8 @@ +(function(){ + if (location.protocol === 'file:') { + var elms = document.querySelectorAll('a[href="./"]'); + for (var i = 0; i < elms.length; i++) { + elms[i].href = './index.html'; + } + } +})(); diff --git a/Kapitel5/dokumentation/out/assets/vendor/prettify/COPYING b/Kapitel5/documentation/esdoc/docs/script/prettify/Apache-License-2.0.txt similarity index 100% rename from Kapitel5/dokumentation/out/assets/vendor/prettify/COPYING rename to Kapitel5/documentation/esdoc/docs/script/prettify/Apache-License-2.0.txt diff --git a/Kapitel5/documentation/esdoc/docs/script/prettify/prettify.js b/Kapitel5/documentation/esdoc/docs/script/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(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= +[],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), +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])*(?:`|$))/, +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]*/, +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, +"");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), +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} +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"], +"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"], +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"], +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"+ +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]]), +["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", +/^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}), +["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", +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= +!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' + pair[2] + ''); + } + } + + var innerHTML = ''; + for (kind in html) { + var list = html[kind]; + if (!list.length) continue; + innerHTML += '
  • ' + kind + '
  • \n' + list.join('\n'); + } + result.innerHTML = innerHTML; + if (innerHTML) result.style.display = 'block'; + selectedIndex = -1; + }); + + // down, up and enter key are pressed, select search result. + input.addEventListener('keydown', function(ev){ + if (ev.keyCode === 40) { + // arrow down + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex + 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex + 2]; + selectedIndex++; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex++; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 38) { + // arrow up + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex - 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex - 2]; + selectedIndex--; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex--; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 13) { + // enter + var current = result.children[selectedIndex]; + if (current) { + var link = current.querySelector('a'); + if (link) location.href = link.href; + } + } else { + return; + } + + ev.preventDefault(); + }); + + // select search result when search result is mouse over. + result.addEventListener('mousemove', function(ev){ + var current = result.children[selectedIndex]; + if (current) current.classList.remove('selected'); + + var li = ev.target; + while (li) { + if (li.nodeName === 'LI') break; + li = li.parentElement; + } + + if (li) { + selectedIndex = Array.prototype.indexOf.call(result.children, li); + li.classList.add('selected'); + } + }); + + // clear search result when body is clicked. + document.body.addEventListener('click', function(ev){ + selectedIndex = -1; + result.style.display = 'none'; + result.innerHTML = ''; + }); + +})(); diff --git a/Kapitel5/documentation/esdoc/docs/script/search_index.js b/Kapitel5/documentation/esdoc/docs/script/search_index.js new file mode 100644 index 0000000..f9dd3aa --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/search_index.js @@ -0,0 +1,398 @@ +window.esdocSearchIndex = [ + [ + "esdoc-examples/src/person.js~person", + "class/src/Person.js~Person.html", + "Person esdoc-examples/src/Person.js", + "class" + ], + [ + "builtinexternal/ecmascriptexternal.js~array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array", + "BuiltinExternal/ECMAScriptExternal.js~Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~arraybuffer", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer", + "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~boolean", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "BuiltinExternal/ECMAScriptExternal.js~Boolean", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~dataview", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView", + "BuiltinExternal/ECMAScriptExternal.js~DataView", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~date", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date", + "BuiltinExternal/ECMAScriptExternal.js~Date", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~error", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error", + "BuiltinExternal/ECMAScriptExternal.js~Error", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~evalerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError", + "BuiltinExternal/ECMAScriptExternal.js~EvalError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~float32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array", + "BuiltinExternal/ECMAScriptExternal.js~Float32Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~float64array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array", + "BuiltinExternal/ECMAScriptExternal.js~Float64Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~function", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "BuiltinExternal/ECMAScriptExternal.js~Function", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~generator", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator", + "BuiltinExternal/ECMAScriptExternal.js~Generator", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~generatorfunction", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction", + "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~infinity", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity", + "BuiltinExternal/ECMAScriptExternal.js~Infinity", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~int16array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array", + "BuiltinExternal/ECMAScriptExternal.js~Int16Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~int32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array", + "BuiltinExternal/ECMAScriptExternal.js~Int32Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~int8array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array", + "BuiltinExternal/ECMAScriptExternal.js~Int8Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~internalerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError", + "BuiltinExternal/ECMAScriptExternal.js~InternalError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~json", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON", + "BuiltinExternal/ECMAScriptExternal.js~JSON", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~map", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map", + "BuiltinExternal/ECMAScriptExternal.js~Map", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~nan", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN", + "BuiltinExternal/ECMAScriptExternal.js~NaN", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~number", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "BuiltinExternal/ECMAScriptExternal.js~Number", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~object", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "BuiltinExternal/ECMAScriptExternal.js~Object", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~promise", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise", + "BuiltinExternal/ECMAScriptExternal.js~Promise", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~proxy", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy", + "BuiltinExternal/ECMAScriptExternal.js~Proxy", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~rangeerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError", + "BuiltinExternal/ECMAScriptExternal.js~RangeError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~referenceerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError", + "BuiltinExternal/ECMAScriptExternal.js~ReferenceError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~reflect", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect", + "BuiltinExternal/ECMAScriptExternal.js~Reflect", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~regexp", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp", + "BuiltinExternal/ECMAScriptExternal.js~RegExp", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~set", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set", + "BuiltinExternal/ECMAScriptExternal.js~Set", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~string", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "BuiltinExternal/ECMAScriptExternal.js~String", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~symbol", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol", + "BuiltinExternal/ECMAScriptExternal.js~Symbol", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~syntaxerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError", + "BuiltinExternal/ECMAScriptExternal.js~SyntaxError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~typeerror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError", + "BuiltinExternal/ECMAScriptExternal.js~TypeError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~urierror", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError", + "BuiltinExternal/ECMAScriptExternal.js~URIError", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~uint16array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array", + "BuiltinExternal/ECMAScriptExternal.js~Uint16Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~uint32array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array", + "BuiltinExternal/ECMAScriptExternal.js~Uint32Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~uint8array", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array", + "BuiltinExternal/ECMAScriptExternal.js~Uint8Array", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~uint8clampedarray", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray", + "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~weakmap", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap", + "BuiltinExternal/ECMAScriptExternal.js~WeakMap", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~weakset", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet", + "BuiltinExternal/ECMAScriptExternal.js~WeakSet", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~boolean", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean", + "BuiltinExternal/ECMAScriptExternal.js~boolean", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~function", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function", + "BuiltinExternal/ECMAScriptExternal.js~function", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~null", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null", + "BuiltinExternal/ECMAScriptExternal.js~null", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~number", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number", + "BuiltinExternal/ECMAScriptExternal.js~number", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~object", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object", + "BuiltinExternal/ECMAScriptExternal.js~object", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~string", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String", + "BuiltinExternal/ECMAScriptExternal.js~string", + "external" + ], + [ + "builtinexternal/ecmascriptexternal.js~undefined", + "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined", + "BuiltinExternal/ECMAScriptExternal.js~undefined", + "external" + ], + [ + "builtinexternal/webapiexternal.js~audiocontext", + "https://developer.mozilla.org/en/docs/Web/API/AudioContext", + "BuiltinExternal/WebAPIExternal.js~AudioContext", + "external" + ], + [ + "builtinexternal/webapiexternal.js~canvasrenderingcontext2d", + "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D", + "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D", + "external" + ], + [ + "builtinexternal/webapiexternal.js~documentfragment", + "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment", + "BuiltinExternal/WebAPIExternal.js~DocumentFragment", + "external" + ], + [ + "builtinexternal/webapiexternal.js~element", + "https://developer.mozilla.org/en-US/docs/Web/API/Element", + "BuiltinExternal/WebAPIExternal.js~Element", + "external" + ], + [ + "builtinexternal/webapiexternal.js~event", + "https://developer.mozilla.org/en-US/docs/Web/API/Event", + "BuiltinExternal/WebAPIExternal.js~Event", + "external" + ], + [ + "builtinexternal/webapiexternal.js~node", + "https://developer.mozilla.org/en-US/docs/Web/API/Node", + "BuiltinExternal/WebAPIExternal.js~Node", + "external" + ], + [ + "builtinexternal/webapiexternal.js~nodelist", + "https://developer.mozilla.org/en-US/docs/Web/API/NodeList", + "BuiltinExternal/WebAPIExternal.js~NodeList", + "external" + ], + [ + "builtinexternal/webapiexternal.js~xmlhttprequest", + "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest", + "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest", + "external" + ], + [ + "src/person.js", + "file/src/Person.js.html", + "src/Person.js", + "file" + ], + [ + "src/person.js~person#age", + "class/src/Person.js~Person.html#instance-get-age", + "src/Person.js~Person#age", + "member" + ], + [ + "src/person.js~person#age", + "class/src/Person.js~Person.html#instance-set-age", + "src/Person.js~Person#age", + "member" + ], + [ + "src/person.js~person#constructor", + "class/src/Person.js~Person.html#instance-constructor-constructor", + "src/Person.js~Person#constructor", + "method" + ], + [ + "src/person.js~person#firstname", + "class/src/Person.js~Person.html#instance-get-firstName", + "src/Person.js~Person#firstName", + "member" + ], + [ + "src/person.js~person#firstname", + "class/src/Person.js~Person.html#instance-set-firstName", + "src/Person.js~Person#firstName", + "member" + ], + [ + "src/person.js~person#greet", + "class/src/Person.js~Person.html#instance-method-greet", + "src/Person.js~Person#greet", + "method" + ], + [ + "src/person.js~person#lastname", + "class/src/Person.js~Person.html#instance-get-lastName", + "src/Person.js~Person#lastName", + "member" + ], + [ + "src/person.js~person#lastname", + "class/src/Person.js~Person.html#instance-set-lastName", + "src/Person.js~Person#lastName", + "member" + ], + [ + "src/person.js~person#tostring", + "class/src/Person.js~Person.html#instance-method-toString", + "src/Person.js~Person#toString", + "method" + ] +] \ No newline at end of file diff --git a/Kapitel5/documentation/esdoc/docs/script/test-summary.js b/Kapitel5/documentation/esdoc/docs/script/test-summary.js new file mode 100644 index 0000000..2f32cb0 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/script/test-summary.js @@ -0,0 +1,54 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TR' && parent.classList.contains('test-describe')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var direction; + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + direction = 'closed'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + direction = 'opened'; + } + + var targetDepth = parseInt(parent.dataset.testDepth, 10) + 1; + var nextElement = parent.nextElementSibling; + while (nextElement) { + var depth = parseInt(nextElement.dataset.testDepth, 10); + if (depth >= targetDepth) { + if (direction === 'opened') { + if (depth === targetDepth) nextElement.style.display = ''; + } else if (direction === 'closed') { + nextElement.style.display = 'none'; + var innerButton = nextElement.querySelector('.toggle'); + if (innerButton && innerButton.classList.contains('opened')) { + innerButton.classList.remove('opened'); + innerButton.classList.add('closed'); + } + } + } else { + break; + } + nextElement = nextElement.nextElementSibling; + } + } + + var buttons = document.querySelectorAll('.test-summary tr.test-describe .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } + + var topDescribes = document.querySelectorAll('.test-summary tr[data-test-depth="0"]'); + for (var i = 0; i < topDescribes.length; i++) { + topDescribes[i].style.display = ''; + } +})(); diff --git a/Kapitel5/documentation/esdoc/docs/source.html b/Kapitel5/documentation/esdoc/docs/source.html new file mode 100644 index 0000000..cef8cc6 --- /dev/null +++ b/Kapitel5/documentation/esdoc/docs/source.html @@ -0,0 +1,79 @@ + + + + + + Source | API Document + + + + + + + + + +
    + Home + + Reference + Source + + + +
    + + + +

    Source 1/10

    + + + + + + + + + + + + + + + + + + + + + + + +
    FileIdentifierDocumentSizeLinesUpdated
    src/Person.jsPerson10 %1/10735 byte462018-02-02 19:00:54 (UTC)
    +
    + + + + + + + + + + + + diff --git a/Kapitel5/documentation/esdoc/package-lock.json b/Kapitel5/documentation/esdoc/package-lock.json new file mode 100644 index 0000000..4891ed8 --- /dev/null +++ b/Kapitel5/documentation/esdoc/package-lock.json @@ -0,0 +1,1490 @@ +{ + "name": "esdoc-examples", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true, + "optional": true + }, + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true + }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "dev": true, + "optional": true, + "requires": { + "acorn": "2.7.0" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "optional": true, + "requires": { + "hoek": "4.2.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "color-logger": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", + "integrity": "sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "optional": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "optional": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "optional": true, + "requires": { + "cssom": "0.3.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esdoc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esdoc/-/esdoc-1.0.4.tgz", + "integrity": "sha512-Hy5sg0Lec4EDHVem3gFqNi+o6ZptivmaiHYacZhmn3hzLnHSMg2C1L0XTsDIcb4Cxd9aUnWdLAu6a6ghH/LLug==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-traverse": "6.26.0", + "babylon": "6.18.0", + "cheerio": "0.22.0", + "color-logger": "0.0.3", + "escape-html": "1.0.3", + "fs-extra": "1.0.0", + "ice-cap": "0.0.4", + "marked": "0.3.6", + "minimist": "1.2.0", + "taffydb": "2.7.2" + } + }, + "esdoc-accessor-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-accessor-plugin/-/esdoc-accessor-plugin-1.0.0.tgz", + "integrity": "sha1-eRukhy5sQDUVznSbE0jW8Ck62es=", + "dev": true + }, + "esdoc-brand-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-brand-plugin/-/esdoc-brand-plugin-1.0.0.tgz", + "integrity": "sha1-niFtc15i/OxJ96M5u0Eh2mfMYDM=", + "dev": true, + "requires": { + "cheerio": "0.22.0" + } + }, + "esdoc-coverage-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esdoc-coverage-plugin/-/esdoc-coverage-plugin-1.1.0.tgz", + "integrity": "sha1-OGmGnNf4eJH5cmJXh2laKZrs5Fw=", + "dev": true + }, + "esdoc-external-ecmascript-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-external-ecmascript-plugin/-/esdoc-external-ecmascript-plugin-1.0.0.tgz", + "integrity": "sha1-ePVl1KDFGFrGMVJhTc4f4ahmiNs=", + "dev": true, + "requires": { + "fs-extra": "1.0.0" + } + }, + "esdoc-integrate-manual-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-integrate-manual-plugin/-/esdoc-integrate-manual-plugin-1.0.0.tgz", + "integrity": "sha1-GFSmqhwIEDXXyMUeO91PtlqkcRw=", + "dev": true + }, + "esdoc-integrate-test-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-integrate-test-plugin/-/esdoc-integrate-test-plugin-1.0.0.tgz", + "integrity": "sha1-4tDQAJD38MNeXS8sAzMnp55T5Ak=", + "dev": true + }, + "esdoc-lint-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esdoc-lint-plugin/-/esdoc-lint-plugin-1.0.1.tgz", + "integrity": "sha1-h77mQD5nbAh/Yb6SxFLWDyxqcOU=", + "dev": true + }, + "esdoc-publish-html-plugin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esdoc-publish-html-plugin/-/esdoc-publish-html-plugin-1.1.0.tgz", + "integrity": "sha1-CT+DN6yhaQIlcss4f/zD9HCwJRM=", + "dev": true, + "requires": { + "babel-generator": "6.11.4", + "cheerio": "0.22.0", + "escape-html": "1.0.3", + "fs-extra": "1.0.0", + "ice-cap": "0.0.4", + "marked": "0.3.6", + "taffydb": "2.7.2" + }, + "dependencies": { + "babel-generator": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", + "integrity": "sha1-FPaTOrsgxiZm0n47e59bncBxKpo=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "3.0.1", + "lodash": "4.17.5", + "source-map": "0.5.7" + } + }, + "detect-indent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" + } + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + } + } + }, + "esdoc-standard-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-standard-plugin/-/esdoc-standard-plugin-1.0.0.tgz", + "integrity": "sha1-ZhIBysfvhokkkCRG/awVJyU8XU0=", + "dev": true, + "requires": { + "esdoc-accessor-plugin": "1.0.0", + "esdoc-brand-plugin": "1.0.0", + "esdoc-coverage-plugin": "1.1.0", + "esdoc-external-ecmascript-plugin": "1.0.0", + "esdoc-integrate-manual-plugin": "1.0.0", + "esdoc-integrate-test-plugin": "1.0.0", + "esdoc-lint-plugin": "1.0.1", + "esdoc-publish-html-plugin": "1.1.0", + "esdoc-type-inference-plugin": "1.0.1", + "esdoc-undocumented-identifier-plugin": "1.0.0", + "esdoc-unexported-identifier-plugin": "1.0.0" + } + }, + "esdoc-type-inference-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esdoc-type-inference-plugin/-/esdoc-type-inference-plugin-1.0.1.tgz", + "integrity": "sha1-qrynhkH5m9Hs5vMC8EW71jG+cvU=", + "dev": true + }, + "esdoc-undocumented-identifier-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-undocumented-identifier-plugin/-/esdoc-undocumented-identifier-plugin-1.0.0.tgz", + "integrity": "sha1-guBdNxwy0ShxFA8dXIHsmf2cwsg=", + "dev": true + }, + "esdoc-unexported-identifier-plugin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esdoc-unexported-identifier-plugin/-/esdoc-unexported-identifier-plugin-1.0.0.tgz", + "integrity": "sha1-H5h0xqfCvr+a05fDzrdcnGnaurE=", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "optional": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true, + "optional": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true, + "optional": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "optional": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "optional": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "ice-cap": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", + "integrity": "sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg=", + "dev": true, + "requires": { + "cheerio": "0.20.0", + "color-logger": "0.0.3" + }, + "dependencies": { + "cheerio": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", + "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "jsdom": "7.2.2", + "lodash": "4.17.5" + } + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", + "dev": true, + "optional": true, + "requires": { + "abab": "1.0.4", + "acorn": "2.7.0", + "acorn-globals": "1.0.9", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "2.0.1", + "whatwg-url-compat": "0.6.5", + "xml-name-validator": "2.0.1" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "optional": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "marked": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true, + "optional": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "optional": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true, + "optional": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "optional": true, + "requires": { + "hoek": "4.2.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true, + "optional": true + }, + "taffydb": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.2.tgz", + "integrity": "sha1-e/gQalwaSCUbPjvAoOFzJIn9Dcg=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true, + "optional": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "webidl-conversions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", + "dev": true, + "optional": true + }, + "whatwg-url-compat": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", + "dev": true, + "optional": true, + "requires": { + "tr46": "0.0.3" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true, + "optional": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true, + "optional": true + } + } +} diff --git a/Kapitel5/documentation/esdoc/package.json b/Kapitel5/documentation/esdoc/package.json new file mode 100644 index 0000000..73d718d --- /dev/null +++ b/Kapitel5/documentation/esdoc/package.json @@ -0,0 +1,13 @@ +{ + "name": "esdoc-examples", + "version": "1.0.0", + "description": "", + "main": "index.js", + "keywords": [], + "author": "Philip Ackermann", + "license": "MIT", + "devDependencies": { + "esdoc": "^1.0.4", + "esdoc-standard-plugin": "^1.0.0" + } +} diff --git a/Kapitel5/documentation/esdoc/src/Person.js b/Kapitel5/documentation/esdoc/src/Person.js new file mode 100644 index 0000000..4d3b62b --- /dev/null +++ b/Kapitel5/documentation/esdoc/src/Person.js @@ -0,0 +1,46 @@ +export default class Person { + + /** + * @param {string} firstName - First name of the person. + * @param {string} lastName - Last name of the person. + * @param {number} age - Age of the person. + */ + constructor(firstName, lastName, age) { + this._firstName = firstName; + this._lastName = lastName; + this._age = age; + } + + greet() { + return 'Hello'; + } + + toString() { + return `${this.firstName} ${this.lastName}, ${this.age} old.`; + } + + get firstName() { + return this._firstName; + } + + set firstName(firstName) { + this._firstName = firstName; + } + + get lastName() { + return this._lastName; + } + + set lastName(lastName) { + this._lastName = lastName; + } + + get age() { + return this._age; + } + + set age(age) { + this._age = age; + } + +} diff --git a/Kapitel5/dokumentation/Album.js b/Kapitel5/dokumentation/Album.js deleted file mode 100644 index c754f71..0000000 --- a/Kapitel5/dokumentation/Album.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Konstruktorfunktion für Alben. - * @constructor - * - * @param {string} interpret - Der Name des Interpreten. - * @param {string} titel - Der Titel des Albums. - * @param {string} erscheinungsjahr - Das Erscheinungsjahr des Albums. - */ -function Album(interpret, titel, erscheinungsjahr) { - /* … */ -} - -/** - * Getter-Methode für den Titel des Albums. - * - * @return {string} Der Titel des Albums. - */ - -Album.getTitel = function() { - return this.title; -}; diff --git a/Kapitel5/dokumentation/Rechner.js b/Kapitel5/dokumentation/Rechner.js deleted file mode 100644 index 22bfea1..0000000 --- a/Kapitel5/dokumentation/Rechner.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Ein kleiner Taschenrechner - * - * @class Rechner - * @constructor - */ -function Rechner() { - /** - * Diese Methode addiert zwei Zahlen. - * - * @method addiere - * @param {Number} x Zahl 1 - * @param {Number} y Zahl 2 - * @return {Number} Liefert das Ergebnis der Addition von x und y. - */ - this.addiere = function(x,y) { - return x + y; - } -} diff --git a/Kapitel5/dokumentation/out/api.js b/Kapitel5/dokumentation/out/api.js deleted file mode 100644 index 6469339..0000000 --- a/Kapitel5/dokumentation/out/api.js +++ /dev/null @@ -1,9 +0,0 @@ -YUI.add("yuidoc-meta", function(Y) { - Y.YUIDoc = { meta: { - "classes": [ - null - ], - "modules": [], - "allModules": [] -} }; -}); \ No newline at end of file diff --git a/Kapitel5/dokumentation/out/assets/css/external-small.png b/Kapitel5/dokumentation/out/assets/css/external-small.png deleted file mode 100644 index 759a1cdcb5b1697e5be290d98b830e279cd71f3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmVDs{zR1^XE?tfB*h@ASKHAa7wwn{MEbP z7_^nS7{V*>+A}bS;P%45fB%Ai|Neasi2rl3{=EO;!w318%8Ovl7jArHc=P5Brfr~D z0AYimtss2w$hlYlfd>7*aO3TNzw875LBK0xAD9Np|A(oEVYnB*eE9~V6wP%78SXuL z&#-X)Er#`zY#Ce)^8hM>B_8 diff --git a/Kapitel5/dokumentation/out/assets/css/logo.png b/Kapitel5/dokumentation/out/assets/css/logo.png deleted file mode 100644 index 609b336c7cc5ef0c787a0068d221d9b8d69b1241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6308 zcmV;V7+dFwP)EI3}K zJAc0RviDlMYT7$`hje!Kj@LB3B$v~Qd;9X^3|$AqFu>69Z0KMbrezvAWa@n&$tpT| zTCH{cyjdVi(gp+w@V^dOksB0A>WW6xhIlO6Tv?HM0X_i}I#y60{PpGwx9vPMtFtRN zzNw#+=Tj2u`-uL(#+a*U!Mhu zc*G(+@nj+A1708rA$uKO;<-VVr3MVYxhNW0pGl{-r;6j7{t5L6rgfY5PJ8CL9kUwu zbudgU8eg2Ex&np2&cRTd`wY)J^i1Ra5;fuU*mdm4tUfgDMK5-q{|m=*>K zmt0VX&YeBdQ=)fa$R^1smi%+SgBQrVaGN@ES(A;8iY#qZRr%H8m*V6T)hnK*O z|1pC?@pvK+BT#UNUrSjdWbFT{Dzm@;L_uBh$8ED$ zuiJfPTW9`aY$8*RdjnUUrlU^R+`03|hDm_i5Luwnq7j z3E6ba0VDwiwDHfNDd`afqMg z;ri!g_m!HW5oK|Cwq!YmyzwIm^+yk_|MHs+Eq9xyRnxCJok*4f#gVLpK`K!hOA`m7 zrXArDhy&z@@Nn!4VdiZ&EK2} z!>Wpb{OnM$1DNA}{p_I4v2VIXKZ_VEfRJY;Iuu1&R+5T8o=vA-I4+<*_iE$hMa%1N z?C8v0J+L~7s%)S@Ol>?uPErsk33`wuLuSY*+7vE48>%1a67ze?luG!wOC|%)EeI?C zwx8(O`zi;pKd^^yj)74>4y=|X<3)=q%hS&sGpIj(bkp1oZ|%Pi=bIBl)oF$l5s2@M zMR71BQ;7WmRiZH{$yVb?Qlg!quu66K@%K)LY$gGSZT&zB6I6^-H+0k^z+_eD?rXV0 z5L1qV!A8eorwW24lZ?>%SS-4rYDo5p4;AW7cfWM)yL&qBv%JW5V0Dtllaoax+#e8V zB$k8}28x_x5pbFwuF@G(hQL=Zo$NO}umKO_6oH2kR4wxSrWK}m#G&)Saemf6U$B$# zrk6{FSmir^W1qZLRh7qwRhQrMfkT~l``>=_UTe?oZtBgd(=tsiMRB8Ch$x^WV>B2V z2&ft>#tNPJ}C{6fYwxz@4|uh6E0@Tu_z>Hq6&SP$9h8q(!7amKNbU6FeVQ}e16NTW!wW&xj$800_2i8@Oqgl}( zBSw)>zyh$kWustb6XGlYV~&}Q<#hu4I2f+-v+5yb_Z=xziTz{6OS|eQ&>jY;WnVK< zC-H4sK93taZ#RBkqo1YXxB%3K83r_hfuO2dE_W1xNt zM0PXiOoA)J`RvVj-Ko>7p*$P6lX{8PUSW6R0a&^20BmcNVdIuIyv<@%guE030oxG( zo?N~Tw)_KN*^1o|jTX^uTeiLne_Xi>wrta2?JLbpT^KQ7kpLFMd+=F!t3ij~|9Kbg z?DqNBz4A8v^@Y9gWXeu*Dj4zq2_$oi{Sn_&7~dqZ!8iyBqiKY1-HN?Zbxp z%=7P#eQfF0WjMl}6i_FHX+zXqpqdRdnk@lERXCvF0o8ev8*_ky@1qUVbX2O_VCif! zOA{`dJI)8?n7Q8GJgo=&{!!u@9x-4gSFN;#Wx7XCFDZ2R-^B-`>$|$O;BgpV=&2U} z-Q8pFvun>G@B2G;?!_leayJd!-|j}>eA>jQmQBmt-)qs>p$50j1G}3J?B0K%?el|% zx@g(fW!SGx;?$}8e$6$vE>IHb7L}!O&LszcA`fWZ1BxUClIbB{7o-bn0SpGFZEjhm zo_0zNl$XUR7}31)&e3Uf$=!|^VBqa9R+|tCDKB!$WE+_&GKBtskbs5t>4?=n8%zm6 zT_c8sC>^X}`MkEYvAJbUOKbb5`h`00w$<0;#+>ZJ^wb$URR>Z?Vx4f)LgW^bpmC?862+ zeD`4UR^}Rb;~wIXya zx}t0;$f`{JW*AUX!*zWr@rlJ{c42`nT#(?%bnnhM{!~QV~&KNRZ#a{m5J7Kckw5%_+cXV&s z_uio&gqq*8PN}*Irw$#QI-SpXVs7&`+!!{wYCH6phTRT*q+&i zpen_P7awo-tl@TG#Be~I=>}f$d>RxuQqc6W0UN7Y z2%dwDv>`;fo++^0j!d_f;1u&G`}QAv`A}Qe6b|ZjS4`VDW<>GTE>JzsE0w4>l1e}n zr!I(zZbhK>-4+{Y0{c)>G4k?Ua8+t@zLb8}-E}t5Y-tgkb=pWH1T>gdk z4zzuPOKI+#f8NrHZ0ttjKdCwypmI?Z66I+ds8IkYGYmy7NCzAsGDz@>fAhQV0prFVph_Hz=*3y7?lo;8z0y7vcglvC70- z79pQygD(HHCAbZLffYNMD?Tjw`NcmQT9LTPg-K=-g{6j;4+zvAxsa#nL8@Z7N7Em( zXZa8rmHIGEFL*lVj8TsNl5Q-Ld#=|Q#%%}FJ zRJOwbmnK0dM8uU9fv;gBKDQ*^|7Tj zL+oDe0X2g_b=U0bP*OpBp$v$tn}nHN=Wk{`39L?;S_PHmNk3|Jf+JC}T;mBUMj+;^ zq2Z|=fQjqGT-O64g{DA-{49H`&X0T@Ul@Sx`{m&6L&O&-z=4Q`*WH`LId=}bO8wbX zDlv6Oc zF|f-^0Gr;}1G;fCsH$-9l*<-Fz$V5m`SIaEc4OfiB(Ie4sfB*2uYJSgA}MUn0uJF5E5f`SZN`Q@Aca6eYyMD{kC2-IMJ zD$zJZyTd+E%wI!*LgKd5E$g^gQgQu3i20i%lzrX4Azr%{ZY=-)GG_Pp?wJT@gfTbI92Oa;8JDdj#9Gc;WI2NX9I$xmh(wh8>uPK67)(Jw6zcMYm(2a*x1N5aqpkZI8))7Ks`Ef& zC1s$fMgGoQ!M;GmOP411_he#vy^FI=u>Eig_!n*YV9A#*|J*cq@(-I~*MT@a=ihg> z!}cAxg^dQg$77RbNqC#AdI}XMvNjfrz^&i;3_Sju*I~!*JY8SEy#?yG?ZuxMQJ^^W zrSW(KzVd~WVA6y%KCBsDHgwv+4R|c?dVEV^Im3dGW10NIg5`h(VtG~$t<2nr1EKmO zx=GHZHVZDfcHGGHJk!uRIG|ddQLPT?$`PR|^^5d+fpVb1r8Fl@EO&1ASzi0oo@-go zpbN{3q@7_HP(3sY-@Nh+xbVypNW|Qe<46bxP~MEE@nb6B*6YuPx{-1SQv3hm!^+{N z>rRKyoSlKvlBjbm)dA_uPPF@jo6doA&LU&j4Idt!5^=JhDUxM=JM$U*>oJ}6berXk zA8Jg-V_%$9H)8JL0PQzWBGZC9KKrXxFKv6}!AGC_c1ugo)gsVDX*np7B0nb;Ml<+D z1vb(({RodytZjN-^W=PTYuJpRMa)e|qS|OQ3g?|Q5$2qQ;J_gZE3E^%dUSe>qNoIQ zqtZ|_G>*@e!ySg0L)p)>EZ+o@kBMXgzIf?raPj9%IM8aqtFJYY@Qi-FvLXTF#$@m^ zj(@*Kuf>HUIlt}X>Eqz(KWxKkRvbnSE3w@Nt5oN=dlrc`$Bsq98#*G2{Mf|0kw-M@ z;jjjC|JS1D&V1tOHTQINbHOc-B&*w6MTiu`molOp4j)*Q{iGik72{Q6bry!7Iq=Fd89#@Nf_ zMao|#?58}SLgmQ4Ps$b-OrglYsfhqUZ?FFTsznFe`>qTh&7g-A9D>CL+Z1DeI;kQMSlA}X2`)^_Q>|!@#k7am zF$>th3Ouvk+S*AT?r_d!Ispk2j4>k%+4F!CpxH1aH(=$W@nBGA@go`N`TRRS^tVe= zVhj$J+ZnXK6*pY;Nz!2VR4E-ivgI_5N(FkF)X8|G&RN_)V4 z^8;SC9PEJBHiKUA@M>%sOoNFuc_40YuzXX%6a!2re+-FUo#?{itQUI++@fKWgrp{% za{YYL_>p&i5RY9P5!9DAHBZqrV*+2Ww}R=5DXNn#;@bh!n9&(Vp>AI0r#8qjscvIi zZq7Hzw8yf02CRO5Grn5;WgpY0)X-qZZFN6|KwjX($e)3WJd5BxpydTYY~YI6z{mS- zy+bVDweuVGUc&3TN%pbtIi&fOe4g(2(6d5JH*?bg`^pZNrCl)NzP zqd?lzy!RkHvSbY$?2u?(m{ydWi1Xhsp9wRkW$hFT|3LIL$0hB+3% zlAJISiP2|l=xwp1s6vIAV;uN&MpR{4CR4J!Zp`rG?p;d9!FTw&p&s> z6`4$o1K1x}=DlUX*WZX`JA{s+ycjgcc-a|IlvVLWY}H98j(Z4>k}&_nY<%rV8byJt0*nyoo@3wI~{SwW6$a{pgX^&%sA5cF)n9#9&GxwgR z{Zs0xV^FE`UP%o^P=X8QK;aQ!TAjwSMDZdq=Skc3kWr9qOVj$|TMUy@2RjU7Gg zIrtb)=y-bFI+?cA|6}%{w$5tu%FgzVo|%5E5)Kw8`kl#Syxx^LPA%$(R%SQBCwTgQ a0R{k+kX}`<%LV)Z0000