jass 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +47 -0
  3. data/README.md +45 -0
  4. data/lib/jass.rb +55 -0
  5. data/lib/jass/base.rb +141 -0
  6. data/lib/jass/bundle_processor.rb +28 -0
  7. data/lib/jass/compiler.rb +112 -0
  8. data/lib/jass/dependency.rb +14 -0
  9. data/lib/jass/errors.rb +29 -0
  10. data/lib/jass/es6_processor.rb +17 -0
  11. data/lib/jass/function.rb +13 -0
  12. data/lib/jass/global_directive_processor.rb +12 -0
  13. data/lib/jass/plugin.rb +13 -0
  14. data/lib/jass/railtie.rb +12 -0
  15. data/lib/jass/version.rb +3 -0
  16. data/vendor/node_modules/@types/acorn/index.d.ts +256 -0
  17. data/vendor/node_modules/@types/acorn/package.json +29 -0
  18. data/vendor/node_modules/@types/estree/index.d.ts +546 -0
  19. data/vendor/node_modules/@types/estree/package.json +22 -0
  20. data/vendor/node_modules/acorn-dynamic-import/lib/index.js +17 -0
  21. data/vendor/node_modules/acorn-dynamic-import/lib/inject.js +72 -0
  22. data/vendor/node_modules/acorn-dynamic-import/lib/walk.js +22 -0
  23. data/vendor/node_modules/acorn-dynamic-import/package.json +45 -0
  24. data/vendor/node_modules/acorn-dynamic-import/src/index.js +4 -0
  25. data/vendor/node_modules/acorn-dynamic-import/src/inject.js +52 -0
  26. data/vendor/node_modules/acorn-dynamic-import/src/walk.js +12 -0
  27. data/vendor/node_modules/acorn-es7-plugin/acorn-es7-plugin.js +17 -0
  28. data/vendor/node_modules/acorn-es7-plugin/acorn-v3.js +333 -0
  29. data/vendor/node_modules/acorn-es7-plugin/acorn-v4.js +194 -0
  30. data/vendor/node_modules/acorn-es7-plugin/package.json +29 -0
  31. data/vendor/node_modules/acorn-jsx/index.js +3 -0
  32. data/vendor/node_modules/acorn-jsx/inject.js +449 -0
  33. data/vendor/node_modules/acorn-jsx/package.json +28 -0
  34. data/vendor/node_modules/acorn-jsx/xhtml.js +255 -0
  35. data/vendor/node_modules/acorn/bin/_acorn.js +69 -0
  36. data/vendor/node_modules/acorn/bin/acorn +4 -0
  37. data/vendor/node_modules/acorn/bin/run_test262.js +22 -0
  38. data/vendor/node_modules/acorn/bin/test262.whitelist +409 -0
  39. data/vendor/node_modules/acorn/dist/acorn.es.js +5305 -0
  40. data/vendor/node_modules/acorn/dist/acorn.js +5336 -0
  41. data/vendor/node_modules/acorn/dist/acorn_loose.es.js +1412 -0
  42. data/vendor/node_modules/acorn/dist/acorn_loose.js +1422 -0
  43. data/vendor/node_modules/acorn/dist/walk.es.js +419 -0
  44. data/vendor/node_modules/acorn/dist/walk.js +439 -0
  45. data/vendor/node_modules/acorn/package.json +56 -0
  46. data/vendor/node_modules/ansi-styles/index.js +165 -0
  47. data/vendor/node_modules/ansi-styles/package.json +56 -0
  48. data/vendor/node_modules/arr-diff/index.js +58 -0
  49. data/vendor/node_modules/arr-diff/package.json +49 -0
  50. data/vendor/node_modules/arr-flatten/index.js +22 -0
  51. data/vendor/node_modules/arr-flatten/package.json +76 -0
  52. data/vendor/node_modules/array-unique/index.js +28 -0
  53. data/vendor/node_modules/array-unique/package.json +37 -0
  54. data/vendor/node_modules/braces/index.js +399 -0
  55. data/vendor/node_modules/braces/package.json +83 -0
  56. data/vendor/node_modules/buble/bin/buble +24 -0
  57. data/vendor/node_modules/buble/bin/handleError.js +58 -0
  58. data/vendor/node_modules/buble/bin/runBuble.js +150 -0
  59. data/vendor/node_modules/buble/bin/showHelp.js +16 -0
  60. data/vendor/node_modules/buble/dist/buble-browser-deps.umd.js +14857 -0
  61. data/vendor/node_modules/buble/dist/buble-browser.cjs.js +9941 -0
  62. data/vendor/node_modules/buble/dist/buble-browser.es.js +9933 -0
  63. data/vendor/node_modules/buble/dist/buble.cjs.js +9433 -0
  64. data/vendor/node_modules/buble/dist/buble.es.js +9425 -0
  65. data/vendor/node_modules/buble/package.json +74 -0
  66. data/vendor/node_modules/buble/register.js +90 -0
  67. data/vendor/node_modules/buble/src/index.js +98 -0
  68. data/vendor/node_modules/buble/src/program/BlockStatement.js +373 -0
  69. data/vendor/node_modules/buble/src/program/Node.js +112 -0
  70. data/vendor/node_modules/buble/src/program/Program.js +74 -0
  71. data/vendor/node_modules/buble/src/program/Scope.js +116 -0
  72. data/vendor/node_modules/buble/src/program/extractNames.js +35 -0
  73. data/vendor/node_modules/buble/src/program/keys.js +4 -0
  74. data/vendor/node_modules/buble/src/program/types/ArrayExpression.js +70 -0
  75. data/vendor/node_modules/buble/src/program/types/ArrowFunctionExpression.js +52 -0
  76. data/vendor/node_modules/buble/src/program/types/AssignmentExpression.js +185 -0
  77. data/vendor/node_modules/buble/src/program/types/BinaryExpression.js +12 -0
  78. data/vendor/node_modules/buble/src/program/types/BreakStatement.js +26 -0
  79. data/vendor/node_modules/buble/src/program/types/CallExpression.js +104 -0
  80. data/vendor/node_modules/buble/src/program/types/ClassBody.js +237 -0
  81. data/vendor/node_modules/buble/src/program/types/ClassDeclaration.js +79 -0
  82. data/vendor/node_modules/buble/src/program/types/ClassExpression.js +51 -0
  83. data/vendor/node_modules/buble/src/program/types/ContinueStatement.js +17 -0
  84. data/vendor/node_modules/buble/src/program/types/ExportDefaultDeclaration.js +10 -0
  85. data/vendor/node_modules/buble/src/program/types/ExportNamedDeclaration.js +10 -0
  86. data/vendor/node_modules/buble/src/program/types/ForInStatement.js +76 -0
  87. data/vendor/node_modules/buble/src/program/types/ForOfStatement.js +89 -0
  88. data/vendor/node_modules/buble/src/program/types/ForStatement.js +54 -0
  89. data/vendor/node_modules/buble/src/program/types/FunctionDeclaration.js +25 -0
  90. data/vendor/node_modules/buble/src/program/types/FunctionExpression.js +74 -0
  91. data/vendor/node_modules/buble/src/program/types/Identifier.js +54 -0
  92. data/vendor/node_modules/buble/src/program/types/IfStatement.js +29 -0
  93. data/vendor/node_modules/buble/src/program/types/ImportDeclaration.js +10 -0
  94. data/vendor/node_modules/buble/src/program/types/ImportDefaultSpecifier.js +8 -0
  95. data/vendor/node_modules/buble/src/program/types/ImportSpecifier.js +8 -0
  96. data/vendor/node_modules/buble/src/program/types/JSXAttribute.js +20 -0
  97. data/vendor/node_modules/buble/src/program/types/JSXClosingElement.js +27 -0
  98. data/vendor/node_modules/buble/src/program/types/JSXClosingFragment.js +22 -0
  99. data/vendor/node_modules/buble/src/program/types/JSXElement.js +57 -0
  100. data/vendor/node_modules/buble/src/program/types/JSXExpressionContainer.js +10 -0
  101. data/vendor/node_modules/buble/src/program/types/JSXFragment.js +4 -0
  102. data/vendor/node_modules/buble/src/program/types/JSXOpeningElement.js +93 -0
  103. data/vendor/node_modules/buble/src/program/types/JSXOpeningFragment.js +7 -0
  104. data/vendor/node_modules/buble/src/program/types/JSXSpreadAttribute.js +10 -0
  105. data/vendor/node_modules/buble/src/program/types/Literal.js +43 -0
  106. data/vendor/node_modules/buble/src/program/types/MemberExpression.js +13 -0
  107. data/vendor/node_modules/buble/src/program/types/NewExpression.js +55 -0
  108. data/vendor/node_modules/buble/src/program/types/ObjectExpression.js +250 -0
  109. data/vendor/node_modules/buble/src/program/types/Property.js +52 -0
  110. data/vendor/node_modules/buble/src/program/types/ReturnStatement.js +32 -0
  111. data/vendor/node_modules/buble/src/program/types/SpreadElement.js +12 -0
  112. data/vendor/node_modules/buble/src/program/types/Super.js +88 -0
  113. data/vendor/node_modules/buble/src/program/types/TaggedTemplateExpression.js +63 -0
  114. data/vendor/node_modules/buble/src/program/types/TemplateElement.js +7 -0
  115. data/vendor/node_modules/buble/src/program/types/TemplateLiteral.js +80 -0
  116. data/vendor/node_modules/buble/src/program/types/ThisExpression.js +31 -0
  117. data/vendor/node_modules/buble/src/program/types/UpdateExpression.js +32 -0
  118. data/vendor/node_modules/buble/src/program/types/VariableDeclaration.js +101 -0
  119. data/vendor/node_modules/buble/src/program/types/VariableDeclarator.js +43 -0
  120. data/vendor/node_modules/buble/src/program/types/index.js +98 -0
  121. data/vendor/node_modules/buble/src/program/types/shared/LoopStatement.js +105 -0
  122. data/vendor/node_modules/buble/src/program/types/shared/ModuleDeclaration.js +10 -0
  123. data/vendor/node_modules/buble/src/program/wrap.js +68 -0
  124. data/vendor/node_modules/buble/src/support.js +97 -0
  125. data/vendor/node_modules/buble/src/utils/CompileError.js +30 -0
  126. data/vendor/node_modules/buble/src/utils/array.js +11 -0
  127. data/vendor/node_modules/buble/src/utils/checkConst.js +8 -0
  128. data/vendor/node_modules/buble/src/utils/deindent.js +30 -0
  129. data/vendor/node_modules/buble/src/utils/destructure.js +377 -0
  130. data/vendor/node_modules/buble/src/utils/getSnippet.js +30 -0
  131. data/vendor/node_modules/buble/src/utils/isReference.js +41 -0
  132. data/vendor/node_modules/buble/src/utils/locate.js +20 -0
  133. data/vendor/node_modules/buble/src/utils/patterns.js +1 -0
  134. data/vendor/node_modules/buble/src/utils/removeTrailingComma.js +13 -0
  135. data/vendor/node_modules/buble/src/utils/reserved.js +6 -0
  136. data/vendor/node_modules/buble/src/utils/spread.js +70 -0
  137. data/vendor/node_modules/builtin-modules/builtin-modules.json +39 -0
  138. data/vendor/node_modules/builtin-modules/index.js +10 -0
  139. data/vendor/node_modules/builtin-modules/package.json +40 -0
  140. data/vendor/node_modules/builtin-modules/static.js +2 -0
  141. data/vendor/node_modules/chalk/index.js +228 -0
  142. data/vendor/node_modules/chalk/package.json +66 -0
  143. data/vendor/node_modules/chalk/templates.js +128 -0
  144. data/vendor/node_modules/chalk/types/index.d.ts +97 -0
  145. data/vendor/node_modules/color-convert/conversions.js +861 -0
  146. data/vendor/node_modules/color-convert/index.js +78 -0
  147. data/vendor/node_modules/color-convert/package.json +46 -0
  148. data/vendor/node_modules/color-convert/route.js +97 -0
  149. data/vendor/node_modules/color-name/index.js +152 -0
  150. data/vendor/node_modules/color-name/package.json +25 -0
  151. data/vendor/node_modules/color-name/test.js +7 -0
  152. data/vendor/node_modules/date-time/index.js +33 -0
  153. data/vendor/node_modules/date-time/package.json +39 -0
  154. data/vendor/node_modules/escape-string-regexp/index.js +11 -0
  155. data/vendor/node_modules/escape-string-regexp/package.json +41 -0
  156. data/vendor/node_modules/estree-walker/dist/estree-walker.es.js +57 -0
  157. data/vendor/node_modules/estree-walker/dist/estree-walker.umd.js +68 -0
  158. data/vendor/node_modules/estree-walker/package.json +34 -0
  159. data/vendor/node_modules/estree-walker/src/estree-walker.js +51 -0
  160. data/vendor/node_modules/expand-brackets/index.js +163 -0
  161. data/vendor/node_modules/expand-brackets/package.json +62 -0
  162. data/vendor/node_modules/expand-range/index.js +43 -0
  163. data/vendor/node_modules/expand-range/package.json +73 -0
  164. data/vendor/node_modules/extglob/index.js +178 -0
  165. data/vendor/node_modules/extglob/package.json +60 -0
  166. data/vendor/node_modules/filename-regex/index.js +10 -0
  167. data/vendor/node_modules/filename-regex/package.json +50 -0
  168. data/vendor/node_modules/fill-range/index.js +408 -0
  169. data/vendor/node_modules/fill-range/package.json +61 -0
  170. data/vendor/node_modules/for-in/index.js +16 -0
  171. data/vendor/node_modules/for-in/package.json +68 -0
  172. data/vendor/node_modules/for-own/index.js +19 -0
  173. data/vendor/node_modules/for-own/package.json +70 -0
  174. data/vendor/node_modules/glob-base/index.js +51 -0
  175. data/vendor/node_modules/glob-base/package.json +52 -0
  176. data/vendor/node_modules/glob-parent/index.js +10 -0
  177. data/vendor/node_modules/glob-parent/package.json +35 -0
  178. data/vendor/node_modules/glob-parent/test.js +28 -0
  179. data/vendor/node_modules/has-flag/index.js +8 -0
  180. data/vendor/node_modules/has-flag/package.json +44 -0
  181. data/vendor/node_modules/irregular-plurals/irregular-plurals.json +146 -0
  182. data/vendor/node_modules/irregular-plurals/package.json +39 -0
  183. data/vendor/node_modules/is-buffer/index.js +21 -0
  184. data/vendor/node_modules/is-buffer/package.json +51 -0
  185. data/vendor/node_modules/is-dotfile/index.js +14 -0
  186. data/vendor/node_modules/is-dotfile/package.json +69 -0
  187. data/vendor/node_modules/is-equal-shallow/index.js +27 -0
  188. data/vendor/node_modules/is-equal-shallow/package.json +54 -0
  189. data/vendor/node_modules/is-extendable/index.js +13 -0
  190. data/vendor/node_modules/is-extendable/package.json +51 -0
  191. data/vendor/node_modules/is-extglob/index.js +11 -0
  192. data/vendor/node_modules/is-extglob/package.json +48 -0
  193. data/vendor/node_modules/is-glob/index.js +14 -0
  194. data/vendor/node_modules/is-glob/package.json +60 -0
  195. data/vendor/node_modules/is-module/index.js +11 -0
  196. data/vendor/node_modules/is-module/package.json +20 -0
  197. data/vendor/node_modules/is-number/index.js +19 -0
  198. data/vendor/node_modules/is-number/package.json +59 -0
  199. data/vendor/node_modules/is-posix-bracket/index.js +10 -0
  200. data/vendor/node_modules/is-posix-bracket/package.json +64 -0
  201. data/vendor/node_modules/is-primitive/index.js +13 -0
  202. data/vendor/node_modules/is-primitive/package.json +46 -0
  203. data/vendor/node_modules/is-reference/dist/is-reference.es.js +26 -0
  204. data/vendor/node_modules/is-reference/dist/is-reference.js +34 -0
  205. data/vendor/node_modules/is-reference/dist/types/index.d.ts +2 -0
  206. data/vendor/node_modules/is-reference/package.json +47 -0
  207. data/vendor/node_modules/isarray/index.js +5 -0
  208. data/vendor/node_modules/isarray/package.json +45 -0
  209. data/vendor/node_modules/isarray/test.js +20 -0
  210. data/vendor/node_modules/isobject/index.js +14 -0
  211. data/vendor/node_modules/isobject/package.json +67 -0
  212. data/vendor/node_modules/kind-of/index.js +116 -0
  213. data/vendor/node_modules/kind-of/package.json +90 -0
  214. data/vendor/node_modules/locate-character/dist/locate-character.es.js +43 -0
  215. data/vendor/node_modules/locate-character/dist/locate-character.umd.js +54 -0
  216. data/vendor/node_modules/locate-character/dist/types/index.d.ts +17 -0
  217. data/vendor/node_modules/locate-character/package.json +41 -0
  218. data/vendor/node_modules/magic-string/dist/magic-string.cjs.js +1300 -0
  219. data/vendor/node_modules/magic-string/dist/magic-string.es.js +1296 -0
  220. data/vendor/node_modules/magic-string/dist/magic-string.umd.js +1352 -0
  221. data/vendor/node_modules/magic-string/index.d.ts +83 -0
  222. data/vendor/node_modules/magic-string/node_modules/vlq/dist/vlq.js +91 -0
  223. data/vendor/node_modules/magic-string/node_modules/vlq/package.json +27 -0
  224. data/vendor/node_modules/magic-string/node_modules/vlq/src/vlq.js +78 -0
  225. data/vendor/node_modules/magic-string/package.json +55 -0
  226. data/vendor/node_modules/micromatch/index.js +431 -0
  227. data/vendor/node_modules/micromatch/lib/chars.js +67 -0
  228. data/vendor/node_modules/micromatch/lib/expand.js +304 -0
  229. data/vendor/node_modules/micromatch/lib/glob.js +193 -0
  230. data/vendor/node_modules/micromatch/lib/utils.js +149 -0
  231. data/vendor/node_modules/micromatch/package.json +114 -0
  232. data/vendor/node_modules/minimist/index.js +236 -0
  233. data/vendor/node_modules/minimist/package.json +45 -0
  234. data/vendor/node_modules/nodent-compiler/compiler.js +171 -0
  235. data/vendor/node_modules/nodent-compiler/lib/arboriculture.js +2694 -0
  236. data/vendor/node_modules/nodent-compiler/lib/output.js +934 -0
  237. data/vendor/node_modules/nodent-compiler/lib/parser.js +291 -0
  238. data/vendor/node_modules/nodent-compiler/package.json +37 -0
  239. data/vendor/node_modules/normalize-path/index.js +19 -0
  240. data/vendor/node_modules/normalize-path/package.json +78 -0
  241. data/vendor/node_modules/object.omit/index.js +40 -0
  242. data/vendor/node_modules/object.omit/package.json +67 -0
  243. data/vendor/node_modules/os-homedir/index.js +24 -0
  244. data/vendor/node_modules/os-homedir/package.json +41 -0
  245. data/vendor/node_modules/parse-glob/index.js +156 -0
  246. data/vendor/node_modules/parse-glob/package.json +62 -0
  247. data/vendor/node_modules/parse-ms/index.js +16 -0
  248. data/vendor/node_modules/parse-ms/package.json +34 -0
  249. data/vendor/node_modules/path-parse/index.js +93 -0
  250. data/vendor/node_modules/path-parse/index.min.js +1 -0
  251. data/vendor/node_modules/path-parse/package.json +33 -0
  252. data/vendor/node_modules/path-parse/test.js +77 -0
  253. data/vendor/node_modules/path-parse/test.min.js +1 -0
  254. data/vendor/node_modules/plur/index.js +20 -0
  255. data/vendor/node_modules/plur/package.json +42 -0
  256. data/vendor/node_modules/preserve/index.js +54 -0
  257. data/vendor/node_modules/preserve/package.json +48 -0
  258. data/vendor/node_modules/preserve/test.js +48 -0
  259. data/vendor/node_modules/pretty-ms/index.js +48 -0
  260. data/vendor/node_modules/pretty-ms/package.json +48 -0
  261. data/vendor/node_modules/randomatic/index.js +82 -0
  262. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +22 -0
  263. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +116 -0
  264. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +90 -0
  265. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +83 -0
  266. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +119 -0
  267. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +90 -0
  268. data/vendor/node_modules/randomatic/package.json +78 -0
  269. data/vendor/node_modules/regex-cache/index.js +68 -0
  270. data/vendor/node_modules/regex-cache/package.json +64 -0
  271. data/vendor/node_modules/remove-trailing-separator/index.js +17 -0
  272. data/vendor/node_modules/remove-trailing-separator/package.json +37 -0
  273. data/vendor/node_modules/repeat-element/index.js +18 -0
  274. data/vendor/node_modules/repeat-element/package.json +44 -0
  275. data/vendor/node_modules/repeat-string/index.js +70 -0
  276. data/vendor/node_modules/repeat-string/package.json +77 -0
  277. data/vendor/node_modules/require-relative/index.js +33 -0
  278. data/vendor/node_modules/require-relative/package.json +22 -0
  279. data/vendor/node_modules/resolve/index.js +8 -0
  280. data/vendor/node_modules/resolve/lib/async.js +203 -0
  281. data/vendor/node_modules/resolve/lib/caller.js +8 -0
  282. data/vendor/node_modules/resolve/lib/core.js +53 -0
  283. data/vendor/node_modules/resolve/lib/core.json +69 -0
  284. data/vendor/node_modules/resolve/lib/node-modules-paths.js +45 -0
  285. data/vendor/node_modules/resolve/lib/sync.js +93 -0
  286. data/vendor/node_modules/resolve/package.json +40 -0
  287. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +804 -0
  288. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +800 -0
  289. data/vendor/node_modules/rollup-plugin-commonjs/package.json +52 -0
  290. data/vendor/node_modules/rollup-plugin-commonjs/src/ast-utils.js +104 -0
  291. data/vendor/node_modules/rollup-plugin-commonjs/src/defaultResolver.js +39 -0
  292. data/vendor/node_modules/rollup-plugin-commonjs/src/helpers.js +19 -0
  293. data/vendor/node_modules/rollup-plugin-commonjs/src/index.js +198 -0
  294. data/vendor/node_modules/rollup-plugin-commonjs/src/transform.js +431 -0
  295. data/vendor/node_modules/rollup-plugin-commonjs/src/utils.js +13 -0
  296. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js +218 -0
  297. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es.js +214 -0
  298. data/vendor/node_modules/rollup-plugin-node-resolve/package.json +51 -0
  299. data/vendor/node_modules/rollup-plugin-node-resolve/src/empty.js +1 -0
  300. data/vendor/node_modules/rollup-plugin-node-resolve/src/index.js +205 -0
  301. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +223 -0
  302. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +214 -0
  303. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +217 -0
  304. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es.js +55 -0
  305. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es6.js +59 -0
  306. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js +65 -0
  307. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/package.json +33 -0
  308. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/src/estree-walker.js +49 -0
  309. data/vendor/node_modules/rollup-pluginutils/package.json +40 -0
  310. data/vendor/node_modules/rollup-pluginutils/src/addExtension.js +6 -0
  311. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +147 -0
  312. data/vendor/node_modules/rollup-pluginutils/src/createFilter.js +33 -0
  313. data/vendor/node_modules/rollup-pluginutils/src/index.js +4 -0
  314. data/vendor/node_modules/rollup-pluginutils/src/makeLegalIdentifier.js +15 -0
  315. data/vendor/node_modules/rollup-pluginutils/src/utils/ensureArray.js +5 -0
  316. data/vendor/node_modules/rollup/bin/rollup +4085 -0
  317. data/vendor/node_modules/rollup/dist/rollup.browser.js +19829 -0
  318. data/vendor/node_modules/rollup/dist/rollup.es.js +23586 -0
  319. data/vendor/node_modules/rollup/dist/rollup.js +23597 -0
  320. data/vendor/node_modules/rollup/dist/typings/Chunk.d.ts +85 -0
  321. data/vendor/node_modules/rollup/dist/typings/ExternalModule.d.ts +30 -0
  322. data/vendor/node_modules/rollup/dist/typings/Graph.d.ts +47 -0
  323. data/vendor/node_modules/rollup/dist/typings/Module.d.ts +130 -0
  324. data/vendor/node_modules/rollup/dist/typings/ast/CallOptions.d.ts +20 -0
  325. data/vendor/node_modules/rollup/dist/typings/ast/Entity.d.ts +16 -0
  326. data/vendor/node_modules/rollup/dist/typings/ast/ExecutionPathOptions.d.ts +57 -0
  327. data/vendor/node_modules/rollup/dist/typings/ast/clone.d.ts +1 -0
  328. data/vendor/node_modules/rollup/dist/typings/ast/enhance.d.ts +3 -0
  329. data/vendor/node_modules/rollup/dist/typings/ast/keys.d.ts +4 -0
  330. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ArrayExpression.d.ts +14 -0
  331. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ArrayPattern.d.ts +14 -0
  332. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ArrowFunctionExpression.d.ts +25 -0
  333. data/vendor/node_modules/rollup/dist/typings/ast/nodes/AssignmentExpression.d.ts +13 -0
  334. data/vendor/node_modules/rollup/dist/typings/ast/nodes/AssignmentPattern.d.ts +16 -0
  335. data/vendor/node_modules/rollup/dist/typings/ast/nodes/AssignmentProperty.d.ts +10 -0
  336. data/vendor/node_modules/rollup/dist/typings/ast/nodes/AwaitExpression.d.ts +8 -0
  337. data/vendor/node_modules/rollup/dist/typings/ast/nodes/BinaryExpression.d.ts +13 -0
  338. data/vendor/node_modules/rollup/dist/typings/ast/nodes/BlockStatement.d.ts +19 -0
  339. data/vendor/node_modules/rollup/dist/typings/ast/nodes/BreakStatement.d.ts +9 -0
  340. data/vendor/node_modules/rollup/dist/typings/ast/nodes/CallExpression.d.ts +22 -0
  341. data/vendor/node_modules/rollup/dist/typings/ast/nodes/CatchClause.d.ts +14 -0
  342. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ClassBody.d.ts +13 -0
  343. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ClassDeclaration.d.ts +14 -0
  344. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ClassExpression.d.ts +10 -0
  345. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ConditionalExpression.d.ts +28 -0
  346. data/vendor/node_modules/rollup/dist/typings/ast/nodes/DoWhileStatement.d.ts +9 -0
  347. data/vendor/node_modules/rollup/dist/typings/ast/nodes/EmptyStatement.d.ts +8 -0
  348. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ExportAllDeclaration.d.ts +12 -0
  349. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ExportDefaultDeclaration.d.ts +21 -0
  350. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ExportNamedDeclaration.d.ts +21 -0
  351. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ExportSpecifier.d.ts +8 -0
  352. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ExpressionStatement.d.ts +10 -0
  353. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ForInStatement.d.ts +20 -0
  354. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ForOfStatement.d.ts +21 -0
  355. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ForStatement.d.ts +19 -0
  356. data/vendor/node_modules/rollup/dist/typings/ast/nodes/FunctionDeclaration.d.ts +9 -0
  357. data/vendor/node_modules/rollup/dist/typings/ast/nodes/FunctionExpression.d.ts +6 -0
  358. data/vendor/node_modules/rollup/dist/typings/ast/nodes/Identifier.d.ts +29 -0
  359. data/vendor/node_modules/rollup/dist/typings/ast/nodes/IfStatement.d.ts +17 -0
  360. data/vendor/node_modules/rollup/dist/typings/ast/nodes/Import.d.ts +14 -0
  361. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ImportDeclaration.d.ts +17 -0
  362. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ImportDefaultSpecifier.d.ts +7 -0
  363. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ImportNamespaceSpecifier.d.ts +7 -0
  364. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ImportSpecifier.d.ts +8 -0
  365. data/vendor/node_modules/rollup/dist/typings/ast/nodes/LabeledStatement.d.ts +10 -0
  366. data/vendor/node_modules/rollup/dist/typings/ast/nodes/Literal.d.ts +22 -0
  367. data/vendor/node_modules/rollup/dist/typings/ast/nodes/LogicalExpression.d.ts +23 -0
  368. data/vendor/node_modules/rollup/dist/typings/ast/nodes/MemberExpression.d.ts +34 -0
  369. data/vendor/node_modules/rollup/dist/typings/ast/nodes/MethodDefinition.d.ts +16 -0
  370. data/vendor/node_modules/rollup/dist/typings/ast/nodes/NewExpression.d.ts +14 -0
  371. data/vendor/node_modules/rollup/dist/typings/ast/nodes/NodeType.d.ts +64 -0
  372. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ObjectExpression.d.ts +22 -0
  373. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ObjectPattern.d.ts +15 -0
  374. data/vendor/node_modules/rollup/dist/typings/ast/nodes/Program.d.ts +9 -0
  375. data/vendor/node_modules/rollup/dist/typings/ast/nodes/Property.d.ts +30 -0
  376. data/vendor/node_modules/rollup/dist/typings/ast/nodes/RestElement.d.ts +14 -0
  377. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ReturnStatement.d.ts +9 -0
  378. data/vendor/node_modules/rollup/dist/typings/ast/nodes/SequenceExpression.d.ts +13 -0
  379. data/vendor/node_modules/rollup/dist/typings/ast/nodes/SpreadElement.d.ts +6 -0
  380. data/vendor/node_modules/rollup/dist/typings/ast/nodes/SwitchCase.d.ts +11 -0
  381. data/vendor/node_modules/rollup/dist/typings/ast/nodes/SwitchStatement.d.ts +12 -0
  382. data/vendor/node_modules/rollup/dist/typings/ast/nodes/TaggedTemplateExpression.d.ts +13 -0
  383. data/vendor/node_modules/rollup/dist/typings/ast/nodes/TemplateElement.d.ts +12 -0
  384. data/vendor/node_modules/rollup/dist/typings/ast/nodes/TemplateLiteral.d.ts +12 -0
  385. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ThisExpression.d.ts +17 -0
  386. data/vendor/node_modules/rollup/dist/typings/ast/nodes/ThrowStatement.d.ts +8 -0
  387. data/vendor/node_modules/rollup/dist/typings/ast/nodes/UnaryExpression.d.ts +16 -0
  388. data/vendor/node_modules/rollup/dist/typings/ast/nodes/UnknownNode.d.ts +5 -0
  389. data/vendor/node_modules/rollup/dist/typings/ast/nodes/UpdateExpression.d.ts +13 -0
  390. data/vendor/node_modules/rollup/dist/typings/ast/nodes/VariableDeclaration.d.ts +21 -0
  391. data/vendor/node_modules/rollup/dist/typings/ast/nodes/VariableDeclarator.d.ts +13 -0
  392. data/vendor/node_modules/rollup/dist/typings/ast/nodes/WhileStatement.d.ts +9 -0
  393. data/vendor/node_modules/rollup/dist/typings/ast/nodes/YieldExpression.d.ts +9 -0
  394. data/vendor/node_modules/rollup/dist/typings/ast/nodes/index.d.ts +6 -0
  395. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/ClassNode.d.ts +17 -0
  396. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/Expression.d.ts +21 -0
  397. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/FunctionNode.d.ts +25 -0
  398. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/Node.d.ts +133 -0
  399. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/Pattern.d.ts +4 -0
  400. data/vendor/node_modules/rollup/dist/typings/ast/nodes/shared/pureFunctions.d.ts +4 -0
  401. data/vendor/node_modules/rollup/dist/typings/ast/scopes/BlockScope.d.ts +9 -0
  402. data/vendor/node_modules/rollup/dist/typings/ast/scopes/CatchScope.d.ts +10 -0
  403. data/vendor/node_modules/rollup/dist/typings/ast/scopes/FunctionScope.d.ts +20 -0
  404. data/vendor/node_modules/rollup/dist/typings/ast/scopes/GlobalScope.d.ts +7 -0
  405. data/vendor/node_modules/rollup/dist/typings/ast/scopes/ModuleScope.d.ts +11 -0
  406. data/vendor/node_modules/rollup/dist/typings/ast/scopes/ParameterScope.d.ts +16 -0
  407. data/vendor/node_modules/rollup/dist/typings/ast/scopes/ReturnValueScope.d.ts +11 -0
  408. data/vendor/node_modules/rollup/dist/typings/ast/scopes/Scope.d.ts +42 -0
  409. data/vendor/node_modules/rollup/dist/typings/ast/utils/extractNames.d.ts +2 -0
  410. data/vendor/node_modules/rollup/dist/typings/ast/values.d.ts +31 -0
  411. data/vendor/node_modules/rollup/dist/typings/ast/variables/ArgumentsVariable.d.ts +15 -0
  412. data/vendor/node_modules/rollup/dist/typings/ast/variables/ExportDefaultVariable.d.ts +16 -0
  413. data/vendor/node_modules/rollup/dist/typings/ast/variables/ExternalVariable.d.ts +12 -0
  414. data/vendor/node_modules/rollup/dist/typings/ast/variables/GlobalVariable.d.ts +11 -0
  415. data/vendor/node_modules/rollup/dist/typings/ast/variables/LocalVariable.d.ts +21 -0
  416. data/vendor/node_modules/rollup/dist/typings/ast/variables/NamespaceVariable.d.ts +20 -0
  417. data/vendor/node_modules/rollup/dist/typings/ast/variables/ParameterVariable.d.ts +5 -0
  418. data/vendor/node_modules/rollup/dist/typings/ast/variables/ReplaceableInitializationVariable.d.ts +14 -0
  419. data/vendor/node_modules/rollup/dist/typings/ast/variables/ThisVariable.d.ts +4 -0
  420. data/vendor/node_modules/rollup/dist/typings/ast/variables/Variable.d.ts +43 -0
  421. data/vendor/node_modules/rollup/dist/typings/ast/variables/VariableReassignmentTracker.d.ts +11 -0
  422. data/vendor/node_modules/rollup/dist/typings/finalisers/amd.d.ts +11 -0
  423. data/vendor/node_modules/rollup/dist/typings/finalisers/cjs.d.ts +10 -0
  424. data/vendor/node_modules/rollup/dist/typings/finalisers/es.d.ts +9 -0
  425. data/vendor/node_modules/rollup/dist/typings/finalisers/iife.d.ts +10 -0
  426. data/vendor/node_modules/rollup/dist/typings/finalisers/index.d.ts +15 -0
  427. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/esModuleExport.d.ts +2 -0
  428. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/getExportBlock.d.ts +2 -0
  429. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/getGlobalNameMaker.d.ts +4 -0
  430. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/getInteropBlock.d.ts +3 -0
  431. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/sanitize.d.ts +2 -0
  432. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/setupNamespace.d.ts +2 -0
  433. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/trimEmptyImports.d.ts +2 -0
  434. data/vendor/node_modules/rollup/dist/typings/finalisers/shared/warnOnBuiltins.d.ts +2 -0
  435. data/vendor/node_modules/rollup/dist/typings/finalisers/system.d.ts +8 -0
  436. data/vendor/node_modules/rollup/dist/typings/finalisers/umd.d.ts +10 -0
  437. data/vendor/node_modules/rollup/dist/typings/node-entry.d.ts +6 -0
  438. data/vendor/node_modules/rollup/dist/typings/rollup/index.d.ts +167 -0
  439. data/vendor/node_modules/rollup/dist/typings/utils/callIfFunction.d.ts +1 -0
  440. data/vendor/node_modules/rollup/dist/typings/utils/collapseSourcemaps.d.ts +5 -0
  441. data/vendor/node_modules/rollup/dist/typings/utils/commondir.d.ts +1 -0
  442. data/vendor/node_modules/rollup/dist/typings/utils/defaults.d.ts +6 -0
  443. data/vendor/node_modules/rollup/dist/typings/utils/deprecateOptions.d.ts +6 -0
  444. data/vendor/node_modules/rollup/dist/typings/utils/ensureArray.d.ts +2 -0
  445. data/vendor/node_modules/rollup/dist/typings/utils/entryHashing.d.ts +3 -0
  446. data/vendor/node_modules/rollup/dist/typings/utils/error.d.ts +18 -0
  447. data/vendor/node_modules/rollup/dist/typings/utils/first-sync.d.ts +1 -0
  448. data/vendor/node_modules/rollup/dist/typings/utils/first.d.ts +1 -0
  449. data/vendor/node_modules/rollup/dist/typings/utils/flushTime.d.ts +5 -0
  450. data/vendor/node_modules/rollup/dist/typings/utils/fs.d.ts +3 -0
  451. data/vendor/node_modules/rollup/dist/typings/utils/getCodeFrame.d.ts +1 -0
  452. data/vendor/node_modules/rollup/dist/typings/utils/getExportMode.d.ts +3 -0
  453. data/vendor/node_modules/rollup/dist/typings/utils/getIndentString.d.ts +4 -0
  454. data/vendor/node_modules/rollup/dist/typings/utils/identifierHelpers.d.ts +3 -0
  455. data/vendor/node_modules/rollup/dist/typings/utils/mergeOptions.d.ts +19 -0
  456. data/vendor/node_modules/rollup/dist/typings/utils/object.d.ts +7 -0
  457. data/vendor/node_modules/rollup/dist/typings/utils/path.d.ts +6 -0
  458. data/vendor/node_modules/rollup/dist/typings/utils/promise.d.ts +2 -0
  459. data/vendor/node_modules/rollup/dist/typings/utils/relativeId.d.ts +1 -0
  460. data/vendor/node_modules/rollup/dist/typings/utils/renderHelpers.d.ts +26 -0
  461. data/vendor/node_modules/rollup/dist/typings/utils/sourceMappingURL.d.ts +3 -0
  462. data/vendor/node_modules/rollup/dist/typings/utils/timers.d.ts +7 -0
  463. data/vendor/node_modules/rollup/dist/typings/utils/transform.d.ts +25 -0
  464. data/vendor/node_modules/rollup/dist/typings/utils/transformBundle.d.ts +3 -0
  465. data/vendor/node_modules/rollup/dist/typings/watch/chokidar.d.ts +3 -0
  466. data/vendor/node_modules/rollup/dist/typings/watch/fileWatchers.d.ts +14 -0
  467. data/vendor/node_modules/rollup/dist/typings/watch/index.d.ts +47 -0
  468. data/vendor/node_modules/rollup/package.json +122 -0
  469. data/vendor/node_modules/rollup/typings/package.json.d.ts +3 -0
  470. data/vendor/node_modules/signal-exit/index.js +157 -0
  471. data/vendor/node_modules/signal-exit/package.json +38 -0
  472. data/vendor/node_modules/signal-exit/signals.js +53 -0
  473. data/vendor/node_modules/source-map/dist/source-map.debug.js +3091 -0
  474. data/vendor/node_modules/source-map/dist/source-map.js +3090 -0
  475. data/vendor/node_modules/source-map/dist/source-map.min.js +2 -0
  476. data/vendor/node_modules/source-map/lib/array-set.js +121 -0
  477. data/vendor/node_modules/source-map/lib/base64-vlq.js +140 -0
  478. data/vendor/node_modules/source-map/lib/base64.js +67 -0
  479. data/vendor/node_modules/source-map/lib/binary-search.js +111 -0
  480. data/vendor/node_modules/source-map/lib/mapping-list.js +79 -0
  481. data/vendor/node_modules/source-map/lib/quick-sort.js +114 -0
  482. data/vendor/node_modules/source-map/lib/source-map-consumer.js +1082 -0
  483. data/vendor/node_modules/source-map/lib/source-map-generator.js +416 -0
  484. data/vendor/node_modules/source-map/lib/source-node.js +413 -0
  485. data/vendor/node_modules/source-map/lib/util.js +417 -0
  486. data/vendor/node_modules/source-map/package.json +72 -0
  487. data/vendor/node_modules/source-map/source-map.js +8 -0
  488. data/vendor/node_modules/sourcemap-codec/dist/sourcemap-codec.es.js +129 -0
  489. data/vendor/node_modules/sourcemap-codec/dist/sourcemap-codec.umd.js +140 -0
  490. data/vendor/node_modules/sourcemap-codec/dist/types/sourcemap-codec.d.ts +5 -0
  491. data/vendor/node_modules/sourcemap-codec/package.json +52 -0
  492. data/vendor/node_modules/supports-color/browser.js +5 -0
  493. data/vendor/node_modules/supports-color/index.js +135 -0
  494. data/vendor/node_modules/supports-color/package.json +53 -0
  495. data/vendor/node_modules/time-zone/index.js +10 -0
  496. data/vendor/node_modules/time-zone/package.json +35 -0
  497. data/vendor/node_modules/vlq/dist/types/vlq.d.ts +2 -0
  498. data/vendor/node_modules/vlq/dist/vlq.es.js +64 -0
  499. data/vendor/node_modules/vlq/dist/vlq.js +75 -0
  500. data/vendor/node_modules/vlq/package.json +30 -0
  501. data/vendor/package.json +15 -0
  502. data/vendor/yarn.lock +453 -0
  503. metadata +641 -0
