From b02c458357eea3d73c92345005ff5abcc484db8a Mon Sep 17 00:00:00 2001 From: Alexander Marks Date: Tue, 5 Dec 2017 15:38:39 -0800 Subject: [PATCH 01/76] Annotate klass class as @private. Annotate that dedupingMixin returns T. --- lib/utils/mixin.html | 1 + lib/utils/templatize.html | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib/utils/mixin.html b/lib/utils/mixin.html index 525d1bc209..dd7936b9c2 100644 --- a/lib/utils/mixin.html +++ b/lib/utils/mixin.html @@ -38,6 +38,7 @@ * @memberof Polymer * @template T * @param {T} mixin ES6 class expression mixin to wrap + * @return {T} * @suppress {invalidCasts} */ Polymer.dedupingMixin = function(mixin) { diff --git a/lib/utils/templatize.html b/lib/utils/templatize.html index c4290724e2..28810322f1 100644 --- a/lib/utils/templatize.html +++ b/lib/utils/templatize.html @@ -257,6 +257,7 @@ /** * @constructor * @extends {base} + * @private */ let klass = class extends base { }; klass.prototype.__templatizeOptions = options; @@ -464,6 +465,7 @@ // Host property forwarding must be installed onto template instance addPropagateEffects(template, templateInfo, options); // Subclass base class and add reference for this specific template + /** @private */ let klass = class TemplateInstance extends baseClass {}; klass.prototype._methodHost = findMethodHost(template); klass.prototype.__dataHost = template; From 1f9be7863f25fb296db9dfcfa98f06908fa443d8 Mon Sep 17 00:00:00 2001 From: Alexander Marks Date: Fri, 10 Nov 2017 12:17:11 -0800 Subject: [PATCH 02/76] Add script to generate TypeScript declarations. Includes hand written types for cases that couldn't be generated. Uses https://github.com/Polymer/gen-typescript-declarations. Run with `gulp generate-typescript`. Also asyncify the gulpfile with fs-extra. --- gen-tsd.json | 18 + gulpfile.js | 21 +- package-lock.json | 1015 +++++++++++++++++++++++++++++----------- package.json | 2 + types/extra-types.d.ts | 158 +++++++ 5 files changed, 927 insertions(+), 287 deletions(-) create mode 100644 gen-tsd.json create mode 100644 types/extra-types.d.ts diff --git a/gen-tsd.json b/gen-tsd.json new file mode 100644 index 0000000000..4117292193 --- /dev/null +++ b/gen-tsd.json @@ -0,0 +1,18 @@ +{ + "exclude": [ + "dist/", + "externs/", + "gulpfile.js", + "test/", + "util/" + ], + "removeReferences": [ + "../shadycss/apply-shim.d.ts", + "../shadycss/custom-style-interface.d.ts" + ], + "addReferences": { + "lib/utils/boot.d.ts": [ + "extra-types.d.ts" + ] + } +} diff --git a/gulpfile.js b/gulpfile.js index c9003cae4b..ab3ff6028c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -16,7 +16,7 @@ const gulpif = require('gulp-if'); const runseq = require('run-sequence'); const del = require('del'); const eslint = require('gulp-eslint'); -const fs = require('fs'); +const fs = require('fs-extra'); const path = require('path'); const mergeStream = require('merge-stream'); const babel = require('gulp-babel'); @@ -260,15 +260,24 @@ gulp.task('lint', (done) => { runseq('lint-eslint', 'lint-closure', done); }); -gulp.task('generate-externs', ['clean'], () => { +gulp.task('generate-externs', ['clean'], async () => { let genClosure = require('@polymer/gen-closure-declarations').generateDeclarations; - return genClosure().then((declarations) => { - fs.writeFileSync('externs/closure-types.js', `${header}${declarations}`); - }); + const declarations = await genClosure(); + await fs.writeFile('externs/closure-types.js', `${header}${declarations}`); +}); + +gulp.task('generate-typescript', async () => { + let genTs = require('@polymer/gen-typescript-declarations').generateDeclarations; + await del(['types/**/*.d.ts', '!types/extra-types.d.ts']); + const config = await fs.readJson('gen-tsd.json'); + const files = await genTs('.', config); + for (const [filePath, contents] of files) { + await fs.outputFile(path.join('types', filePath), contents); + } }); gulp.task('update-version', () => { gulp.src('lib/utils/boot.html') .pipe(replace(/(window.Polymer.version = )'\d+\.\d+\.\d+'/, `$1'${require('./package.json').version}'`)) .pipe(gulp.dest('lib/utils')); -}); \ No newline at end of file +}); diff --git a/package-lock.json b/package-lock.json index a328431e96..1a677f5ed0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,6 +96,62 @@ } } }, + "@polymer/gen-typescript-declarations": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@polymer/gen-typescript-declarations/-/gen-typescript-declarations-0.2.0.tgz", + "integrity": "sha512-O1bRkpUNOhqUHG47XbGM02qf0mDOjjhUHsZCfx6MKII1j6yVjsG+eSMWFnDdYgThV/FEOLwInQ6IpwO1OlcxdA==", + "dev": true, + "requires": { + "@types/doctrine": "0.0.3", + "@types/fs-extra": "4.0.5", + "command-line-args": "4.0.7", + "command-line-usage": "4.0.2", + "doctrine": "2.0.0", + "escodegen": "1.9.0", + "fs-extra": "4.0.3", + "polymer-analyzer": "3.0.0-pre.3" + }, + "dependencies": { + "@types/doctrine": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", + "integrity": "sha1-6JLSk8ksnB0/mvcsFaVU+8fgiVo=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, "@polymer/sinonjs": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@polymer/sinonjs/-/sinonjs-1.17.1.tgz", @@ -261,12 +317,6 @@ "integrity": "sha1-qnr2mjqRkiFx7kEbPJ2Pa+tK8yE=", "dev": true }, - "@types/events": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", - "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==", - "dev": true - }, "@types/express": { "version": "4.0.39", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.0.39.tgz", @@ -294,6 +344,15 @@ "dev": true, "optional": true }, + "@types/fs-extra": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.5.tgz", + "integrity": "sha512-tIG0GpHum5IFb8Qze/cSv0w/0gNzHB+MUDftTQaxenx46z50g51/MPkNLssLz9+uZLzCDd35bT9qtWOTXZ21Gw==", + "dev": true, + "requires": { + "@types/node": "6.0.85" + } + }, "@types/glob": { "version": "5.0.33", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz", @@ -555,15 +614,37 @@ "dev": true, "requires": { "string-width": "1.0.2" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "ansi-escape-sequences": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz", - "integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz", + "integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==", "dev": true, "requires": { - "array-back": "1.0.4" + "array-back": "2.0.0" } }, "ansi-escapes": { @@ -689,9 +770,9 @@ "dev": true }, "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, "requires": { "typical": "2.6.1" @@ -927,7 +1008,7 @@ "dev": true, "requires": { "core-js": "2.5.0", - "regenerator-runtime": "0.11.0" + "regenerator-runtime": "0.11.1" } }, "babel-types": { @@ -949,9 +1030,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true } } @@ -1023,7 +1104,7 @@ "dev": true, "requires": { "core-js": "2.5.0", - "regenerator-runtime": "0.11.0" + "regenerator-runtime": "0.11.1" } }, "babel-types": { @@ -1045,9 +1126,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true } } @@ -1134,7 +1215,7 @@ "dev": true, "requires": { "core-js": "2.5.0", - "regenerator-runtime": "0.11.0" + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -1192,9 +1273,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true } } @@ -1315,7 +1396,7 @@ "dev": true, "requires": { "core-js": "2.5.0", - "regenerator-runtime": "0.11.0" + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -1373,9 +1454,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true } } @@ -1964,6 +2045,28 @@ "repeating": "2.0.1", "string-width": "1.0.2", "widest-line": "1.0.0" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "brace-expansion": { @@ -2266,27 +2369,25 @@ } }, "command-line-args": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz", - "integrity": "sha1-W9StReeYPlwTRJGOQCgO4mk8WsA=", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "dev": true, "requires": { - "array-back": "1.0.4", - "feature-detect-es6": "1.4.0", + "array-back": "2.0.0", "find-replace": "1.0.3", "typical": "2.6.1" } }, "command-line-usage": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz", - "integrity": "sha1-tqIJeMGzg0d/XBGlKUKLiAv+D00=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.0.2.tgz", + "integrity": "sha512-PpgwSX9SSZZDSTMXmVttJ9w8szzBgMma0bsVpiRfdXljLOBSmJvvxNTAP7twHIsnd6i6jEbcX/JpmAMC+FCbSQ==", "dev": true, "requires": { - "ansi-escape-sequences": "3.0.0", - "array-back": "1.0.4", - "feature-detect-es6": "1.4.0", - "table-layout": "0.3.0", + "ansi-escape-sequences": "4.0.0", + "array-back": "2.0.0", + "table-layout": "0.4.2", "typical": "2.6.1" } }, @@ -2595,9 +2696,9 @@ } }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.0.tgz", + "integrity": "sha1-bvSgmwX5iw41jW2T1Mo8rsZnKAM=", "dev": true }, "deep-is": { @@ -3058,9 +3159,9 @@ } }, "eslint": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz", - "integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.0.tgz", + "integrity": "sha512-1l2aVrEz9yiWsEQdL3XZEzTovHQJFZaTeIhOOilKQRiYNn1dVALoYOtn06iPoxhEwFukBPX4Ff8WoGD4r/7D2A==", "dev": true, "requires": { "ajv": "5.5.1", @@ -3174,24 +3275,12 @@ "integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=", "dev": true }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", @@ -3543,6 +3632,17 @@ "dev": true, "requires": { "array-back": "1.0.4" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "2.6.1" + } + } } }, "figures": { @@ -3652,6 +3752,17 @@ "requires": { "array-back": "1.0.4", "test-value": "2.1.0" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "2.6.1" + } + } } }, "find-up": { @@ -3839,6 +3950,25 @@ "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", "dev": true }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4261,7 +4391,7 @@ "integrity": "sha512-+qsePo04v1O3JshpNvww9+bOgZEJ6Cc2/w3mEktfKz0NL0zsh1SWzjyIL2FIM2zzy6IYQYv+j8REZORF8dKX4g==", "dev": true, "requires": { - "eslint": "4.12.1", + "eslint": "4.13.0", "gulp-util": "3.0.8" } }, @@ -4519,9 +4649,9 @@ "dev": true }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, "has-gulplog": { @@ -4786,6 +4916,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/indent/-/indent-0.0.2.tgz", + "integrity": "sha1-jHnwgBkFWbaHA0uEx676l9WpEdk=", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -4871,34 +5007,12 @@ "supports-color": "4.5.0" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -5008,13 +5122,10 @@ } }, "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=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "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=", + "dev": true }, "is-glob": { "version": "2.0.1", @@ -5322,6 +5433,24 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -5655,6 +5784,12 @@ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", "dev": true }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, "lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", @@ -5938,6 +6073,12 @@ "path-is-absolute": "1.0.1" } }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", @@ -6583,103 +6724,202 @@ } }, "polymer-analyzer": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-2.7.0.tgz", - "integrity": "sha512-yD5FYQ8thX/2vHTaEgTtCs/NSG3ko4VlEb0IjM/PFsu03lHNHnpadC1NGwKyvI9vOjcFhnw4mDEVW0lbxLo8Eg==", + "version": "3.0.0-pre.3", + "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-3.0.0-pre.3.tgz", + "integrity": "sha512-vTCJfnLlS8c+oijbr49Owev3y7eWWM5uRc+2Zz40vUlhyBARwr+UINisLDDeDsJMU1CerpOibU+7ABYYr9e65Q==", "dev": true, "requires": { + "@types/babel-generator": "6.25.1", + "@types/babel-traverse": "6.25.3", + "@types/babel-types": "6.25.2", + "@types/babylon": "6.16.2", "@types/chai-subset": "1.3.0", "@types/chalk": "0.4.31", "@types/clone": "0.1.30", "@types/cssbeautify": "0.3.1", "@types/doctrine": "0.0.1", - "@types/escodegen": "0.0.2", - "@types/estraverse": "0.0.6", - "@types/estree": "0.0.37", + "@types/minimatch": "3.0.1", "@types/node": "6.0.85", "@types/parse5": "2.2.34", + "babel-generator": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "chalk": "1.1.3", "clone": "2.1.1", "cssbeautify": "0.3.1", - "doctrine": "2.0.0", + "doctrine": "2.0.2", "dom5": "2.3.0", - "escodegen": "1.8.1", - "espree": "3.5.0", - "estraverse": "4.2.0", + "indent": "0.0.2", "jsonschema": "1.1.1", + "minimatch": "3.0.4", "parse5": "2.2.3", + "polymer-project-config": "3.6.0", "shady-css-parser": "0.1.0", "stable": "0.1.6", "strip-indent": "2.0.0" }, "dependencies": { - "@types/estree": { - "version": "0.0.37", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.37.tgz", - "integrity": "sha512-1IT6vNpmU9w18P3v6mN9idv18z5KPVTi4t7+rU9VLnkxo0LCam8IXy/eSVzOaQ1Wpabra2cN3A8K/SliPK/Suw==", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "parse5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", - "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", - "dev": true - } - } - }, - "polymer-build": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/polymer-build/-/polymer-build-2.1.1.tgz", - "integrity": "sha512-SW6gxS0UPz864jECKMXPEdtq3549xzludPAQpxEqeDz6pSAeY/AFDWRG78Gw+z+mS2KES16Wwkc9IdMagBj3FQ==", - "dev": true, - "requires": { - "@types/mz": "0.0.31", - "@types/node": "6.0.85", - "@types/parse5": "2.2.34", - "@types/vinyl": "2.0.1", - "@types/vinyl-fs": "0.0.28", - "dom5": "2.3.0", - "multipipe": "1.0.2", - "mz": "2.7.0", - "parse5": "2.2.3", - "plylog": "0.5.0", - "polymer-analyzer": "2.7.0", - "polymer-bundler": "3.1.1", - "polymer-project-config": "3.6.0", - "sw-precache": "5.2.0", - "vinyl": "1.2.0", - "vinyl-fs": "2.4.4" - }, - "dependencies": { - "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "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": { - "readable-stream": "2.3.3" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, - "glob": { - "version": "5.0.15", + "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.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "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.0", + "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.8", + "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=", + "dev": true, + "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==", + "dev": true + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "parse5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", + "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "polymer-build": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/polymer-build/-/polymer-build-2.1.1.tgz", + "integrity": "sha512-SW6gxS0UPz864jECKMXPEdtq3549xzludPAQpxEqeDz6pSAeY/AFDWRG78Gw+z+mS2KES16Wwkc9IdMagBj3FQ==", + "dev": true, + "requires": { + "@types/mz": "0.0.31", + "@types/node": "6.0.85", + "@types/parse5": "2.2.34", + "@types/vinyl": "2.0.1", + "@types/vinyl-fs": "0.0.28", + "dom5": "2.3.0", + "multipipe": "1.0.2", + "mz": "2.7.0", + "parse5": "2.2.3", + "plylog": "0.5.0", + "polymer-analyzer": "2.7.0", + "polymer-bundler": "3.1.1", + "polymer-project-config": "3.6.0", + "sw-precache": "5.2.0", + "vinyl": "1.2.0", + "vinyl-fs": "2.4.4" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.37", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.37.tgz", + "integrity": "sha512-1IT6vNpmU9w18P3v6mN9idv18z5KPVTi4t7+rU9VLnkxo0LCam8IXy/eSVzOaQ1Wpabra2cN3A8K/SliPK/Suw==", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "glob": { + "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, @@ -6794,6 +7034,37 @@ "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", "dev": true }, + "polymer-analyzer": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-2.7.0.tgz", + "integrity": "sha512-yD5FYQ8thX/2vHTaEgTtCs/NSG3ko4VlEb0IjM/PFsu03lHNHnpadC1NGwKyvI9vOjcFhnw4mDEVW0lbxLo8Eg==", + "dev": true, + "requires": { + "@types/chai-subset": "1.3.0", + "@types/chalk": "0.4.31", + "@types/clone": "0.1.30", + "@types/cssbeautify": "0.3.1", + "@types/doctrine": "0.0.1", + "@types/escodegen": "0.0.2", + "@types/estraverse": "0.0.6", + "@types/estree": "0.0.37", + "@types/node": "6.0.85", + "@types/parse5": "2.2.34", + "chalk": "1.1.3", + "clone": "2.1.1", + "cssbeautify": "0.3.1", + "doctrine": "2.0.0", + "dom5": "2.3.0", + "escodegen": "1.8.1", + "espree": "3.5.0", + "estraverse": "4.2.0", + "jsonschema": "1.1.1", + "parse5": "2.2.3", + "shady-css-parser": "0.1.0", + "stable": "0.1.6", + "strip-indent": "2.0.0" + } + }, "replace-ext": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", @@ -6834,6 +7105,14 @@ "clone": "1.0.3", "clone-stats": "0.0.1", "replace-ext": "0.0.1" + }, + "dependencies": { + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + } } }, "vinyl-fs": { @@ -6880,17 +7159,135 @@ "source-map": "0.5.7" }, "dependencies": { + "@types/estree": { + "version": "0.0.37", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.37.tgz", + "integrity": "sha512-1IT6vNpmU9w18P3v6mN9idv18z5KPVTi4t7+rU9VLnkxo0LCam8IXy/eSVzOaQ1Wpabra2cN3A8K/SliPK/Suw==", + "dev": true + }, + "ansi-escape-sequences": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz", + "integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=", + "dev": true, + "requires": { + "array-back": "1.0.4" + } + }, + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "2.6.1" + } + }, + "command-line-args": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz", + "integrity": "sha1-W9StReeYPlwTRJGOQCgO4mk8WsA=", + "dev": true, + "requires": { + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "find-replace": "1.0.3", + "typical": "2.6.1" + } + }, + "command-line-usage": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz", + "integrity": "sha1-tqIJeMGzg0d/XBGlKUKLiAv+D00=", + "dev": true, + "requires": { + "ansi-escape-sequences": "3.0.0", + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "table-layout": "0.3.0", + "typical": "2.6.1" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, "parse5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", "dev": true }, + "polymer-analyzer": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-2.7.0.tgz", + "integrity": "sha512-yD5FYQ8thX/2vHTaEgTtCs/NSG3ko4VlEb0IjM/PFsu03lHNHnpadC1NGwKyvI9vOjcFhnw4mDEVW0lbxLo8Eg==", + "dev": true, + "requires": { + "@types/chai-subset": "1.3.0", + "@types/chalk": "0.4.31", + "@types/clone": "0.1.30", + "@types/cssbeautify": "0.3.1", + "@types/doctrine": "0.0.1", + "@types/escodegen": "0.0.2", + "@types/estraverse": "0.0.6", + "@types/estree": "0.0.37", + "@types/node": "6.0.85", + "@types/parse5": "2.2.34", + "chalk": "1.1.3", + "clone": "2.1.1", + "cssbeautify": "0.3.1", + "doctrine": "2.0.0", + "dom5": "2.3.0", + "escodegen": "1.8.1", + "espree": "3.5.0", + "estraverse": "4.2.0", + "jsonschema": "1.1.1", + "parse5": "2.2.3", + "shady-css-parser": "0.1.0", + "stable": "0.1.6", + "strip-indent": "2.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "table-layout": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz", + "integrity": "sha1-buINxIPbNxs+XIf3BO0vfHmdLJo=", + "dev": true, + "requires": { + "array-back": "1.0.4", + "core-js": "2.5.0", + "deep-extend": "0.4.2", + "feature-detect-es6": "1.4.0", + "typical": "2.6.1", + "wordwrapjs": "2.0.0" + } + }, + "wordwrapjs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz", + "integrity": "sha1-q1X2leYRjak4WP3XDAU9HF4BrCA=", + "dev": true, + "requires": { + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "reduce-flatten": "1.0.1", + "typical": "2.6.1" + } } } }, @@ -6920,7 +7317,7 @@ "@types/express": "4.0.39", "@types/mime": "0.0.29", "@types/mz": "0.0.29", - "@types/node": "8.0.54", + "@types/node": "8.0.57", "@types/opn": "3.0.28", "@types/parse5": "2.2.34", "@types/pem": "1.9.3", @@ -6978,16 +7375,56 @@ "dev": true, "requires": { "@types/bluebird": "3.5.18", - "@types/node": "8.0.54" + "@types/node": "8.0.57" } }, "@types/node": { - "version": "8.0.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", - "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", + "version": "8.0.57", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.57.tgz", + "integrity": "sha512-ZxrhcBxlZA7tn0HFf7ebUYfR9aHyBgjyavBLzyrYMYuAMbONBPY4S5O35562iV2FfwnZCjQky3gTDy1B3jSZ2Q==", + "dev": true + }, + "ansi-escape-sequences": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz", + "integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=", + "dev": true, + "requires": { + "array-back": "1.0.4" + } + }, + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "2.6.1" + } + }, + "command-line-args": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz", + "integrity": "sha1-W9StReeYPlwTRJGOQCgO4mk8WsA=", "dev": true, "requires": { - "@types/events": "1.1.0" + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "find-replace": "1.0.3", + "typical": "2.6.1" + } + }, + "command-line-usage": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz", + "integrity": "sha1-tqIJeMGzg0d/XBGlKUKLiAv+D00=", + "dev": true, + "requires": { + "ansi-escape-sequences": "3.0.0", + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "table-layout": "0.3.0", + "typical": "2.6.1" } }, "debug": { @@ -7007,6 +7444,12 @@ } } }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, "etag": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", @@ -7092,6 +7535,32 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", "dev": true + }, + "table-layout": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz", + "integrity": "sha1-buINxIPbNxs+XIf3BO0vfHmdLJo=", + "dev": true, + "requires": { + "array-back": "1.0.4", + "core-js": "2.5.0", + "deep-extend": "0.4.2", + "feature-detect-es6": "1.4.0", + "typical": "2.6.1", + "wordwrapjs": "2.0.0" + } + }, + "wordwrapjs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz", + "integrity": "sha1-q1X2leYRjak4WP3XDAU9HF4BrCA=", + "dev": true, + "requires": { + "array-back": "1.0.4", + "feature-detect-es6": "1.4.0", + "reduce-flatten": "1.0.1", + "typical": "2.6.1" + } } } }, @@ -7141,11 +7610,10 @@ "dev": true }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true, - "optional": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true }, "promisify-node": { "version": "0.4.0", @@ -7261,6 +7729,14 @@ "ini": "1.3.4", "minimist": "1.2.0", "strip-json-comments": "2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + } } }, "read-all-stream": { @@ -7751,6 +8227,13 @@ } } }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true, + "optional": true + }, "urijs": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.16.1.tgz", @@ -8030,14 +8513,6 @@ "dev": true, "requires": { "is-fullwidth-code-point": "2.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=", - "dev": true - } } }, "slide": { @@ -8299,14 +8774,30 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.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=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } } }, "string_decoder": { @@ -8464,12 +8955,6 @@ "string-width": "2.1.1" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", @@ -8490,43 +8975,12 @@ "supports-color": "4.5.0" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -8539,17 +8993,16 @@ } }, "table-layout": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz", - "integrity": "sha1-buINxIPbNxs+XIf3BO0vfHmdLJo=", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.2.tgz", + "integrity": "sha512-tygyl5+eSHj4chpq5Zfy6cpc7MOUBClAW9ozghFH7hg9bAUzShOYn+/vUzTRkKOSLJWKfgYtP2tAU2c0oAD8eg==", "dev": true, "requires": { - "array-back": "1.0.4", - "core-js": "2.5.0", - "deep-extend": "0.4.2", - "feature-detect-es6": "1.4.0", + "array-back": "2.0.0", + "deep-extend": "0.5.0", + "lodash.padend": "4.6.1", "typical": "2.6.1", - "wordwrapjs": "2.0.0" + "wordwrapjs": "3.0.0" } }, "tar-stream": { @@ -8625,6 +9078,17 @@ "requires": { "array-back": "1.0.4", "typical": "2.6.1" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "2.6.1" + } + } } }, "text-encoding": { @@ -8867,6 +9331,12 @@ "crypto-random-string": "1.0.0" } }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9228,9 +9698,9 @@ } }, "wd": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/wd/-/wd-1.4.1.tgz", - "integrity": "sha512-C0wWd2X4SWWcyx5qxaixiZE4Vb07sl0yDfWHPeml8lDHSbmI9erE9BmTHIqOGoDxGgJ3/hkFmODQ7ZLKiF8+8Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/wd/-/wd-1.5.0.tgz", + "integrity": "sha512-e/KpzTlhtSG3Ek0AcRz4G6PhxGsc53Nro+GkI1er9p05tWQ7W9dpGZR5SqQzGUqvbaqJCThDSAGaY7LHgi6MiA==", "dev": true, "requires": { "archiver": "1.3.0", @@ -9301,7 +9771,7 @@ "update-notifier": "2.3.0", "wct-local": "2.0.16", "wct-sauce": "2.0.0-pre.3", - "wd": "1.4.1" + "wd": "1.5.0" }, "dependencies": { "ansi-align": { @@ -9314,12 +9784,6 @@ "string-width": "2.1.1" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", @@ -9446,18 +9910,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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=", - "dev": true - }, "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", @@ -9493,25 +9945,6 @@ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -9613,6 +10046,28 @@ "dev": true, "requires": { "string-width": "1.0.2" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "winston": { @@ -9636,13 +10091,11 @@ "dev": true }, "wordwrapjs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz", - "integrity": "sha1-q1X2leYRjak4WP3XDAU9HF4BrCA=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", + "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", "dev": true, "requires": { - "array-back": "1.0.4", - "feature-detect-es6": "1.4.0", "reduce-flatten": "1.0.1", "typical": "2.6.1" } diff --git a/package.json b/package.json index 7ba5ceb7b4..ae2185425b 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,14 @@ }, "devDependencies": { "@polymer/gen-closure-declarations": "^0.4.0", + "@polymer/gen-typescript-declarations": "^0.2.0", "@webcomponents/shadycss": "^1.1.0", "@webcomponents/webcomponentsjs": "^1.0.20", "babel-preset-minify": "^0.2.0", "del": "^3.0.0", "dom5": "^2.3.0", "eslint-plugin-html": "^4.0.1", + "fs-extra": "^4.0.3", "google-closure-compiler": "^20171112.0.0", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", diff --git a/types/extra-types.d.ts b/types/extra-types.d.ts new file mode 100644 index 0000000000..2f0bd69e49 --- /dev/null +++ b/types/extra-types.d.ts @@ -0,0 +1,158 @@ +/** + * This file contains the types that are required for compilation of the + * Polymer generated type declarations, but which could not themselves be + * automatically generated. + */ + +/// + +/** + * Types from "externs/closure-types.js" + */ + +type Polymer_PropertyEffects = Polymer.PropertyEffects; + +/** + * Types from "externs/polymer-externs.js" + */ + +interface PolymerElementPropertiesMeta { + type?: Function; + value?: any; + readOnly?: boolean; + computed?: string; + reflectToAttribute?: boolean; + notify?: boolean; + observer?: string; +} + +type PolymerElementProperties = { + [key: string]: PolymerElementPropertiesMeta +}; + +interface PolymerInit { + is: string; + extends?: string; + properties?: PolymerElementProperties; + observers?: string[]; + template?: HTMLTemplateElement|string; + hostAttributes?: {[key: string]: any}; + listeners?: {[key: string]: string}; +} + +/** + * Types from "externs/polymer-internal-shared-types.js" + */ + +interface StampedTemplate extends DocumentFragment { + __noInsertionPoint: boolean; + nodeList: Node[]; + $: {[key: string]: Node}; + templateInfo?: TemplateInfo; +} + +interface NodeInfo { + id: string; + events: {name: string, value: string}[]; + hasInsertionPoint: boolean; + templateInfo: TemplateInfo; + parentInfo: NodeInfo; + parentIndex: number; + infoIndex: number; + bindings: Binding[]; +} + +interface TemplateInfo { + nodeInfoList: NodeInfo[]; + nodeList: Node[]; + stripWhitespace: boolean; + hasInsertionPoint?: boolean; + hostProps: Object; + propertyEffects: Object; + nextTemplateInfo?: TemplateInfo; + previousTemplateInfo?: TemplateInfo; + childNodes: Node[]; + wasPreBound: boolean; +} + +interface LiteralBindingPart { + literal: string; + compoundIndex?: number; +} + +interface MethodArg { + literal: boolean; + name: string; + value: string|number; + rootProperty?: string; + structured?: boolean; + wildcard?: boolean; +} + +interface MethodSignature { + methodName: string; + static: boolean; + args: MethodArg[]; + dynamicFn?: boolean; +} + +interface ExpressionBindingPart { + mode: string; + negate: boolean; + source: string; + dependencies: Array; + customEvent: boolean; + signature: Object|null; + event: string; +} + +type BindingPart = LiteralBindingPart|ExpressionBindingPart; + +interface Binding { + kind: string; + target: string; + parts: BindingPart[]; + literal?: string; + isCompound: boolean; + listenerEvent?: string; + listenerNegate?: boolean; +} + +/** + * Types from "lib/utils/async.html" + */ + +interface AsyncInterface { + run: (fn: Function, delay?: number) => number; + cancel: (handle: number) => any; +} + +/** + * Types from "lib/utils/debounce.html" + */ + +type AsyncModule = AsyncInterface; + +/** + * Types from "lib/utils/gestures.html" + */ + +interface GestureRecognizer { + reset: () => any; + mousedown?: (e: MouseEvent) => any; + mousemove?: (e: MouseEvent) => any; + mouseup?: (e: MouseEvent) => any; + touchstart?: (e: TouchEvent) => any; + touchmove?: (e: TouchEvent) => any; + touchend?: (e: TouchEvent) => any; + click?: (e: MouseEvent) => any; +} + +/** + * Not defined in the TypeScript DOM library. + * See https://developer.mozilla.org/en-US/docs/Web/API/IdleDeadline + */ +interface IdleDeadline { + didTimeout: boolean; + timeRemaining(): number; +} From 60450bf4e4045507d147a8a9af214468a6894c70 Mon Sep 17 00:00:00 2001 From: Alexander Marks Date: Fri, 10 Nov 2017 12:18:01 -0800 Subject: [PATCH 03/76] Add generated TypeScript declarations. --- types/lib/elements/array-selector.d.ts | 187 ++++++ types/lib/elements/custom-style.d.ts | 71 ++ types/lib/elements/dom-bind.d.ts | 51 ++ types/lib/elements/dom-if.d.ts | 65 ++ types/lib/elements/dom-module.d.ts | 51 ++ types/lib/elements/dom-repeat.d.ts | 268 ++++++++ types/lib/legacy/class.d.ts | 105 +++ types/lib/legacy/legacy-element-mixin.d.ts | 620 ++++++++++++++++++ types/lib/legacy/mutable-data-behavior.d.ts | 131 ++++ types/lib/legacy/polymer-fn.d.ts | 23 + types/lib/legacy/polymer.dom.d.ts | 145 ++++ types/lib/legacy/templatizer-behavior.d.ts | 114 ++++ types/lib/mixins/dir-mixin.d.ts | 40 ++ types/lib/mixins/element-mixin.d.ts | 194 ++++++ types/lib/mixins/gesture-event-listeners.d.ts | 34 + types/lib/mixins/mutable-data.d.ts | 141 ++++ types/lib/mixins/property-accessors.d.ts | 288 ++++++++ types/lib/mixins/property-effects.d.ts | 596 +++++++++++++++++ types/lib/mixins/template-stamp.d.ts | 88 +++ types/lib/utils/array-splice.d.ts | 44 ++ types/lib/utils/async.d.ts | 109 +++ types/lib/utils/boot.d.ts | 19 + types/lib/utils/case-map.d.ts | 35 + types/lib/utils/debounce.d.ts | 46 ++ types/lib/utils/flattened-nodes-observer.d.ts | 90 +++ types/lib/utils/flush.d.ts | 28 + types/lib/utils/gestures.d.ts | 80 +++ types/lib/utils/html-tag.d.ts | 39 ++ types/lib/utils/import-href.d.ts | 25 + types/lib/utils/mixin.d.ts | 22 + types/lib/utils/path.d.ts | 132 ++++ types/lib/utils/render-status.d.ts | 45 ++ types/lib/utils/resolve-url.d.ts | 40 ++ types/lib/utils/settings.d.ts | 40 ++ types/lib/utils/style-gather.d.ts | 89 +++ types/lib/utils/templatize.d.ts | 132 ++++ types/lib/utils/unresolved.d.ts | 10 + types/polymer-element.d.ts | 25 + types/polymer.d.ts | 20 + 39 files changed, 4282 insertions(+) create mode 100644 types/lib/elements/array-selector.d.ts create mode 100644 types/lib/elements/custom-style.d.ts create mode 100644 types/lib/elements/dom-bind.d.ts create mode 100644 types/lib/elements/dom-if.d.ts create mode 100644 types/lib/elements/dom-module.d.ts create mode 100644 types/lib/elements/dom-repeat.d.ts create mode 100644 types/lib/legacy/class.d.ts create mode 100644 types/lib/legacy/legacy-element-mixin.d.ts create mode 100644 types/lib/legacy/mutable-data-behavior.d.ts create mode 100644 types/lib/legacy/polymer-fn.d.ts create mode 100644 types/lib/legacy/polymer.dom.d.ts create mode 100644 types/lib/legacy/templatizer-behavior.d.ts create mode 100644 types/lib/mixins/dir-mixin.d.ts create mode 100644 types/lib/mixins/element-mixin.d.ts create mode 100644 types/lib/mixins/gesture-event-listeners.d.ts create mode 100644 types/lib/mixins/mutable-data.d.ts create mode 100644 types/lib/mixins/property-accessors.d.ts create mode 100644 types/lib/mixins/property-effects.d.ts create mode 100644 types/lib/mixins/template-stamp.d.ts create mode 100644 types/lib/utils/array-splice.d.ts create mode 100644 types/lib/utils/async.d.ts create mode 100644 types/lib/utils/boot.d.ts create mode 100644 types/lib/utils/case-map.d.ts create mode 100644 types/lib/utils/debounce.d.ts create mode 100644 types/lib/utils/flattened-nodes-observer.d.ts create mode 100644 types/lib/utils/flush.d.ts create mode 100644 types/lib/utils/gestures.d.ts create mode 100644 types/lib/utils/html-tag.d.ts create mode 100644 types/lib/utils/import-href.d.ts create mode 100644 types/lib/utils/mixin.d.ts create mode 100644 types/lib/utils/path.d.ts create mode 100644 types/lib/utils/render-status.d.ts create mode 100644 types/lib/utils/resolve-url.d.ts create mode 100644 types/lib/utils/settings.d.ts create mode 100644 types/lib/utils/style-gather.d.ts create mode 100644 types/lib/utils/templatize.d.ts create mode 100644 types/lib/utils/unresolved.d.ts create mode 100644 types/polymer-element.d.ts create mode 100644 types/polymer.d.ts diff --git a/types/lib/elements/array-selector.d.ts b/types/lib/elements/array-selector.d.ts new file mode 100644 index 0000000000..44a16e21ac --- /dev/null +++ b/types/lib/elements/array-selector.d.ts @@ -0,0 +1,187 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/elements/array-selector.html + */ + +/// +/// +/// + +declare namespace Polymer { + + /** + * Element mixin for recording dynamic associations between item paths in a + * master `items` array and a `selected` array such that path changes to the + * master array (at the host) element or elsewhere via data-binding) are + * correctly propagated to items in the selected array and vice-versa. + * + * The `items` property accepts an array of user data, and via the + * `select(item)` and `deselect(item)` API, updates the `selected` property + * which may be bound to other parts of the application, and any changes to + * sub-fields of `selected` item(s) will be kept in sync with items in the + * `items` array. When `multi` is false, `selected` is a property + * representing the last selected item. When `multi` is true, `selected` + * is an array of multiply selected items. + */ + function ArraySelectorMixin {}>(base: T): { + new(...args: any[]): ArraySelectorMixin & Polymer.ElementMixin + } & T + + interface ArraySelectorMixin { + + /** + * An array containing items from which selection will be made. + */ + items: any[]|null; + + /** + * When `true`, multiple items may be selected at once (in this case, + * `selected` is an array of currently selected items). When `false`, + * only one item may be selected at a time. + */ + multi: boolean; + + /** + * When `multi` is true, this is an array that contains any selected. + * When `multi` is false, this is the currently selected item, or `null` + * if no item is selected. + */ + selected: Object|Object[]|null; + + /** + * When `multi` is false, this is the currently selected item, or `null` + * if no item is selected. + */ + selectedItem: Object|null; + + /** + * When `true`, calling `select` on an item that is already selected + * will deselect the item. + */ + toggle: boolean; + + /** + * Clears the selection state. + */ + clearSelection(): any; + + /** + * Returns whether the item is currently selected. + * + * @param item Item from `items` array to test + * @returns Whether the item is selected + */ + isSelected(item: any): boolean; + + /** + * Returns whether the item is currently selected. + * + * @param idx Index from `items` array to test + * @returns Whether the item is selected + */ + isIndexSelected(idx: number): boolean; + + /** + * Deselects the given item if it is already selected. + * + * @param item Item from `items` array to deselect + */ + deselect(item: any): void|null; + + /** + * Deselects the given index if it is already selected. + * + * @param idx Index from `items` array to deselect + */ + deselectIndex(idx: number): void|null; + + /** + * Selects the given item. When `toggle` is true, this will automatically + * deselect the item if already selected. + * + * @param item Item from `items` array to select + */ + select(item: any): void|null; + + /** + * Selects the given index. When `toggle` is true, this will automatically + * deselect the item if already selected. + * + * @param idx Index from `items` array to select + */ + selectIndex(idx: number): void|null; + } + + /** + * Element implementing the `Polymer.ArraySelector` mixin, which records + * dynamic associations between item paths in a master `items` array and a + * `selected` array such that path changes to the master array (at the host) + * element or elsewhere via data-binding) are correctly propagated to items + * in the selected array and vice-versa. + * + * The `items` property accepts an array of user data, and via the + * `select(item)` and `deselect(item)` API, updates the `selected` property + * which may be bound to other parts of the application, and any changes to + * sub-fields of `selected` item(s) will be kept in sync with items in the + * `items` array. When `multi` is false, `selected` is a property + * representing the last selected item. When `multi` is true, `selected` + * is an array of multiply selected items. + * + * Example: + * + * ```html + * + * + * + * + * + * ``` + * + * ```js + * Polymer({ + * is: 'employee-list', + * ready() { + * this.employees = [ + * {first: 'Bob', last: 'Smith'}, + * {first: 'Sally', last: 'Johnson'}, + * ... + * ]; + * }, + * toggleSelection(e) { + * let item = this.$.employeeList.itemForElement(e.target); + * this.$.selector.select(item); + * } + * }); + * ``` + */ + class ArraySelector extends + Polymer.ArraySelectorMixin( + Polymer.Element) { + } +} + +interface HTMLElementTagNameMap { + "array-selector": Polymer.ArraySelector; +} diff --git a/types/lib/elements/custom-style.d.ts b/types/lib/elements/custom-style.d.ts new file mode 100644 index 0000000000..0ceeae111c --- /dev/null +++ b/types/lib/elements/custom-style.d.ts @@ -0,0 +1,71 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/elements/custom-style.html + */ + +/// + +declare namespace Polymer { + + /** + * Custom element for defining styles in the main document that can take + * advantage of [shady DOM](https://github.com/webcomponents/shadycss) shims + * for style encapsulation, custom properties, and custom mixins. + * + * - Document styles defined in a `` are shimmed to ensure they + * do not leak into local DOM when running on browsers without native + * Shadow DOM. + * - Custom properties can be defined in a ``. Use the `html` selector + * to define custom properties that apply to all custom elements. + * - Custom mixins can be defined in a ``, if you import the optional + * [apply shim](https://github.com/webcomponents/shadycss#about-applyshim) + * (`shadycss/apply-shim.html`). + * + * To use: + * + * - Import `custom-style.html`. + * - Place a `` element in the main document, wrapping an inline ` + * + * ``` + */ + class CustomStyle extends HTMLElement { + + /** + * Returns the light-DOM ` + *
${this.partialTemplate}
+ * ${super.template} + * `; + * } + * static get partialTemplate() { return Polymer.html`Partial!`; } + */ + function html(strings: string[], ...values: any[]): HTMLTemplateElement; +} diff --git a/types/lib/utils/import-href.d.ts b/types/lib/utils/import-href.d.ts new file mode 100644 index 0000000000..e65604d4c7 --- /dev/null +++ b/types/lib/utils/import-href.d.ts @@ -0,0 +1,25 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/import-href.html + */ + +/// + +declare namespace Polymer { + + + /** + * Convenience method for importing an HTML document imperatively. + * + * This method creates a new `` element with + * the provided URL and appends it to the document to start loading. + * In the `onload` callback, the `import` property of the `link` + * element will contain the imported document contents. + */ + function importHref(href: string, onload?: Function|null, onerror?: Function|null, optAsync?: boolean): HTMLLinkElement|null; +} diff --git a/types/lib/utils/mixin.d.ts b/types/lib/utils/mixin.d.ts new file mode 100644 index 0000000000..a42c969c20 --- /dev/null +++ b/types/lib/utils/mixin.d.ts @@ -0,0 +1,22 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/mixin.html + */ + +/// + +declare namespace Polymer { + + + /** + * Wraps an ES6 class expression mixin such that the mixin is only applied + * if it has not already been applied its base argument. Also memoizes mixin + * applications. + */ + function dedupingMixin(mixin: T): T; +} diff --git a/types/lib/utils/path.d.ts b/types/lib/utils/path.d.ts new file mode 100644 index 0000000000..cc41011425 --- /dev/null +++ b/types/lib/utils/path.d.ts @@ -0,0 +1,132 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/path.html + */ + +/// + +declare namespace Polymer { + + /** + * Module with utilities for manipulating structured data path strings. + */ + namespace Path { + + + /** + * Returns true if the given string is a structured data path (has dots). + * + * Example: + * + * ``` + * Polymer.Path.isPath('foo.bar.baz') // true + * Polymer.Path.isPath('foo') // false + * ``` + */ + function isPath(path: string): boolean; + + + /** + * Returns the root property name for the given path. + * + * Example: + * + * ``` + * Polymer.Path.root('foo.bar.baz') // 'foo' + * Polymer.Path.root('foo') // 'foo' + * ``` + */ + function root(path: string): string; + + + /** + * Given `base` is `foo.bar`, `foo` is an ancestor, `foo.bar` is not + * Returns true if the given path is an ancestor of the base path. + * + * Example: + * + * ``` + * Polymer.Path.isAncestor('foo.bar', 'foo') // true + * Polymer.Path.isAncestor('foo.bar', 'foo.bar') // false + * Polymer.Path.isAncestor('foo.bar', 'foo.bar.baz') // false + * ``` + */ + function isAncestor(base: string, path: string): boolean; + + + /** + * Given `base` is `foo.bar`, `foo.bar.baz` is an descendant + * + * Example: + * + * ``` + * Polymer.Path.isDescendant('foo.bar', 'foo.bar.baz') // true + * Polymer.Path.isDescendant('foo.bar', 'foo.bar') // false + * Polymer.Path.isDescendant('foo.bar', 'foo') // false + * ``` + */ + function isDescendant(base: string, path: string): boolean; + + + /** + * Replaces a previous base path with a new base path, preserving the + * remainder of the path. + * + * User must ensure `path` has a prefix of `base`. + * + * Example: + * + * ``` + * Polymer.Path.translate('foo.bar', 'zot', 'foo.bar.baz') // 'zot.baz' + * ``` + */ + function translate(base: string, newBase: string, path: string): string; + + + /** + * Converts array-based paths to flattened path. String-based paths + * are returned as-is. + * + * Example: + * + * ``` + * Polymer.Path.normalize(['foo.bar', 0, 'baz']) // 'foo.bar.0.baz' + * Polymer.Path.normalize('foo.bar.0.baz') // 'foo.bar.0.baz' + * ``` + */ + function normalize(path: string|Array): string; + + + /** + * Splits a path into an array of property names. Accepts either arrays + * of path parts or strings. + * + * Example: + * + * ``` + * Polymer.Path.split(['foo.bar', 0, 'baz']) // ['foo', 'bar', '0', 'baz'] + * Polymer.Path.split('foo.bar.0.baz') // ['foo', 'bar', '0', 'baz'] + * ``` + */ + function split(path: string|Array): string[]; + + + /** + * Reads a value from a path. If any sub-property in the path is `undefined`, + * this method returns `undefined` (will never throw. + */ + function get(root: Object|null, path: string|Array, info?: Object|null): any; + + + /** + * Sets a value to a path. If any sub-property in the path is `undefined`, + * this method will no-op. + */ + function set(root: Object|null, path: string|Array, value: any): string|undefined; + } +} diff --git a/types/lib/utils/render-status.d.ts b/types/lib/utils/render-status.d.ts new file mode 100644 index 0000000000..74c1b6fa94 --- /dev/null +++ b/types/lib/utils/render-status.d.ts @@ -0,0 +1,45 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/render-status.html + */ + +/// + +declare namespace Polymer { + + /** + * Module for scheduling flushable pre-render and post-render tasks. + */ + namespace RenderStatus { + + + /** + * Enqueues a callback which will be run before the next render, at + * `requestAnimationFrame` timing. + * + * This method is useful for enqueuing work that requires DOM measurement, + * since measurement may not be reliable in custom element callbacks before + * the first render, as well as for batching measurement tasks in general. + * + * Tasks in this queue may be flushed by calling `Polymer.RenderStatus.flush()`. + */ + function beforeNextRender(context: any, callback: () => any, args: any[]|null): void|null; + + + /** + * Enqueues a callback which will be run after the next render, equivalent + * to one task (`setTimeout`) after the next `requestAnimationFrame`. + * + * This method is useful for tuning the first-render performance of an + * element or application by deferring non-critical work until after the + * first paint. Typical non-render-critical work may include adding UI + * event listeners and aria attributes. + */ + function afterNextRender(context: any, callback: () => any, args: any[]|null): void|null; + } +} diff --git a/types/lib/utils/resolve-url.d.ts b/types/lib/utils/resolve-url.d.ts new file mode 100644 index 0000000000..40d00f7777 --- /dev/null +++ b/types/lib/utils/resolve-url.d.ts @@ -0,0 +1,40 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/resolve-url.html + */ + +/// + +declare namespace Polymer { + + /** + * Module with utilities for resolving relative URL's. + */ + namespace ResolveUrl { + + + /** + * Resolves the given URL against the provided `baseUri'. + */ + function resolveUrl(url: string, baseURI?: string|null): string; + + + /** + * Resolves any relative URL's in the given CSS text against the provided + * `ownerDocument`'s `baseURI`. + */ + function resolveCss(cssText: string, baseURI: string): string; + + + /** + * Returns a path from a given `url`. The path includes the trailing + * `/` from the url. + */ + function pathFromUrl(url: string): string; + } +} diff --git a/types/lib/utils/settings.d.ts b/types/lib/utils/settings.d.ts new file mode 100644 index 0000000000..3deba3d30c --- /dev/null +++ b/types/lib/utils/settings.d.ts @@ -0,0 +1,40 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/settings.html + */ + +/// +/// + +declare namespace Polymer { + + /** + * Legacy settings. + */ + namespace settings { + } + + + /** + * Sets the global rootPath property used by `Polymer.ElementMixin` and + * available via `Polymer.rootPath`. + */ + function setRootPath(path: string): void|null; + + + /** + * Sets the global sanitizeDOMValue available via `Polymer.sanitizeDOMValue`. + */ + function setSanitizeDOMValue(newSanitizeDOMValue: ((p0: any, p1: string, p2: string, p3: Node|null) => any)|undefined): void|null; + + + /** + * Sets `passiveTouchGestures` globally for all elements using Polymer Gestures. + */ + function setPassiveTouchGestures(usePassive: boolean): void|null; +} diff --git a/types/lib/utils/style-gather.d.ts b/types/lib/utils/style-gather.d.ts new file mode 100644 index 0000000000..6756c001ba --- /dev/null +++ b/types/lib/utils/style-gather.d.ts @@ -0,0 +1,89 @@ +/** + * DO NOT EDIT + * + * This file was automatically generated by + * https://github.com/Polymer/gen-typescript-declarations + * + * To modify these typings, edit the source file(s): + * lib/utils/style-gather.html + */ + +/// + +declare namespace Polymer { + + /** + * Module with utilities for collection CSS text from ``, external + * stylesheets, and `dom-module`s. + */ + namespace StyleGather { + + + /** + * Returns a list of