features.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. /**
  2. * @author Toru Nagashima
  3. * @copyright 2015 Toru Nagashima. All rights reserved.
  4. * See LICENSE file in root directory for full license.
  5. */
  6. "use strict"
  7. //------------------------------------------------------------------------------
  8. // Public Interface
  9. //------------------------------------------------------------------------------
  10. module.exports = {
  11. //--------------------------------------------------------------------------
  12. // Syntax
  13. //--------------------------------------------------------------------------
  14. "defaultParameters": {
  15. alias: ["syntax"],
  16. name: "Default parameters",
  17. node: "6.0.0",
  18. },
  19. "restParameters": {
  20. alias: ["syntax"],
  21. name: "Rest parameters",
  22. node: "6.0.0",
  23. },
  24. "spreadOperators": {
  25. alias: ["syntax"],
  26. name: "Spread operators",
  27. node: "5.0.0",
  28. },
  29. "objectLiteralExtensions": {
  30. alias: ["syntax"],
  31. name: "Object literal extensions",
  32. node: "4.0.0",
  33. },
  34. "objectPropertyShorthandOfGetSet": {
  35. alias: ["syntax", "objectLiteralExtensions"],
  36. name: "Property shorthand of 'get' and 'set'",
  37. node: "6.0.0",
  38. },
  39. "forOf": {
  40. alias: ["syntax"],
  41. name: "'for..of' loops",
  42. node: "0.12.0",
  43. },
  44. "binaryNumberLiterals": {
  45. alias: ["syntax"],
  46. name: "Binary number literals",
  47. node: "4.0.0",
  48. },
  49. "octalNumberLiterals": {
  50. alias: ["syntax"],
  51. name: "Octal number literals",
  52. node: "4.0.0",
  53. },
  54. "templateStrings": {
  55. alias: ["syntax"],
  56. name: "Template strings",
  57. node: "4.0.0",
  58. },
  59. "regexpY": {
  60. alias: ["syntax"],
  61. name: "RegExp 'y' flags",
  62. node: "6.0.0",
  63. },
  64. "regexpU": {
  65. alias: ["syntax"],
  66. name: "RegExp 'u' flags",
  67. node: "6.0.0",
  68. },
  69. "destructuring": {
  70. alias: ["syntax"],
  71. name: "Destructuring",
  72. node: "6.0.0",
  73. },
  74. "unicodeCodePointEscapes": {
  75. alias: ["syntax"],
  76. name: "Unicode code point escapes",
  77. node: "4.0.0",
  78. },
  79. "new.target": {
  80. alias: ["syntax"],
  81. name: "'new.target'",
  82. node: "5.0.0",
  83. },
  84. "const": {
  85. alias: ["syntax"],
  86. name: "'const' declarations",
  87. node: {
  88. sloppy: "6.0.0",
  89. strict: "4.0.0",
  90. },
  91. },
  92. "let": {
  93. alias: ["syntax"],
  94. name: "'let' declarations",
  95. node: {
  96. sloppy: "6.0.0",
  97. strict: "4.0.0",
  98. },
  99. },
  100. "blockScopedFunctions": {
  101. alias: ["syntax"],
  102. name: "Block-scoped functions",
  103. node: {
  104. sloppy: "6.0.0",
  105. strict: "4.0.0",
  106. },
  107. },
  108. "arrowFunctions": {
  109. alias: ["syntax"],
  110. name: "Arrow functions",
  111. node: "4.0.0",
  112. },
  113. "generatorFunctions": {
  114. alias: ["syntax"],
  115. name: "Generator functions",
  116. node: "4.0.0",
  117. },
  118. "classes": {
  119. alias: ["syntax"],
  120. name: "Classes",
  121. node: {
  122. sloppy: "6.0.0",
  123. strict: "4.0.0",
  124. },
  125. },
  126. "modules": {
  127. alias: ["syntax"],
  128. name: "Import and export declarations",
  129. node: null,
  130. },
  131. "exponentialOperators": {
  132. alias: ["syntax"],
  133. name: "Exponential operators (**)",
  134. node: "7.0.0",
  135. },
  136. "asyncAwait": {
  137. alias: ["syntax"],
  138. name: "Async functions",
  139. node: "7.6.0",
  140. },
  141. "trailingCommasInFunctions": {
  142. // trailingCommasInFunctionSyntax is for backward compatibility.
  143. alias: ["syntax", "trailingCommasInFunctionSyntax"],
  144. name: "Trailing commas in functions",
  145. node: "8.0.0",
  146. },
  147. //--------------------------------------------------------------------------
  148. // Runtime
  149. //--------------------------------------------------------------------------
  150. "Int8Array": {
  151. alias: ["runtime", "globalObjects", "typedArrays"],
  152. name: "'Int8Array'",
  153. singular: true,
  154. node: "0.12.0",
  155. },
  156. "Uint8Array": {
  157. alias: ["runtime", "globalObjects", "typedArrays"],
  158. name: "'Uint8Array'",
  159. singular: true,
  160. node: "0.12.0",
  161. },
  162. "Uint8ClampedArray": {
  163. alias: ["runtime", "globalObjects", "typedArrays"],
  164. name: "'Uint8ClampedArray'",
  165. singular: true,
  166. node: "0.12.0",
  167. },
  168. "Int16Array": {
  169. alias: ["runtime", "globalObjects", "typedArrays"],
  170. name: "'Int16Array'",
  171. singular: true,
  172. node: "0.12.0",
  173. },
  174. "Uint16Array": {
  175. alias: ["runtime", "globalObjects", "typedArrays"],
  176. name: "'Uint16Array'",
  177. singular: true,
  178. node: "0.12.0",
  179. },
  180. "Int32Array": {
  181. alias: ["runtime", "globalObjects", "typedArrays"],
  182. name: "'Int32Array'",
  183. singular: true,
  184. node: "0.12.0",
  185. },
  186. "Uint32Array": {
  187. alias: ["runtime", "globalObjects", "typedArrays"],
  188. name: "'Uint32Array'",
  189. singular: true,
  190. node: "0.12.0",
  191. },
  192. "Float32Array": {
  193. alias: ["runtime", "globalObjects", "typedArrays"],
  194. name: "'Float32Array'",
  195. singular: true,
  196. node: "0.12.0",
  197. },
  198. "Float64Array": {
  199. alias: ["runtime", "globalObjects", "typedArrays"],
  200. name: "'Float64Array'",
  201. singular: true,
  202. node: "0.12.0",
  203. },
  204. "DataView": {
  205. alias: ["runtime", "globalObjects", "typedArrays"],
  206. name: "'DataView'",
  207. singular: true,
  208. node: "0.12.0",
  209. },
  210. "Map": {
  211. alias: ["runtime", "globalObjects"],
  212. name: "'Map'",
  213. singular: true,
  214. node: "0.12.0",
  215. },
  216. "Set": {
  217. alias: ["runtime", "globalObjects"],
  218. name: "'Set'",
  219. singular: true,
  220. node: "0.12.0",
  221. },
  222. "WeakMap": {
  223. alias: ["runtime", "globalObjects"],
  224. name: "'WeakMap'",
  225. singular: true,
  226. node: "0.12.0",
  227. },
  228. "WeakSet": {
  229. alias: ["runtime", "globalObjects"],
  230. name: "'WeakSet'",
  231. singular: true,
  232. node: "0.12.0",
  233. },
  234. "Proxy": {
  235. alias: ["runtime", "globalObjects"],
  236. name: "'Proxy'",
  237. singular: true,
  238. node: "6.0.0",
  239. },
  240. "Reflect": {
  241. alias: ["runtime", "globalObjects"],
  242. name: "'Reflect'",
  243. singular: true,
  244. node: "6.0.0",
  245. },
  246. "Promise": {
  247. alias: ["runtime", "globalObjects"],
  248. name: "'Promise'",
  249. singular: true,
  250. node: "0.12.0",
  251. },
  252. "Symbol": {
  253. alias: ["runtime", "globalObjects"],
  254. name: "'Symbol'",
  255. singular: true,
  256. node: "0.12.0",
  257. },
  258. "SharedArrayBuffer": {
  259. alias: ["runtime", "globalObjects"],
  260. name: "'SharedArrayBuffer'",
  261. singular: true,
  262. node: null,
  263. },
  264. "Atomics": {
  265. alias: ["runtime", "globalObjects"],
  266. name: "'Atomics'",
  267. singular: true,
  268. node: null,
  269. },
  270. "Object.assign": {
  271. alias: ["runtime", "staticMethods", "Object.*"],
  272. name: "'Object.assign'",
  273. singular: true,
  274. node: "4.0.0",
  275. },
  276. "Object.is": {
  277. alias: ["runtime", "staticMethods", "Object.*"],
  278. name: "'Object.is'",
  279. singular: true,
  280. node: "0.12.0",
  281. },
  282. "Object.getOwnPropertySymbols": {
  283. alias: ["runtime", "staticMethods", "Object.*"],
  284. name: "'Object.getOwnPropertySymbols'",
  285. singular: true,
  286. node: "0.12.0",
  287. },
  288. "Object.setPrototypeOf": {
  289. alias: ["runtime", "staticMethods", "Object.*"],
  290. name: "'Object.setPrototypeOf'",
  291. singular: true,
  292. node: "0.12.0",
  293. },
  294. "Object.values": {
  295. alias: ["runtime", "staticMethods", "Object.*"],
  296. name: "'Object.values'",
  297. singular: true,
  298. node: "7.0.0",
  299. },
  300. "Object.entries": {
  301. alias: ["runtime", "staticMethods", "Object.*"],
  302. name: "'Object.entries'",
  303. singular: true,
  304. node: "7.0.0",
  305. },
  306. "Object.getOwnPropertyDescriptors": {
  307. alias: ["runtime", "staticMethods", "Object.*"],
  308. name: "'Object.getOwnPropertyDescriptors'",
  309. singular: true,
  310. node: "7.0.0",
  311. },
  312. "String.raw": {
  313. alias: ["runtime", "staticMethods", "String.*"],
  314. name: "'String.raw'",
  315. singular: true,
  316. node: "4.0.0",
  317. },
  318. "String.fromCodePoint": {
  319. alias: ["runtime", "staticMethods", "String.*"],
  320. name: "'String.fromCodePoint'",
  321. singular: true,
  322. node: "4.0.0",
  323. },
  324. "Array.from": {
  325. alias: ["runtime", "staticMethods", "Array.*"],
  326. name: "'Array.from'",
  327. singular: true,
  328. node: "4.0.0",
  329. },
  330. "Array.of": {
  331. alias: ["runtime", "staticMethods", "Array.*"],
  332. name: "'Array.of'",
  333. singular: true,
  334. node: "4.0.0",
  335. },
  336. "Number.isFinite": {
  337. alias: ["runtime", "staticMethods", "Number.*"],
  338. name: "'Number.isFinite'",
  339. singular: true,
  340. node: "0.10.0",
  341. },
  342. "Number.isInteger": {
  343. alias: ["runtime", "staticMethods", "Number.*"],
  344. name: "'Number.isInteger'",
  345. singular: true,
  346. node: "0.12.0",
  347. },
  348. "Number.isSafeInteger": {
  349. alias: ["runtime", "staticMethods", "Number.*"],
  350. name: "'Number.isSafeInteger'",
  351. singular: true,
  352. node: "0.12.0",
  353. },
  354. "Number.isNaN": {
  355. alias: ["runtime", "staticMethods", "Number.*"],
  356. name: "'Number.isNaN'",
  357. singular: true,
  358. node: "0.10.0",
  359. },
  360. "Number.EPSILON": {
  361. alias: ["runtime", "staticMethods", "Number.*"],
  362. name: "'Number.EPSILON'",
  363. singular: true,
  364. node: "0.12.0",
  365. },
  366. "Number.MIN_SAFE_INTEGER": {
  367. alias: ["runtime", "staticMethods", "Number.*"],
  368. name: "'Number.MIN_SAFE_INTEGER'",
  369. singular: true,
  370. node: "0.12.0",
  371. },
  372. "Number.MAX_SAFE_INTEGER": {
  373. alias: ["runtime", "staticMethods", "Number.*"],
  374. name: "'Number.MAX_SAFE_INTEGER'",
  375. singular: true,
  376. node: "0.12.0",
  377. },
  378. "Math.clz32": {
  379. alias: ["runtime", "staticMethods", "Math.*"],
  380. name: "'Math.clz32'",
  381. singular: true,
  382. node: "0.12.0",
  383. },
  384. "Math.imul": {
  385. alias: ["runtime", "staticMethods", "Math.*"],
  386. name: "'Math.imul'",
  387. singular: true,
  388. node: "0.12.0",
  389. },
  390. "Math.sign": {
  391. alias: ["runtime", "staticMethods", "Math.*"],
  392. name: "'Math.sign'",
  393. singular: true,
  394. node: "0.12.0",
  395. },
  396. "Math.log10": {
  397. alias: ["runtime", "staticMethods", "Math.*"],
  398. name: "'Math.log10'",
  399. singular: true,
  400. node: "0.12.0",
  401. },
  402. "Math.log2": {
  403. alias: ["runtime", "staticMethods", "Math.*"],
  404. name: "'Math.log2'",
  405. singular: true,
  406. node: "0.12.0",
  407. },
  408. "Math.log1p": {
  409. alias: ["runtime", "staticMethods", "Math.*"],
  410. name: "'Math.log1p'",
  411. singular: true,
  412. node: "0.12.0",
  413. },
  414. "Math.expm1": {
  415. alias: ["runtime", "staticMethods", "Math.*"],
  416. name: "'Math.expm1'",
  417. singular: true,
  418. node: "0.12.0",
  419. },
  420. "Math.cosh": {
  421. alias: ["runtime", "staticMethods", "Math.*"],
  422. name: "'Math.cosh'",
  423. singular: true,
  424. node: "0.12.0",
  425. },
  426. "Math.sinh": {
  427. alias: ["runtime", "staticMethods", "Math.*"],
  428. name: "'Math.sinh'",
  429. singular: true,
  430. node: "0.12.0",
  431. },
  432. "Math.tanh": {
  433. alias: ["runtime", "staticMethods", "Math.*"],
  434. name: "'Math.tanh'",
  435. singular: true,
  436. node: "0.12.0",
  437. },
  438. "Math.acosh": {
  439. alias: ["runtime", "staticMethods", "Math.*"],
  440. name: "'Math.acosh'",
  441. singular: true,
  442. node: "0.12.0",
  443. },
  444. "Math.asinh": {
  445. alias: ["runtime", "staticMethods", "Math.*"],
  446. name: "'Math.asinh'",
  447. singular: true,
  448. node: "0.12.0",
  449. },
  450. "Math.atanh": {
  451. alias: ["runtime", "staticMethods", "Math.*"],
  452. name: "'Math.atanh'",
  453. singular: true,
  454. node: "0.12.0",
  455. },
  456. "Math.trunc": {
  457. alias: ["runtime", "staticMethods", "Math.*"],
  458. name: "'Math.trunc'",
  459. singular: true,
  460. node: "0.12.0",
  461. },
  462. "Math.fround": {
  463. alias: ["runtime", "staticMethods", "Math.*"],
  464. name: "'Math.fround'",
  465. singular: true,
  466. node: "0.12.0",
  467. },
  468. "Math.cbrt": {
  469. alias: ["runtime", "staticMethods", "Math.*"],
  470. name: "'Math.cbrt'",
  471. singular: true,
  472. node: "0.12.0",
  473. },
  474. "Math.hypot": {
  475. alias: ["runtime", "staticMethods", "Math.*"],
  476. name: "'Math.hypot'",
  477. singular: true,
  478. node: "0.12.0",
  479. },
  480. "Symbol.hasInstance": {
  481. alias: ["runtime", "staticMethods", "Symbol.*"],
  482. name: "'Symbol.hasInstance'",
  483. singular: true,
  484. node: null,
  485. },
  486. "Symbol.isConcatSpreadablec": {
  487. alias: ["runtime", "staticMethods", "Symbol.*"],
  488. name: "'Symbol.isConcatSpreadablec'",
  489. singular: true,
  490. node: "6.0.0",
  491. },
  492. "Symbol.iterator": {
  493. alias: ["runtime", "staticMethods", "Symbol.*"],
  494. name: "'Symbol.iterator'",
  495. singular: true,
  496. node: "0.12.0",
  497. },
  498. "Symbol.species": {
  499. alias: ["runtime", "staticMethods", "Symbol.*"],
  500. name: "'Symbol.species'",
  501. singular: true,
  502. node: null,
  503. },
  504. "Symbol.replace": {
  505. alias: ["runtime", "staticMethods", "Symbol.*"],
  506. name: "'Symbol.replace'",
  507. singular: true,
  508. node: "6.0.0",
  509. },
  510. "Symbol.search": {
  511. alias: ["runtime", "staticMethods", "Symbol.*"],
  512. name: "'Symbol.search'",
  513. singular: true,
  514. node: "6.0.0",
  515. },
  516. "Symbol.split": {
  517. alias: ["runtime", "staticMethods", "Symbol.*"],
  518. name: "'Symbol.split'",
  519. singular: true,
  520. node: "6.0.0",
  521. },
  522. "Symbol.match": {
  523. alias: ["runtime", "staticMethods", "Symbol.*"],
  524. name: "'Symbol.match'",
  525. singular: true,
  526. node: "6.0.0",
  527. },
  528. "Symbol.toPrimitive": {
  529. alias: ["runtime", "staticMethods", "Symbol.*"],
  530. name: "'Symbol.toPrimitive'",
  531. singular: true,
  532. node: "6.0.0",
  533. },
  534. "Symbol.toStringTag": {
  535. alias: ["runtime", "staticMethods", "Symbol.*"],
  536. name: "'Symbol.toStringTag'",
  537. singular: true,
  538. node: "6.0.0",
  539. },
  540. "Symbol.unscopables": {
  541. alias: ["runtime", "staticMethods", "Symbol.*"],
  542. name: "'Symbol.unscopables'",
  543. singular: true,
  544. node: "4.0.0",
  545. },
  546. "Atomics.add": {
  547. alias: ["runtime", "staticMethods", "Atomics.*"],
  548. name: "'Atomics.add'",
  549. singular: true,
  550. node: null,
  551. },
  552. "Atomics.and": {
  553. alias: ["runtime", "staticMethods", "Atomics.*"],
  554. name: "'Atomics.and'",
  555. singular: true,
  556. node: null,
  557. },
  558. "Atomics.compareExchange": {
  559. alias: ["runtime", "staticMethods", "Atomics.*"],
  560. name: "'Atomics.compareExchange'",
  561. singular: true,
  562. node: null,
  563. },
  564. "Atomics.exchange": {
  565. alias: ["runtime", "staticMethods", "Atomics.*"],
  566. name: "'Atomics.exchange'",
  567. singular: true,
  568. node: null,
  569. },
  570. "Atomics.wait": {
  571. alias: ["runtime", "staticMethods", "Atomics.*"],
  572. name: "'Atomics.wait'",
  573. singular: true,
  574. node: null,
  575. },
  576. "Atomics.wake": {
  577. alias: ["runtime", "staticMethods", "Atomics.*"],
  578. name: "'Atomics.wake'",
  579. singular: true,
  580. node: null,
  581. },
  582. "Atomics.isLockFree": {
  583. alias: ["runtime", "staticMethods", "Atomics.*"],
  584. name: "'Atomics.isLockFree'",
  585. singular: true,
  586. node: null,
  587. },
  588. "Atomics.load": {
  589. alias: ["runtime", "staticMethods", "Atomics.*"],
  590. name: "'Atomics.load'",
  591. singular: true,
  592. node: null,
  593. },
  594. "Atomics.or": {
  595. alias: ["runtime", "staticMethods", "Atomics.*"],
  596. name: "'Atomics.or'",
  597. singular: true,
  598. node: null,
  599. },
  600. "Atomics.store": {
  601. alias: ["runtime", "staticMethods", "Atomics.*"],
  602. name: "'Atomics.store'",
  603. singular: true,
  604. node: null,
  605. },
  606. "Atomics.sub": {
  607. alias: ["runtime", "staticMethods", "Atomics.*"],
  608. name: "'Atomics.sub'",
  609. singular: true,
  610. node: null,
  611. },
  612. "Atomics.xor": {
  613. alias: ["runtime", "staticMethods", "Atomics.*"],
  614. name: "'Atomics.xor'",
  615. singular: true,
  616. node: null,
  617. },
  618. "extendsArray": {
  619. alias: ["runtime", "extends"],
  620. name: "Subclassing of 'Array'",
  621. singular: true,
  622. node: "6.0.0",
  623. },
  624. "extendsRegExp": {
  625. alias: ["runtime", "extends"],
  626. name: "Subclassing of 'RegExp'",
  627. singular: true,
  628. node: "5.0.0",
  629. },
  630. "extendsFunction": {
  631. alias: ["runtime", "extends"],
  632. name: "Subclassing of 'Function'",
  633. singular: true,
  634. node: "6.0.0",
  635. },
  636. "extendsPromise": {
  637. alias: ["runtime", "extends"],
  638. name: "Subclassing of 'Promise'",
  639. singular: true,
  640. node: "5.0.0",
  641. },
  642. "extendsBoolean": {
  643. alias: ["runtime", "extends"],
  644. name: "Subclassing of 'Boolean'",
  645. singular: true,
  646. node: "4.0.0",
  647. },
  648. "extendsNumber": {
  649. alias: ["runtime", "extends"],
  650. name: "Subclassing of 'Number'",
  651. singular: true,
  652. node: "4.0.0",
  653. },
  654. "extendsString": {
  655. alias: ["runtime", "extends"],
  656. name: "Subclassing of 'String'",
  657. singular: true,
  658. node: "4.0.0",
  659. },
  660. "extendsMap": {
  661. alias: ["runtime", "extends"],
  662. name: "Subclassing of 'Map'",
  663. singular: true,
  664. node: "4.0.0",
  665. },
  666. "extendsSet": {
  667. alias: ["runtime", "extends"],
  668. name: "Subclassing of 'Set'",
  669. singular: true,
  670. node: "4.0.0",
  671. },
  672. "extendsNull": {
  673. alias: ["runtime", "extends"],
  674. name: "'extends null'",
  675. singular: true,
  676. node: null,
  677. },
  678. }