@handlebars/parser 2.2.1 → 2.2.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/.github/workflows/plan-release.yml +15 -47
- package/.github/workflows/publish.yml +4 -6
- package/.release-plan.json +11 -3
- package/CHANGELOG.md +34 -0
- package/TROUBLESHOOTING.md +17 -0
- package/dist/cjs/exception.js +4 -2
- package/dist/cjs/helpers.js +42 -17
- package/dist/cjs/index.js +21 -7
- package/dist/cjs/parse.js +41 -11
- package/dist/cjs/parser.js +4 -2
- package/dist/cjs/printer.js +12 -5
- package/dist/cjs/visitor.js +11 -6
- package/dist/cjs/whitespace-control.js +35 -8
- package/dist/esm/helpers.js +13 -3
- package/dist/esm/whitespace-control.js +27 -5
- package/lib/helpers.js +12 -2
- package/lib/whitespace-control.js +32 -6
- package/package.json +4 -4
- package/spec/ast.js +54 -0
- package/tsconfig.json +1 -1
|
@@ -15,76 +15,44 @@ concurrency:
|
|
|
15
15
|
cancel-in-progress: true
|
|
16
16
|
|
|
17
17
|
jobs:
|
|
18
|
-
|
|
19
|
-
name:
|
|
18
|
+
should-run-release-plan-prepare:
|
|
19
|
+
name: Should we run release-plan prepare?
|
|
20
20
|
runs-on: ubuntu-latest
|
|
21
21
|
outputs:
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
should-prepare: ${{ steps.should-prepare.outputs.should-prepare }}
|
|
24
23
|
steps:
|
|
25
|
-
- uses: actions/
|
|
24
|
+
- uses: release-plan/actions/should-prepare-release@v1
|
|
26
25
|
with:
|
|
27
|
-
fetch-depth: 2
|
|
28
26
|
ref: 'master'
|
|
29
|
-
|
|
30
|
-
# when the .release-plan.json file was changed on the last commit.
|
|
31
|
-
- id: check-release
|
|
32
|
-
run: if git diff --name-only HEAD HEAD~1 | grep -w -q ".release-plan.json"; then echo "command=release"; fi >> $GITHUB_OUTPUT
|
|
27
|
+
id: should-prepare
|
|
33
28
|
|
|
34
29
|
create-prepare-release-pr:
|
|
35
30
|
name: Create Prepare Release PR
|
|
36
31
|
runs-on: ubuntu-latest
|
|
37
32
|
timeout-minutes: 5
|
|
38
|
-
needs:
|
|
33
|
+
needs: should-run-release-plan-prepare
|
|
39
34
|
permissions:
|
|
40
35
|
contents: write
|
|
41
36
|
issues: read
|
|
42
37
|
pull-requests: write
|
|
43
|
-
|
|
44
|
-
# only run on labeled event if the PR has already been merged
|
|
45
|
-
if: ((github.event_name == 'push' || github.event_name == 'workflow_dispatch') && needs.is-this-a-release.outputs.command != 'release') || (github.event_name == 'pull_request_target' && github.event.pull_request.merged == true)
|
|
46
|
-
|
|
38
|
+
if: needs.should-run-release-plan-prepare.outputs.should-prepare == 'true'
|
|
47
39
|
steps:
|
|
48
|
-
- uses: actions/
|
|
49
|
-
|
|
50
|
-
# github-changelog can discover what's changed since the last release
|
|
40
|
+
- uses: release-plan/actions/prepare@v1
|
|
41
|
+
name: Run release-plan prepare
|
|
51
42
|
with:
|
|
52
|
-
fetch-depth: 0
|
|
53
43
|
ref: 'master'
|
|
54
|
-
- uses: pnpm/action-setup@v4
|
|
55
|
-
- uses: actions/setup-node@v4
|
|
56
|
-
with:
|
|
57
|
-
cache: pnpm
|
|
58
|
-
- run: pnpm install --frozen-lockfile
|
|
59
|
-
- name: "Generate Explanation and Prep Changelogs"
|
|
60
|
-
id: explanation
|
|
61
|
-
run: |
|
|
62
|
-
set +e
|
|
63
|
-
pnpm release-plan prepare 2> >(tee -a release-plan-stderr.txt >&2)
|
|
64
|
-
|
|
65
|
-
if [ $? -ne 0 ]; then
|
|
66
|
-
release_plan_output=$(cat release-plan-stderr.txt)
|
|
67
|
-
else
|
|
68
|
-
release_plan_output=$(jq .description .release-plan.json -r)
|
|
69
|
-
rm release-plan-stderr.txt
|
|
70
|
-
|
|
71
|
-
if [ $(jq '.solution | length' .release-plan.json) -eq 1 ]; then
|
|
72
|
-
new_version=$(jq -r '.solution[].newVersion' .release-plan.json)
|
|
73
|
-
echo "new_version=v$new_version" >> $GITHUB_OUTPUT
|
|
74
|
-
fi
|
|
75
|
-
fi
|
|
76
|
-
echo 'text<<EOF' >> $GITHUB_OUTPUT
|
|
77
|
-
echo "$release_plan_output" >> $GITHUB_OUTPUT
|
|
78
|
-
echo 'EOF' >> $GITHUB_OUTPUT
|
|
79
44
|
env:
|
|
80
45
|
GITHUB_AUTH: ${{ secrets.GITHUB_TOKEN }}
|
|
46
|
+
id: explanation
|
|
81
47
|
|
|
82
|
-
- uses: peter-evans/create-pull-request@
|
|
48
|
+
- uses: peter-evans/create-pull-request@v8
|
|
49
|
+
name: Create Prepare Release PR
|
|
83
50
|
with:
|
|
84
|
-
commit-message: "Prepare Release ${{ steps.explanation.outputs.
|
|
51
|
+
commit-message: "Prepare Release ${{ steps.explanation.outputs.new-version}} using 'release-plan'"
|
|
85
52
|
labels: "internal"
|
|
53
|
+
sign-commits: true
|
|
86
54
|
branch: release-preview
|
|
87
|
-
title: Prepare Release ${{ steps.explanation.outputs.
|
|
55
|
+
title: Prepare Release ${{ steps.explanation.outputs.new-version }}
|
|
88
56
|
body: |
|
|
89
57
|
This PR is a preview of the release that [release-plan](https://github.com/embroider-build/release-plan) has prepared. To release you should just merge this PR 👍
|
|
90
58
|
|
|
@@ -22,16 +22,15 @@ jobs:
|
|
|
22
22
|
runs-on: ubuntu-latest
|
|
23
23
|
permissions:
|
|
24
24
|
contents: write
|
|
25
|
-
pull-requests: write
|
|
26
25
|
id-token: write
|
|
27
26
|
attestations: write
|
|
28
27
|
|
|
29
28
|
steps:
|
|
30
|
-
- uses: actions/checkout@
|
|
31
|
-
- uses: pnpm/action-setup@
|
|
32
|
-
- uses: actions/setup-node@
|
|
29
|
+
- uses: actions/checkout@v6
|
|
30
|
+
- uses: pnpm/action-setup@v5
|
|
31
|
+
- uses: actions/setup-node@v6
|
|
33
32
|
with:
|
|
34
|
-
|
|
33
|
+
node-version: 24
|
|
35
34
|
registry-url: 'https://registry.npmjs.org'
|
|
36
35
|
cache: pnpm
|
|
37
36
|
- run: pnpm install --frozen-lockfile
|
|
@@ -39,4 +38,3 @@ jobs:
|
|
|
39
38
|
run: NPM_CONFIG_PROVENANCE=true pnpm release-plan publish
|
|
40
39
|
env:
|
|
41
40
|
GITHUB_AUTH: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/.release-plan.json
CHANGED
|
@@ -2,17 +2,25 @@
|
|
|
2
2
|
"solution": {
|
|
3
3
|
"@handlebars/parser": {
|
|
4
4
|
"impact": "patch",
|
|
5
|
-
"oldVersion": "2.2.
|
|
6
|
-
"newVersion": "2.2.
|
|
5
|
+
"oldVersion": "2.2.2",
|
|
6
|
+
"newVersion": "2.2.3",
|
|
7
7
|
"tagName": "latest",
|
|
8
8
|
"constraints": [
|
|
9
9
|
{
|
|
10
10
|
"impact": "patch",
|
|
11
11
|
"reason": "Appears in changelog section :bug: Bug Fix"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"impact": "patch",
|
|
15
|
+
"reason": "Appears in changelog section :memo: Documentation"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"impact": "patch",
|
|
19
|
+
"reason": "Appears in changelog section :house: Internal"
|
|
12
20
|
}
|
|
13
21
|
],
|
|
14
22
|
"pkgJSONPath": "./package.json"
|
|
15
23
|
}
|
|
16
24
|
},
|
|
17
|
-
"description": "## Release (
|
|
25
|
+
"description": "## Release (2026-10-07)\n\n* @handlebars/parser 2.2.3 (patch)\n\n#### :bug: Bug Fix\n* `@handlebars/parser`\n * [#36](https://github.com/handlebars-lang/handlebars-parser/pull/36) Strip whitespace in linear time ([@jaylinski](https://github.com/jaylinski))\n * [#31](https://github.com/handlebars-lang/handlebars-parser/pull/31) Fix whitespace handling for chained `{{else if}}` blocks ([@theodorejb](https://github.com/theodorejb))\n\n#### :memo: Documentation\n* `@handlebars/parser`\n * [#35](https://github.com/handlebars-lang/handlebars-parser/pull/35) Docs: Add troubleshooting documentation. ([@reggietheroman](https://github.com/reggietheroman))\n\n#### :house: Internal\n* `@handlebars/parser`\n * [#37](https://github.com/handlebars-lang/handlebars-parser/pull/37) Update release-plan ([@NullVoxPopuli](https://github.com/NullVoxPopuli))\n\n#### Committers: 4\n- Jay Linski ([@jaylinski](https://github.com/jaylinski))\n- Reggie Bigornia ([@reggietheroman](https://github.com/reggietheroman))\n- Theodore Brown ([@theodorejb](https://github.com/theodorejb))\n- [@NullVoxPopuli](https://github.com/NullVoxPopuli)\n"
|
|
18
26
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Release (2026-10-07)
|
|
4
|
+
|
|
5
|
+
* @handlebars/parser 2.2.3 (patch)
|
|
6
|
+
|
|
7
|
+
#### :bug: Bug Fix
|
|
8
|
+
* `@handlebars/parser`
|
|
9
|
+
* [#36](https://github.com/handlebars-lang/handlebars-parser/pull/36) Strip whitespace in linear time ([@jaylinski](https://github.com/jaylinski))
|
|
10
|
+
* [#31](https://github.com/handlebars-lang/handlebars-parser/pull/31) Fix whitespace handling for chained `{{else if}}` blocks ([@theodorejb](https://github.com/theodorejb))
|
|
11
|
+
|
|
12
|
+
#### :memo: Documentation
|
|
13
|
+
* `@handlebars/parser`
|
|
14
|
+
* [#35](https://github.com/handlebars-lang/handlebars-parser/pull/35) Docs: Add troubleshooting documentation. ([@reggietheroman](https://github.com/reggietheroman))
|
|
15
|
+
|
|
16
|
+
#### :house: Internal
|
|
17
|
+
* `@handlebars/parser`
|
|
18
|
+
* [#37](https://github.com/handlebars-lang/handlebars-parser/pull/37) Update release-plan ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
|
|
19
|
+
|
|
20
|
+
#### Committers: 4
|
|
21
|
+
- Jay Linski ([@jaylinski](https://github.com/jaylinski))
|
|
22
|
+
- Reggie Bigornia ([@reggietheroman](https://github.com/reggietheroman))
|
|
23
|
+
- Theodore Brown ([@theodorejb](https://github.com/theodorejb))
|
|
24
|
+
- [@NullVoxPopuli](https://github.com/NullVoxPopuli)
|
|
25
|
+
|
|
26
|
+
## Release (2025-11-29)
|
|
27
|
+
|
|
28
|
+
* @handlebars/parser 2.2.2 (patch)
|
|
29
|
+
|
|
30
|
+
#### :bug: Bug Fix
|
|
31
|
+
* `@handlebars/parser`
|
|
32
|
+
* [#27](https://github.com/handlebars-lang/handlebars-parser/pull/27) Fix commonjs build ([@kaermorchen](https://github.com/kaermorchen))
|
|
33
|
+
|
|
34
|
+
#### Committers: 1
|
|
35
|
+
- Stanislav Romanov ([@kaermorchen](https://github.com/kaermorchen))
|
|
36
|
+
|
|
3
37
|
## Release (2025-08-01)
|
|
4
38
|
|
|
5
39
|
* @handlebars/parser 2.2.1 (patch)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Required Node Version for V2.2.0
|
|
4
|
+
|
|
5
|
+
Consumers using V2.2.0 of this package or their dependants may get following error message:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
require() of ES Module .../.pnpm/@handlebars+parser@file+..+handlebars-parser/node_modules/@handlebars/parser/dist/cjs/index.js not supported.
|
|
9
|
+
Instead change the require of index.js in null to a dynamic import() which is available in all CommonJS modules.
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The solution is to bump [node >= 20.19](https://nodejs.org/en/blog/release/v20.19.0/).
|
|
13
|
+
|
|
14
|
+
### Notes
|
|
15
|
+
|
|
16
|
+
- [Issue Opened](https://github.com/handlebars-lang/handlebars-parser/issues/20)
|
|
17
|
+
- [Initial Fix PR](https://github.com/handlebars-lang/handlebars-parser/pull/22) *Unmerged as of Jul 8, 2026*
|
package/dist/cjs/exception.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
3
|
var errorProps = [
|
|
2
4
|
'description',
|
|
3
5
|
'fileName',
|
|
@@ -53,5 +55,5 @@ function Exception(message, node) {
|
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
Exception.prototype = new Error();
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
exports.default = Exception;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQU0sVUFBVSxHQUFHO0lBQ2pCLGFBQWE7SUFDYixVQUFVO0lBQ1YsWUFBWTtJQUNaLGVBQWU7SUFDZixTQUFTO0lBQ1QsTUFBTTtJQUNOLFFBQVE7SUFDUixPQUFPO0NBQ1IsQ0FBQztBQUVGLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJO0lBQzlCLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxFQUN4QixJQUFJLEVBQ0osYUFBYSxFQUNiLE1BQU0sRUFDTixTQUFTLENBQUM7SUFFWixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3RCLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDMUIsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRTNCLE9BQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUQsbUdBQW1HO0lBQ25HLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBRW5DLDhFQUE4RTtZQUM5RSwwQkFBMEI7WUFDMUIsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsS0FBSyxFQUFFLE1BQU07b0JBQ2IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7b0JBQ3ZDLEtBQUssRUFBRSxTQUFTO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsOENBQThDO0lBQ2hELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRWxDLGtCQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=
|
package/dist/cjs/helpers.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
3
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
4
|
if (ar || !(i in from)) {
|
|
@@ -7,15 +8,29 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
7
8
|
}
|
|
8
9
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SourceLocation = SourceLocation;
|
|
16
|
+
exports.id = id;
|
|
17
|
+
exports.stripFlags = stripFlags;
|
|
18
|
+
exports.stripComment = stripComment;
|
|
19
|
+
exports.preparePath = preparePath;
|
|
20
|
+
exports.prepareMustache = prepareMustache;
|
|
21
|
+
exports.prepareRawBlock = prepareRawBlock;
|
|
22
|
+
exports.prepareBlock = prepareBlock;
|
|
23
|
+
exports.prepareProgram = prepareProgram;
|
|
24
|
+
exports.preparePartialBlock = preparePartialBlock;
|
|
25
|
+
var exception_js_1 = __importDefault(require("./exception.js"));
|
|
11
26
|
function validateClose(open, close) {
|
|
12
27
|
close = close.path ? close.path.original : close;
|
|
13
28
|
if (open.path.original !== close) {
|
|
14
29
|
var errorNode = { loc: open.path.loc };
|
|
15
|
-
throw new
|
|
30
|
+
throw new exception_js_1.default(open.path.original + " doesn't match " + close, errorNode);
|
|
16
31
|
}
|
|
17
32
|
}
|
|
18
|
-
|
|
33
|
+
function SourceLocation(source, locInfo) {
|
|
19
34
|
this.source = source;
|
|
20
35
|
this.start = {
|
|
21
36
|
line: locInfo.first_line,
|
|
@@ -26,7 +41,7 @@ export function SourceLocation(source, locInfo) {
|
|
|
26
41
|
column: locInfo.last_column,
|
|
27
42
|
};
|
|
28
43
|
}
|
|
29
|
-
|
|
44
|
+
function id(token) {
|
|
30
45
|
if (/^\[.*\]$/.test(token)) {
|
|
31
46
|
return token.substring(1, token.length - 1);
|
|
32
47
|
}
|
|
@@ -34,16 +49,16 @@ export function id(token) {
|
|
|
34
49
|
return token;
|
|
35
50
|
}
|
|
36
51
|
}
|
|
37
|
-
|
|
52
|
+
function stripFlags(open, close) {
|
|
38
53
|
return {
|
|
39
54
|
open: open.charAt(2) === '~',
|
|
40
55
|
close: close.charAt(close.length - 3) === '~',
|
|
41
56
|
};
|
|
42
57
|
}
|
|
43
|
-
|
|
58
|
+
function stripComment(comment) {
|
|
44
59
|
return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, '');
|
|
45
60
|
}
|
|
46
|
-
|
|
61
|
+
function preparePath(data, sexpr, parts, loc) {
|
|
47
62
|
loc = this.locInfo(loc);
|
|
48
63
|
var original;
|
|
49
64
|
if (data) {
|
|
@@ -67,7 +82,7 @@ export function preparePath(data, sexpr, parts, loc) {
|
|
|
67
82
|
original += (separator || '') + part;
|
|
68
83
|
if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
|
|
69
84
|
if (tail.length > 0) {
|
|
70
|
-
throw new
|
|
85
|
+
throw new exception_js_1.default('Invalid path: ' + original, { loc: loc });
|
|
71
86
|
}
|
|
72
87
|
else if (part === '..') {
|
|
73
88
|
depth++;
|
|
@@ -90,7 +105,7 @@ export function preparePath(data, sexpr, parts, loc) {
|
|
|
90
105
|
loc: loc,
|
|
91
106
|
};
|
|
92
107
|
}
|
|
93
|
-
|
|
108
|
+
function prepareMustache(path, params, hash, open, strip, locInfo) {
|
|
94
109
|
// Must use charAt to support IE pre-10
|
|
95
110
|
var escapeFlag = open.charAt(3) || open.charAt(2), escaped = escapeFlag !== '{' && escapeFlag !== '&';
|
|
96
111
|
var decorator = /\*/.test(open);
|
|
@@ -104,7 +119,7 @@ export function prepareMustache(path, params, hash, open, strip, locInfo) {
|
|
|
104
119
|
loc: this.locInfo(locInfo),
|
|
105
120
|
};
|
|
106
121
|
}
|
|
107
|
-
|
|
122
|
+
function prepareRawBlock(openRawBlock, contents, close, locInfo) {
|
|
108
123
|
validateClose(openRawBlock, close);
|
|
109
124
|
locInfo = this.locInfo(locInfo);
|
|
110
125
|
var program = {
|
|
@@ -125,7 +140,7 @@ export function prepareRawBlock(openRawBlock, contents, close, locInfo) {
|
|
|
125
140
|
loc: locInfo,
|
|
126
141
|
};
|
|
127
142
|
}
|
|
128
|
-
|
|
143
|
+
function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
|
|
129
144
|
if (close && close.path) {
|
|
130
145
|
validateClose(openBlock, close);
|
|
131
146
|
}
|
|
@@ -134,10 +149,20 @@ export function prepareBlock(openBlock, program, inverseAndProgram, close, inver
|
|
|
134
149
|
var inverse, inverseStrip;
|
|
135
150
|
if (inverseAndProgram) {
|
|
136
151
|
if (decorator) {
|
|
137
|
-
throw new
|
|
152
|
+
throw new exception_js_1.default('Unexpected inverse block on decorator', inverseAndProgram);
|
|
138
153
|
}
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
// Only at the outermost block (where close is the real closing tag, not another
|
|
155
|
+
// chain link) propagate its strip flags through all chained else-if blocks.
|
|
156
|
+
if (inverseAndProgram.chain && !close.chain) {
|
|
157
|
+
var closeStrip = close.strip;
|
|
158
|
+
var innerBlock = inverseAndProgram.program.body[0];
|
|
159
|
+
// Walk the full chain so every block gets the real closing tag's strip flags.
|
|
160
|
+
while (innerBlock) {
|
|
161
|
+
innerBlock.closeStrip = closeStrip;
|
|
162
|
+
innerBlock = (innerBlock.inverse && innerBlock.inverse.chained)
|
|
163
|
+
? innerBlock.inverse.body[0]
|
|
164
|
+
: null;
|
|
165
|
+
}
|
|
141
166
|
}
|
|
142
167
|
inverseStrip = inverseAndProgram.strip;
|
|
143
168
|
inverse = inverseAndProgram.program;
|
|
@@ -160,7 +185,7 @@ export function prepareBlock(openBlock, program, inverseAndProgram, close, inver
|
|
|
160
185
|
loc: this.locInfo(locInfo),
|
|
161
186
|
};
|
|
162
187
|
}
|
|
163
|
-
|
|
188
|
+
function prepareProgram(statements, loc) {
|
|
164
189
|
if (!loc && statements.length) {
|
|
165
190
|
var firstLoc = statements[0].loc, lastLoc = statements[statements.length - 1].loc;
|
|
166
191
|
/* istanbul ignore else */
|
|
@@ -185,7 +210,7 @@ export function prepareProgram(statements, loc) {
|
|
|
185
210
|
loc: loc,
|
|
186
211
|
};
|
|
187
212
|
}
|
|
188
|
-
|
|
213
|
+
function preparePartialBlock(open, program, close, locInfo) {
|
|
189
214
|
validateClose(open, close);
|
|
190
215
|
return {
|
|
191
216
|
type: 'PartialBlockStatement',
|
|
@@ -198,4 +223,4 @@ export function preparePartialBlock(open, program, close, locInfo) {
|
|
|
198
223
|
loc: this.locInfo(locInfo),
|
|
199
224
|
};
|
|
200
225
|
}
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLO0lBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWpELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV2QyxNQUFNLElBQUksU0FBUyxDQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLEVBQzlDLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPO0lBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUc7UUFDWCxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQzdCLENBQUM7SUFDRixJQUFJLENBQUMsR0FBRyxHQUFHO1FBQ1QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTO1FBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsV0FBVztLQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxFQUFFLENBQUMsS0FBSztJQUN0QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLEtBQUss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QUFDLElBQUk7b0JBQ3pCLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU07aUJBQzlCO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJO29CQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2lCQUMzQjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxFQUFFO1FBQ1QsR0FBRyxFQUFFLEdBQUc7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPO0lBQy9ELGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFM0IsT0FBTztRQUNMLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLE9BQU8sU0FBQTtRQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSztRQUNyQixVQUFVLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ2hDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUMzQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24uanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7XG4gIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTtcblxuICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkge1xuICAgIGxldCBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9O1xuXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgIG9wZW4ucGF0aC5vcmlnaW5hbCArIFwiIGRvZXNuJ3QgbWF0Y2ggXCIgKyBjbG9zZSxcbiAgICAgIGVycm9yTm9kZVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtbixcbiAgfTtcbiAgdGhpcy5lbmQgPSB7XG4gICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7XG4gIHJldHVybiB7XG4gICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JyxcbiAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj8hLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgc2V4cHIsIHBhcnRzLCBsb2MpIHtcbiAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7XG5cbiAgbGV0IG9yaWdpbmFsO1xuXG4gIGlmIChkYXRhKSB7XG4gICAgb3JpZ2luYWwgPSAnQCc7XG4gIH0gZWxzZSBpZiAoc2V4cHIpIHtcbiAgICBvcmlnaW5hbCA9IHNleHByLm9yaWdpbmFsICsgJy4nO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsID0gJyc7XG4gIH1cblxuICBsZXQgdGFpbCA9IFtdO1xuICBsZXQgZGVwdGggPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXS5wYXJ0O1xuICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsXG4gICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXVxuICAgIGxldCBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5vcmlnaW5hbCAhPT0gcGFydDtcbiAgICBsZXQgc2VwYXJhdG9yID0gcGFydHNbaV0uc2VwYXJhdG9yO1xuXG4gICAgbGV0IHBhcnRQcmVmaXggPSBzZXBhcmF0b3IgPT09ICcuIycgPyAnIycgOiAnJztcblxuICAgIG9yaWdpbmFsICs9IChzZXBhcmF0b3IgfHwgJycpICsgcGFydDtcblxuICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7XG4gICAgICBpZiAodGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7IGxvYyB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICBkZXB0aCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0YWlsLnB1c2goYCR7cGFydFByZWZpeH0ke3BhcnR9YCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGhlYWQgPSBzZXhwciB8fCB0YWlsLnNoaWZ0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIHRoaXM6IG9yaWdpbmFsLnN0YXJ0c1dpdGgoJ3RoaXMuJyksXG4gICAgZGF0YSxcbiAgICBkZXB0aCxcbiAgICBoZWFkLFxuICAgIHRhaWwsXG4gICAgcGFydHM6IGhlYWQgPyBbaGVhZCwgLi4udGFpbF0gOiB0YWlsLFxuICAgIG9yaWdpbmFsLFxuICAgIGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnO1xuXG4gIGxldCBkZWNvcmF0b3IgPSAvXFwqLy50ZXN0KG9wZW4pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICBwYXRoLFxuICAgIHBhcmFtcyxcbiAgICBoYXNoLFxuICAgIGVzY2FwZWQsXG4gICAgc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICBsZXQgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5SYXdCbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgb3BlblN0cmlwOiB7fSxcbiAgICBpbnZlcnNlU3RyaXA6IHt9LFxuICAgIGNsb3NlU3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVCbG9jayhcbiAgb3BlbkJsb2NrLFxuICBwcm9ncmFtLFxuICBpbnZlcnNlQW5kUHJvZ3JhbSxcbiAgY2xvc2UsXG4gIGludmVydGVkLFxuICBsb2NJbmZvXG4pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgbGV0IGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgbGV0IGludmVyc2UsIGludmVyc2VTdHJpcDtcblxuICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHtcbiAgICBpZiAoZGVjb3JhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsXG4gICAgICAgIGludmVyc2VBbmRQcm9ncmFtXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbS5jaGFpbikge1xuICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDtcbiAgICB9XG5cbiAgICBpbnZlcnNlU3RyaXAgPSBpbnZlcnNlQW5kUHJvZ3JhbS5zdHJpcDtcbiAgICBpbnZlcnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTtcbiAgfVxuXG4gIGlmIChpbnZlcnRlZCkge1xuICAgIGludmVydGVkID0gaW52ZXJzZTtcbiAgICBpbnZlcnNlID0gcHJvZ3JhbTtcbiAgICBwcm9ncmFtID0gaW52ZXJ0ZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3JCbG9jaycgOiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLFxuICAgIHBhcmFtczogb3BlbkJsb2NrLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuQmxvY2suaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIGludmVyc2UsXG4gICAgb3BlblN0cmlwOiBvcGVuQmxvY2suc3RyaXAsXG4gICAgaW52ZXJzZVN0cmlwLFxuICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLFxuICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVByb2dyYW0oc3RhdGVtZW50cywgbG9jKSB7XG4gIGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYyxcbiAgICAgIGxhc3RMb2MgPSBzdGF0ZW1lbnRzW3N0YXRlbWVudHMubGVuZ3RoIC0gMV0ubG9jO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmlyc3RMb2MgJiYgbGFzdExvYykge1xuICAgICAgbG9jID0ge1xuICAgICAgICBzb3VyY2U6IGZpcnN0TG9jLnNvdXJjZSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBsaW5lOiBmaXJzdExvYy5zdGFydC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZmlyc3RMb2Muc3RhcnQuY29sdW1uLFxuICAgICAgICB9LFxuICAgICAgICBlbmQ6IHtcbiAgICAgICAgICBsaW5lOiBsYXN0TG9jLmVuZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQuY29sdW1uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQcm9ncmFtJyxcbiAgICBib2R5OiBzdGF0ZW1lbnRzLFxuICAgIHN0cmlwOiB7fSxcbiAgICBsb2M6IGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JyxcbiAgICBuYW1lOiBvcGVuLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuLmhhc2gsXG4gICAgcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBZUEsd0NBVUM7QUFFRCxnQkFNQztBQUVELGdDQUtDO0FBRUQsb0NBRUM7QUFFRCxrQ0FtREM7QUFFRCwwQ0FlQztBQUVELDBDQXNCQztBQUVELG9DQThEQztBQUVELHdDQTJCQztBQUVELGtEQWFDO0FBdFBELGdFQUF1QztBQUV2QyxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSztJQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUVqRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkMsTUFBTSxJQUFJLHNCQUFTLENBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixHQUFHLEtBQUssRUFDOUMsU0FBUyxDQUNWLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTztJQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ1gsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWTtLQUM3QixDQUFDO0lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRztRQUNULElBQUksRUFBRSxPQUFPLENBQUMsU0FBUztRQUN2QixNQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVc7S0FDNUIsQ0FBQztBQUNKLENBQUM7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QUFJLENBQUMsSUFBSTtRQUNmLE9BQU8sU0FBQTtRQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSztRQUNyQixVQUFVLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ2hDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUMzQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24uanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7XG4gIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTtcblxuICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkge1xuICAgIGxldCBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9O1xuXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgIG9wZW4ucGF0aC5vcmlnaW5hbCArIFwiIGRvZXNuJ3QgbWF0Y2ggXCIgKyBjbG9zZSxcbiAgICAgIGVycm9yTm9kZVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtbixcbiAgfTtcbiAgdGhpcy5lbmQgPSB7XG4gICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7XG4gIHJldHVybiB7XG4gICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JyxcbiAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj8hLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgc2V4cHIsIHBhcnRzLCBsb2MpIHtcbiAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7XG5cbiAgbGV0IG9yaWdpbmFsO1xuXG4gIGlmIChkYXRhKSB7XG4gICAgb3JpZ2luYWwgPSAnQCc7XG4gIH0gZWxzZSBpZiAoc2V4cHIpIHtcbiAgICBvcmlnaW5hbCA9IHNleHByLm9yaWdpbmFsICsgJy4nO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsID0gJyc7XG4gIH1cblxuICBsZXQgdGFpbCA9IFtdO1xuICBsZXQgZGVwdGggPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXS5wYXJ0O1xuICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsXG4gICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXVxuICAgIGxldCBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5vcmlnaW5hbCAhPT0gcGFydDtcbiAgICBsZXQgc2VwYXJhdG9yID0gcGFydHNbaV0uc2VwYXJhdG9yO1xuXG4gICAgbGV0IHBhcnRQcmVmaXggPSBzZXBhcmF0b3IgPT09ICcuIycgPyAnIycgOiAnJztcblxuICAgIG9yaWdpbmFsICs9IChzZXBhcmF0b3IgfHwgJycpICsgcGFydDtcblxuICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7XG4gICAgICBpZiAodGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7IGxvYyB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICBkZXB0aCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0YWlsLnB1c2goYCR7cGFydFByZWZpeH0ke3BhcnR9YCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGhlYWQgPSBzZXhwciB8fCB0YWlsLnNoaWZ0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIHRoaXM6IG9yaWdpbmFsLnN0YXJ0c1dpdGgoJ3RoaXMuJyksXG4gICAgZGF0YSxcbiAgICBkZXB0aCxcbiAgICBoZWFkLFxuICAgIHRhaWwsXG4gICAgcGFydHM6IGhlYWQgPyBbaGVhZCwgLi4udGFpbF0gOiB0YWlsLFxuICAgIG9yaWdpbmFsLFxuICAgIGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnO1xuXG4gIGxldCBkZWNvcmF0b3IgPSAvXFwqLy50ZXN0KG9wZW4pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICBwYXRoLFxuICAgIHBhcmFtcyxcbiAgICBoYXNoLFxuICAgIGVzY2FwZWQsXG4gICAgc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICBsZXQgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5SYXdCbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgb3BlblN0cmlwOiB7fSxcbiAgICBpbnZlcnNlU3RyaXA6IHt9LFxuICAgIGNsb3NlU3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVCbG9jayhcbiAgb3BlbkJsb2NrLFxuICBwcm9ncmFtLFxuICBpbnZlcnNlQW5kUHJvZ3JhbSxcbiAgY2xvc2UsXG4gIGludmVydGVkLFxuICBsb2NJbmZvXG4pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgbGV0IGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgbGV0IGludmVyc2UsIGludmVyc2VTdHJpcDtcblxuICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHtcbiAgICBpZiAoZGVjb3JhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsXG4gICAgICAgIGludmVyc2VBbmRQcm9ncmFtXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYXQgdGhlIG91dGVybW9zdCBibG9jayAod2hlcmUgY2xvc2UgaXMgdGhlIHJlYWwgY2xvc2luZyB0YWcsIG5vdCBhbm90aGVyXG4gICAgLy8gY2hhaW4gbGluaykgcHJvcGFnYXRlIGl0cyBzdHJpcCBmbGFncyB0aHJvdWdoIGFsbCBjaGFpbmVkIGVsc2UtaWYgYmxvY2tzLlxuICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbS5jaGFpbiAmJiAhY2xvc2UuY2hhaW4pIHtcbiAgICAgIGNvbnN0IGNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDtcbiAgICAgIGxldCBpbm5lckJsb2NrID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdO1xuICAgICAgLy8gV2FsayB0aGUgZnVsbCBjaGFpbiBzbyBldmVyeSBibG9jayBnZXRzIHRoZSByZWFsIGNsb3NpbmcgdGFnJ3Mgc3RyaXAgZmxhZ3MuXG4gICAgICB3aGlsZSAoaW5uZXJCbG9jaykge1xuICAgICAgICBpbm5lckJsb2NrLmNsb3NlU3RyaXAgPSBjbG9zZVN0cmlwO1xuICAgICAgICBpbm5lckJsb2NrID0gKGlubmVyQmxvY2suaW52ZXJzZSAmJiBpbm5lckJsb2NrLmludmVyc2UuY2hhaW5lZClcbiAgICAgICAgICA/IGlubmVyQmxvY2suaW52ZXJzZS5ib2R5WzBdXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwO1xuICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtO1xuICB9XG5cbiAgaWYgKGludmVydGVkKSB7XG4gICAgaW52ZXJ0ZWQgPSBpbnZlcnNlO1xuICAgIGludmVyc2UgPSBwcm9ncmFtO1xuICAgIHByb2dyYW0gPSBpbnZlcnRlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlbkJsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuQmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgaW52ZXJzZSxcbiAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJpcCxcbiAgICBpbnZlcnNlU3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHtcbiAgaWYgKCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHtcbiAgICBjb25zdCBmaXJzdExvYyA9IHN0YXRlbWVudHNbMF0ubG9jLFxuICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7XG4gICAgICBsb2MgPSB7XG4gICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW4sXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgIGxpbmU6IGxhc3RMb2MuZW5kLmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBsYXN0TG9jLmVuZC5jb2x1bW4sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IHN0YXRlbWVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhcnRpYWxCbG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykge1xuICB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnLFxuICAgIG5hbWU6IG9wZW4ucGF0aCxcbiAgICBwYXJhbXM6IG9wZW4ucGFyYW1zLFxuICAgIGhhc2g6IG9wZW4uaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIG9wZW5TdHJpcDogb3Blbi5zdHJpcCxcbiAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKSxcbiAgfTtcbn1cbiJdfQ==
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseWithoutProcessing = exports.parse = exports.PrintVisitor = exports.Exception = exports.parser = exports.WhitespaceControl = exports.Visitor = void 0;
|
|
7
|
+
var visitor_js_1 = require("./visitor.js");
|
|
8
|
+
Object.defineProperty(exports, "Visitor", { enumerable: true, get: function () { return __importDefault(visitor_js_1).default; } });
|
|
9
|
+
var whitespace_control_js_1 = require("./whitespace-control.js");
|
|
10
|
+
Object.defineProperty(exports, "WhitespaceControl", { enumerable: true, get: function () { return __importDefault(whitespace_control_js_1).default; } });
|
|
11
|
+
var parser_js_1 = require("./parser.js");
|
|
12
|
+
Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return __importDefault(parser_js_1).default; } });
|
|
13
|
+
var exception_js_1 = require("./exception.js");
|
|
14
|
+
Object.defineProperty(exports, "Exception", { enumerable: true, get: function () { return __importDefault(exception_js_1).default; } });
|
|
15
|
+
var printer_js_1 = require("./printer.js");
|
|
16
|
+
Object.defineProperty(exports, "print", { enumerable: true, get: function () { return printer_js_1.print; } });
|
|
17
|
+
Object.defineProperty(exports, "PrintVisitor", { enumerable: true, get: function () { return printer_js_1.PrintVisitor; } });
|
|
18
|
+
var parse_js_1 = require("./parse.js");
|
|
19
|
+
Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_js_1.parse; } });
|
|
20
|
+
Object.defineProperty(exports, "parseWithoutProcessing", { enumerable: true, get: function () { return parse_js_1.parseWithoutProcessing; } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBQWtEO0FBQXpDLHNIQUFBLE9BQU8sT0FBVztBQUMzQixpRUFBdUU7QUFBOUQsMklBQUEsT0FBTyxPQUFxQjtBQUNyQyx5Q0FBZ0Q7QUFBdkMsb0hBQUEsT0FBTyxPQUFVO0FBQzFCLCtDQUFzRDtBQUE3QywwSEFBQSxPQUFPLE9BQWE7QUFDN0IsMkNBQW1EO0FBQTFDLG1HQUFBLEtBQUssT0FBQTtBQUFFLDBHQUFBLFlBQVksT0FBQTtBQUM1Qix1Q0FBMkQ7QUFBbEQsaUdBQUEsS0FBSyxPQUFBO0FBQUUsa0hBQUEsc0JBQXNCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIFZpc2l0b3IgfSBmcm9tICcuL3Zpc2l0b3IuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXaGl0ZXNwYWNlQ29udHJvbCB9IGZyb20gJy4vd2hpdGVzcGFjZS1jb250cm9sLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VyIH0gZnJvbSAnLi9wYXJzZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFeGNlcHRpb24gfSBmcm9tICcuL2V4Y2VwdGlvbi5qcyc7XG5leHBvcnQgeyBwcmludCwgUHJpbnRWaXNpdG9yIH0gZnJvbSAnLi9wcmludGVyLmpzJztcbmV4cG9ydCB7IHBhcnNlLCBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nIH0gZnJvbSAnLi9wYXJzZS5qcyc7XG4iXX0=
|
package/dist/cjs/parse.js
CHANGED
|
@@ -1,21 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.parseWithoutProcessing = parseWithoutProcessing;
|
|
30
|
+
exports.parse = parse;
|
|
31
|
+
var parser_js_1 = __importDefault(require("./parser.js"));
|
|
32
|
+
var whitespace_control_js_1 = __importDefault(require("./whitespace-control.js"));
|
|
33
|
+
var Helpers = __importStar(require("./helpers.js"));
|
|
4
34
|
var baseHelpers = {};
|
|
5
35
|
for (var helper in Helpers) {
|
|
6
36
|
if (Object.prototype.hasOwnProperty.call(Helpers, helper)) {
|
|
7
37
|
baseHelpers[helper] = Helpers[helper];
|
|
8
38
|
}
|
|
9
39
|
}
|
|
10
|
-
|
|
40
|
+
function parseWithoutProcessing(input, options) {
|
|
11
41
|
var _a, _b, _c;
|
|
12
42
|
// Just return if an already-compiled AST was passed in.
|
|
13
43
|
if (input.type === 'Program') {
|
|
14
44
|
return input;
|
|
15
45
|
}
|
|
16
|
-
|
|
46
|
+
parser_js_1.default.yy = baseHelpers;
|
|
17
47
|
// Altering the shared object here, but this is ok as parser is a sync operation
|
|
18
|
-
|
|
48
|
+
parser_js_1.default.yy.locInfo = function (locInfo) {
|
|
19
49
|
return new Helpers.SourceLocation(options && options.srcName, locInfo);
|
|
20
50
|
};
|
|
21
51
|
var squareSyntax;
|
|
@@ -35,11 +65,11 @@ export function parseWithoutProcessing(input, options) {
|
|
|
35
65
|
else {
|
|
36
66
|
hashSyntax = hashLiteralNode;
|
|
37
67
|
}
|
|
38
|
-
|
|
68
|
+
parser_js_1.default.yy.syntax = {
|
|
39
69
|
square: squareSyntax,
|
|
40
70
|
hash: hashSyntax,
|
|
41
71
|
};
|
|
42
|
-
return
|
|
72
|
+
return parser_js_1.default.parse(input);
|
|
43
73
|
}
|
|
44
74
|
function arrayLiteralNode(array, loc) {
|
|
45
75
|
return {
|
|
@@ -55,9 +85,9 @@ function hashLiteralNode(hash, loc) {
|
|
|
55
85
|
loc: loc,
|
|
56
86
|
};
|
|
57
87
|
}
|
|
58
|
-
|
|
88
|
+
function parse(input, options) {
|
|
59
89
|
var ast = parseWithoutProcessing(input, options);
|
|
60
|
-
var strip = new
|
|
90
|
+
var strip = new whitespace_control_js_1.default(options);
|
|
61
91
|
return strip.accept(ast);
|
|
62
92
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcGFyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLHdEQXFDQztBQWtCRCxzQkFLQztBQXhFRCwwREFBaUM7QUFDakMsa0ZBQXdEO0FBQ3hELG9EQUF3QztBQUV4QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFFckIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxRCxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU87O0lBQ25ELHdEQUF3RDtJQUN4RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsbUJBQU0sQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDO0lBRXhCLGdGQUFnRjtJQUNoRixtQkFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPO1FBQ25DLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztJQUVGLElBQUksWUFBWSxDQUFDO0lBRWpCLElBQUksT0FBTyxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUFBLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbEQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxNQUFNLE1BQUssTUFBTSxFQUFFLENBQUM7UUFDOUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ2xDLENBQUM7U0FBTSxDQUFDO1FBQ04sWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUM7SUFFZixJQUFJLE9BQU8sQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLElBQUksQ0FBQSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2hELFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNOLFVBQVUsR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVELG1CQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRztRQUNqQixNQUFNLEVBQUUsWUFBWTtRQUNwQixJQUFJLEVBQUUsVUFBVTtLQUNqQixDQUFDO0lBRUYsT0FBTyxtQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRztJQUNsQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLGNBQWM7UUFDcEIsS0FBSyxFQUFFLEtBQUs7UUFDWixHQUFHLEtBQUE7S0FDSixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHO0lBQ2hDLE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsR0FBRyxLQUFBO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU87SUFDbEMsSUFBSSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxHQUFHLElBQUksK0JBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VyIGZyb20gJy4vcGFyc2VyLmpzJztcbmltcG9ydCBXaGl0ZXNwYWNlQ29udHJvbCBmcm9tICcuL3doaXRlc3BhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgKiBhcyBIZWxwZXJzIGZyb20gJy4vaGVscGVycy5qcyc7XG5cbmxldCBiYXNlSGVscGVycyA9IHt9O1xuXG5mb3IgKGxldCBoZWxwZXIgaW4gSGVscGVycykge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEhlbHBlcnMsIGhlbHBlcikpIHtcbiAgICBiYXNlSGVscGVyc1toZWxwZXJdID0gSGVscGVyc1toZWxwZXJdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LCBvcHRpb25zKSB7XG4gIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uXG4gIGlmIChpbnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBwYXJzZXIueXkgPSBiYXNlSGVscGVycztcblxuICAvLyBBbHRlcmluZyB0aGUgc2hhcmVkIG9iamVjdCBoZXJlLCBidXQgdGhpcyBpcyBvayBhcyBwYXJzZXIgaXMgYSBzeW5jIG9wZXJhdGlvblxuICBwYXJzZXIueXkubG9jSW5mbyA9IGZ1bmN0aW9uIChsb2NJbmZvKSB7XG4gICAgcmV0dXJuIG5ldyBIZWxwZXJzLlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTtcbiAgfTtcblxuICBsZXQgc3F1YXJlU3ludGF4O1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucz8uc3ludGF4Py5zcXVhcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzcXVhcmVTeW50YXggPSBvcHRpb25zLnN5bnRheC5zcXVhcmU7XG4gIH0gZWxzZSBpZiAob3B0aW9ucz8uc3ludGF4Py5zcXVhcmUgPT09ICdub2RlJykge1xuICAgIHNxdWFyZVN5bnRheCA9IGFycmF5TGl0ZXJhbE5vZGU7XG4gIH0gZWxzZSB7XG4gICAgc3F1YXJlU3ludGF4ID0gJ3N0cmluZyc7XG4gIH1cblxuICBsZXQgaGFzaFN5bnRheDtcblxuICBpZiAodHlwZW9mIG9wdGlvbnM/LnN5bnRheD8uaGFzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGhhc2hTeW50YXggPSBvcHRpb25zLnN5bnRheC5oYXNoO1xuICB9IGVsc2Uge1xuICAgIGhhc2hTeW50YXggPSBoYXNoTGl0ZXJhbE5vZGU7XG4gIH1cblxuICBwYXJzZXIueXkuc3ludGF4ID0ge1xuICAgIHNxdWFyZTogc3F1YXJlU3ludGF4LFxuICAgIGhhc2g6IGhhc2hTeW50YXgsXG4gIH07XG5cbiAgcmV0dXJuIHBhcnNlci5wYXJzZShpbnB1dCk7XG59XG5cbmZ1bmN0aW9uIGFycmF5TGl0ZXJhbE5vZGUoYXJyYXksIGxvYykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdBcnJheUxpdGVyYWwnLFxuICAgIGl0ZW1zOiBhcnJheSxcbiAgICBsb2MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhc2hMaXRlcmFsTm9kZShoYXNoLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnSGFzaExpdGVyYWwnLFxuICAgIHBhaXJzOiBoYXNoLnBhaXJzLFxuICAgIGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIGxldCBhc3QgPSBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nKGlucHV0LCBvcHRpb25zKTtcbiAgbGV0IHN0cmlwID0gbmV3IFdoaXRlc3BhY2VDb250cm9sKG9wdGlvbnMpO1xuXG4gIHJldHVybiBzdHJpcC5hY2NlcHQoYXN0KTtcbn1cbiJdfQ==
|