@veritone-ce/design-system 2.9.0-next.2 → 2.9.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bundled_modules/d3-array/src/ascending.js +9 -0
- package/dist/cjs/bundled_modules/d3-array/src/bisect.js +16 -0
- package/dist/cjs/bundled_modules/d3-array/src/bisector.js +62 -0
- package/dist/cjs/bundled_modules/d3-array/src/descending.js +13 -0
- package/dist/cjs/bundled_modules/d3-array/src/deviation.js +12 -0
- package/dist/cjs/bundled_modules/d3-array/src/fsum.js +45 -0
- package/dist/cjs/bundled_modules/d3-array/src/intersection.js +25 -0
- package/dist/cjs/bundled_modules/d3-array/src/max.js +26 -0
- package/dist/cjs/bundled_modules/d3-array/src/mean.js +25 -0
- package/dist/cjs/bundled_modules/d3-array/src/median.js +11 -0
- package/dist/cjs/bundled_modules/d3-array/src/merge.js +15 -0
- package/dist/cjs/bundled_modules/d3-array/src/min.js +26 -0
- package/dist/cjs/bundled_modules/d3-array/src/number.js +27 -0
- package/dist/cjs/bundled_modules/d3-array/src/permute.js +9 -0
- package/dist/cjs/bundled_modules/d3-array/src/quantile.js +36 -0
- package/dist/cjs/bundled_modules/d3-array/src/quickselect.js +59 -0
- package/dist/cjs/bundled_modules/d3-array/src/range.js +19 -0
- package/dist/cjs/bundled_modules/d3-array/src/sort.js +20 -0
- package/dist/cjs/bundled_modules/d3-array/src/sum.js +17 -0
- package/dist/cjs/bundled_modules/d3-array/src/ticks.js +63 -0
- package/dist/cjs/bundled_modules/d3-array/src/union.js +17 -0
- package/dist/cjs/bundled_modules/d3-array/src/variance.js +31 -0
- package/dist/cjs/bundled_modules/d3-color/src/color.js +410 -0
- package/dist/cjs/bundled_modules/d3-color/src/cubehelix.js +68 -0
- package/dist/cjs/bundled_modules/d3-color/src/define.js +17 -0
- package/dist/cjs/bundled_modules/d3-color/src/lab.js +124 -0
- package/dist/cjs/bundled_modules/d3-color/src/math.js +7 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/delaunay.js +254 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/path.js +43 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/polygon.js +23 -0
- package/dist/cjs/bundled_modules/d3-delaunay/src/voronoi.js +338 -0
- package/dist/cjs/bundled_modules/d3-dispatch/src/dispatch.js +88 -0
- package/dist/cjs/bundled_modules/d3-dsv/src/dsv.js +170 -0
- package/dist/cjs/bundled_modules/d3-force/src/center.js +46 -0
- package/dist/cjs/bundled_modules/d3-force/src/collide.js +106 -0
- package/dist/cjs/bundled_modules/d3-force/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-force/src/jiggle.js +9 -0
- package/dist/cjs/bundled_modules/d3-force/src/lcg.js +15 -0
- package/dist/cjs/bundled_modules/d3-force/src/link.js +123 -0
- package/dist/cjs/bundled_modules/d3-force/src/manyBody.js +122 -0
- package/dist/cjs/bundled_modules/d3-force/src/simulation.js +164 -0
- package/dist/cjs/bundled_modules/d3-force/src/x.js +47 -0
- package/dist/cjs/bundled_modules/d3-force/src/y.js +47 -0
- package/dist/cjs/bundled_modules/d3-format/src/defaultLocale.js +24 -0
- package/dist/cjs/bundled_modules/d3-format/src/exponent.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatDecimal.js +27 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatGroup.js +24 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatNumerals.js +13 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatPrefixAuto.js +22 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatRounded.js +17 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatSpecifier.js +54 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatTrim.js +17 -0
- package/dist/cjs/bundled_modules/d3-format/src/formatTypes.js +25 -0
- package/dist/cjs/bundled_modules/d3-format/src/identity.js +9 -0
- package/dist/cjs/bundled_modules/d3-format/src/locale.js +154 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionFixed.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionPrefix.js +11 -0
- package/dist/cjs/bundled_modules/d3-format/src/precisionRound.js +12 -0
- package/dist/cjs/bundled_modules/d3-geo/src/area.js +83 -0
- package/dist/cjs/bundled_modules/d3-geo/src/bounds.js +185 -0
- package/dist/cjs/bundled_modules/d3-geo/src/cartesian.js +43 -0
- package/dist/cjs/bundled_modules/d3-geo/src/centroid.js +149 -0
- package/dist/cjs/bundled_modules/d3-geo/src/circle.js +35 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/antimeridian.js +98 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/buffer.js +30 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/circle.js +183 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/index.js +137 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/line.js +65 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/rectangle.js +174 -0
- package/dist/cjs/bundled_modules/d3-geo/src/clip/rejoin.js +109 -0
- package/dist/cjs/bundled_modules/d3-geo/src/compose.js +18 -0
- package/dist/cjs/bundled_modules/d3-geo/src/graticule.js +107 -0
- package/dist/cjs/bundled_modules/d3-geo/src/identity.js +7 -0
- package/dist/cjs/bundled_modules/d3-geo/src/math.js +57 -0
- package/dist/cjs/bundled_modules/d3-geo/src/noop.js +7 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/area.js +54 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/bounds.js +32 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/centroid.js +104 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/context.js +51 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/index.js +82 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/measure.js +49 -0
- package/dist/cjs/bundled_modules/d3-geo/src/path/string.js +92 -0
- package/dist/cjs/bundled_modules/d3-geo/src/pointEqual.js +11 -0
- package/dist/cjs/bundled_modules/d3-geo/src/polygonContains.js +80 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/albers.js +16 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/albersUsa.js +117 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthal.js +32 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthalEqualArea.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/azimuthalEquidistant.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conic.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicConformal.js +45 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicEqualArea.js +40 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/conicEquidistant.js +39 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/cylindricalEqualArea.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/equalEarth.js +43 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/equirectangular.js +19 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/fit.js +54 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/gnomonic.js +23 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/identity.js +91 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/index.js +184 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/mercator.js +60 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/naturalEarth1.js +35 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/orthographic.js +22 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/resample.js +108 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/stereographic.js +25 -0
- package/dist/cjs/bundled_modules/d3-geo/src/projection/transverseMercator.js +34 -0
- package/dist/cjs/bundled_modules/d3-geo/src/rotation.js +86 -0
- package/dist/cjs/bundled_modules/d3-geo/src/stream.js +75 -0
- package/dist/cjs/bundled_modules/d3-geo/src/transform.js +24 -0
- package/dist/cjs/bundled_modules/d3-geo-projection/src/math.js +28 -0
- package/dist/cjs/bundled_modules/d3-geo-projection/src/mollweide.js +38 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/accessors.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/array.js +27 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/cluster.js +90 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/constant.js +16 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/ancestors.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/count.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/descendants.js +9 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/each.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/eachAfter.js +21 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/eachBefore.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/find.js +14 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/index.js +99 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/iterator.js +20 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/leaves.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/links.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/path.js +36 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/sort.js +13 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/hierarchy/sum.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/lcg.js +15 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/enclose.js +122 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/index.js +87 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/pack/siblings.js +118 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/partition.js +58 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/stratify.js +151 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/tree.js +243 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/binary.js +52 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/dice.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/index.js +100 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/resquarify.js +42 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/round.js +12 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/slice.js +18 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/sliceDice.js +12 -0
- package/dist/cjs/bundled_modules/d3-hierarchy/src/treemap/squarify.js +74 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/array.js +29 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/basis.js +26 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/basisClosed.js +19 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/color.js +37 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/constant.js +7 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/cubehelix.js +36 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/date.js +12 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/discrete.js +12 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hcl.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hsl.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/hue.js +15 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/index.js +53 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/lab.js +22 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/number.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/numberArray.js +21 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/object.js +29 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/piecewise.js +17 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/quantize.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/rgb.js +63 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/round.js +11 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/string.js +70 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/decompose.js +33 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/index.js +68 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/transform/parse.js +23 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/value.js +28 -0
- package/dist/cjs/bundled_modules/d3-interpolate/src/zoom.js +77 -0
- package/dist/cjs/bundled_modules/d3-path/src/path.js +157 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/add.js +91 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/cover.js +49 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/data.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/extent.js +11 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/find.js +76 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/quad.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/quadtree.js +79 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/remove.js +69 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/root.js +9 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/size.js +13 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/visit.js +22 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/visitAfter.js +27 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/x.js +14 -0
- package/dist/cjs/bundled_modules/d3-quadtree/src/y.js +14 -0
- package/dist/cjs/bundled_modules/d3-scale/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-scale/src/continuous.js +136 -0
- package/dist/cjs/bundled_modules/d3-scale/src/diverging.js +116 -0
- package/dist/cjs/bundled_modules/d3-scale/src/identity.js +34 -0
- package/dist/cjs/bundled_modules/d3-scale/src/init.js +31 -0
- package/dist/cjs/bundled_modules/d3-scale/src/linear.js +77 -0
- package/dist/cjs/bundled_modules/d3-scale/src/log.js +148 -0
- package/dist/cjs/bundled_modules/d3-scale/src/nice.js +24 -0
- package/dist/cjs/bundled_modules/d3-scale/src/number.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale/src/ordinal.js +53 -0
- package/dist/cjs/bundled_modules/d3-scale/src/pow.js +58 -0
- package/dist/cjs/bundled_modules/d3-scale/src/quantile.js +65 -0
- package/dist/cjs/bundled_modules/d3-scale/src/quantize.js +62 -0
- package/dist/cjs/bundled_modules/d3-scale/src/sequential.js +119 -0
- package/dist/cjs/bundled_modules/d3-scale/src/symlog.js +42 -0
- package/dist/cjs/bundled_modules/d3-scale/src/threshold.js +45 -0
- package/dist/cjs/bundled_modules/d3-scale/src/tickFormat.js +39 -0
- package/dist/cjs/bundled_modules/d3-scale/src/time.js +85 -0
- package/dist/cjs/bundled_modules/d3-scale/src/utcTime.js +21 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Accent.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Dark2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Paired.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Pastel1.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Pastel2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set1.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set2.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/Set3.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/category10.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/categorical/observable10.js +9 -0
- package/dist/cjs/bundled_modules/d3-scale-chromatic/src/colors.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/arc.js +274 -0
- package/dist/cjs/bundled_modules/d3-shape/src/area.js +118 -0
- package/dist/cjs/bundled_modules/d3-shape/src/array.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/constant.js +11 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basis.js +59 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basisClosed.js +58 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/basisOpen.js +45 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/bundle.js +62 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinal.js +69 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinalClosed.js +68 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/cardinalOpen.js +56 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRom.js +95 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRomClosed.js +80 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/catmullRomOpen.js +68 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/linear.js +37 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/linearClosed.js +31 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/monotone.js +109 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/natural.js +71 -0
- package/dist/cjs/bundled_modules/d3-shape/src/curve/step.js +61 -0
- package/dist/cjs/bundled_modules/d3-shape/src/line.js +64 -0
- package/dist/cjs/bundled_modules/d3-shape/src/math.js +36 -0
- package/dist/cjs/bundled_modules/d3-shape/src/noop.js +7 -0
- package/dist/cjs/bundled_modules/d3-shape/src/path.js +23 -0
- package/dist/cjs/bundled_modules/d3-shape/src/point.js +12 -0
- package/dist/cjs/bundled_modules/d3-shape/src/symbol/circle.js +15 -0
- package/dist/cjs/bundled_modules/d3-shape/src/symbol.js +38 -0
- package/dist/cjs/bundled_modules/d3-time/src/day.js +41 -0
- package/dist/cjs/bundled_modules/d3-time/src/duration.js +17 -0
- package/dist/cjs/bundled_modules/d3-time/src/hour.js +31 -0
- package/dist/cjs/bundled_modules/d3-time/src/interval.js +73 -0
- package/dist/cjs/bundled_modules/d3-time/src/millisecond.js +29 -0
- package/dist/cjs/bundled_modules/d3-time/src/minute.js +31 -0
- package/dist/cjs/bundled_modules/d3-time/src/month.js +32 -0
- package/dist/cjs/bundled_modules/d3-time/src/second.js +18 -0
- package/dist/cjs/bundled_modules/d3-time/src/ticks.js +64 -0
- package/dist/cjs/bundled_modules/d3-time/src/week.js +73 -0
- package/dist/cjs/bundled_modules/d3-time/src/year.js +54 -0
- package/dist/cjs/bundled_modules/d3-time-format/src/defaultLocale.js +33 -0
- package/dist/cjs/bundled_modules/d3-time-format/src/locale.js +694 -0
- package/dist/cjs/bundled_modules/d3-timer/src/interval.js +23 -0
- package/dist/cjs/bundled_modules/d3-timer/src/timer.js +117 -0
- package/dist/cjs/bundled_modules/delaunator/index.js +485 -0
- package/dist/cjs/bundled_modules/internmap/src/index.js +66 -0
- package/dist/cjs/bundled_modules/json-stringify-pretty-compact/index.js +104 -0
- package/dist/cjs/bundled_modules/robust-predicates/esm/orient2d.js +184 -0
- package/dist/cjs/bundled_modules/robust-predicates/esm/util.js +95 -0
- package/dist/cjs/bundled_modules/topojson-client/src/feature.js +77 -0
- package/dist/cjs/bundled_modules/topojson-client/src/identity.js +9 -0
- package/dist/cjs/bundled_modules/topojson-client/src/mesh.js +60 -0
- package/dist/cjs/bundled_modules/topojson-client/src/reverse.js +10 -0
- package/dist/cjs/bundled_modules/topojson-client/src/stitch.js +79 -0
- package/dist/cjs/bundled_modules/topojson-client/src/transform.js +25 -0
- package/dist/cjs/bundled_modules/vega/build/vega.module.js +272 -0
- package/dist/cjs/bundled_modules/vega-canvas/build/vega-canvas.browser.js +18 -0
- package/dist/cjs/bundled_modules/vega-crossfilter/build/vega-crossfilter.js +676 -0
- package/dist/cjs/bundled_modules/vega-dataflow/build/vega-dataflow.js +2102 -0
- package/dist/cjs/bundled_modules/vega-embed/build/embed.js +2939 -0
- package/dist/cjs/bundled_modules/vega-encode/build/vega-encode.js +962 -0
- package/dist/cjs/bundled_modules/vega-event-selector/build/vega-event-selector.js +192 -0
- package/dist/cjs/bundled_modules/vega-expression/build/vega-expression.js +1615 -0
- package/dist/cjs/bundled_modules/vega-force/build/vega-force.js +295 -0
- package/dist/cjs/bundled_modules/vega-format/build/vega-format.js +201 -0
- package/dist/cjs/bundled_modules/vega-functions/build/vega-functions.js +842 -0
- package/dist/cjs/bundled_modules/vega-geo/build/vega-geo.js +1333 -0
- package/dist/cjs/bundled_modules/vega-hierarchy/build/vega-hierarchy.js +580 -0
- package/dist/cjs/bundled_modules/vega-interpreter/build/vega-interpreter.js +310 -0
- package/dist/cjs/bundled_modules/vega-label/build/vega-label.js +876 -0
- package/dist/cjs/bundled_modules/vega-lite/build/index.js +20157 -0
- package/dist/cjs/bundled_modules/vega-loader/build/vega-loader.browser.js +337 -0
- package/dist/cjs/bundled_modules/vega-parser/build/vega-parser.js +3805 -0
- package/dist/cjs/bundled_modules/vega-projection/build/vega-projection.js +90 -0
- package/dist/cjs/bundled_modules/vega-regression/build/vega-regression.js +236 -0
- package/dist/cjs/bundled_modules/vega-runtime/build/vega-runtime.js +588 -0
- package/dist/cjs/bundled_modules/vega-scale/build/vega-scale.js +846 -0
- package/dist/cjs/bundled_modules/vega-scenegraph/build/vega-scenegraph.js +5040 -0
- package/dist/cjs/bundled_modules/vega-schema-url-parser/dist/parser.modern.js +7 -0
- package/dist/cjs/bundled_modules/vega-selections/build/vega-selection.js +342 -0
- package/dist/cjs/bundled_modules/vega-statistics/build/vega-statistics.js +1193 -0
- package/dist/cjs/bundled_modules/vega-themes/build/index.js +853 -0
- package/dist/cjs/bundled_modules/vega-time/build/vega-time.js +342 -0
- package/dist/cjs/bundled_modules/vega-tooltip/build/index.js +353 -0
- package/dist/cjs/bundled_modules/vega-transforms/build/vega-transforms.js +3781 -0
- package/dist/cjs/bundled_modules/vega-util/build/vega-util.js +824 -0
- package/dist/cjs/bundled_modules/vega-view/build/vega-view.js +1306 -0
- package/dist/cjs/bundled_modules/vega-view-transforms/build/vega-view-transforms.js +1313 -0
- package/dist/cjs/bundled_modules/vega-voronoi/build/vega-voronoi.js +80 -0
- package/dist/cjs/bundled_modules/vega-wordcloud/build/vega-wordcloud.js +540 -0
- package/dist/cjs/unstable/extras/chart/BarChart.js +42 -0
- package/dist/cjs/unstable/extras/chart/Chart.js +100 -0
- package/dist/cjs/unstable/extras/chart/DistributionChart.js +84 -0
- package/dist/cjs/unstable/extras/chart/DonutChart.js +43 -0
- package/dist/cjs/unstable/extras/chart/LineChart.js +45 -0
- package/dist/cjs/unstable/extras/chart/PieChart.js +39 -0
- package/dist/cjs/unstable/extras/chart/TimelineChart.js +48 -0
- package/dist/cjs/unstable/extras/chart/index.js +23 -0
- package/dist/esm/bundled_modules/d3-array/src/ascending.js +5 -0
- package/dist/esm/bundled_modules/d3-array/src/bisect.js +10 -0
- package/dist/esm/bundled_modules/d3-array/src/bisector.js +58 -0
- package/dist/esm/bundled_modules/d3-array/src/descending.js +9 -0
- package/dist/esm/bundled_modules/d3-array/src/deviation.js +8 -0
- package/dist/esm/bundled_modules/d3-array/src/fsum.js +43 -0
- package/dist/esm/bundled_modules/d3-array/src/intersection.js +21 -0
- package/dist/esm/bundled_modules/d3-array/src/max.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/mean.js +21 -0
- package/dist/esm/bundled_modules/d3-array/src/median.js +7 -0
- package/dist/esm/bundled_modules/d3-array/src/merge.js +11 -0
- package/dist/esm/bundled_modules/d3-array/src/min.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/number.js +22 -0
- package/dist/esm/bundled_modules/d3-array/src/permute.js +5 -0
- package/dist/esm/bundled_modules/d3-array/src/quantile.js +31 -0
- package/dist/esm/bundled_modules/d3-array/src/quickselect.js +55 -0
- package/dist/esm/bundled_modules/d3-array/src/range.js +15 -0
- package/dist/esm/bundled_modules/d3-array/src/sort.js +17 -0
- package/dist/esm/bundled_modules/d3-array/src/sum.js +13 -0
- package/dist/esm/bundled_modules/d3-array/src/ticks.js +57 -0
- package/dist/esm/bundled_modules/d3-array/src/union.js +13 -0
- package/dist/esm/bundled_modules/d3-array/src/variance.js +27 -0
- package/dist/esm/bundled_modules/d3-color/src/color.js +398 -0
- package/dist/esm/bundled_modules/d3-color/src/cubehelix.js +63 -0
- package/dist/esm/bundled_modules/d3-color/src/define.js +12 -0
- package/dist/esm/bundled_modules/d3-color/src/lab.js +117 -0
- package/dist/esm/bundled_modules/d3-color/src/math.js +4 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/delaunay.js +250 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/path.js +39 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/polygon.js +19 -0
- package/dist/esm/bundled_modules/d3-delaunay/src/voronoi.js +334 -0
- package/dist/esm/bundled_modules/d3-dispatch/src/dispatch.js +84 -0
- package/dist/esm/bundled_modules/d3-dsv/src/dsv.js +166 -0
- package/dist/esm/bundled_modules/d3-force/src/center.js +42 -0
- package/dist/esm/bundled_modules/d3-force/src/collide.js +102 -0
- package/dist/esm/bundled_modules/d3-force/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-force/src/jiggle.js +5 -0
- package/dist/esm/bundled_modules/d3-force/src/lcg.js +11 -0
- package/dist/esm/bundled_modules/d3-force/src/link.js +119 -0
- package/dist/esm/bundled_modules/d3-force/src/manyBody.js +118 -0
- package/dist/esm/bundled_modules/d3-force/src/simulation.js +158 -0
- package/dist/esm/bundled_modules/d3-force/src/x.js +43 -0
- package/dist/esm/bundled_modules/d3-force/src/y.js +43 -0
- package/dist/esm/bundled_modules/d3-format/src/defaultLocale.js +20 -0
- package/dist/esm/bundled_modules/d3-format/src/exponent.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/formatDecimal.js +22 -0
- package/dist/esm/bundled_modules/d3-format/src/formatGroup.js +20 -0
- package/dist/esm/bundled_modules/d3-format/src/formatNumerals.js +9 -0
- package/dist/esm/bundled_modules/d3-format/src/formatPrefixAuto.js +18 -0
- package/dist/esm/bundled_modules/d3-format/src/formatRounded.js +13 -0
- package/dist/esm/bundled_modules/d3-format/src/formatSpecifier.js +49 -0
- package/dist/esm/bundled_modules/d3-format/src/formatTrim.js +13 -0
- package/dist/esm/bundled_modules/d3-format/src/formatTypes.js +21 -0
- package/dist/esm/bundled_modules/d3-format/src/identity.js +5 -0
- package/dist/esm/bundled_modules/d3-format/src/locale.js +150 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionFixed.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionPrefix.js +7 -0
- package/dist/esm/bundled_modules/d3-format/src/precisionRound.js +8 -0
- package/dist/esm/bundled_modules/d3-geo/src/area.js +78 -0
- package/dist/esm/bundled_modules/d3-geo/src/bounds.js +181 -0
- package/dist/esm/bundled_modules/d3-geo/src/cartesian.js +35 -0
- package/dist/esm/bundled_modules/d3-geo/src/centroid.js +145 -0
- package/dist/esm/bundled_modules/d3-geo/src/circle.js +33 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/antimeridian.js +94 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/buffer.js +26 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/circle.js +179 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/index.js +133 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/line.js +61 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/rectangle.js +170 -0
- package/dist/esm/bundled_modules/d3-geo/src/clip/rejoin.js +105 -0
- package/dist/esm/bundled_modules/d3-geo/src/compose.js +14 -0
- package/dist/esm/bundled_modules/d3-geo/src/graticule.js +103 -0
- package/dist/esm/bundled_modules/d3-geo/src/identity.js +3 -0
- package/dist/esm/bundled_modules/d3-geo/src/math.js +33 -0
- package/dist/esm/bundled_modules/d3-geo/src/noop.js +3 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/area.js +50 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/bounds.js +28 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/centroid.js +100 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/context.js +47 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/index.js +78 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/measure.js +45 -0
- package/dist/esm/bundled_modules/d3-geo/src/path/string.js +88 -0
- package/dist/esm/bundled_modules/d3-geo/src/pointEqual.js +7 -0
- package/dist/esm/bundled_modules/d3-geo/src/polygonContains.js +76 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/albers.js +12 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/albersUsa.js +113 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthal.js +29 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthalEqualArea.js +19 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/azimuthalEquidistant.js +19 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conic.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicConformal.js +40 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicEqualArea.js +35 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/conicEquidistant.js +34 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/cylindricalEqualArea.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/equalEarth.js +38 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/equirectangular.js +14 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/fit.js +49 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/gnomonic.js +18 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/identity.js +87 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/index.js +179 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/mercator.js +54 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/naturalEarth1.js +30 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/orthographic.js +17 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/resample.js +104 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/stereographic.js +20 -0
- package/dist/esm/bundled_modules/d3-geo/src/projection/transverseMercator.js +29 -0
- package/dist/esm/bundled_modules/d3-geo/src/rotation.js +81 -0
- package/dist/esm/bundled_modules/d3-geo/src/stream.js +71 -0
- package/dist/esm/bundled_modules/d3-geo/src/transform.js +22 -0
- package/dist/esm/bundled_modules/d3-geo-projection/src/math.js +18 -0
- package/dist/esm/bundled_modules/d3-geo-projection/src/mollweide.js +31 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/accessors.js +10 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/array.js +22 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/cluster.js +86 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/constant.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/ancestors.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/count.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/descendants.js +5 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/each.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/eachAfter.js +17 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/eachBefore.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/find.js +10 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/index.js +93 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/iterator.js +16 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/leaves.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/links.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/path.js +32 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/sort.js +9 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/hierarchy/sum.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/lcg.js +11 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/enclose.js +120 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/index.js +83 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/pack/siblings.js +116 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/partition.js +54 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/stratify.js +147 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/tree.js +239 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/binary.js +48 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/dice.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/index.js +96 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/resquarify.js +38 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/round.js +8 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/slice.js +14 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/sliceDice.js +8 -0
- package/dist/esm/bundled_modules/d3-hierarchy/src/treemap/squarify.js +68 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/array.js +24 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/basis.js +21 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/basisClosed.js +15 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/color.js +31 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/constant.js +3 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/cubehelix.js +31 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/date.js +8 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/discrete.js +8 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hcl.js +23 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hsl.js +23 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/hue.js +11 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/index.js +21 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/lab.js +18 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/number.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/numberArray.js +16 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/object.js +25 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/piecewise.js +13 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/quantize.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/rgb.js +57 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/round.js +7 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/string.js +66 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/decompose.js +28 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/index.js +65 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/transform/parse.js +20 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/value.js +24 -0
- package/dist/esm/bundled_modules/d3-interpolate/src/zoom.js +73 -0
- package/dist/esm/bundled_modules/d3-path/src/path.js +154 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/add.js +86 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/cover.js +45 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/data.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/extent.js +7 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/find.js +72 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/quad.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/quadtree.js +75 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/remove.js +64 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/root.js +5 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/size.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/visit.js +18 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/visitAfter.js +23 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/x.js +9 -0
- package/dist/esm/bundled_modules/d3-quadtree/src/y.js +9 -0
- package/dist/esm/bundled_modules/d3-scale/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-scale/src/continuous.js +129 -0
- package/dist/esm/bundled_modules/d3-scale/src/diverging.js +108 -0
- package/dist/esm/bundled_modules/d3-scale/src/identity.js +30 -0
- package/dist/esm/bundled_modules/d3-scale/src/init.js +28 -0
- package/dist/esm/bundled_modules/d3-scale/src/linear.js +72 -0
- package/dist/esm/bundled_modules/d3-scale/src/log.js +143 -0
- package/dist/esm/bundled_modules/d3-scale/src/nice.js +20 -0
- package/dist/esm/bundled_modules/d3-scale/src/number.js +5 -0
- package/dist/esm/bundled_modules/d3-scale/src/ordinal.js +48 -0
- package/dist/esm/bundled_modules/d3-scale/src/pow.js +52 -0
- package/dist/esm/bundled_modules/d3-scale/src/quantile.js +61 -0
- package/dist/esm/bundled_modules/d3-scale/src/quantize.js +58 -0
- package/dist/esm/bundled_modules/d3-scale/src/sequential.js +110 -0
- package/dist/esm/bundled_modules/d3-scale/src/symlog.js +37 -0
- package/dist/esm/bundled_modules/d3-scale/src/threshold.js +41 -0
- package/dist/esm/bundled_modules/d3-scale/src/tickFormat.js +35 -0
- package/dist/esm/bundled_modules/d3-scale/src/time.js +80 -0
- package/dist/esm/bundled_modules/d3-scale/src/utcTime.js +17 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Accent.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Dark2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Paired.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Pastel1.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Pastel2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set1.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set2.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/Set3.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/category10.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/categorical/observable10.js +5 -0
- package/dist/esm/bundled_modules/d3-scale-chromatic/src/colors.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/arc.js +270 -0
- package/dist/esm/bundled_modules/d3-shape/src/area.js +114 -0
- package/dist/esm/bundled_modules/d3-shape/src/array.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/constant.js +7 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basis.js +53 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basisClosed.js +54 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/basisOpen.js +41 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/bundle.js +58 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinal.js +63 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinalClosed.js +63 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/cardinalOpen.js +51 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRom.js +90 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRomClosed.js +76 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/catmullRomOpen.js +64 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/linear.js +33 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/linearClosed.js +27 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/monotone.js +106 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/natural.js +67 -0
- package/dist/esm/bundled_modules/d3-shape/src/curve/step.js +55 -0
- package/dist/esm/bundled_modules/d3-shape/src/line.js +60 -0
- package/dist/esm/bundled_modules/d3-shape/src/math.js +22 -0
- package/dist/esm/bundled_modules/d3-shape/src/noop.js +3 -0
- package/dist/esm/bundled_modules/d3-shape/src/path.js +21 -0
- package/dist/esm/bundled_modules/d3-shape/src/point.js +9 -0
- package/dist/esm/bundled_modules/d3-shape/src/symbol/circle.js +11 -0
- package/dist/esm/bundled_modules/d3-shape/src/symbol.js +34 -0
- package/dist/esm/bundled_modules/d3-time/src/day.js +37 -0
- package/dist/esm/bundled_modules/d3-time/src/duration.js +9 -0
- package/dist/esm/bundled_modules/d3-time/src/hour.js +28 -0
- package/dist/esm/bundled_modules/d3-time/src/interval.js +71 -0
- package/dist/esm/bundled_modules/d3-time/src/millisecond.js +27 -0
- package/dist/esm/bundled_modules/d3-time/src/minute.js +28 -0
- package/dist/esm/bundled_modules/d3-time/src/month.js +29 -0
- package/dist/esm/bundled_modules/d3-time/src/second.js +16 -0
- package/dist/esm/bundled_modules/d3-time/src/ticks.js +59 -0
- package/dist/esm/bundled_modules/d3-time/src/week.js +58 -0
- package/dist/esm/bundled_modules/d3-time/src/year.js +51 -0
- package/dist/esm/bundled_modules/d3-time-format/src/defaultLocale.js +29 -0
- package/dist/esm/bundled_modules/d3-time-format/src/locale.js +690 -0
- package/dist/esm/bundled_modules/d3-timer/src/interval.js +19 -0
- package/dist/esm/bundled_modules/d3-timer/src/timer.js +112 -0
- package/dist/esm/bundled_modules/delaunator/index.js +481 -0
- package/dist/esm/bundled_modules/internmap/src/index.js +63 -0
- package/dist/esm/bundled_modules/json-stringify-pretty-compact/index.js +100 -0
- package/dist/esm/bundled_modules/robust-predicates/esm/orient2d.js +182 -0
- package/dist/esm/bundled_modules/robust-predicates/esm/util.js +88 -0
- package/dist/esm/bundled_modules/topojson-client/src/feature.js +72 -0
- package/dist/esm/bundled_modules/topojson-client/src/identity.js +5 -0
- package/dist/esm/bundled_modules/topojson-client/src/mesh.js +55 -0
- package/dist/esm/bundled_modules/topojson-client/src/reverse.js +6 -0
- package/dist/esm/bundled_modules/topojson-client/src/stitch.js +75 -0
- package/dist/esm/bundled_modules/topojson-client/src/transform.js +21 -0
- package/dist/esm/bundled_modules/vega/build/vega.module.js +38 -0
- package/dist/esm/bundled_modules/vega-canvas/build/vega-canvas.browser.js +14 -0
- package/dist/esm/bundled_modules/vega-crossfilter/build/vega-crossfilter.js +673 -0
- package/dist/esm/bundled_modules/vega-dataflow/build/vega-dataflow.js +2080 -0
- package/dist/esm/bundled_modules/vega-embed/build/embed.js +2932 -0
- package/dist/esm/bundled_modules/vega-encode/build/vega-encode.js +952 -0
- package/dist/esm/bundled_modules/vega-event-selector/build/vega-event-selector.js +190 -0
- package/dist/esm/bundled_modules/vega-expression/build/vega-expression.js +1597 -0
- package/dist/esm/bundled_modules/vega-force/build/vega-force.js +293 -0
- package/dist/esm/bundled_modules/vega-format/build/vega-format.js +191 -0
- package/dist/esm/bundled_modules/vega-functions/build/vega-functions.js +779 -0
- package/dist/esm/bundled_modules/vega-geo/build/vega-geo.js +1322 -0
- package/dist/esm/bundled_modules/vega-hierarchy/build/vega-hierarchy.js +572 -0
- package/dist/esm/bundled_modules/vega-interpreter/build/vega-interpreter.js +308 -0
- package/dist/esm/bundled_modules/vega-label/build/vega-label.js +874 -0
- package/dist/esm/bundled_modules/vega-lite/build/index.js +20110 -0
- package/dist/esm/bundled_modules/vega-loader/build/vega-loader.browser.js +328 -0
- package/dist/esm/bundled_modules/vega-parser/build/vega-parser.js +3783 -0
- package/dist/esm/bundled_modules/vega-projection/build/vega-projection.js +86 -0
- package/dist/esm/bundled_modules/vega-regression/build/vega-regression.js +233 -0
- package/dist/esm/bundled_modules/vega-runtime/build/vega-runtime.js +586 -0
- package/dist/esm/bundled_modules/vega-scale/build/vega-scale.js +799 -0
- package/dist/esm/bundled_modules/vega-scenegraph/build/vega-scenegraph.js +4982 -0
- package/dist/esm/bundled_modules/vega-schema-url-parser/dist/parser.modern.js +3 -0
- package/dist/esm/bundled_modules/vega-selections/build/vega-selection.js +336 -0
- package/dist/esm/bundled_modules/vega-statistics/build/vega-statistics.js +1157 -0
- package/dist/esm/bundled_modules/vega-themes/build/index.js +837 -0
- package/dist/esm/bundled_modules/vega-time/build/vega-time.js +314 -0
- package/dist/esm/bundled_modules/vega-tooltip/build/index.js +339 -0
- package/dist/esm/bundled_modules/vega-transforms/build/vega-transforms.js +3740 -0
- package/dist/esm/bundled_modules/vega-util/build/vega-util.js +753 -0
- package/dist/esm/bundled_modules/vega-view/build/vega-view.js +1304 -0
- package/dist/esm/bundled_modules/vega-view-transforms/build/vega-view-transforms.js +1306 -0
- package/dist/esm/bundled_modules/vega-voronoi/build/vega-voronoi.js +78 -0
- package/dist/esm/bundled_modules/vega-wordcloud/build/vega-wordcloud.js +538 -0
- package/dist/esm/unstable/extras/chart/BarChart.js +40 -0
- package/dist/esm/unstable/extras/chart/Chart.js +96 -0
- package/dist/esm/unstable/extras/chart/DistributionChart.js +82 -0
- package/dist/esm/unstable/extras/chart/DonutChart.js +41 -0
- package/dist/esm/unstable/extras/chart/LineChart.js +43 -0
- package/dist/esm/unstable/extras/chart/PieChart.js +37 -0
- package/dist/esm/unstable/extras/chart/TimelineChart.js +46 -0
- package/dist/esm/unstable/extras/chart/index.js +8 -0
- package/dist/types/unstable/extras/chart/BarChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/Chart.d.ts +33 -0
- package/dist/types/unstable/extras/chart/DistributionChart.d.ts +18 -0
- package/dist/types/unstable/extras/chart/DonutChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/LineChart.d.ts +16 -0
- package/dist/types/unstable/extras/chart/PieChart.d.ts +14 -0
- package/dist/types/unstable/extras/chart/TimelineChart.d.ts +15 -0
- package/dist/types/unstable/extras/chart/index.d.ts +15 -0
- package/package.json +1 -1
|
@@ -0,0 +1,1597 @@
|
|
|
1
|
+
import { toSet, isString, error, DisallowedObjectProperties, hasOwnProperty as has, isFunction } from '../../vega-util/build/vega-util.js';
|
|
2
|
+
|
|
3
|
+
const RawCode = 'RawCode';
|
|
4
|
+
const Literal = 'Literal';
|
|
5
|
+
const Property = 'Property';
|
|
6
|
+
const Identifier = 'Identifier';
|
|
7
|
+
const ArrayExpression = 'ArrayExpression';
|
|
8
|
+
const BinaryExpression = 'BinaryExpression';
|
|
9
|
+
const CallExpression = 'CallExpression';
|
|
10
|
+
const ConditionalExpression = 'ConditionalExpression';
|
|
11
|
+
const LogicalExpression = 'LogicalExpression';
|
|
12
|
+
const MemberExpression = 'MemberExpression';
|
|
13
|
+
const ObjectExpression = 'ObjectExpression';
|
|
14
|
+
const UnaryExpression = 'UnaryExpression';
|
|
15
|
+
function ASTNode(type) {
|
|
16
|
+
this.type = type;
|
|
17
|
+
}
|
|
18
|
+
ASTNode.prototype.visit = function (visitor) {
|
|
19
|
+
let c, i, n;
|
|
20
|
+
if (visitor(this)) return 1;
|
|
21
|
+
for (c = children(this), i = 0, n = c.length; i < n; ++i) {
|
|
22
|
+
if (c[i].visit(visitor)) return 1;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
function children(node) {
|
|
26
|
+
switch (node.type) {
|
|
27
|
+
case ArrayExpression:
|
|
28
|
+
return node.elements;
|
|
29
|
+
case BinaryExpression:
|
|
30
|
+
case LogicalExpression:
|
|
31
|
+
return [node.left, node.right];
|
|
32
|
+
case CallExpression:
|
|
33
|
+
return [node.callee].concat(node.arguments);
|
|
34
|
+
case ConditionalExpression:
|
|
35
|
+
return [node.test, node.consequent, node.alternate];
|
|
36
|
+
case MemberExpression:
|
|
37
|
+
return [node.object, node.property];
|
|
38
|
+
case ObjectExpression:
|
|
39
|
+
return node.properties;
|
|
40
|
+
case Property:
|
|
41
|
+
return [node.key, node.value];
|
|
42
|
+
case UnaryExpression:
|
|
43
|
+
return [node.argument];
|
|
44
|
+
case Identifier:
|
|
45
|
+
case Literal:
|
|
46
|
+
case RawCode:
|
|
47
|
+
default:
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
The following expression parser is based on Esprima (http://esprima.org/).
|
|
54
|
+
Original header comment and license for Esprima is included here:
|
|
55
|
+
|
|
56
|
+
Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
57
|
+
Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>
|
|
58
|
+
Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>
|
|
59
|
+
Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
60
|
+
Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>
|
|
61
|
+
Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
|
|
62
|
+
Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>
|
|
63
|
+
Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
|
|
64
|
+
Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
|
|
65
|
+
Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
66
|
+
|
|
67
|
+
Redistribution and use in source and binary forms, with or without
|
|
68
|
+
modification, are permitted provided that the following conditions are met:
|
|
69
|
+
|
|
70
|
+
* Redistributions of source code must retain the above copyright
|
|
71
|
+
notice, this list of conditions and the following disclaimer.
|
|
72
|
+
* Redistributions in binary form must reproduce the above copyright
|
|
73
|
+
notice, this list of conditions and the following disclaimer in the
|
|
74
|
+
documentation and/or other materials provided with the distribution.
|
|
75
|
+
|
|
76
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
77
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
78
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
79
|
+
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
|
80
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
81
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
82
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
83
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
84
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
85
|
+
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
86
|
+
*/
|
|
87
|
+
var TokenName, source, index, length, lookahead;
|
|
88
|
+
var TokenBooleanLiteral = 1,
|
|
89
|
+
TokenEOF = 2,
|
|
90
|
+
TokenIdentifier = 3,
|
|
91
|
+
TokenKeyword = 4,
|
|
92
|
+
TokenNullLiteral = 5,
|
|
93
|
+
TokenNumericLiteral = 6,
|
|
94
|
+
TokenPunctuator = 7,
|
|
95
|
+
TokenStringLiteral = 8,
|
|
96
|
+
TokenRegularExpression = 9;
|
|
97
|
+
TokenName = {};
|
|
98
|
+
TokenName[TokenBooleanLiteral] = 'Boolean';
|
|
99
|
+
TokenName[TokenEOF] = '<end>';
|
|
100
|
+
TokenName[TokenIdentifier] = 'Identifier';
|
|
101
|
+
TokenName[TokenKeyword] = 'Keyword';
|
|
102
|
+
TokenName[TokenNullLiteral] = 'Null';
|
|
103
|
+
TokenName[TokenNumericLiteral] = 'Numeric';
|
|
104
|
+
TokenName[TokenPunctuator] = 'Punctuator';
|
|
105
|
+
TokenName[TokenStringLiteral] = 'String';
|
|
106
|
+
TokenName[TokenRegularExpression] = 'RegularExpression';
|
|
107
|
+
var SyntaxArrayExpression = 'ArrayExpression',
|
|
108
|
+
SyntaxBinaryExpression = 'BinaryExpression',
|
|
109
|
+
SyntaxCallExpression = 'CallExpression',
|
|
110
|
+
SyntaxConditionalExpression = 'ConditionalExpression',
|
|
111
|
+
SyntaxIdentifier = 'Identifier',
|
|
112
|
+
SyntaxLiteral = 'Literal',
|
|
113
|
+
SyntaxLogicalExpression = 'LogicalExpression',
|
|
114
|
+
SyntaxMemberExpression = 'MemberExpression',
|
|
115
|
+
SyntaxObjectExpression = 'ObjectExpression',
|
|
116
|
+
SyntaxProperty = 'Property',
|
|
117
|
+
SyntaxUnaryExpression = 'UnaryExpression';
|
|
118
|
+
|
|
119
|
+
// Error messages should be identical to V8.
|
|
120
|
+
var MessageUnexpectedToken = 'Unexpected token %0',
|
|
121
|
+
MessageUnexpectedNumber = 'Unexpected number',
|
|
122
|
+
MessageUnexpectedString = 'Unexpected string',
|
|
123
|
+
MessageUnexpectedIdentifier = 'Unexpected identifier',
|
|
124
|
+
MessageUnexpectedReserved = 'Unexpected reserved word',
|
|
125
|
+
MessageUnexpectedEOS = 'Unexpected end of input',
|
|
126
|
+
MessageInvalidRegExp = 'Invalid regular expression',
|
|
127
|
+
MessageUnterminatedRegExp = 'Invalid regular expression: missing /',
|
|
128
|
+
MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',
|
|
129
|
+
MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';
|
|
130
|
+
var ILLEGAL = 'ILLEGAL',
|
|
131
|
+
DISABLED = 'Disabled.';
|
|
132
|
+
|
|
133
|
+
// See also tools/generate-unicode-regex.py.
|
|
134
|
+
var RegexNonAsciiIdentifierStart = new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]'),
|
|
135
|
+
// eslint-disable-next-line no-misleading-character-class
|
|
136
|
+
RegexNonAsciiIdentifierPart = new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]');
|
|
137
|
+
|
|
138
|
+
// Ensure the condition is true, otherwise throw an error.
|
|
139
|
+
// This is only to have a better contract semantic, i.e. another safety net
|
|
140
|
+
// to catch a logic error. The condition shall be fulfilled in normal case.
|
|
141
|
+
// Do NOT use this to enforce a certain condition on any user input.
|
|
142
|
+
|
|
143
|
+
function assert(condition, message) {
|
|
144
|
+
/* istanbul ignore next */
|
|
145
|
+
if (!condition) {
|
|
146
|
+
throw new Error('ASSERT: ' + message);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function isDecimalDigit(ch) {
|
|
150
|
+
return ch >= 0x30 && ch <= 0x39; // 0..9
|
|
151
|
+
}
|
|
152
|
+
function isHexDigit(ch) {
|
|
153
|
+
return '0123456789abcdefABCDEF'.includes(ch);
|
|
154
|
+
}
|
|
155
|
+
function isOctalDigit(ch) {
|
|
156
|
+
return '01234567'.includes(ch);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// 7.2 White Space
|
|
160
|
+
|
|
161
|
+
function isWhiteSpace(ch) {
|
|
162
|
+
return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].includes(ch);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// 7.3 Line Terminators
|
|
166
|
+
|
|
167
|
+
function isLineTerminator(ch) {
|
|
168
|
+
return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// 7.6 Identifier Names and Identifiers
|
|
172
|
+
|
|
173
|
+
function isIdentifierStart(ch) {
|
|
174
|
+
return ch === 0x24 || ch === 0x5F ||
|
|
175
|
+
// $ (dollar) and _ (underscore)
|
|
176
|
+
ch >= 0x41 && ch <= 0x5A ||
|
|
177
|
+
// A..Z
|
|
178
|
+
ch >= 0x61 && ch <= 0x7A ||
|
|
179
|
+
// a..z
|
|
180
|
+
ch === 0x5C ||
|
|
181
|
+
// \ (backslash)
|
|
182
|
+
ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));
|
|
183
|
+
}
|
|
184
|
+
function isIdentifierPart(ch) {
|
|
185
|
+
return ch === 0x24 || ch === 0x5F ||
|
|
186
|
+
// $ (dollar) and _ (underscore)
|
|
187
|
+
ch >= 0x41 && ch <= 0x5A ||
|
|
188
|
+
// A..Z
|
|
189
|
+
ch >= 0x61 && ch <= 0x7A ||
|
|
190
|
+
// a..z
|
|
191
|
+
ch >= 0x30 && ch <= 0x39 ||
|
|
192
|
+
// 0..9
|
|
193
|
+
ch === 0x5C ||
|
|
194
|
+
// \ (backslash)
|
|
195
|
+
ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// 7.6.1.1 Keywords
|
|
199
|
+
|
|
200
|
+
const keywords = {
|
|
201
|
+
'if': 1,
|
|
202
|
+
'in': 1,
|
|
203
|
+
'do': 1,
|
|
204
|
+
'var': 1,
|
|
205
|
+
'for': 1,
|
|
206
|
+
'new': 1,
|
|
207
|
+
'try': 1,
|
|
208
|
+
'let': 1,
|
|
209
|
+
'this': 1,
|
|
210
|
+
'else': 1,
|
|
211
|
+
'case': 1,
|
|
212
|
+
'void': 1,
|
|
213
|
+
'with': 1,
|
|
214
|
+
'enum': 1,
|
|
215
|
+
'while': 1,
|
|
216
|
+
'break': 1,
|
|
217
|
+
'catch': 1,
|
|
218
|
+
'throw': 1,
|
|
219
|
+
'const': 1,
|
|
220
|
+
'yield': 1,
|
|
221
|
+
'class': 1,
|
|
222
|
+
'super': 1,
|
|
223
|
+
'return': 1,
|
|
224
|
+
'typeof': 1,
|
|
225
|
+
'delete': 1,
|
|
226
|
+
'switch': 1,
|
|
227
|
+
'export': 1,
|
|
228
|
+
'import': 1,
|
|
229
|
+
'public': 1,
|
|
230
|
+
'static': 1,
|
|
231
|
+
'default': 1,
|
|
232
|
+
'finally': 1,
|
|
233
|
+
'extends': 1,
|
|
234
|
+
'package': 1,
|
|
235
|
+
'private': 1,
|
|
236
|
+
'function': 1,
|
|
237
|
+
'continue': 1,
|
|
238
|
+
'debugger': 1,
|
|
239
|
+
'interface': 1,
|
|
240
|
+
'protected': 1,
|
|
241
|
+
'instanceof': 1,
|
|
242
|
+
'implements': 1
|
|
243
|
+
};
|
|
244
|
+
function skipComment() {
|
|
245
|
+
while (index < length) {
|
|
246
|
+
const ch = source.charCodeAt(index);
|
|
247
|
+
if (isWhiteSpace(ch) || isLineTerminator(ch)) {
|
|
248
|
+
++index;
|
|
249
|
+
} else {
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function scanHexEscape(prefix) {
|
|
255
|
+
var i,
|
|
256
|
+
len,
|
|
257
|
+
ch,
|
|
258
|
+
code = 0;
|
|
259
|
+
len = prefix === 'u' ? 4 : 2;
|
|
260
|
+
for (i = 0; i < len; ++i) {
|
|
261
|
+
if (index < length && isHexDigit(source[index])) {
|
|
262
|
+
ch = source[index++];
|
|
263
|
+
code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
|
|
264
|
+
} else {
|
|
265
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return String.fromCharCode(code);
|
|
269
|
+
}
|
|
270
|
+
function scanUnicodeCodePointEscape() {
|
|
271
|
+
var ch, code, cu1, cu2;
|
|
272
|
+
ch = source[index];
|
|
273
|
+
code = 0;
|
|
274
|
+
|
|
275
|
+
// At least, one hex digit is required.
|
|
276
|
+
if (ch === '}') {
|
|
277
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
278
|
+
}
|
|
279
|
+
while (index < length) {
|
|
280
|
+
ch = source[index++];
|
|
281
|
+
if (!isHexDigit(ch)) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
|
|
285
|
+
}
|
|
286
|
+
if (code > 0x10FFFF || ch !== '}') {
|
|
287
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// UTF-16 Encoding
|
|
291
|
+
if (code <= 0xFFFF) {
|
|
292
|
+
return String.fromCharCode(code);
|
|
293
|
+
}
|
|
294
|
+
cu1 = (code - 0x10000 >> 10) + 0xD800;
|
|
295
|
+
cu2 = (code - 0x10000 & 1023) + 0xDC00;
|
|
296
|
+
return String.fromCharCode(cu1, cu2);
|
|
297
|
+
}
|
|
298
|
+
function getEscapedIdentifier() {
|
|
299
|
+
var ch, id;
|
|
300
|
+
ch = source.charCodeAt(index++);
|
|
301
|
+
id = String.fromCharCode(ch);
|
|
302
|
+
|
|
303
|
+
// '\u' (U+005C, U+0075) denotes an escaped character.
|
|
304
|
+
if (ch === 0x5C) {
|
|
305
|
+
if (source.charCodeAt(index) !== 0x75) {
|
|
306
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
307
|
+
}
|
|
308
|
+
++index;
|
|
309
|
+
ch = scanHexEscape('u');
|
|
310
|
+
if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) {
|
|
311
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
312
|
+
}
|
|
313
|
+
id = ch;
|
|
314
|
+
}
|
|
315
|
+
while (index < length) {
|
|
316
|
+
ch = source.charCodeAt(index);
|
|
317
|
+
if (!isIdentifierPart(ch)) {
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
++index;
|
|
321
|
+
id += String.fromCharCode(ch);
|
|
322
|
+
|
|
323
|
+
// '\u' (U+005C, U+0075) denotes an escaped character.
|
|
324
|
+
if (ch === 0x5C) {
|
|
325
|
+
id = id.substr(0, id.length - 1);
|
|
326
|
+
if (source.charCodeAt(index) !== 0x75) {
|
|
327
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
328
|
+
}
|
|
329
|
+
++index;
|
|
330
|
+
ch = scanHexEscape('u');
|
|
331
|
+
if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) {
|
|
332
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
333
|
+
}
|
|
334
|
+
id += ch;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return id;
|
|
338
|
+
}
|
|
339
|
+
function getIdentifier() {
|
|
340
|
+
var start, ch;
|
|
341
|
+
start = index++;
|
|
342
|
+
while (index < length) {
|
|
343
|
+
ch = source.charCodeAt(index);
|
|
344
|
+
if (ch === 0x5C) {
|
|
345
|
+
// Blackslash (U+005C) marks Unicode escape sequence.
|
|
346
|
+
index = start;
|
|
347
|
+
return getEscapedIdentifier();
|
|
348
|
+
}
|
|
349
|
+
if (isIdentifierPart(ch)) {
|
|
350
|
+
++index;
|
|
351
|
+
} else {
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return source.slice(start, index);
|
|
356
|
+
}
|
|
357
|
+
function scanIdentifier() {
|
|
358
|
+
var start, id, type;
|
|
359
|
+
start = index;
|
|
360
|
+
|
|
361
|
+
// Backslash (U+005C) starts an escaped character.
|
|
362
|
+
id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();
|
|
363
|
+
|
|
364
|
+
// There is no keyword or literal with only one character.
|
|
365
|
+
// Thus, it must be an identifier.
|
|
366
|
+
if (id.length === 1) {
|
|
367
|
+
type = TokenIdentifier;
|
|
368
|
+
} else if (keywords.hasOwnProperty(id)) {
|
|
369
|
+
// eslint-disable-line no-prototype-builtins
|
|
370
|
+
type = TokenKeyword;
|
|
371
|
+
} else if (id === 'null') {
|
|
372
|
+
type = TokenNullLiteral;
|
|
373
|
+
} else if (id === 'true' || id === 'false') {
|
|
374
|
+
type = TokenBooleanLiteral;
|
|
375
|
+
} else {
|
|
376
|
+
type = TokenIdentifier;
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
type: type,
|
|
380
|
+
value: id,
|
|
381
|
+
start: start,
|
|
382
|
+
end: index
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// 7.7 Punctuators
|
|
387
|
+
|
|
388
|
+
function scanPunctuator() {
|
|
389
|
+
var start = index,
|
|
390
|
+
code = source.charCodeAt(index),
|
|
391
|
+
code2,
|
|
392
|
+
ch1 = source[index],
|
|
393
|
+
ch2,
|
|
394
|
+
ch3,
|
|
395
|
+
ch4;
|
|
396
|
+
switch (code) {
|
|
397
|
+
// Check for most common single-character punctuators.
|
|
398
|
+
case 0x2E: // . dot
|
|
399
|
+
case 0x28: // ( open bracket
|
|
400
|
+
case 0x29: // ) close bracket
|
|
401
|
+
case 0x3B: // ; semicolon
|
|
402
|
+
case 0x2C: // , comma
|
|
403
|
+
case 0x7B: // { open curly brace
|
|
404
|
+
case 0x7D: // } close curly brace
|
|
405
|
+
case 0x5B: // [
|
|
406
|
+
case 0x5D: // ]
|
|
407
|
+
case 0x3A: // :
|
|
408
|
+
case 0x3F: // ?
|
|
409
|
+
case 0x7E:
|
|
410
|
+
// ~
|
|
411
|
+
++index;
|
|
412
|
+
return {
|
|
413
|
+
type: TokenPunctuator,
|
|
414
|
+
value: String.fromCharCode(code),
|
|
415
|
+
start: start,
|
|
416
|
+
end: index
|
|
417
|
+
};
|
|
418
|
+
default:
|
|
419
|
+
code2 = source.charCodeAt(index + 1);
|
|
420
|
+
|
|
421
|
+
// '=' (U+003D) marks an assignment or comparison operator.
|
|
422
|
+
if (code2 === 0x3D) {
|
|
423
|
+
switch (code) {
|
|
424
|
+
case 0x2B: // +
|
|
425
|
+
case 0x2D: // -
|
|
426
|
+
case 0x2F: // /
|
|
427
|
+
case 0x3C: // <
|
|
428
|
+
case 0x3E: // >
|
|
429
|
+
case 0x5E: // ^
|
|
430
|
+
case 0x7C: // |
|
|
431
|
+
case 0x25: // %
|
|
432
|
+
case 0x26: // &
|
|
433
|
+
case 0x2A:
|
|
434
|
+
// *
|
|
435
|
+
index += 2;
|
|
436
|
+
return {
|
|
437
|
+
type: TokenPunctuator,
|
|
438
|
+
value: String.fromCharCode(code) + String.fromCharCode(code2),
|
|
439
|
+
start: start,
|
|
440
|
+
end: index
|
|
441
|
+
};
|
|
442
|
+
case 0x21: // !
|
|
443
|
+
case 0x3D:
|
|
444
|
+
// =
|
|
445
|
+
index += 2;
|
|
446
|
+
|
|
447
|
+
// !== and ===
|
|
448
|
+
if (source.charCodeAt(index) === 0x3D) {
|
|
449
|
+
++index;
|
|
450
|
+
}
|
|
451
|
+
return {
|
|
452
|
+
type: TokenPunctuator,
|
|
453
|
+
value: source.slice(start, index),
|
|
454
|
+
start: start,
|
|
455
|
+
end: index
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// 4-character punctuator: >>>=
|
|
462
|
+
|
|
463
|
+
ch4 = source.substr(index, 4);
|
|
464
|
+
if (ch4 === '>>>=') {
|
|
465
|
+
index += 4;
|
|
466
|
+
return {
|
|
467
|
+
type: TokenPunctuator,
|
|
468
|
+
value: ch4,
|
|
469
|
+
start: start,
|
|
470
|
+
end: index
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// 3-character punctuators: === !== >>> <<= >>=
|
|
475
|
+
|
|
476
|
+
ch3 = ch4.substr(0, 3);
|
|
477
|
+
if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {
|
|
478
|
+
index += 3;
|
|
479
|
+
return {
|
|
480
|
+
type: TokenPunctuator,
|
|
481
|
+
value: ch3,
|
|
482
|
+
start: start,
|
|
483
|
+
end: index
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// Other 2-character punctuators: ++ -- << >> && ||
|
|
488
|
+
ch2 = ch3.substr(0, 2);
|
|
489
|
+
if (ch1 === ch2[1] && '+-<>&|'.includes(ch1) || ch2 === '=>') {
|
|
490
|
+
index += 2;
|
|
491
|
+
return {
|
|
492
|
+
type: TokenPunctuator,
|
|
493
|
+
value: ch2,
|
|
494
|
+
start: start,
|
|
495
|
+
end: index
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
if (ch2 === '//') {
|
|
499
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// 1-character punctuators: < > = ! + - * % & | ^ /
|
|
503
|
+
|
|
504
|
+
if ('<>=!+-*%&|^/'.includes(ch1)) {
|
|
505
|
+
++index;
|
|
506
|
+
return {
|
|
507
|
+
type: TokenPunctuator,
|
|
508
|
+
value: ch1,
|
|
509
|
+
start: start,
|
|
510
|
+
end: index
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// 7.8.3 Numeric Literals
|
|
517
|
+
|
|
518
|
+
function scanHexLiteral(start) {
|
|
519
|
+
let number = '';
|
|
520
|
+
while (index < length) {
|
|
521
|
+
if (!isHexDigit(source[index])) {
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
number += source[index++];
|
|
525
|
+
}
|
|
526
|
+
if (number.length === 0) {
|
|
527
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
528
|
+
}
|
|
529
|
+
if (isIdentifierStart(source.charCodeAt(index))) {
|
|
530
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
531
|
+
}
|
|
532
|
+
return {
|
|
533
|
+
type: TokenNumericLiteral,
|
|
534
|
+
value: parseInt('0x' + number, 16),
|
|
535
|
+
start: start,
|
|
536
|
+
end: index
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
function scanOctalLiteral(start) {
|
|
540
|
+
let number = '0' + source[index++];
|
|
541
|
+
while (index < length) {
|
|
542
|
+
if (!isOctalDigit(source[index])) {
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
number += source[index++];
|
|
546
|
+
}
|
|
547
|
+
if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {
|
|
548
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
549
|
+
}
|
|
550
|
+
return {
|
|
551
|
+
type: TokenNumericLiteral,
|
|
552
|
+
value: parseInt(number, 8),
|
|
553
|
+
octal: true,
|
|
554
|
+
start: start,
|
|
555
|
+
end: index
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
function scanNumericLiteral() {
|
|
559
|
+
var number, start, ch;
|
|
560
|
+
ch = source[index];
|
|
561
|
+
assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');
|
|
562
|
+
start = index;
|
|
563
|
+
number = '';
|
|
564
|
+
if (ch !== '.') {
|
|
565
|
+
number = source[index++];
|
|
566
|
+
ch = source[index];
|
|
567
|
+
|
|
568
|
+
// Hex number starts with '0x'.
|
|
569
|
+
// Octal number starts with '0'.
|
|
570
|
+
if (number === '0') {
|
|
571
|
+
if (ch === 'x' || ch === 'X') {
|
|
572
|
+
++index;
|
|
573
|
+
return scanHexLiteral(start);
|
|
574
|
+
}
|
|
575
|
+
if (isOctalDigit(ch)) {
|
|
576
|
+
return scanOctalLiteral(start);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// decimal number starts with '0' such as '09' is illegal.
|
|
580
|
+
if (ch && isDecimalDigit(ch.charCodeAt(0))) {
|
|
581
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
while (isDecimalDigit(source.charCodeAt(index))) {
|
|
585
|
+
number += source[index++];
|
|
586
|
+
}
|
|
587
|
+
ch = source[index];
|
|
588
|
+
}
|
|
589
|
+
if (ch === '.') {
|
|
590
|
+
number += source[index++];
|
|
591
|
+
while (isDecimalDigit(source.charCodeAt(index))) {
|
|
592
|
+
number += source[index++];
|
|
593
|
+
}
|
|
594
|
+
ch = source[index];
|
|
595
|
+
}
|
|
596
|
+
if (ch === 'e' || ch === 'E') {
|
|
597
|
+
number += source[index++];
|
|
598
|
+
ch = source[index];
|
|
599
|
+
if (ch === '+' || ch === '-') {
|
|
600
|
+
number += source[index++];
|
|
601
|
+
}
|
|
602
|
+
if (isDecimalDigit(source.charCodeAt(index))) {
|
|
603
|
+
while (isDecimalDigit(source.charCodeAt(index))) {
|
|
604
|
+
number += source[index++];
|
|
605
|
+
}
|
|
606
|
+
} else {
|
|
607
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
if (isIdentifierStart(source.charCodeAt(index))) {
|
|
611
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
612
|
+
}
|
|
613
|
+
return {
|
|
614
|
+
type: TokenNumericLiteral,
|
|
615
|
+
value: parseFloat(number),
|
|
616
|
+
start: start,
|
|
617
|
+
end: index
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
// 7.8.4 String Literals
|
|
622
|
+
|
|
623
|
+
function scanStringLiteral() {
|
|
624
|
+
var str = '',
|
|
625
|
+
quote,
|
|
626
|
+
start,
|
|
627
|
+
ch,
|
|
628
|
+
code,
|
|
629
|
+
octal = false;
|
|
630
|
+
quote = source[index];
|
|
631
|
+
assert(quote === '\'' || quote === '"', 'String literal must starts with a quote');
|
|
632
|
+
start = index;
|
|
633
|
+
++index;
|
|
634
|
+
while (index < length) {
|
|
635
|
+
ch = source[index++];
|
|
636
|
+
if (ch === quote) {
|
|
637
|
+
quote = '';
|
|
638
|
+
break;
|
|
639
|
+
} else if (ch === '\\') {
|
|
640
|
+
ch = source[index++];
|
|
641
|
+
if (!ch || !isLineTerminator(ch.charCodeAt(0))) {
|
|
642
|
+
switch (ch) {
|
|
643
|
+
case 'u':
|
|
644
|
+
case 'x':
|
|
645
|
+
if (source[index] === '{') {
|
|
646
|
+
++index;
|
|
647
|
+
str += scanUnicodeCodePointEscape();
|
|
648
|
+
} else {
|
|
649
|
+
str += scanHexEscape(ch);
|
|
650
|
+
}
|
|
651
|
+
break;
|
|
652
|
+
case 'n':
|
|
653
|
+
str += '\n';
|
|
654
|
+
break;
|
|
655
|
+
case 'r':
|
|
656
|
+
str += '\r';
|
|
657
|
+
break;
|
|
658
|
+
case 't':
|
|
659
|
+
str += '\t';
|
|
660
|
+
break;
|
|
661
|
+
case 'b':
|
|
662
|
+
str += '\b';
|
|
663
|
+
break;
|
|
664
|
+
case 'f':
|
|
665
|
+
str += '\f';
|
|
666
|
+
break;
|
|
667
|
+
case 'v':
|
|
668
|
+
str += '\x0B';
|
|
669
|
+
break;
|
|
670
|
+
default:
|
|
671
|
+
if (isOctalDigit(ch)) {
|
|
672
|
+
code = '01234567'.indexOf(ch);
|
|
673
|
+
|
|
674
|
+
// \0 is not octal escape sequence
|
|
675
|
+
if (code !== 0) {
|
|
676
|
+
octal = true;
|
|
677
|
+
}
|
|
678
|
+
if (index < length && isOctalDigit(source[index])) {
|
|
679
|
+
octal = true;
|
|
680
|
+
code = code * 8 + '01234567'.indexOf(source[index++]);
|
|
681
|
+
|
|
682
|
+
// 3 digits are only allowed when string starts
|
|
683
|
+
// with 0, 1, 2, 3
|
|
684
|
+
if ('0123'.includes(ch) && index < length && isOctalDigit(source[index])) {
|
|
685
|
+
code = code * 8 + '01234567'.indexOf(source[index++]);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
str += String.fromCharCode(code);
|
|
689
|
+
} else {
|
|
690
|
+
str += ch;
|
|
691
|
+
}
|
|
692
|
+
break;
|
|
693
|
+
}
|
|
694
|
+
} else {
|
|
695
|
+
if (ch === '\r' && source[index] === '\n') {
|
|
696
|
+
++index;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
} else if (isLineTerminator(ch.charCodeAt(0))) {
|
|
700
|
+
break;
|
|
701
|
+
} else {
|
|
702
|
+
str += ch;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
if (quote !== '') {
|
|
706
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
707
|
+
}
|
|
708
|
+
return {
|
|
709
|
+
type: TokenStringLiteral,
|
|
710
|
+
value: str,
|
|
711
|
+
octal: octal,
|
|
712
|
+
start: start,
|
|
713
|
+
end: index
|
|
714
|
+
};
|
|
715
|
+
}
|
|
716
|
+
function testRegExp(pattern, flags) {
|
|
717
|
+
let tmp = pattern;
|
|
718
|
+
if (flags.includes('u')) {
|
|
719
|
+
// Replace each astral symbol and every Unicode code point
|
|
720
|
+
// escape sequence with a single ASCII symbol to avoid throwing on
|
|
721
|
+
// regular expressions that are only valid in combination with the
|
|
722
|
+
// `/u` flag.
|
|
723
|
+
// Note: replacing with the ASCII symbol `x` might cause false
|
|
724
|
+
// negatives in unlikely scenarios. For example, `[\u{61}-b]` is a
|
|
725
|
+
// perfectly valid pattern that is equivalent to `[a-b]`, but it
|
|
726
|
+
// would be replaced by `[x-b]` which throws an error.
|
|
727
|
+
tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, ($0, $1) => {
|
|
728
|
+
if (parseInt($1, 16) <= 0x10FFFF) {
|
|
729
|
+
return 'x';
|
|
730
|
+
}
|
|
731
|
+
throwError({}, MessageInvalidRegExp);
|
|
732
|
+
}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, 'x');
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
// First, detect invalid regular expressions.
|
|
736
|
+
try {
|
|
737
|
+
new RegExp(tmp);
|
|
738
|
+
} catch (e) {
|
|
739
|
+
throwError({}, MessageInvalidRegExp);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
// Return a regular expression object for this pattern-flag pair, or
|
|
743
|
+
// `null` in case the current environment doesn't support the flags it
|
|
744
|
+
// uses.
|
|
745
|
+
try {
|
|
746
|
+
return new RegExp(pattern, flags);
|
|
747
|
+
} catch (exception) {
|
|
748
|
+
return null;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
function scanRegExpBody() {
|
|
752
|
+
var ch, str, classMarker, terminated, body;
|
|
753
|
+
ch = source[index];
|
|
754
|
+
assert(ch === '/', 'Regular expression literal must start with a slash');
|
|
755
|
+
str = source[index++];
|
|
756
|
+
classMarker = false;
|
|
757
|
+
terminated = false;
|
|
758
|
+
while (index < length) {
|
|
759
|
+
ch = source[index++];
|
|
760
|
+
str += ch;
|
|
761
|
+
if (ch === '\\') {
|
|
762
|
+
ch = source[index++];
|
|
763
|
+
// ECMA-262 7.8.5
|
|
764
|
+
if (isLineTerminator(ch.charCodeAt(0))) {
|
|
765
|
+
throwError({}, MessageUnterminatedRegExp);
|
|
766
|
+
}
|
|
767
|
+
str += ch;
|
|
768
|
+
} else if (isLineTerminator(ch.charCodeAt(0))) {
|
|
769
|
+
throwError({}, MessageUnterminatedRegExp);
|
|
770
|
+
} else if (classMarker) {
|
|
771
|
+
if (ch === ']') {
|
|
772
|
+
classMarker = false;
|
|
773
|
+
}
|
|
774
|
+
} else {
|
|
775
|
+
if (ch === '/') {
|
|
776
|
+
terminated = true;
|
|
777
|
+
break;
|
|
778
|
+
} else if (ch === '[') {
|
|
779
|
+
classMarker = true;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
if (!terminated) {
|
|
784
|
+
throwError({}, MessageUnterminatedRegExp);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// Exclude leading and trailing slash.
|
|
788
|
+
body = str.substr(1, str.length - 2);
|
|
789
|
+
return {
|
|
790
|
+
value: body,
|
|
791
|
+
literal: str
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
function scanRegExpFlags() {
|
|
795
|
+
var ch, str, flags;
|
|
796
|
+
str = '';
|
|
797
|
+
flags = '';
|
|
798
|
+
while (index < length) {
|
|
799
|
+
ch = source[index];
|
|
800
|
+
if (!isIdentifierPart(ch.charCodeAt(0))) {
|
|
801
|
+
break;
|
|
802
|
+
}
|
|
803
|
+
++index;
|
|
804
|
+
if (ch === '\\' && index < length) {
|
|
805
|
+
throwError({}, MessageUnexpectedToken, ILLEGAL);
|
|
806
|
+
} else {
|
|
807
|
+
flags += ch;
|
|
808
|
+
str += ch;
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
if (flags.search(/[^gimuy]/g) >= 0) {
|
|
812
|
+
throwError({}, MessageInvalidRegExp, flags);
|
|
813
|
+
}
|
|
814
|
+
return {
|
|
815
|
+
value: flags,
|
|
816
|
+
literal: str
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
function scanRegExp() {
|
|
820
|
+
var start, body, flags, value;
|
|
821
|
+
lookahead = null;
|
|
822
|
+
skipComment();
|
|
823
|
+
start = index;
|
|
824
|
+
body = scanRegExpBody();
|
|
825
|
+
flags = scanRegExpFlags();
|
|
826
|
+
value = testRegExp(body.value, flags.value);
|
|
827
|
+
return {
|
|
828
|
+
literal: body.literal + flags.literal,
|
|
829
|
+
value: value,
|
|
830
|
+
regex: {
|
|
831
|
+
pattern: body.value,
|
|
832
|
+
flags: flags.value
|
|
833
|
+
},
|
|
834
|
+
start: start,
|
|
835
|
+
end: index
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
function isIdentifierName(token) {
|
|
839
|
+
return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;
|
|
840
|
+
}
|
|
841
|
+
function advance() {
|
|
842
|
+
skipComment();
|
|
843
|
+
if (index >= length) {
|
|
844
|
+
return {
|
|
845
|
+
type: TokenEOF,
|
|
846
|
+
start: index,
|
|
847
|
+
end: index
|
|
848
|
+
};
|
|
849
|
+
}
|
|
850
|
+
const ch = source.charCodeAt(index);
|
|
851
|
+
if (isIdentifierStart(ch)) {
|
|
852
|
+
return scanIdentifier();
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
// Very common: ( and ) and ;
|
|
856
|
+
if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {
|
|
857
|
+
return scanPunctuator();
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
// String literal starts with single quote (U+0027) or double quote (U+0022).
|
|
861
|
+
if (ch === 0x27 || ch === 0x22) {
|
|
862
|
+
return scanStringLiteral();
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
// Dot (.) U+002E can also start a floating-point number, hence the need
|
|
866
|
+
// to check the next character.
|
|
867
|
+
if (ch === 0x2E) {
|
|
868
|
+
if (isDecimalDigit(source.charCodeAt(index + 1))) {
|
|
869
|
+
return scanNumericLiteral();
|
|
870
|
+
}
|
|
871
|
+
return scanPunctuator();
|
|
872
|
+
}
|
|
873
|
+
if (isDecimalDigit(ch)) {
|
|
874
|
+
return scanNumericLiteral();
|
|
875
|
+
}
|
|
876
|
+
return scanPunctuator();
|
|
877
|
+
}
|
|
878
|
+
function lex() {
|
|
879
|
+
const token = lookahead;
|
|
880
|
+
index = token.end;
|
|
881
|
+
lookahead = advance();
|
|
882
|
+
index = token.end;
|
|
883
|
+
return token;
|
|
884
|
+
}
|
|
885
|
+
function peek() {
|
|
886
|
+
const pos = index;
|
|
887
|
+
lookahead = advance();
|
|
888
|
+
index = pos;
|
|
889
|
+
}
|
|
890
|
+
function finishArrayExpression(elements) {
|
|
891
|
+
const node = new ASTNode(SyntaxArrayExpression);
|
|
892
|
+
node.elements = elements;
|
|
893
|
+
return node;
|
|
894
|
+
}
|
|
895
|
+
function finishBinaryExpression(operator, left, right) {
|
|
896
|
+
const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);
|
|
897
|
+
node.operator = operator;
|
|
898
|
+
node.left = left;
|
|
899
|
+
node.right = right;
|
|
900
|
+
return node;
|
|
901
|
+
}
|
|
902
|
+
function finishCallExpression(callee, args) {
|
|
903
|
+
const node = new ASTNode(SyntaxCallExpression);
|
|
904
|
+
node.callee = callee;
|
|
905
|
+
node.arguments = args;
|
|
906
|
+
return node;
|
|
907
|
+
}
|
|
908
|
+
function finishConditionalExpression(test, consequent, alternate) {
|
|
909
|
+
const node = new ASTNode(SyntaxConditionalExpression);
|
|
910
|
+
node.test = test;
|
|
911
|
+
node.consequent = consequent;
|
|
912
|
+
node.alternate = alternate;
|
|
913
|
+
return node;
|
|
914
|
+
}
|
|
915
|
+
function finishIdentifier(name) {
|
|
916
|
+
const node = new ASTNode(SyntaxIdentifier);
|
|
917
|
+
node.name = name;
|
|
918
|
+
return node;
|
|
919
|
+
}
|
|
920
|
+
function finishLiteral(token) {
|
|
921
|
+
const node = new ASTNode(SyntaxLiteral);
|
|
922
|
+
node.value = token.value;
|
|
923
|
+
node.raw = source.slice(token.start, token.end);
|
|
924
|
+
if (token.regex) {
|
|
925
|
+
if (node.raw === '//') {
|
|
926
|
+
node.raw = '/(?:)/';
|
|
927
|
+
}
|
|
928
|
+
node.regex = token.regex;
|
|
929
|
+
}
|
|
930
|
+
return node;
|
|
931
|
+
}
|
|
932
|
+
function finishMemberExpression(accessor, object, property) {
|
|
933
|
+
const node = new ASTNode(SyntaxMemberExpression);
|
|
934
|
+
node.computed = accessor === '[';
|
|
935
|
+
node.object = object;
|
|
936
|
+
node.property = property;
|
|
937
|
+
if (!node.computed) property.member = true;
|
|
938
|
+
return node;
|
|
939
|
+
}
|
|
940
|
+
function finishObjectExpression(properties) {
|
|
941
|
+
const node = new ASTNode(SyntaxObjectExpression);
|
|
942
|
+
node.properties = properties;
|
|
943
|
+
return node;
|
|
944
|
+
}
|
|
945
|
+
function finishProperty(kind, key, value) {
|
|
946
|
+
const node = new ASTNode(SyntaxProperty);
|
|
947
|
+
node.key = key;
|
|
948
|
+
node.value = value;
|
|
949
|
+
node.kind = kind;
|
|
950
|
+
return node;
|
|
951
|
+
}
|
|
952
|
+
function finishUnaryExpression(operator, argument) {
|
|
953
|
+
const node = new ASTNode(SyntaxUnaryExpression);
|
|
954
|
+
node.operator = operator;
|
|
955
|
+
node.argument = argument;
|
|
956
|
+
node.prefix = true;
|
|
957
|
+
return node;
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
// Throw an exception
|
|
961
|
+
|
|
962
|
+
function throwError(token, messageFormat) {
|
|
963
|
+
var error,
|
|
964
|
+
args = Array.prototype.slice.call(arguments, 2),
|
|
965
|
+
msg = messageFormat.replace(/%(\d)/g, (whole, index) => {
|
|
966
|
+
assert(index < args.length, 'Message reference must be in range');
|
|
967
|
+
return args[index];
|
|
968
|
+
});
|
|
969
|
+
error = new Error(msg);
|
|
970
|
+
error.index = index;
|
|
971
|
+
error.description = msg;
|
|
972
|
+
throw error;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
// Throw an exception because of the token.
|
|
976
|
+
|
|
977
|
+
function throwUnexpected(token) {
|
|
978
|
+
if (token.type === TokenEOF) {
|
|
979
|
+
throwError(token, MessageUnexpectedEOS);
|
|
980
|
+
}
|
|
981
|
+
if (token.type === TokenNumericLiteral) {
|
|
982
|
+
throwError(token, MessageUnexpectedNumber);
|
|
983
|
+
}
|
|
984
|
+
if (token.type === TokenStringLiteral) {
|
|
985
|
+
throwError(token, MessageUnexpectedString);
|
|
986
|
+
}
|
|
987
|
+
if (token.type === TokenIdentifier) {
|
|
988
|
+
throwError(token, MessageUnexpectedIdentifier);
|
|
989
|
+
}
|
|
990
|
+
if (token.type === TokenKeyword) {
|
|
991
|
+
throwError(token, MessageUnexpectedReserved);
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
// BooleanLiteral, NullLiteral, or Punctuator.
|
|
995
|
+
throwError(token, MessageUnexpectedToken, token.value);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
// Expect the next token to match the specified punctuator.
|
|
999
|
+
// If not, an exception will be thrown.
|
|
1000
|
+
|
|
1001
|
+
function expect(value) {
|
|
1002
|
+
const token = lex();
|
|
1003
|
+
if (token.type !== TokenPunctuator || token.value !== value) {
|
|
1004
|
+
throwUnexpected(token);
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
// Return true if the next token matches the specified punctuator.
|
|
1009
|
+
|
|
1010
|
+
function match(value) {
|
|
1011
|
+
return lookahead.type === TokenPunctuator && lookahead.value === value;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
// Return true if the next token matches the specified keyword
|
|
1015
|
+
|
|
1016
|
+
function matchKeyword(keyword) {
|
|
1017
|
+
return lookahead.type === TokenKeyword && lookahead.value === keyword;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
// 11.1.4 Array Initialiser
|
|
1021
|
+
|
|
1022
|
+
function parseArrayInitialiser() {
|
|
1023
|
+
const elements = [];
|
|
1024
|
+
index = lookahead.start;
|
|
1025
|
+
expect('[');
|
|
1026
|
+
while (!match(']')) {
|
|
1027
|
+
if (match(',')) {
|
|
1028
|
+
lex();
|
|
1029
|
+
elements.push(null);
|
|
1030
|
+
} else {
|
|
1031
|
+
elements.push(parseConditionalExpression());
|
|
1032
|
+
if (!match(']')) {
|
|
1033
|
+
expect(',');
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
lex();
|
|
1038
|
+
return finishArrayExpression(elements);
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
// 11.1.5 Object Initialiser
|
|
1042
|
+
|
|
1043
|
+
function parseObjectPropertyKey() {
|
|
1044
|
+
index = lookahead.start;
|
|
1045
|
+
const token = lex();
|
|
1046
|
+
|
|
1047
|
+
// Note: This function is called only from parseObjectProperty(), where
|
|
1048
|
+
// EOF and Punctuator tokens are already filtered out.
|
|
1049
|
+
|
|
1050
|
+
if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {
|
|
1051
|
+
if (token.octal) {
|
|
1052
|
+
throwError(token, MessageStrictOctalLiteral);
|
|
1053
|
+
}
|
|
1054
|
+
return finishLiteral(token);
|
|
1055
|
+
}
|
|
1056
|
+
return finishIdentifier(token.value);
|
|
1057
|
+
}
|
|
1058
|
+
function parseObjectProperty() {
|
|
1059
|
+
var token, key, id, value;
|
|
1060
|
+
index = lookahead.start;
|
|
1061
|
+
token = lookahead;
|
|
1062
|
+
if (token.type === TokenIdentifier) {
|
|
1063
|
+
id = parseObjectPropertyKey();
|
|
1064
|
+
expect(':');
|
|
1065
|
+
value = parseConditionalExpression();
|
|
1066
|
+
return finishProperty('init', id, value);
|
|
1067
|
+
}
|
|
1068
|
+
if (token.type === TokenEOF || token.type === TokenPunctuator) {
|
|
1069
|
+
throwUnexpected(token);
|
|
1070
|
+
} else {
|
|
1071
|
+
key = parseObjectPropertyKey();
|
|
1072
|
+
expect(':');
|
|
1073
|
+
value = parseConditionalExpression();
|
|
1074
|
+
return finishProperty('init', key, value);
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
function parseObjectInitialiser() {
|
|
1078
|
+
var properties = [],
|
|
1079
|
+
property,
|
|
1080
|
+
name,
|
|
1081
|
+
key,
|
|
1082
|
+
map = {},
|
|
1083
|
+
toString = String;
|
|
1084
|
+
index = lookahead.start;
|
|
1085
|
+
expect('{');
|
|
1086
|
+
while (!match('}')) {
|
|
1087
|
+
property = parseObjectProperty();
|
|
1088
|
+
if (property.key.type === SyntaxIdentifier) {
|
|
1089
|
+
name = property.key.name;
|
|
1090
|
+
} else {
|
|
1091
|
+
name = toString(property.key.value);
|
|
1092
|
+
}
|
|
1093
|
+
key = '$' + name;
|
|
1094
|
+
if (Object.prototype.hasOwnProperty.call(map, key)) {
|
|
1095
|
+
throwError({}, MessageStrictDuplicateProperty);
|
|
1096
|
+
} else {
|
|
1097
|
+
map[key] = true;
|
|
1098
|
+
}
|
|
1099
|
+
properties.push(property);
|
|
1100
|
+
if (!match('}')) {
|
|
1101
|
+
expect(',');
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
expect('}');
|
|
1105
|
+
return finishObjectExpression(properties);
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
// 11.1.6 The Grouping Operator
|
|
1109
|
+
|
|
1110
|
+
function parseGroupExpression() {
|
|
1111
|
+
expect('(');
|
|
1112
|
+
const expr = parseExpression();
|
|
1113
|
+
expect(')');
|
|
1114
|
+
return expr;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
// 11.1 Primary Expressions
|
|
1118
|
+
|
|
1119
|
+
const legalKeywords = {
|
|
1120
|
+
'if': 1
|
|
1121
|
+
};
|
|
1122
|
+
function parsePrimaryExpression() {
|
|
1123
|
+
var type, token, expr;
|
|
1124
|
+
if (match('(')) {
|
|
1125
|
+
return parseGroupExpression();
|
|
1126
|
+
}
|
|
1127
|
+
if (match('[')) {
|
|
1128
|
+
return parseArrayInitialiser();
|
|
1129
|
+
}
|
|
1130
|
+
if (match('{')) {
|
|
1131
|
+
return parseObjectInitialiser();
|
|
1132
|
+
}
|
|
1133
|
+
type = lookahead.type;
|
|
1134
|
+
index = lookahead.start;
|
|
1135
|
+
if (type === TokenIdentifier || legalKeywords[lookahead.value]) {
|
|
1136
|
+
expr = finishIdentifier(lex().value);
|
|
1137
|
+
} else if (type === TokenStringLiteral || type === TokenNumericLiteral) {
|
|
1138
|
+
if (lookahead.octal) {
|
|
1139
|
+
throwError(lookahead, MessageStrictOctalLiteral);
|
|
1140
|
+
}
|
|
1141
|
+
expr = finishLiteral(lex());
|
|
1142
|
+
} else if (type === TokenKeyword) {
|
|
1143
|
+
throw new Error(DISABLED);
|
|
1144
|
+
} else if (type === TokenBooleanLiteral) {
|
|
1145
|
+
token = lex();
|
|
1146
|
+
token.value = token.value === 'true';
|
|
1147
|
+
expr = finishLiteral(token);
|
|
1148
|
+
} else if (type === TokenNullLiteral) {
|
|
1149
|
+
token = lex();
|
|
1150
|
+
token.value = null;
|
|
1151
|
+
expr = finishLiteral(token);
|
|
1152
|
+
} else if (match('/') || match('/=')) {
|
|
1153
|
+
expr = finishLiteral(scanRegExp());
|
|
1154
|
+
peek();
|
|
1155
|
+
} else {
|
|
1156
|
+
throwUnexpected(lex());
|
|
1157
|
+
}
|
|
1158
|
+
return expr;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
// 11.2 Left-Hand-Side Expressions
|
|
1162
|
+
|
|
1163
|
+
function parseArguments() {
|
|
1164
|
+
const args = [];
|
|
1165
|
+
expect('(');
|
|
1166
|
+
if (!match(')')) {
|
|
1167
|
+
while (index < length) {
|
|
1168
|
+
args.push(parseConditionalExpression());
|
|
1169
|
+
if (match(')')) {
|
|
1170
|
+
break;
|
|
1171
|
+
}
|
|
1172
|
+
expect(',');
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
expect(')');
|
|
1176
|
+
return args;
|
|
1177
|
+
}
|
|
1178
|
+
function parseNonComputedProperty() {
|
|
1179
|
+
index = lookahead.start;
|
|
1180
|
+
const token = lex();
|
|
1181
|
+
if (!isIdentifierName(token)) {
|
|
1182
|
+
throwUnexpected(token);
|
|
1183
|
+
}
|
|
1184
|
+
return finishIdentifier(token.value);
|
|
1185
|
+
}
|
|
1186
|
+
function parseNonComputedMember() {
|
|
1187
|
+
expect('.');
|
|
1188
|
+
return parseNonComputedProperty();
|
|
1189
|
+
}
|
|
1190
|
+
function parseComputedMember() {
|
|
1191
|
+
expect('[');
|
|
1192
|
+
const expr = parseExpression();
|
|
1193
|
+
expect(']');
|
|
1194
|
+
return expr;
|
|
1195
|
+
}
|
|
1196
|
+
function parseLeftHandSideExpressionAllowCall() {
|
|
1197
|
+
var expr, args, property;
|
|
1198
|
+
expr = parsePrimaryExpression();
|
|
1199
|
+
for (;;) {
|
|
1200
|
+
if (match('.')) {
|
|
1201
|
+
property = parseNonComputedMember();
|
|
1202
|
+
expr = finishMemberExpression('.', expr, property);
|
|
1203
|
+
} else if (match('(')) {
|
|
1204
|
+
args = parseArguments();
|
|
1205
|
+
expr = finishCallExpression(expr, args);
|
|
1206
|
+
} else if (match('[')) {
|
|
1207
|
+
property = parseComputedMember();
|
|
1208
|
+
expr = finishMemberExpression('[', expr, property);
|
|
1209
|
+
} else {
|
|
1210
|
+
break;
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
return expr;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
// 11.3 Postfix Expressions
|
|
1217
|
+
|
|
1218
|
+
function parsePostfixExpression() {
|
|
1219
|
+
const expr = parseLeftHandSideExpressionAllowCall();
|
|
1220
|
+
if (lookahead.type === TokenPunctuator) {
|
|
1221
|
+
if (match('++') || match('--')) {
|
|
1222
|
+
throw new Error(DISABLED);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
return expr;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
// 11.4 Unary Operators
|
|
1229
|
+
|
|
1230
|
+
function parseUnaryExpression() {
|
|
1231
|
+
var token, expr;
|
|
1232
|
+
if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {
|
|
1233
|
+
expr = parsePostfixExpression();
|
|
1234
|
+
} else if (match('++') || match('--')) {
|
|
1235
|
+
throw new Error(DISABLED);
|
|
1236
|
+
} else if (match('+') || match('-') || match('~') || match('!')) {
|
|
1237
|
+
token = lex();
|
|
1238
|
+
expr = parseUnaryExpression();
|
|
1239
|
+
expr = finishUnaryExpression(token.value, expr);
|
|
1240
|
+
} else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
|
|
1241
|
+
throw new Error(DISABLED);
|
|
1242
|
+
} else {
|
|
1243
|
+
expr = parsePostfixExpression();
|
|
1244
|
+
}
|
|
1245
|
+
return expr;
|
|
1246
|
+
}
|
|
1247
|
+
function binaryPrecedence(token) {
|
|
1248
|
+
let prec = 0;
|
|
1249
|
+
if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {
|
|
1250
|
+
return 0;
|
|
1251
|
+
}
|
|
1252
|
+
switch (token.value) {
|
|
1253
|
+
case '||':
|
|
1254
|
+
prec = 1;
|
|
1255
|
+
break;
|
|
1256
|
+
case '&&':
|
|
1257
|
+
prec = 2;
|
|
1258
|
+
break;
|
|
1259
|
+
case '|':
|
|
1260
|
+
prec = 3;
|
|
1261
|
+
break;
|
|
1262
|
+
case '^':
|
|
1263
|
+
prec = 4;
|
|
1264
|
+
break;
|
|
1265
|
+
case '&':
|
|
1266
|
+
prec = 5;
|
|
1267
|
+
break;
|
|
1268
|
+
case '==':
|
|
1269
|
+
case '!=':
|
|
1270
|
+
case '===':
|
|
1271
|
+
case '!==':
|
|
1272
|
+
prec = 6;
|
|
1273
|
+
break;
|
|
1274
|
+
case '<':
|
|
1275
|
+
case '>':
|
|
1276
|
+
case '<=':
|
|
1277
|
+
case '>=':
|
|
1278
|
+
case 'instanceof':
|
|
1279
|
+
case 'in':
|
|
1280
|
+
prec = 7;
|
|
1281
|
+
break;
|
|
1282
|
+
case '<<':
|
|
1283
|
+
case '>>':
|
|
1284
|
+
case '>>>':
|
|
1285
|
+
prec = 8;
|
|
1286
|
+
break;
|
|
1287
|
+
case '+':
|
|
1288
|
+
case '-':
|
|
1289
|
+
prec = 9;
|
|
1290
|
+
break;
|
|
1291
|
+
case '*':
|
|
1292
|
+
case '/':
|
|
1293
|
+
case '%':
|
|
1294
|
+
prec = 11;
|
|
1295
|
+
break;
|
|
1296
|
+
}
|
|
1297
|
+
return prec;
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
// 11.5 Multiplicative Operators
|
|
1301
|
+
// 11.6 Additive Operators
|
|
1302
|
+
// 11.7 Bitwise Shift Operators
|
|
1303
|
+
// 11.8 Relational Operators
|
|
1304
|
+
// 11.9 Equality Operators
|
|
1305
|
+
// 11.10 Binary Bitwise Operators
|
|
1306
|
+
// 11.11 Binary Logical Operators
|
|
1307
|
+
|
|
1308
|
+
function parseBinaryExpression() {
|
|
1309
|
+
var marker, markers, expr, token, prec, stack, right, operator, left, i;
|
|
1310
|
+
marker = lookahead;
|
|
1311
|
+
left = parseUnaryExpression();
|
|
1312
|
+
token = lookahead;
|
|
1313
|
+
prec = binaryPrecedence(token);
|
|
1314
|
+
if (prec === 0) {
|
|
1315
|
+
return left;
|
|
1316
|
+
}
|
|
1317
|
+
token.prec = prec;
|
|
1318
|
+
lex();
|
|
1319
|
+
markers = [marker, lookahead];
|
|
1320
|
+
right = parseUnaryExpression();
|
|
1321
|
+
stack = [left, token, right];
|
|
1322
|
+
while ((prec = binaryPrecedence(lookahead)) > 0) {
|
|
1323
|
+
// Reduce: make a binary expression from the three topmost entries.
|
|
1324
|
+
while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {
|
|
1325
|
+
right = stack.pop();
|
|
1326
|
+
operator = stack.pop().value;
|
|
1327
|
+
left = stack.pop();
|
|
1328
|
+
markers.pop();
|
|
1329
|
+
expr = finishBinaryExpression(operator, left, right);
|
|
1330
|
+
stack.push(expr);
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
// Shift.
|
|
1334
|
+
token = lex();
|
|
1335
|
+
token.prec = prec;
|
|
1336
|
+
stack.push(token);
|
|
1337
|
+
markers.push(lookahead);
|
|
1338
|
+
expr = parseUnaryExpression();
|
|
1339
|
+
stack.push(expr);
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
// Final reduce to clean-up the stack.
|
|
1343
|
+
i = stack.length - 1;
|
|
1344
|
+
expr = stack[i];
|
|
1345
|
+
markers.pop();
|
|
1346
|
+
while (i > 1) {
|
|
1347
|
+
markers.pop();
|
|
1348
|
+
expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
|
|
1349
|
+
i -= 2;
|
|
1350
|
+
}
|
|
1351
|
+
return expr;
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
// 11.12 Conditional Operator
|
|
1355
|
+
|
|
1356
|
+
function parseConditionalExpression() {
|
|
1357
|
+
var expr, consequent, alternate;
|
|
1358
|
+
expr = parseBinaryExpression();
|
|
1359
|
+
if (match('?')) {
|
|
1360
|
+
lex();
|
|
1361
|
+
consequent = parseConditionalExpression();
|
|
1362
|
+
expect(':');
|
|
1363
|
+
alternate = parseConditionalExpression();
|
|
1364
|
+
expr = finishConditionalExpression(expr, consequent, alternate);
|
|
1365
|
+
}
|
|
1366
|
+
return expr;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
// 11.14 Comma Operator
|
|
1370
|
+
|
|
1371
|
+
function parseExpression() {
|
|
1372
|
+
const expr = parseConditionalExpression();
|
|
1373
|
+
if (match(',')) {
|
|
1374
|
+
throw new Error(DISABLED); // no sequence expressions
|
|
1375
|
+
}
|
|
1376
|
+
return expr;
|
|
1377
|
+
}
|
|
1378
|
+
function parser (code) {
|
|
1379
|
+
source = code;
|
|
1380
|
+
index = 0;
|
|
1381
|
+
length = source.length;
|
|
1382
|
+
lookahead = null;
|
|
1383
|
+
peek();
|
|
1384
|
+
const expr = parseExpression();
|
|
1385
|
+
if (lookahead.type !== TokenEOF) {
|
|
1386
|
+
throw new Error('Unexpect token after expression.');
|
|
1387
|
+
}
|
|
1388
|
+
return expr;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
var Constants = {
|
|
1392
|
+
NaN: 'NaN',
|
|
1393
|
+
E: 'Math.E',
|
|
1394
|
+
LN2: 'Math.LN2',
|
|
1395
|
+
LN10: 'Math.LN10',
|
|
1396
|
+
LOG2E: 'Math.LOG2E',
|
|
1397
|
+
LOG10E: 'Math.LOG10E',
|
|
1398
|
+
PI: 'Math.PI',
|
|
1399
|
+
SQRT1_2: 'Math.SQRT1_2',
|
|
1400
|
+
SQRT2: 'Math.SQRT2',
|
|
1401
|
+
MIN_VALUE: 'Number.MIN_VALUE',
|
|
1402
|
+
MAX_VALUE: 'Number.MAX_VALUE'
|
|
1403
|
+
};
|
|
1404
|
+
|
|
1405
|
+
function Functions (codegen) {
|
|
1406
|
+
function fncall(name, args, cast, type) {
|
|
1407
|
+
let obj = codegen(args[0]);
|
|
1408
|
+
if (cast) {
|
|
1409
|
+
obj = cast + '(' + obj + ')';
|
|
1410
|
+
if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';
|
|
1411
|
+
}
|
|
1412
|
+
return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');
|
|
1413
|
+
}
|
|
1414
|
+
function fn(name, cast, type) {
|
|
1415
|
+
return args => fncall(name, args, cast, type);
|
|
1416
|
+
}
|
|
1417
|
+
const DATE = 'new Date',
|
|
1418
|
+
STRING = 'String',
|
|
1419
|
+
REGEXP = 'RegExp';
|
|
1420
|
+
return {
|
|
1421
|
+
// MATH functions
|
|
1422
|
+
isNaN: 'Number.isNaN',
|
|
1423
|
+
isFinite: 'Number.isFinite',
|
|
1424
|
+
abs: 'Math.abs',
|
|
1425
|
+
acos: 'Math.acos',
|
|
1426
|
+
asin: 'Math.asin',
|
|
1427
|
+
atan: 'Math.atan',
|
|
1428
|
+
atan2: 'Math.atan2',
|
|
1429
|
+
ceil: 'Math.ceil',
|
|
1430
|
+
cos: 'Math.cos',
|
|
1431
|
+
exp: 'Math.exp',
|
|
1432
|
+
floor: 'Math.floor',
|
|
1433
|
+
hypot: 'Math.hypot',
|
|
1434
|
+
log: 'Math.log',
|
|
1435
|
+
max: 'Math.max',
|
|
1436
|
+
min: 'Math.min',
|
|
1437
|
+
pow: 'Math.pow',
|
|
1438
|
+
random: 'Math.random',
|
|
1439
|
+
round: 'Math.round',
|
|
1440
|
+
sin: 'Math.sin',
|
|
1441
|
+
sqrt: 'Math.sqrt',
|
|
1442
|
+
tan: 'Math.tan',
|
|
1443
|
+
clamp: function (args) {
|
|
1444
|
+
if (args.length < 3) error('Missing arguments to clamp function.');
|
|
1445
|
+
if (args.length > 3) error('Too many arguments to clamp function.');
|
|
1446
|
+
const a = args.map(codegen);
|
|
1447
|
+
return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';
|
|
1448
|
+
},
|
|
1449
|
+
// DATE functions
|
|
1450
|
+
now: 'Date.now',
|
|
1451
|
+
utc: 'Date.UTC',
|
|
1452
|
+
datetime: DATE,
|
|
1453
|
+
date: fn('getDate', DATE, 0),
|
|
1454
|
+
day: fn('getDay', DATE, 0),
|
|
1455
|
+
year: fn('getFullYear', DATE, 0),
|
|
1456
|
+
month: fn('getMonth', DATE, 0),
|
|
1457
|
+
hours: fn('getHours', DATE, 0),
|
|
1458
|
+
minutes: fn('getMinutes', DATE, 0),
|
|
1459
|
+
seconds: fn('getSeconds', DATE, 0),
|
|
1460
|
+
milliseconds: fn('getMilliseconds', DATE, 0),
|
|
1461
|
+
time: fn('getTime', DATE, 0),
|
|
1462
|
+
timezoneoffset: fn('getTimezoneOffset', DATE, 0),
|
|
1463
|
+
utcdate: fn('getUTCDate', DATE, 0),
|
|
1464
|
+
utcday: fn('getUTCDay', DATE, 0),
|
|
1465
|
+
utcyear: fn('getUTCFullYear', DATE, 0),
|
|
1466
|
+
utcmonth: fn('getUTCMonth', DATE, 0),
|
|
1467
|
+
utchours: fn('getUTCHours', DATE, 0),
|
|
1468
|
+
utcminutes: fn('getUTCMinutes', DATE, 0),
|
|
1469
|
+
utcseconds: fn('getUTCSeconds', DATE, 0),
|
|
1470
|
+
utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),
|
|
1471
|
+
// sequence functions
|
|
1472
|
+
length: fn('length', null, -1),
|
|
1473
|
+
// STRING functions
|
|
1474
|
+
parseFloat: 'parseFloat',
|
|
1475
|
+
parseInt: 'parseInt',
|
|
1476
|
+
upper: fn('toUpperCase', STRING, 0),
|
|
1477
|
+
lower: fn('toLowerCase', STRING, 0),
|
|
1478
|
+
substring: fn('substring', STRING),
|
|
1479
|
+
split: fn('split', STRING),
|
|
1480
|
+
trim: fn('trim', STRING, 0),
|
|
1481
|
+
// base64 encode/decode
|
|
1482
|
+
btoa: 'btoa',
|
|
1483
|
+
atob: 'atob',
|
|
1484
|
+
// REGEXP functions
|
|
1485
|
+
regexp: REGEXP,
|
|
1486
|
+
test: fn('test', REGEXP),
|
|
1487
|
+
// Control Flow functions
|
|
1488
|
+
if: function (args) {
|
|
1489
|
+
if (args.length < 3) error('Missing arguments to if function.');
|
|
1490
|
+
if (args.length > 3) error('Too many arguments to if function.');
|
|
1491
|
+
const a = args.map(codegen);
|
|
1492
|
+
return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';
|
|
1493
|
+
}
|
|
1494
|
+
};
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1497
|
+
function stripQuotes(s) {
|
|
1498
|
+
const n = s && s.length - 1;
|
|
1499
|
+
return n && (s[0] === '"' && s[n] === '"' || s[0] === '\'' && s[n] === '\'') ? s.slice(1, -1) : s;
|
|
1500
|
+
}
|
|
1501
|
+
function codegen (opt) {
|
|
1502
|
+
opt = opt || {};
|
|
1503
|
+
const allowed = opt.allowed ? toSet(opt.allowed) : {},
|
|
1504
|
+
forbidden = opt.forbidden ? toSet(opt.forbidden) : {},
|
|
1505
|
+
constants = opt.constants || Constants,
|
|
1506
|
+
functions = (opt.functions || Functions)(visit),
|
|
1507
|
+
globalvar = opt.globalvar,
|
|
1508
|
+
fieldvar = opt.fieldvar,
|
|
1509
|
+
outputGlobal = isFunction(globalvar) ? globalvar : id => `${globalvar}["${id}"]`;
|
|
1510
|
+
// JSON authors are not allowed to set properties with these names, as these are built-in to the JS Object Prototype.
|
|
1511
|
+
new Set([...Object.getOwnPropertyNames(Object.prototype).filter(name => typeof Object.prototype[name] === 'function'), '__proto__']);
|
|
1512
|
+
let globals = {},
|
|
1513
|
+
fields = {},
|
|
1514
|
+
memberDepth = 0;
|
|
1515
|
+
function visit(ast) {
|
|
1516
|
+
if (isString(ast)) return ast;
|
|
1517
|
+
const generator = Generators[ast.type];
|
|
1518
|
+
if (generator == null) error('Unsupported type: ' + ast.type);
|
|
1519
|
+
return generator(ast);
|
|
1520
|
+
}
|
|
1521
|
+
const Generators = {
|
|
1522
|
+
Literal: n => n.raw,
|
|
1523
|
+
Identifier: n => {
|
|
1524
|
+
const id = n.name;
|
|
1525
|
+
if (memberDepth > 0) {
|
|
1526
|
+
return id;
|
|
1527
|
+
} else if (has(forbidden, id)) {
|
|
1528
|
+
return error('Illegal identifier: ' + id);
|
|
1529
|
+
} else if (has(constants, id)) {
|
|
1530
|
+
return constants[id];
|
|
1531
|
+
} else if (has(allowed, id)) {
|
|
1532
|
+
return id;
|
|
1533
|
+
} else {
|
|
1534
|
+
globals[id] = 1;
|
|
1535
|
+
return outputGlobal(id);
|
|
1536
|
+
}
|
|
1537
|
+
},
|
|
1538
|
+
MemberExpression: n => {
|
|
1539
|
+
const d = !n.computed,
|
|
1540
|
+
o = visit(n.object);
|
|
1541
|
+
if (d) memberDepth += 1;
|
|
1542
|
+
const p = visit(n.property);
|
|
1543
|
+
if (o === fieldvar) {
|
|
1544
|
+
// strip quotes to sanitize field name (#1653)
|
|
1545
|
+
fields[stripQuotes(p)] = 1;
|
|
1546
|
+
}
|
|
1547
|
+
if (d) memberDepth -= 1;
|
|
1548
|
+
return o + (d ? '.' + p : '[' + p + ']');
|
|
1549
|
+
},
|
|
1550
|
+
CallExpression: n => {
|
|
1551
|
+
if (n.callee.type !== 'Identifier') {
|
|
1552
|
+
error('Illegal callee type: ' + n.callee.type);
|
|
1553
|
+
}
|
|
1554
|
+
const callee = n.callee.name,
|
|
1555
|
+
args = n.arguments,
|
|
1556
|
+
fn = has(functions, callee) && functions[callee];
|
|
1557
|
+
if (!fn) error('Unrecognized function: ' + callee);
|
|
1558
|
+
return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';
|
|
1559
|
+
},
|
|
1560
|
+
ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',
|
|
1561
|
+
BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',
|
|
1562
|
+
UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',
|
|
1563
|
+
ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',
|
|
1564
|
+
LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',
|
|
1565
|
+
ObjectExpression: n => {
|
|
1566
|
+
// If any keys would override Object prototype methods, throw error
|
|
1567
|
+
for (const prop of n.properties) {
|
|
1568
|
+
const keyName = prop.key.name;
|
|
1569
|
+
if (DisallowedObjectProperties.has(keyName)) {
|
|
1570
|
+
error('Illegal property: ' + keyName);
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
return '{' + n.properties.map(visit).join(',') + '}';
|
|
1574
|
+
},
|
|
1575
|
+
Property: n => {
|
|
1576
|
+
memberDepth += 1;
|
|
1577
|
+
const k = visit(n.key);
|
|
1578
|
+
memberDepth -= 1;
|
|
1579
|
+
return k + ':' + visit(n.value);
|
|
1580
|
+
}
|
|
1581
|
+
};
|
|
1582
|
+
function codegen(ast) {
|
|
1583
|
+
const result = {
|
|
1584
|
+
code: visit(ast),
|
|
1585
|
+
globals: Object.keys(globals),
|
|
1586
|
+
fields: Object.keys(fields)
|
|
1587
|
+
};
|
|
1588
|
+
globals = {};
|
|
1589
|
+
fields = {};
|
|
1590
|
+
return result;
|
|
1591
|
+
}
|
|
1592
|
+
codegen.functions = functions;
|
|
1593
|
+
codegen.constants = constants;
|
|
1594
|
+
return codegen;
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
export { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };
|