From 498ddf0d43a00413eaabb8fce6229525326f666d Mon Sep 17 00:00:00 2001 From: Kenneth Brubaker Date: Sun, 8 Jul 2018 18:20:52 -0500 Subject: [PATCH] chore(devenv): #153 Updated es proposals and babel plugins to TS39 2018-05 --- .bithoundrc | 2 +- .vscode/settings.json | 2 +- ecmascript-proposals.md | 305 +++++++++++++++++++------ package.json | 47 +++- packages/@jali-ms/core/package.json | 2 +- packages/@jali-ms/note/package.json | 2 +- packages/@jali-ms/package.json | 2 +- packages/@jali-ms/util/webpackfile.js | 23 +- site-cookbooks/main/recipes/default.rb | 6 +- webpackfile.js | 29 ++- 10 files changed, 310 insertions(+), 110 deletions(-) diff --git a/.bithoundrc b/.bithoundrc index ab7c43c..8b073cd 100644 --- a/.bithoundrc +++ b/.bithoundrc @@ -4,7 +4,7 @@ "Linting turned off again. Don't know how to control what to lint. Since project linting is in CI build, it's safe to turn it off here." ], "dependencies-mute": [ - "@types/node muted because we are using Node 6" + "@types/node muted because we are using Node 8" ] }, "critics": { diff --git a/.vscode/settings.json b/.vscode/settings.json index 46df9f1..c563d5f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,6 +12,6 @@ // "files.trimTrailingWhitespace": true, "files.encoding": "utf8", "git.enabled": true, - "git.enableLongCommitWarning": true, + "npm.enableScriptExplorer": true, "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/ecmascript-proposals.md b/ecmascript-proposals.md index 7085448..49c9ade 100644 --- a/ecmascript-proposals.md +++ b/ecmascript-proposals.md @@ -1,54 +1,130 @@ -# EcmaScript Proposals +# ECMAScript Proposals - + + + -Table of EcmaScript proposals and their usage in **Jail**. - -| Proposal | Status | Information | Jali | Polyfill | TypeScript | Babel Plugin | Babel Preset | [Node][NodeESNext]| Comment | -|:-------------------------------------|-------------|:-----------------:|:----:|:---------|:------------:|:------------------------------------|:---------------|:-------------|:--------------------------------------------------------| -| [modules][1] | ES2015 | [MDN01]
[MDN02]| Yes | | Yes | [transform-es2015-modules-commonjs] | [es2015-node6]
[node6]| | Babel transform not used as modules are supported by Webpack 2.
Used by AVA based unit testing | -| [function.name property][2] | ES2015 | [MDN03] | Yes | | Yes | [transform-es2015-function-name] | [es2015-node6] | 6 LTS | Transform used for browser. | -| [exponentiation operator][3] | ES2016 | [MDN04] | Yes | | Yes | [transform-exponentiation-operator] | [es2016] | 7 | | -| [Array#includes][42] | ES2016 | [MDN05] | Yes | core.js | Yes | | [es2016] | 6 LTS | | -| [Object.{values,entries}][4] | ES2017 | [MDN06]
[MDN07]| Yes | core.js | Yes | | | 7 | | -| [String#{padStart,padEnd}][5] | ES2017 | [MDN08]
[MDN09]| Yes | core.js | Yes | | | | | -| [Object.getOwnPropertyDescriptors][6]| ES2017 | [MDN10] | Yes | core.js | Yes | | | | | -| [trailing commas from function calls][9]| ES2017 | [2ality00] | Yes | | Yes | [syntax-trailing-function-commas] | [node6] | | | -| [Async Functions][8] | ES2017 | [MDN11] | Yes | | Yes | [transform-async-to-generator] | | | | -| [SIMD][7] | Stage 3 | [MDN12] | | | | | | | Not included.
Can use [polyfill](https://www.npmjs.com/package/simd). | -| [Function#toString revision][10] | Stage 3 | [2ality01] | | | | | | | ??? | -| [Lifting Template Literal Restriction][24]| Stage 3| [2ality02] | | | #[12700] | | | | | -| [global][15] | Stage 3 | [2ality03] | | | #[12902] | | | | core.js implementation still has System.global | -| [Rest/Spread Properties][13] | Stage 3 | [2ality04] | Yes | | Yes | [transform-object-rest-spread] | | | Introduced in TypeScript [2.1][ts21] | -| [Asynchronous Iteration][11] | Stage 3 | [2ality05] | | | 2.2 #[11326] | [transform-async-to-generator] | | | | -| [Shared memory and atomics][14] | Stage 3 | [MDN13] | | | | | | | Nope. | -| [import()][34] | Stage 3 | [2ality06] | | | #[12364] | | | | Webpack 2 [supports it][code-splitting-with-es2015] | -| [function.sent metaproperty][12] | Stage 2 | | Yes | | | [transform-function-sent] | | | | -| [String.prototype.{trimStart,trimEnd}][17]| Stage 2| | Yes | core.js | | | | | | -| [Public Class Fields][20] | Stage 2 | | Yes | | Yes. See comment| [transform-class-properties] | | | Bug in TypeScript #[12212] does not pass through to Babel| -| [Promise#finally][16] | Stage 2 | | | | | | | | [promise.prototype.finally][promise.prototype.finally] | -| [Class and Property Decorators][18] | Stage 2 | | Yes | | Yes | [transform-decorators-legacy] | | | [Needs write in Babel][babel-2016-12-07] | -| [Legacy RegExp features in JavaScript][32]| Stage 2| | | | | | | | | -| [RegExp Lookbehind Assertions][39] | Stage 2 | | | | | | | | | -| [RegExp Unicode Property Escapes][23]| Stage 2 | | | | | | | | | -| [Private Fields][28] | Stage 2 | | | | #[9950] | PR #[260] | | | | -| [Intl.Segmenter][36] | Stage 2 | | | | | | | | | -| [Date.parse fallback semantics][25] | Stage 1 | | | | | | | | | -| [export ns from][26] | Stage 1 | | | | | | | | | -| [export default from][27] | Stage 1 | | | | | | | | | -| [Observable][19] | Stage 1 | | Yes | core.js | | | | | | -| [String#matchAll][41] | Stage 1 | | | | | | | | | -| [WeakRefs][29] | Stage 1 | | | | | | | | | -| [Frozen Realms][30] | Stage 1 | | | | | | | | | -| [Math Extensions][22] | Stage 1 | | | | | | | | | -| [`of` and `from` on collection constructors][33]| Stage 1| | | | | | | | | -| Generator arrow functions | Stage 1 | | | | | | | | | -| [RegExp named capture groups][35] | Stage 1 | | | | | | | | | -| [`s` (`dotAll`) flag for regular expressions][37]| Stage1| | | | | | | | | -| [`Promise.try`][38] | Stage 1 | | | | | | | | | -| [64-Bit Integer Operations][40] | Stage 1 | | | | | | | | | -| [String.prototype.at][21] | Stage 0 | | Yes | core.js | | | | | | +ECMAScript, the standard for JavaScript, is an evolving language +specification, [ECMA-262][ecma-262], and maintained by Ecma Technical +Committee 39 - ECMAScript ([TC39][ecma-tc39]). Proposed changes go +through [four stages][ecma-tc39-process] to archive approval for the next +version of the standard that is currently released yearly. Status for +proposals are tracked by the [tc39/proposals][github-tc39-proposals] +repository [README][github-tc39-proposals-readme]. + +Axel Rauschmayer provides a useful guide to the coming features in the +next version of the standard in his post [Feature watch: ECMAScript 2018][2ality-2018]. + +Typescript support for proposals is tracked [here][github-ts-esnext]. +Babel support for proposals is tracked [here][github-babel-proposals]. +NodeJs support for proposals is tracked [here][node-green]. + +## Table Of Proposals + +Table of ECMAScript proposals and their usage in **Jail**. + +| Proposal | Status | Information | Jali | Polyfill | TypeScript | Babel Plugin | NodeJs | Comment | +|:-------------------------------------|-------------|:-----------------:|:----:|:---------|:------------:|:------------------------------------|:-------------|:--------------------------------------------------------| +| [modules][1] | ES2015 | [mdn01]
[mdn02]| Yes | | Yes | [transform-es2015-modules-commonjs] | 9 | Babel transform not used as modules are supported by Webpack 2.
Used by AVA based unit testing| +| [function.name property][2] | ES2015 | [mdn03] | Yes | | Yes | [transform-es2015-function-name] | 6 LTS | Transform used for browser. | +| [Array#includes][42] | ES2016 | [mdn05] | Yes | core.js | Yes | NA | 6 LTS | | +| [exponentiation operator][3] | ES2016 | [mdn04] | Yes | | Yes | [transform-exponentiation-operator] | 8 LTS | | +| [Object.{values,entries}][4] | ES2017 | [mdn06]
[mdn07]| Yes | core.js | Yes | NA | 8 LTS | | +| [String#{padStart,padEnd}][5] | ES2017 | [mdn08]
[mdn09]| Yes | core.js | Yes | NA | 8 LTS | | +| [Object.getOwnPropertyDescriptors][6]| ES2017 | [mdn10] | Yes | core.js | Yes | NA | 8 LTS | | +| [trailing commas from function calls][9]| ES2017 | [2ality00] | Yes | | Yes | [syntax-trailing-function-commas] | 8 LTS | | +| [Async Functions][8] | ES2017 | [mdn11] | Yes | | Yes | [transform-async-to-generator] | 8 LTS | | +| [Shared memory and atomics][14] | ES2017 | [mdn13] | See notes| | [2.6][ts26] #[15753]| | 9 | Typescript supports the syntax. Implementation support javascript runtime and version| +| [Lifting Template Literal Restriction][24]| ES2018 | [mdn14]
[2ality02]| | | #[12700] | V7 Core See PR #[274] | 9 | | +| [`s` (`dotAll`) flag for regular expressions][37]| ES2018| [2ality10] | Yes | | | [transform-modern-regexp] | 9 | | +| [RegExp named capture groups][35] | ES2018 | [2ality09] | Yes | | | [transform-modern-regexp] | 10 | Babel may also support through regexpu See [babel proposals #35][babel-proposals-35]| +| [RegExp Lookbehind Assertions][39] | ES2018 | [2ality07] | | | | No. See [transform-modern-regexp #5][transform-modern-regexp5]| 9| | +| [RegExp Unicode Property Escapes][23]| ES2018 | [2ality08] | Yes | | | [transform-unicode-property-regex] | 10 | | +| [Rest/Spread Properties][13] | ES2018 | [2ality04] | Yes | | [2.1][ts21]] | [transform-object-rest-spread] | 8 LTS | | +| [Promise#finally][16] | ES2018 | [2ality11] | Yes | core.js | | | 10 | [promise.prototype.finally][promise.prototype.finally] | +| [Asynchronous Iteration][11] | ES2018 | [2ality05] | Yes | | [2.3][ts23] #[11326]| [transform-async-generator-functions]| 10 | | +| [Optional catch binding][44] | ES2019 | [2ality14] | Yes | | [2.5][ts25] #[17467]| [transform-optional-catch-binding]| | [Added to chrome codebase 2018-01-19](https://bugs.chromium.org/p/v8/issues/detail?id=6889)| +| [JSON superset][65] | ES2019 | | | | | PR #[#7985] | | | +| [Function#toString revision][10] | Stage 3 | [2ality01] | | | | | 10. 6 LTS (Partial)| | +| [global][15] | Stage 3 | [2ality03] | Yes | core.js | #[12902] | | | core.js v2.5.0 | +| [import()][34] | Stage 3 | [2ality06] | Yes | | [2.4][ts24] #[14495]| [syntax-dynamic-import] | | Babel syntax/transform not used as dynamic modules are [supported by Webpack 2][code-splitting-with-es2015].
Used by AVA based unit testing| +| [Legacy RegExp features in JavaScript][32]| Stage 3| | | | | | | | +| [BigInt][43] | Stage 3 | [2ality12] | | | #[15096] | PR #[6015] | | | +| [`import.meta`][45] | Stage 3 | [2ality15] | | | | | | | +| [Private instance methods and accessors][46]| Stage 3|[2ality13] | | | #[9950] | V7 [transform-class-properties] | | See #[7842] Merged 2018-05-18 for 7.0.0-beta.48 | +| [Array#{flat,flatMap}][49] | Stage 3 | | Yes | core.js | | | | | +| [Instance class fields and methods][47]| Stage 3 | [2ality13] | Yes | | Yes. See comment| [transform-class-properties] | | Bug in TypeScript #[12212] does not pass through to Babel| +| [Static class fields and methods][75]| Stage 3 | [2ality13] | Yes | | Yes. See comment| [transform-class-properties] | | Bug in TypeScript #[12212] does not pass through to Babel| +| [String#{trimStart,trimEnd}][17] | Stage 3 | | Yes | core.js | | | | | +| [String#matchAll][41] | Stage 3 | | Yes | core.js | | | | | +| [Symbol#description][60] | Stage 3 | | Yes | core.js | | | | | +| [Numeric separators][48] | Stage 2 | | | | *2.7* #[20582]| [transform-numeric-separator] | | | +| [function.sent metaproperty][12] | Stage 2 | | Yes | | | [transform-function-sent] | | | +| [Decorators][18] | Stage 2 | | Yes | | Yes | [transform-decorators-legacy] | | [Needs write in Babel][babel-2016-12-07] | +| [Throw expressions][51] | Stage 2 | | | | | | | | +| [Atomics.waitAsync][59] | Stage 2 | | | | | | | | +| [Hashbang Grammar][85] | Stage 2 | | | | | | | | +| [WeakRefs][29] | Stage 2 | | | | | | | | +| [Object.fromEntries][84] | Stage 2 | | | | | | | | +| [Top-level await][79] | Stage 2 | | | | | | | | +| [New Set methods][82] | Stage 2 | | | | | | | | +| [Well-formed `JSON.stringify`][90] | Stage 2 | | | | | | | | +| [Function#toString() censorship][78] | Stage 2 | | | | | | | | +| [Realms][56] | Stage 2 | | | | | | | | +| [Date.parse fallback semantics][25] | Stage 1 | | | | | | | | +| [export v from "mod"; statements][27]| Stage 1 | | | | | | | | +| [Observable][19] | Stage 1 | | Yes | core.js | | | | | +| [Frozen Realms][30] | Stage 1 | | | | | | | | +| [Math Extensions][22] | Stage 1 | | Yes | core.js | | | | | +| [`of` and `from` on collection constructors][33]| Stage 1| | Yes | core.js | | | | | +| Generator arrow functions | Stage 1 | | | | | | | | +| [Promise.try][38] | Stage 1 | | Yes | core.js | | | | | +| [Optional Chaining][52] | Stage 1 | | | | | | | | +| [Math.signbit: IEEE-754 sign bit][53]| Stage 1 | | Yes | core.js | | | | | +| [Error stacks][54] | Stage 1 | | | | | | | | +| [do expressions][55] | Stage 1 | | | | | | | | +| [Temporal][57] | Stage 1 | | | | | | | | +| [Float16 on TypedArrays, DataView, Math.hfround][58]| Stage 1| | | | | | | | +| [Number.{parseInt,parseFloat} changes| Stage 1 | | | | | | | | +| [Binary AST][61] | Stage 1 | | | | | | | | +| [Pipeline Operator][62] | Stage 1 | | | | | | | | +| [Extensible numeric literals][63] | Stage 1 | | | | | | | | +| [First-Class Protocols][64] | Stage 1 | | | | | | | | +| [Nullary coalescing operator][66] | Stage 1 | | | | | | | | +| [Partial application][67] | Stage 1 | | | | | | | | +| [Cancellation API][74] | Stage 1 | | | | | | | | +| [InterpreterDirective][68] | Stage 1 | | | | | | | | +| [String#replaceAll][69] | Stage 1 | | | | | | | | +| [String#codePoints][70] | Stage 1 | | | | | | | | +| [Distinguishing literal strings][71] | Stage 1 | | | | | | | | +| [Object.freeze + Object.seal syntax][72]| Stage 1 | | | | | | | | +| [Block Params][73] | Stage 1 | | | | | | | | +| [{BigInt,Number}.fromString][76] | Stage 1 | | | | | | | | +| [Math.seededRandoms][77] | Stage 1 | | | | | | | | +| [Maximally minimal mixins][80] | Stage 1 | | | | | | | | +| [Getting last item from Array][81] | Stage 1 | | | | | | | | +| [Collection methods][83] | Stage 1 | | | | | | | | +| [Richer Keys][86] | Stage 1 | | | | | | | | +| [Slice notation][87] | Stage 1 | | | | | | | | +| [Logical Assignment Operators][88] | Stage 1 | | | | | | | | +| [Sequence properties in Unicode property escapes][88]| Stage 1| | | | | | | | +| [Module Keys][91] | Stage 1 | | | | | | | | +| [Class Static Block][92] | Stage 1 | | | | | | | | +| [class Access Expressions][93] | Stage 1 | | | | | | | | +| [Pattern Matching][94] | Stage 1 | | | | | | | | +| [RegExp Match array offsets][95] | Stage 1 | | | | | | | | +| [String.prototype.at][21] | Stage 0 | | Yes | core.js | | | | | + +## Document Workflow + +Next update to process for meeting **TC39 2018-05** from TC39 Proposals +README document is 83f2325 on 2018-05-22. + +### Process Status + +- Looking at **TC39 2018-05** +- Add [transform-optional-catch-binding] [1]: http://www.ecma-international.org/ecma-262/6.0/#sec-modules [2]: http://www.ecma-international.org/ecma-262/6.0/#sec-setfunctionname @@ -69,15 +145,13 @@ Table of EcmaScript proposals and their usage in **Jail**. [17]: https://github.com/sebmarkbage/ecmascript-string-left-right-trim [18]: http://tc39.github.io/proposal-decorators/ [19]: https://github.com/tc39/proposal-observable -[20]: https://tc39.github.io/proposal-class-public-fields/ [21]: https://github.com/mathiasbynens/String.prototype.at [22]: https://github.com/rwaldron/proposal-math-extensions [23]: https://github.com/tc39/proposal-regexp-unicode-property-escapes [24]: https://github.com/tc39/proposal-template-literal-revision -[25]: https://github.com/mrrrgn/proposal-date-time-string-format +[25]: https://github.com/tc39/proposal-date-time-string-format [26]: https://github.com/leebyron/ecmascript-export-ns-from [27]: https://github.com/leebyron/ecmascript-export-default-from -[28]: https://github.com/zenparsing/es-private-fields [29]: https://github.com/tc39/proposal-weakrefs [30]: https://github.com/FUDCo/frozen-realms [32]: https://github.com/tc39/proposal-regexp-legacy-features @@ -91,32 +165,97 @@ Table of EcmaScript proposals and their usage in **Jail**. [40]: https://gist.github.com/BrendanEich/4294d5c212a6d2254703 [41]: https://github.com/tc39/String.prototype.matchAll [42]: https://github.com/tc39/Array.prototype.includes/ +[43]: https://github.com/tc39/proposal-bigint +[44]: https://github.com/tc39/proposal-optional-catch-binding +[45]: https://github.com/tc39/proposal-import-meta +[46]: https://github.com/tc39/proposal-private-methods +[47]: https://github.com/tc39/proposal-class-fields +[48]: https://github.com/tc39/proposal-numeric-separator +[49]: https://github.com/tc39/proposal-flatMap +[51]: https://github.com/tc39/proposal-throw-expressions +[52]: https://github.com/tc39/proposal-optional-chaining +[53]: http://jfbastien.github.io/papers/Math.signbit.html +[54]: https://github.com/tc39/proposal-error-stacks +[55]: https://github.com/tc39/proposal-do-expressions +[56]: https://github.com/tc39/proposal-realms +[57]: https://github.com/tc39/proposal-temporal +[58]: https://docs.google.com/presentation/d/1Ta_IbravBUOvu7LUhlN49SvLU-8G8bIQnsS08P3Z4vY/edit#slide=id.p +[59]: https://github.com/tc39/proposal-atomics-wait-async +[60]: https://github.com/tc39/proposal-Symbol-description +[61]: https://github.com/syg/ecmascript-binary-ast +[62]: https://github.com/tc39/proposal-pipeline-operator +[63]: https://github.com/littledan/proposal-extensible-numeric-literals +[64]: https://github.com/michaelficarra/proposal-first-class-protocols +[65]: https://github.com/tc39/proposal-json-superset +[66]: https://github.com/tc39-transfer/proposal-nullish-coalescing +[67]: https://github.com/rbuckton/proposal-partial-application +[68]: https://gist.github.com/bmeck/59cf8c16959eccffd8b7e9828826a842 +[69]: https://github.com/tc39/proposal-string-replace-all +[70]: https://github.com/RReverser/string-prototype-codepoints +[71]: https://github.com/mikewest/tc39-proposal-literals +[72]: https://github.com/keithamus/object-freeze-seal-syntax +[73]: https://github.com/samuelgoto/proposal-block-params +[74]: https://github.com/tc39/proposal-cancellation +[75]: https://github.com/tc39/proposal-static-class-features/ +[76]: https://github.com/tc39/proposal-number-fromstring +[77]: https://github.com/tc39/proposal-seeded-random +[78]: https://github.com/rwaldron/tc39-notes/blob/master/es8/2018-01/jan-23.md#functionprototypetostring-censorship-for-stage-1 +[79]: https://docs.google.com/presentation/d/1B0csbsot4HTrk30ueYMDqd1S-nRkCiIcVXaWgtSU_0Q/edit +[80]: https://gist.github.com/justinfagnani/9502b5f46599f474a67a5fce2f7af910 +[81]: https://github.com/keithamus/proposal-array-last +[82]: https://github.com/Ginden/set-methods +[83]: https://github.com/Ginden/collection-methods +[84]: https://github.com/tc39/proposal-object-from-entries +[85]: https://github.com/bmeck/proposal-hashbang +[86]: https://docs.google.com/presentation/d/1q3CGeXqskL1gHTATH_VE9Dhj0VGTIAOzJ1cR0dYqDBk/edit#slide=id.p +[87]: https://github.com/gsathya/proposal-slice-notation/ +[88]: https://github.com/jridgewell/proposal-logical-assignment +[89]: https://github.com/mathiasbynens/proposal-regexp-unicode-sequence-properties +[90]: https://github.com/gibson042/ecma262-proposal-well-formed-stringify +[91]: https://github.com/mikesamuel/tc39-module-keys +[92]: https://github.com/rbuckton/proposal-class-static-block +[93]: https://github.com/rbuckton/proposal-class-access-expressions +[94]: https://github.com/tc39/proposal-pattern-matching +[95]: https://github.com/rbuckton/proposal-regexp-match-offsets [syntax-trailing-function-commas]: https://babeljs.io/docs/plugins/syntax-trailing-function-commas/ -[transform-async-to-generator]: http://babeljs.io/docs/plugins/transform-async-to-generator/ +[syntax-dynamic-import]: https://babeljs.io/docs/plugins/syntax-dynamic-import/ +[transform-async-to-generator]: https://babeljs.io/docs/plugins/transform-async-to-generator/ +[transform-async-generator-functions]: https://babeljs.io/docs/plugins/transform-async-generator-functions/ [transform-class-properties]: https://babeljs.io/docs/plugins/transform-class-properties/ [transform-decorators-legacy]: https://babeljs.io/docs/plugins/transform-decorators/ [transform-es2015-modules-commonjs]: https://babeljs.io/docs/plugins/transform-es2015-modules-commonjs/ [transform-es2015-function-name]: https://babeljs.io/docs/plugins/transform-es2015-function-name/ [transform-exponentiation-operator]: https://babeljs.io/docs/plugins/transform-exponentiation-operator/ [transform-function-sent]: https://www.npmjs.com/package/babel-plugin-transform-function-sent +[transform-modern-regexp]: https://www.npmjs.com/package/babel-plugin-transform-modern-regexp +[transform-numeric-separator]: https://www.npmjs.com/package/babel-plugin-transform-numeric-separator [transform-object-rest-spread]: https://babeljs.io/docs/plugins/transform-object-rest-spread/ +[transform-optional-catch-binding]: https://babeljs.io/docs/en/next/babel-plugin-proposal-optional-catch-binding.html +[transform-unicode-property-regex]: https://www.npmjs.com/package/babel-plugin-transform-unicode-property-regex -[es2015-node6]: https://www.npmjs.com/package/babel-preset-es2015-node6 -[es2016]: https://www.npmjs.com/package/babel-preset-es2016 -[node6]: https://www.npmjs.com/package/babel-preset-node6 +[274]: https://github.com/babel/babylon/pull/274 +[4576]: https://github.com/babel/babel/pull/4576 +[6015]: https://github.com/babel/babel/pull/6015 +[7842]: https://github.com/babel/babel/pull/7842 +[7985]: https://github.com/babel/babel/pull/7985 +[transform-modern-regexp5]: https://github.com/DmitrySoshnikov/babel-plugin-transform-modern-regexp/issues/5 +[babel-proposals-35]: https://github.com/babel/proposals/issues/35#issuecomment-392068353 -[260]: https://github.com/babel/babylon/pull/260 [9950]: https://github.com/Microsoft/TypeScript/issues/9950 -[4576]: https://github.com/babel/babel/pull/4576 [11326]: https://github.com/Microsoft/TypeScript/issues/11326 [12212]: https://github.com/Microsoft/TypeScript/issues/12212 -[12364]: https://github.com/Microsoft/TypeScript/issues/12364 [12700]: https://github.com/Microsoft/TypeScript/issues/12700 [12902]: https://github.com/Microsoft/TypeScript/issues/12902 +[14495]: https://github.com/Microsoft/TypeScript/issues/14495 +[15096]: https://github.com/Microsoft/TypeScript/issues/15096 +[15753]: https://github.com/Microsoft/TypeScript/issues/15753 +[17467]: https://github.com/Microsoft/TypeScript/issues/17467 +[20582]: https://github.com/Microsoft/TypeScript/issues/20582 [code-splitting-with-es2015]: https://webpack.js.org/guides/migrating/#code-splitting-with-es2015 +[2ality-2018]: http://2ality.com/2017/02/ecmascript-2018.html [2ality00]: http://www.2ality.com/2015/11/trailing-comma-parameters.html [2ality01]: http://www.2ality.com/2016/08/function-prototype-tostring.html [2ality03]: http://www.2ality.com/2016/09/global.html @@ -124,21 +263,41 @@ Table of EcmaScript proposals and their usage in **Jail**. [2ality04]: http://www.2ality.com/2016/10/rest-spread-properties.html [2ality05]: http://www.2ality.com/2016/10/asynchronous-iteration.html [2ality06]: http://www.2ality.com/2017/01/import-operator.html +[2ality07]: http://2ality.com/2017/05/regexp-lookbehind-assertions.html +[2ality08]: http://2ality.com/2017/07/regexp-unicode-property-escapes.html +[2ality09]: http://2ality.com/2017/05/regexp-named-capture-groups.html +[2ality10]: http://2ality.com/2017/07/regexp-dotall-flag.html +[2ality11]: http://2ality.com/2017/07/promise-prototype-finally.html +[2ality12]: http://2ality.com/2017/03/es-integer.html +[2ality13]: http://2ality.com/2017/07/class-fields.html +[2ality14]: http://2ality.com/2017/08/optional-catch-binding.html +[2ality15]: http://2ality.com/2017/11/import-meta.html [babel-2016-12-07]: https://babeljs.io/blog/2016/12/07/the-state-of-babel -[MDN01]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import -[MDN02]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export -[MDN03]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name -[MDN04]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Exponentiation_(**) -[MDN05]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes -[MDN06]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values -[MDN07]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries -[MDN08]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart -[MDN09]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd -[MDN10]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors -[MDN11]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function -[MDN12]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD -[MDN13]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer -[NodeESNext]: http://node.green/ +[ecma-262]: https://www.ecma-international.org/publications/standards/Ecma-262.htm +[github-babel-proposals]: https://github.com/babel/proposals +[github-tc39-proposals]: https://github.com/tc39/proposals +[github-tc39-proposals-readme]: https://github.com/tc39/proposals/blob/master/README.md +[github-ts-esnext]: https://github.com/Microsoft/TypeScript/labels/ES%20Next +[mdn01]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import +[mdn02]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export +[mdn03]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name +[mdn04]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Exponentiation_(**) +[mdn05]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes +[mdn06]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values +[mdn07]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries +[mdn08]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart +[mdn09]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd +[mdn10]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +[mdn11]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function +[mdn12]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD +[mdn13]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +[mdn14]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals +[node-green]: http://node.green/ [promise.prototype.finally]: https://www.npmjs.com/package/promise.prototype.finally +[ecma-tc39]: https://www.ecma-international.org/memento/TC39.htm +[ecma-tc39-process]: https://tc39.github.io/process-document/ [ts21]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html - +[ts23]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html +[ts24]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-4.html +[ts25]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-5.html +[ts26]: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-6.html diff --git a/package.json b/package.json index 58485a6..1ee5477 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "author": "Latticework", "license": "MIT", "engines": { - "node": ">= 6.9.0" + "node": ">= 8.9.0" }, "bugs": { "url": "https://github.com/latticework/jali/issues" @@ -105,7 +105,7 @@ }, "devDependencies": { "@types/mkdirp": "^0.3.29", - "@types/node": "^6.0.62", + "@types/node": "^8.0.51", "@types/sanitize-filename": "^1.1.28", "@types/tmp": "^0.0.32", "app-root-path": "^2.0.1", @@ -113,7 +113,9 @@ "ava": "^0.18.2", "babel-loader": "^6.3.2", "babel-plugin-espower": "^2.3.2", + "babel-plugin-dynamic-import-node": "^1.2.0", "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", "babel-plugin-transform-async-to-generator": "^6.22.0", "babel-plugin-transform-class-properties": "^6.23.0", "babel-plugin-transform-decorators-legacy": "^1.3.4", @@ -121,9 +123,11 @@ "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", "babel-plugin-transform-exponentiation-operator": "^6.22.0", "babel-plugin-transform-function-sent": "^1.0.1", + "babel-plugin-transform-modern-regexp": "^0.0.4", + "babel-plugin-transform-numeric-separator": "^7.0.0-alpha.11", "babel-plugin-transform-runtime": "^6.23.0", - "babel-preset-node6": "^11.0.0", - "babel-register": "^6.23.0", + "babel-plugin-transform-unicode-property-regex": "^2.0.5", + "babel-register": "^6.26.0", "copy-webpack-plugin": "^4.0.1", "cpy-cli": "^1.0.1", "esdoc": "^0.5.2", @@ -134,7 +138,7 @@ "rimraf": "^2.6.1", "sanitize-filename": "^1.6.1", "tmp": "^0.0.31", - "ts-node": "^2.1.0", + "ts-node": "^3.3.0", "tslint": "^4.5.0", "typedoc": "^0.5.7", "typescript": "^2.2.1", @@ -152,15 +156,26 @@ }, "production": {} }, - "presets": [], "plugins": [ + "espower", "syntax-trailing-function-commas", + "transform-async-generator-functions", "transform-async-to-generator", "transform-class-properties", "transform-decorators-legacy", "transform-es2015-function-name", - "transform-function-sent", "transform-exponentiation-operator", + "transform-function-sent", + [ + "transform-modern-regexp", + { + "features": [ + "namedCapturingGroups", + "dotAll" + ] + } + ], + "transform-numeric-separator", [ "transform-runtime", { @@ -168,8 +183,9 @@ "regenerator": false } ], - "espower" + "transform-unicode-property-regex" ], + "presets": [], "ignore": [ "*.test.js" ], @@ -182,7 +198,10 @@ "concurrency": 5, "babel": { "plugins": [ + "espower", + "dynamic-import-node", "syntax-trailing-function-commas", + "transform-async-generator-functions", "transform-async-to-generator", "transform-class-properties", "transform-decorators-legacy", @@ -190,6 +209,16 @@ "transform-es2015-function-name", "transform-exponentiation-operator", "transform-function-sent", + [ + "transform-modern-regexp", + { + "features": [ + "namedCapturingGroups", + "dotAll" + ] + } + ], + "transform-numeric-separator", [ "transform-runtime", { @@ -197,7 +226,7 @@ "regenerator": false } ], - "espower" + "transform-unicode-property-regex" ] }, "require": [ diff --git a/packages/@jali-ms/core/package.json b/packages/@jali-ms/core/package.json index 96e747a..ab2f523 100644 --- a/packages/@jali-ms/core/package.json +++ b/packages/@jali-ms/core/package.json @@ -40,7 +40,7 @@ "url": "https://github.com/latticework/jali.git" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 8.9.0" }, "preferGlobal": false, "private": false, diff --git a/packages/@jali-ms/note/package.json b/packages/@jali-ms/note/package.json index 1eed82c..dc7cc14 100644 --- a/packages/@jali-ms/note/package.json +++ b/packages/@jali-ms/note/package.json @@ -40,7 +40,7 @@ "url": "https://github.com/latticework/jali.git" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 8.9.0" }, "preferGlobal": false, "private": false, diff --git a/packages/@jali-ms/package.json b/packages/@jali-ms/package.json index 569b1d1..718fb1f 100644 --- a/packages/@jali-ms/package.json +++ b/packages/@jali-ms/package.json @@ -11,7 +11,7 @@ } ], "engines": { - "node": ">= 6.0.0" + "node": ">= 8.9.0" }, "homepage": "http://jali-ms.io/", "keywords": [ diff --git a/packages/@jali-ms/util/webpackfile.js b/packages/@jali-ms/util/webpackfile.js index 78a477c..71c2b70 100644 --- a/packages/@jali-ms/util/webpackfile.js +++ b/packages/@jali-ms/util/webpackfile.js @@ -41,20 +41,31 @@ module.exports = function(options) { cacheDirectory: true, plugins: [ 'syntax-trailing-function-commas', + "transform-async-generator-functions", 'transform-async-to-generator', 'transform-class-properties', 'transform-decorators-legacy', 'transform-es2015-function-name', - 'transform-es2015-modules-commonjs', - 'transform-function-sent', 'transform-exponentiation-operator', + 'transform-function-sent', + [ + "transform-modern-regexp", + { + "features": [ + "namedCapturingGroups", + "dotAll" + ] + } + ], + "transform-numeric-separator", [ - 'transform-runtime', + "transform-runtime", { - polyfill: false, - regenerator: false, + "polyfill": false, + "regenerator": false } - ] + ], + "transform-unicode-property-regex" ], presets: [] }, diff --git a/site-cookbooks/main/recipes/default.rb b/site-cookbooks/main/recipes/default.rb index c0548b0..53d0944 100644 --- a/site-cookbooks/main/recipes/default.rb +++ b/site-cookbooks/main/recipes/default.rb @@ -45,12 +45,14 @@ end # Install Node +# https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions +# However consider nvm http://www.hostingadvice.com/how-to/update-node-js-latest-version/ if ::Dir.exist?('/usr/bin/node') Chef::Log.info('(up to date)') else - bash 'prep_for_node_6_x' do + bash 'prep_for_node_8_x' do code <<-EOH - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - + curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - EOH end diff --git a/webpackfile.js b/webpackfile.js index 1af647b..7bac98e 100644 --- a/webpackfile.js +++ b/webpackfile.js @@ -13,21 +13,20 @@ exports (options) => { case "production": } -switch (process.env.NODE_ENV) { - case 'prod': - case 'production': - module.exports = require('./config/webpack.prod'); - break; - case 'test': - case 'testing': - module.exports = require('./config/webpack.test'); - break; - case 'dev': - case 'development': - default: - module.exports = require('./config/webpack.dev'); -} - + switch (process.env.NODE_ENV) { + case 'prod': + case 'production': + module.exports = require('./config/webpack.prod'); + break; + case 'test': + case 'testing': + module.exports = require('./config/webpack.test'); + break; + case 'dev': + case 'development': + default: + module.exports = require('./config/webpack.dev'); + } } }