@@ -0,0 +1,934 @@
1
+ 'use strict';
2
+
3
+ // This module is derived from Astring by David Bonnet (see below), but heavily
4
+ // modified to support source-maps & es7 as specified in
5
+ // https://github.com/estree/estree/blob/master/experimental/async-functions.md
6
+ // --------------------
7
+ // Astring is a tiny and fast JavaScript code generator from an ESTree-compliant AST.
8
+ //
9
+ // Astring was written by David Bonnet and released under an MIT license.
10
+ //
11
+ // The Git repository for Astring is available at:
12
+ // https://github.com/davidbonnet/astring.git
13
+ //
14
+ // Please use the GitHub bug tracker to report issues:
15
+ // https://github.com/davidbonnet/astring/issues
16
+
17
+ var SourceMapGenerator = require('source-map').SourceMapGenerator;
18
+ var ForInStatement, RestElement, BinaryExpression, ArrayExpression, BlockStatement;
19
+
20
+ var repeat ;
21
+ if ("".repeat) {
22
+ repeat = function(str,count){
23
+ return count && str ? str.repeat(count):"" ;
24
+ } ;
25
+ } else {
26
+ var cache = {} ;
27
+ repeat = function(str,count) {
28
+ if (!count || !str) return "" ;
29
+ var k = ""+str+count ;
30
+ if (!cache[k]) {
31
+ var out = [];
32
+ while (count--) {
33
+ out.push(str);
34
+ }
35
+ cache[k] = out.join('');
36
+ }
37
+ return cache[k] ;
38
+ }
39
+ }
40
+
41
+ var OPERATORS_PRECEDENCE = {
42
+ 'ExpressionStatement': -1, // Use to parenthesize FunctionExpressions as statements
43
+ 'Identifier': 21,
44
+ 'Literal': 21,
45
+ 'BooleanLiteral':21,
46
+ 'RegExpLiteral':21,
47
+ 'NumericLiteral':21,
48
+ 'StringLiteral':21,
49
+ 'NullLiteral':21,
50
+ 'ThisExpression': 21,
51
+ 'SuperExpression': 21,
52
+ 'ObjectExpression': 21,
53
+ 'ClassExpression': 21,
54
+ // '(_)':20, // Parens
55
+ 'MemberExpression': 19,
56
+ // 'new()':19,
57
+ 'CallExpression': 18,
58
+ 'NewExpression': 18,
59
+ 'ArrayExpression': 17.5,
60
+ 'FunctionExpression': 17.5,
61
+ 'FunctionDeclaration': 17.5,
62
+ 'ArrowFunctionExpression': 17.5,
63
+ 'UpdateExpression++': 17, // Postfix is 17, prefix is 16
64
+ 'UpdateExpression--': 17, // Postfix is 17, prefix is 16
65
+ 'UpdateExpression++prefix': 16, // Postfix is 17, prefix is 16
66
+ 'UpdateExpression--prefix': 16, // Postfix is 17, prefix is 16
67
+ 'UnaryExpression':16, // ! ~ + - typeof void delete
68
+ 'AwaitExpression': 16,
69
+ 'BinaryExpression**': 15,
70
+ 'BinaryExpression*': 15,
71
+ 'BinaryExpression/': 15,
72
+ 'BinaryExpression%': 15,
73
+ 'BinaryExpression+': 14,
74
+ 'BinaryExpression-': 14,
75
+ 'BinaryExpression<<': 13,
76
+ 'BinaryExpression>>': 13,
77
+ 'BinaryExpression>>>': 13,
78
+ 'BinaryExpression<': 12,
79
+ 'BinaryExpression<=': 12,
80
+ 'BinaryExpression>': 12,
81
+ 'BinaryExpression>=': 12,
82
+ 'BinaryExpressionin': 12,
83
+ 'BinaryExpressioninstanceof': 12,
84
+ 'BinaryExpression==': 11,
85
+ 'BinaryExpression===': 11,
86
+ 'BinaryExpression!=': 11,
87
+ 'BinaryExpression!==': 11,
88
+ 'BinaryExpression&': 10,
89
+ 'BinaryExpression^': 9,
90
+ 'BinaryExpression|': 8,
91
+ 'LogicalExpression&&': 7,
92
+ 'LogicalExpression||': 6,
93
+ 'ConditionalExpression': 5,
94
+ 'AssignmentPattern': 4,
95
+ 'AssignmentExpression': 4,
96
+ 'yield': 3,
97
+ 'YieldExpression': 3,
98
+ 'SpreadElement': 2,
99
+ 'comma-separated-list':1.5,
100
+ 'SequenceExpression': 1
101
+ };
102
+
103
+ var CommaList = {type:'comma-separated-list'} ;
104
+
105
+ function precedence(node) {
106
+ if (node.type==='NewExpression' && node.arguments && node.arguments.length)
107
+ return 19 ;
108
+ var p = OPERATORS_PRECEDENCE[node.type] || OPERATORS_PRECEDENCE[node.type+node.operator] || OPERATORS_PRECEDENCE[node.type+node.operator+(node.prefix?"prefix":"")];
109
+ if (p !== undefined)
110
+ return p;
111
+ //console.log("Precedence?",node.type,node.operator) ;
112
+ return 20;
113
+ }
114
+
115
+ function out(node,state,type) {
116
+ var f = this[type || node.type] ;
117
+ if (f) {
118
+ /*
119
+ try {
120
+ var attr = Object.keys(node).filter(k=>k[0]==='$').map(k=>k+(node[k]?"+":"-")) ;
121
+ if (attr.length)
122
+ state.write(node,"/*"+attr.join(", ")+"\u002A/ ") ;
123
+ } catch (ex) {} ;
124
+ */
125
+ f.call(this, node, state);
126
+ } else {
127
+ // Unknown node type - just spew its source
128
+ state.write(node,"/*"+node.type+"?*/ "+state.sourceAt(node.start,node.end)) ;
129
+ }
130
+ }
131
+ function expr(state, parent, node, assoc) {
132
+ if (assoc===2 ||
133
+ precedence(node) < precedence(parent) ||
134
+ (precedence(node) == precedence(parent) && (assoc || parent.right === node))) {
135
+ state.write(null, '(');
136
+ this.out(node, state,node.type);
137
+ state.write(null, ')');
138
+ } else {
139
+ this.out(node, state,node.type);
140
+ }
141
+ }
142
+ function formatParameters(params, state) {
143
+ var param;
144
+ state.write(null, '(');
145
+ if (params != null && params.length > 0) {
146
+ this.out(params[0], state,params[0].type);
147
+ for (var i = 1, length = params.length; i < length; i++) {
148
+ param = params[i];
149
+ state.write(param, ', ');
150
+ this.out(param, state,param.type);
151
+ }
152
+ }
153
+ state.write(null, ') ');
154
+ }
155
+ function argumentList(node, state) {
156
+ state.write(node, '(');
157
+ var args = node['arguments'];
158
+ if (args.length > 0) {
159
+ var length = args.length;
160
+ for (var i = 0; i < length; i++) {
161
+ if (i!=0)
162
+ state.write(null, ', ');
163
+ this.expr(state,CommaList,args[i]) ;
164
+ }
165
+ }
166
+ state.write(null, ')');
167
+ };
168
+
169
+ var traveler = {
170
+ out: out,
171
+ expr: expr,
172
+ argumentList: argumentList,
173
+ formatParameters: formatParameters,
174
+ Program: function (node, state) {
175
+ var statements, statement;
176
+ var indent = repeat(state.indent, state.indentLevel);
177
+ var lineEnd = state.lineEnd;
178
+ statements = node.body;
179
+ for (var i = 0, length = statements.length; i < length; i++) {
180
+ statement = statements[i];
181
+ state.write(null, indent);
182
+ this.out(statement, state,statement.type);
183
+ state.write(null, lineEnd);
184
+ }
185
+ },
186
+ BlockStatement: BlockStatement = function (node, state) {
187
+ var statements, statement;
188
+ var indent = repeat(state.indent, state.indentLevel++);
189
+ var lineEnd = state.lineEnd;
190
+ var statementIndent = indent + state.indent;
191
+ state.write(node, '{');
192
+ statements = node.body;
193
+ if (statements != null && statements.length > 0) {
194
+ state.write(null, lineEnd);
195
+ for (var i = 0, length = statements.length; i < length; i++) {
196
+ statement = statements[i];
197
+ state.write(null, statementIndent);
198
+ this.out(statement, state,statement.type);
199
+ state.write(null, lineEnd);
200
+ }
201
+ state.write(null, indent);
202
+ }
203
+ state.write(node.loc ? {
204
+ loc: {
205
+ start: {
206
+ line: node.loc.end.line,
207
+ column: 0
208
+ }
209
+ }
210
+ } : null, '}');
211
+ state.indentLevel--;
212
+ },
213
+ ClassBody: BlockStatement,
214
+ EmptyStatement: function (node, state) {
215
+ state.write(node, ';');
216
+ },
217
+ ParenthesizedExpression: function (node, state) {
218
+ this.expr(state, node, node.expression, 2);
219
+ },
220
+ ExpressionStatement: function (node, state) {
221
+ if (node.expression.type === 'FunctionExpression' || node.expression.type === 'ObjectExpression') {
222
+ state.write(null, '(');
223
+ this.expr(state, node, node.expression);
224
+ state.write(null, ')');
225
+ } else {
226
+ this.expr(state, node, node.expression);
227
+ }
228
+ state.write(null, ';');
229
+ },
230
+ IfStatement: function (node, state) {
231
+ state.write(node, 'if (');
232
+ this.out(node.test, state,node.test.type);
233
+ state.write(null, ') ');
234
+ if (node.consequent.type !== 'BlockStatement')
235
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
236
+ this.out(node.consequent, state,node.consequent.type);
237
+ if (node.alternate != null) {
238
+ if (node.consequent.type !== 'BlockStatement')
239
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel));
240
+ state.write(null, ' else ');
241
+ if (node.alternate.type !== 'BlockStatement' && node.alternate.type !== 'IfStatement')
242
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
243
+ this.out(node.alternate, state,node.alternate.type);
244
+ }
245
+ },
246
+ LabeledStatement: function (node, state) {
247
+ this.out(node.label, state,node.label.type);
248
+ state.write(null, ':');
249
+ this.out(node.body, state,node.body.type);
250
+ },
251
+ BreakStatement: function (node, state) {
252
+ state.write(node, 'break');
253
+ if (node.label) {
254
+ state.write(null, ' ');
255
+ this.out(node.label, state,node.label.type);
256
+ }
257
+ state.write(null, ';');
258
+ },
259
+ ContinueStatement: function (node, state) {
260
+ state.write(node, 'continue');
261
+ if (node.label) {
262
+ state.write(null, ' ');
263
+ this.out(node.label, state,node.label.type);
264
+ }
265
+ state.write(null, ';');
266
+ },
267
+ WithStatement: function (node, state) {
268
+ state.write(node, 'with (');
269
+ this.out(node.object, state,node.object.type);
270
+ state.write(null, ') ');
271
+ this.out(node.body, state,node.body.type);
272
+ },
273
+ SwitchStatement: function (node, state) {
274
+ var occurence, consequent, statement;
275
+ var indent = repeat(state.indent, state.indentLevel++);
276
+ var lineEnd = state.lineEnd;
277
+ state.indentLevel++;
278
+ var caseIndent = indent + state.indent;
279
+ var statementIndent = caseIndent + state.indent;
280
+ state.write(node, 'switch (');
281
+ this.out(node.discriminant, state,node.discriminant.type);
282
+ state.write(null, ') {', lineEnd);
283
+ var occurences = node.cases;
284
+ for (var i = 0; i < occurences.length; i++) {
285
+ occurence = occurences[i];
286
+ if (occurence.test) {
287
+ state.write(occurence, caseIndent, 'case ');
288
+ this.out(occurence.test, state,occurence.test.type);
289
+ state.write(null, ':', lineEnd);
290
+ } else {
291
+ state.write(occurence, caseIndent, 'default:', lineEnd);
292
+ }
293
+ consequent = occurence.consequent;
294
+ for (var j = 0; j < consequent.length; j++) {
295
+ statement = consequent[j];
296
+ state.write(null, statementIndent);
297
+ this.out(statement, state,statement.type);
298
+ state.write(null, lineEnd);
299
+ }
300
+ }
301
+ state.indentLevel -= 2;
302
+ state.write(null, indent, '}');
303
+ },
304
+ ReturnStatement: function (node, state) {
305
+ if (node.async)
306
+ state.write(node, ' async ');
307
+ state.write(node, 'return');
308
+ if (node.argument) {
309
+ state.write(null, ' ');
310
+ this.out(node.argument, state,node.argument.type);
311
+ }
312
+ state.write(null, ';');
313
+ },
314
+ ThrowStatement: function (node, state) {
315
+ if (node.async)
316
+ state.write(node, ' async ');
317
+ state.write(node, 'throw ');
318
+ this.out(node.argument, state,node.argument.type);
319
+ state.write(null, ';');
320
+ },
321
+ TryStatement: function (node, state) {
322
+ var handler;
323
+ state.write(node, 'try ');
324
+ this.out(node.block, state,node.block.type);
325
+ if (node.handler) {
326
+ this.out(node.handler, state, node.handler.type)
327
+ }
328
+ if (node.finalizer) {
329
+ state.write(node.finalizer, ' finally ');
330
+ this.out(node.finalizer, state,node.finalizer.type);
331
+ }
332
+ },
333
+ CatchClause: function (node, state) {
334
+ state.write(node, ' catch (');
335
+ this.out(node.param, state, node.param.type);
336
+ state.write(null, ') ');
337
+ this.out(node.body, state, node.body.type);
338
+ },
339
+ WhileStatement: function (node, state) {
340
+ state.write(node, 'while (');
341
+ this.out(node.test, state,node.test.type);
342
+ state.write(null, ') ');
343
+ if (node.body.type !== 'BlockStatement')
344
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
345
+ this.out(node.body, state,node.body.type);
346
+ },
347
+ DoWhileStatement: function (node, state) {
348
+ state.write(node, 'do ');
349
+ if (node.body.type !== 'BlockStatement')
350
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
351
+ this.out(node.body, state,node.body.type);
352
+ state.write(null, ' while (');
353
+ this.out(node.test, state,node.test.type);
354
+ state.write(null, ');');
355
+ },
356
+ ForStatement: function (node, state) {
357
+ state.write(node, 'for (');
358
+ if (node.init != null) {
359
+ var init = node.init, type = init.type;
360
+ state.inForInit++ ;
361
+ this.out(init, state,type);
362
+ state.inForInit-- ;
363
+ if (type !== 'VariableDeclaration')
364
+ state.write(null, '; ');
365
+ } else {
366
+ state.write(null, '; ');
367
+ }
368
+ if (node.test)
369
+ this.out(node.test, state,node.test.type);
370
+ state.write(null, '; ');
371
+ if (node.update)
372
+ this.out(node.update, state,node.update.type);
373
+ state.write(null, ') ');
374
+ if (node.body.type !== 'BlockStatement')
375
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
376
+ this.out(node.body, state,node.body.type);
377
+ },
378
+ ForInStatement: ForInStatement = function (node, state) {
379
+ state.write(node, 'for (');
380
+ var left = node.left, type = left.type;
381
+ state.inForInit++ ;
382
+ this.out(left, state,type);
383
+ if (type[0] === 'V' && type.length === 19) {
384
+ state.back();
385
+ }
386
+ state.inForInit-- ;
387
+ state.write(null, node.type[3] === 'I' ? ' in ' : ' of ');
388
+ this.out(node.right, state,node.right.type);
389
+ state.write(null, ') ');
390
+ if (node.body.type !== 'BlockStatement')
391
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
392
+ this.out(node.body, state,node.body.type);
393
+ },
394
+ ForOfStatement: ForInStatement,
395
+ DebuggerStatement: function (node, state) {
396
+ state.write(node, 'debugger;');
397
+ },
398
+ Function: function (node, state) {
399
+ if (node.async)
400
+ state.write(node, 'async ');
401
+ state.write(node, node.generator ? 'function* ' : 'function ');
402
+ if (node.id)
403
+ state.write(node.id, node.id.name);
404
+ this.formatParameters(node.params, state);
405
+ this.out(node.body, state,node.body.type);
406
+ },
407
+ FunctionDeclaration: function (node, state) {
408
+ this.Function(node, state);
409
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel));
410
+ },
411
+ FunctionExpression: function (node, state) {
412
+ this.Function(node, state);
413
+ },
414
+ VariableDeclaration: function (node, state) {
415
+ var declarations = node.declarations;
416
+ state.write(node, node.kind, ' ');
417
+ var length = declarations.length;
418
+ if (length > 0) {
419
+ this.out(declarations[0], state,'VariableDeclarator');
420
+ for (var i = 1; i < length; i++) {
421
+ state.write(null, ', ');
422
+ this.out(declarations[i], state,'VariableDeclarator');
423
+ }
424
+ }
425
+ state.write(null, ';');
426
+ },
427
+ VariableDeclarator: function (node, state) {
428
+ this.out(node.id, state,node.id.type);
429
+ if (node.init != null) {
430
+ state.write(null, ' = ');
431
+ this.expr(state,CommaList,node.init) ;
432
+ }
433
+ },
434
+ ClassDeclaration: function (node, state) {
435
+ state.write(node, 'class ');
436
+ if (node.id) {
437
+ state.write(node.id, node.id.name + ' ');
438
+ }
439
+ if (node.superClass) {
440
+ state.write(null, 'extends ');
441
+ this.out(node.superClass, state,node.superClass.type);
442
+ state.write(null, ' ');
443
+ }
444
+ this.out(node.body, state,'BlockStatement');
445
+ },
446
+ ImportSpecifier: function (node, state) {
447
+ if (node.local.name == node.imported.name) {
448
+ this.out(node.local, state,node.local.type);
449
+ } else {
450
+ this.out(node.imported, state,node.imported.type);
451
+ state.write(null, ' as ');
452
+ this.out(node.local, state,node.local.type);
453
+ }
454
+ },
455
+ ImportDefaultSpecifier: function (node, state) {
456
+ this.out(node.local, state,node.local.type);
457
+ },
458
+ ImportNamespaceSpecifier: function (node, state) {
459
+ state.write(null, '* as ');
460
+ this.out(node.local, state,node.local.type);
461
+ },
462
+ ImportDeclaration: function (node, state) {
463
+ var i, specifier, name;
464
+ state.write(node, 'import ');
465
+ var specifiers = node.specifiers;
466
+ var length = specifiers.length;
467
+ var block = true;
468
+ if (length > 0) {
469
+ for (var i = 0; i < length; i++) {
470
+ if (specifiers[i].type === 'ImportSpecifier' && block) {
471
+ block = false;
472
+ state.write(null, '{');
473
+ }
474
+ this.out(specifiers[i], state,specifiers[i].type);
475
+ if (i < length - 1)
476
+ state.write(null, ', ');
477
+ }
478
+ if (specifiers[length - 1].type === 'ImportSpecifier')
479
+ state.write(null, '}');
480
+ state.write(null, ' from ');
481
+ }
482
+ state.write(node.source, node.source.raw);
483
+ state.write(null, ';');
484
+ },
485
+ ExportDefaultDeclaration: function (node, state) {
486
+ state.write(node, 'export default ');
487
+ this.out(node.declaration, state,node.declaration.type);
488
+ },
489
+ ExportSpecifier: function (node, state) {
490
+ if (node.local.name == node.exported.name) {
491
+ this.out(node.local, state,node.local.type);
492
+ } else {
493
+ this.out(node.local, state,node.local.type);
494
+ state.write(null, ' as ');
495
+ this.out(node.exported, state,node.exported.type);
496
+ }
497
+ },
498
+ ExportNamedDeclaration: function (node, state) {
499
+ var specifier, name;
500
+ state.write(node, 'export ');
501
+ if (node.declaration) {
502
+ this.out(node.declaration, state,node.declaration.type);
503
+ } else {
504
+ var specifiers = node.specifiers;
505
+ state.write(node, '{');
506
+ if (specifiers && specifiers.length > 0) {
507
+ for (var i = 0; i < specifiers.length; i++) {
508
+ this.out(specifiers[i], state,specifiers[i].type);
509
+ if (i < specifiers.length - 1)
510
+ state.write(null, ', ');
511
+ }
512
+ }
513
+ state.write(null, '}');
514
+ if (node.source) {
515
+ state.write(node.source, ' from ', node.source.raw);
516
+ }
517
+ state.write(null, ';');
518
+ }
519
+ },
520
+ ExportAllDeclaration: function (node, state) {
521
+ state.write(node, 'export * from ');
522
+ state.write(node.source, node.source.raw, ';');
523
+ },
524
+ MethodDefinition: function (node, state) {
525
+ if (node.value.async)
526
+ state.write(node, 'async ');
527
+ if (node.static)
528
+ state.write(node, 'static ');
529
+ switch (node.kind) {
530
+ case 'get':
531
+ case 'set':
532
+ state.write(node, node.kind, ' ');
533
+ break;
534
+ default:
535
+ break;
536
+ }
537
+ if (node.value.generator)
538
+ state.write(null, '*');
539
+ if (node.computed) {
540
+ state.write(null, '[');
541
+ this.out(node.key, state,node.key.type);
542
+ state.write(null, ']');
543
+ } else {
544
+ this.out(node.key, state,node.key.type);
545
+ }
546
+ this.formatParameters(node.value.params, state);
547
+ this.out(node.value.body, state,node.value.body.type);
548
+ },
549
+ ClassMethod: function (node,state){
550
+ if (node.async)
551
+ state.write(node, 'async ');
552
+ if (node.static)
553
+ state.write(node, 'static ');
554
+ switch (node.kind) {
555
+ case 'get':
556
+ case 'set':
557
+ state.write(node, node.kind, ' ');
558
+ break;
559
+ default:
560
+ break;
561
+ }
562
+ if (node.generator)
563
+ state.write(null, '*');
564
+ if (node.computed) {
565
+ state.write(null, '[');
566
+ this.out(node.key, state,node.key.type);
567
+ state.write(null, ']');
568
+ } else {
569
+ this.out(node.key, state,node.key.type);
570
+ }
571
+ this.formatParameters(node.params, state);
572
+ this.out(node.body, state, node.body.type);
573
+ },
574
+ ClassExpression: function (node, state) {
575
+ this.out(node, state,'ClassDeclaration');
576
+ },
577
+ ArrowFunctionExpression: function (node, state) {
578
+ if (node.async)
579
+ state.write(node, 'async ');
580
+ if (node.params.length===1 && node.params[0].type==='Identifier') {
581
+ this.out(node.params[0], state, node.params[0].type) ;
582
+ state.write(node, ' => ');
583
+ } else {
584
+ this.formatParameters(node.params, state);
585
+ state.write(node, '=> ');
586
+ }
587
+ if (node.body.type === 'ObjectExpression' || node.body.type === 'SequenceExpression') {
588
+ state.write(null, '(');
589
+ this.out(node.body, state,node.body.type);
590
+ state.write(null, ')');
591
+ } else {
592
+ this.out(node.body, state,node.body.type);
593
+ }
594
+ },
595
+ ThisExpression: function (node, state) {
596
+ state.write(node, 'this');
597
+ },
598
+ Super: function (node, state) {
599
+ state.write(node, 'super');
600
+ },
601
+ RestElement: RestElement = function (node, state) {
602
+ state.write(node, '...');
603
+ this.out(node.argument, state,node.argument.type);
604
+ },
605
+ SpreadElement: RestElement,
606
+ YieldExpression: function (node, state) {
607
+ state.write(node, node.delegate ? 'yield*' : 'yield');
608
+ if (node.argument) {
609
+ state.write(null, ' ');
610
+ this.expr(state, node, node.argument);
611
+ }
612
+ },
613
+ AwaitExpression: function (node, state) {
614
+ state.write(node, 'await ');
615
+ this.expr(state, node, node.argument);
616
+ },
617
+ TemplateLiteral: function (node, state) {
618
+ var expression;
619
+ var quasis = node.quasis, expressions = node.expressions;
620
+ state.write(node, '`');
621
+ for (var i = 0, length = expressions.length; i < length; i++) {
622
+ expression = expressions[i];
623
+ state.write(quasis[i].value, quasis[i].value.raw);
624
+ state.write(null, '${');
625
+ this.out(expression, state,expression.type);
626
+ state.write(null, '}');
627
+ }
628
+ state.write(quasis[quasis.length - 1].value, quasis[quasis.length - 1].value.raw);
629
+ state.write(node, '`');
630
+ },
631
+ TaggedTemplateExpression: function (node, state) {
632
+ this.out(node.tag, state,node.tag.type);
633
+ this.out(node.quasi, state,node.quasi.type);
634
+ },
635
+ ArrayExpression: ArrayExpression = function (node, state) {
636
+ state.write(node, '[');
637
+ if (node.elements.length > 0) {
638
+ var elements = node.elements, length = elements.length;
639
+ for (var i = 0; ; ) {
640
+ var element = elements[i];
641
+ element && this.expr(state,CommaList,element) ;
642
+
643
+ i += 1 ;
644
+ if (i < length || element===null)
645
+ state.write(null, ',');
646
+ if (i >= length)
647
+ break;
648
+ if (state.lineLength() > state.wrapColumn)
649
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
650
+ }
651
+ }
652
+ state.write(null, ']');
653
+ },
654
+ ArrayPattern: ArrayExpression,
655
+ ObjectExpression: function (node, state) {
656
+ var property;
657
+ var indent = repeat(state.indent, state.indentLevel++);
658
+ var lineEnd = state.lineEnd;
659
+ var propertyIndent = indent + state.indent;
660
+ state.write(node, '{');
661
+ if (node.properties.length > 0) {
662
+ state.write(null, lineEnd);
663
+ var properties = node.properties, length = properties.length;
664
+ for (var i = 0; ; ) {
665
+ property = properties[i];
666
+ state.write(null, propertyIndent);
667
+ this.out(property, state, property.type);
668
+ if (++i < length)
669
+ state.write(node, ',', lineEnd);
670
+ else
671
+ break;
672
+ if (state.lineLength() > state.wrapColumn)
673
+ state.write(null, state.lineEnd, repeat(state.indent, state.indentLevel + 1));
674
+ }
675
+ state.write(null, lineEnd, indent, '}');
676
+ } else {
677
+ state.write(null, '}');
678
+ }
679
+ state.indentLevel--;
680
+ },
681
+ Property: function (node, state) {
682
+ if (node.method || (node.kind === 'get' || node.kind === 'set')) {
683
+ this.MethodDefinition(node, state);
684
+ } else {
685
+ if (!node.shorthand) {
686
+ if (node.computed) {
687
+ state.write(null, '[');
688
+ this.out(node.key, state,node.key.type);
689
+ state.write(null, ']');
690
+ } else {
691
+ this.out(node.key, state,node.key.type);
692
+ }
693
+ state.write(null, ': ');
694
+ }
695
+ this.expr(state,CommaList,node.value);
696
+ }
697
+ },
698
+ ObjectPattern: function (node, state) {
699
+ state.write(node, '{');
700
+ if (node.properties.length > 0) {
701
+ var properties = node.properties, length = properties.length;
702
+ for (var i = 0; ; ) {
703
+ this.out(properties[i], state,'Property');
704
+ if (++i < length)
705
+ state.write(null, ', ');
706
+ else
707
+ break;
708
+ }
709
+ }
710
+ state.write(null, '}');
711
+ },
712
+ SequenceExpression: function (node, state) {
713
+ var expression;
714
+ var expressions = node.expressions;
715
+ if (expressions.length > 0) {
716
+ var length = expressions.length;
717
+ for (var i = 0; i<length; i++) {
718
+ expression = expressions[i];
719
+ if (i)
720
+ state.write(null, ', ') ;
721
+ this.expr(state,CommaList,expression) ;
722
+ }
723
+ }
724
+ },
725
+ UnaryExpression: function (node, state) {
726
+ if (node.prefix) {
727
+ state.write(node, node.operator);
728
+ if (node.operator.length > 1)
729
+ state.write(node, ' ');
730
+ this.expr(state, node, node.argument, true);
731
+ } else {
732
+ this.expr(state, node, node.argument);
733
+ state.write(node, node.operator);
734
+ }
735
+ },
736
+ UpdateExpression: function (node, state) {
737
+ if (node.prefix) {
738
+ state.write(node, node.operator);
739
+ this.out(node.argument, state,node.argument.type);
740
+ } else {
741
+ this.out(node.argument, state,node.argument.type);
742
+ state.write(node, node.operator);
743
+ }
744
+ },
745
+ BinaryExpression: BinaryExpression = function (node, state) {
746
+ var operator = node.operator;
747
+ if (operator==='in' && state.inForInit)
748
+ state.write(null, '(');
749
+ this.expr(state, node, node.left);
750
+ state.write(node, ' ', operator, ' ');
751
+ this.expr(state, node, node.right, node.right.type==='ArrowFunctionExpression'?2:0);
752
+ if (operator==='in' && state.inForInit)
753
+ state.write(null, ')');
754
+ },
755
+ LogicalExpression: BinaryExpression,
756
+ AssignmentExpression: function (node, state) {
757
+ if (node.left.type==='ObjectPattern')
758
+ state.write(null,'(');
759
+ this.BinaryExpression(node,state);
760
+ if (node.left.type==='ObjectPattern')
761
+ state.write(null,')');
762
+ },
763
+ AssignmentPattern: function (node, state) {
764
+ this.expr(state, node, node.left);
765
+ state.write(node, ' = ');
766
+ this.expr(state, node, node.right);
767
+ },
768
+ ConditionalExpression: function (node, state) {
769
+ this.expr(state, node, node.test, true);
770
+ state.write(node, ' ? ');
771
+ this.expr(state, node, node.consequent);
772
+ state.write(null, ' : ');
773
+ this.expr(state, node, node.alternate);
774
+ },
775
+ NewExpression: function (node, state) {
776
+ state.write(node, 'new ');
777
+ this.expr(state, node, node.callee, (node.callee.type === 'CallExpression' || node.callee.type==='ObjectExpression')?2:0);
778
+ this.argumentList(node,state) ;
779
+ },
780
+ CallExpression: function (node, state) {
781
+ this.expr(state, node, node.callee, node.callee.type==='ObjectExpression'?2:0);
782
+ this.argumentList(node,state) ;
783
+ },
784
+ MemberExpression: function (node, state) {
785
+ var requireParens = (node.object.type === 'ObjectExpression' || (node.object.type.match(/Literal$/) && node.object.raw && node.object.raw.match(/^[0-9]/))) ;
786
+ var noParens = !requireParens &&
787
+ ((node.object.type === 'ArrayExpression' || node.object.type === 'CallExpression' || node.object.type === 'NewExpression')
788
+ || precedence(node) <= precedence(node.object));
789
+ if (noParens) {
790
+ this.out(node.object, state,node.object.type);
791
+ } else {
792
+ state.write(null, '(');
793
+ this.out(node.object, state,node.object.type);
794
+ state.write(null, ')');
795
+ }
796
+ if (node.computed) {
797
+ state.write(node, '[');
798
+ this.out(node.property, state,node.property.type);
799
+ state.write(null, ']');
800
+ } else {
801
+ state.write(node, '.');
802
+ this.out(node.property, state,node.property.type);
803
+ }
804
+ },
805
+ Identifier: function (node, state) {
806
+ state.write(node, node.name);
807
+ },
808
+ Literal: function (node, state) {
809
+ state.write(node, node.raw);
810
+ },
811
+ NullLiteral:function (node, state) {
812
+ state.write(node, 'null');
813
+ },
814
+ BooleanLiteral:function (node, state) {
815
+ state.write(node, JSON.stringify(node.value));
816
+ },
817
+ StringLiteral:function (node, state) {
818
+ state.write(node, JSON.stringify(node.value));
819
+ },
820
+ RegExpLiteral:function (node, state) {
821
+ state.write(node, node.extra.raw || ('/'+node.pattern+'/'+node.flags));
822
+ },
823
+ NumericLiteral:function (node, state) {
824
+ state.write(node, JSON.stringify(node.value));
825
+ },
826
+ };
827
+ module.exports = function (node, options, originalSource) {
828
+ options = options || {};
829
+ var buffer = "", lines = [];
830
+ var map = options.map && new SourceMapGenerator(options.map);
831
+ if (map && options.map.sourceContent) {
832
+ map.setSourceContent(options.map.file, options.map.sourceContent);
833
+ }
834
+ var backBy = "";
835
+ var leadingComments = [];
836
+ var trailingComments = [];
837
+ function write(node) {
838
+ backBy = arguments[arguments.length - 1] ;
839
+ for (var i = 1; i < arguments.length; i++) {
840
+ if (map && node && node.loc && node.loc.start) {
841
+ var startOfLine = false;
842
+ map.addMapping({
843
+ source: options.map.file,
844
+ original: {
845
+ line: node.loc.start.line,
846
+ column: startOfLine ? 0 : node.loc.start.column
847
+ },
848
+ generated: {
849
+ line: options.map.startLine + lines.length + 1,
850
+ column: startOfLine ? 0 : buffer.length
851
+ }
852
+ });
853
+ }
854
+ if (arguments[i] === st.lineEnd) {
855
+ if (trailingComments.length) {
856
+ trailingComments.forEach(function (c) {
857
+ if (c.type === 'Line')
858
+ buffer += " // " + c.value;
859
+ else {
860
+ (" /*" + c.value + "*/").split("\n").forEach(function (v) {
861
+ buffer += v;
862
+ lines.push(buffer);
863
+ buffer = "";
864
+ });
865
+ buffer = lines.pop();
866
+ }
867
+ });
868
+ trailingComments = [];
869
+ }
870
+ lines.push(buffer);
871
+ buffer = "";
872
+ if (leadingComments.length) {
873
+ var preceeding = lines.pop();
874
+ leadingComments.forEach(function (c) {
875
+ var indent = repeat(st.indent, c.indent);
876
+ if (c.type === "Line")
877
+ lines.push(indent + "//" + c.value);
878
+ else
879
+ (indent + "/*" + c.value + "*/").split("\n").forEach(function (l) {
880
+ lines.push(l);
881
+ });
882
+ });
883
+ lines.push(preceeding);
884
+ leadingComments = [];
885
+ }
886
+ } else {
887
+ buffer += arguments[i];
888
+ if (node && node.$comments) {
889
+ node.$comments.forEach(function (c) {
890
+ var trailing = node.loc.start.column < c.loc.start.column;
891
+ c.indent = st.indentLevel;
892
+ if (trailing) {
893
+ trailingComments.push(c);
894
+ } else {
895
+ leadingComments.push(c);
896
+ }
897
+ });
898
+ node.$comments = null;
899
+ }
900
+ }
901
+ }
902
+ }
903
+ function lineLength() {
904
+ return buffer.length;
905
+ }
906
+ function sourceAt(start, end) {
907
+ return originalSource?originalSource.substring(start,end):"/* Omitted Non-standard node */" ;
908
+ }
909
+ function back() {
910
+ buffer = buffer.substring(0, buffer.length - backBy.length);
911
+ }
912
+ var st = {
913
+ inForInit: 0,
914
+ lineLength: lineLength,
915
+ sourceAt:sourceAt,
916
+ write: write,
917
+ back: back,
918
+ indent: " ",
919
+ lineEnd: "\n",
920
+ indentLevel: 0,
921
+ wrapColumn: 80
922
+ };
923
+ traveler.out(node, st);
924
+ trailingComments = node.$comments || [];
925
+ st.write(node, st.lineEnd);
926
+ var result = lines.join(st.lineEnd);
927
+ if (options && options.map) {
928
+ return {
929
+ code: result,
930
+ map: map
931
+ };
932
+ }
933
+ return result;
934
+ };