@swagger-api/apidom-ast 1.0.0-alpha.9 → 1.0.0-beta.0
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/CHANGELOG.md +8 -0
- package/dist/apidom-ast.browser.js +797 -406
- package/dist/apidom-ast.browser.min.js +1 -1
- package/package.json +16 -16
- package/{cjs → src}/Error.cjs +7 -0
- package/{es → src}/Error.mjs +6 -0
- package/{cjs → src}/Literal.cjs +7 -0
- package/{es → src}/Literal.mjs +6 -0
- package/{cjs → src}/Node.cjs +7 -0
- package/{es → src}/Node.mjs +7 -0
- package/{cjs → src}/ParseResult.cjs +3 -0
- package/{es → src}/ParseResult.mjs +3 -0
- package/{cjs → src}/Position.cjs +14 -0
- package/{es → src}/Position.mjs +15 -0
- package/{es → src}/index.mjs +1 -2
- package/{cjs → src}/json/nodes/JsonArray.cjs +3 -0
- package/{es → src}/json/nodes/JsonArray.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonDocument.cjs +3 -0
- package/{es → src}/json/nodes/JsonDocument.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonEscapeSequence.cjs +3 -0
- package/{es → src}/json/nodes/JsonEscapeSequence.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonFalse.cjs +3 -0
- package/{es → src}/json/nodes/JsonFalse.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonKey.cjs +3 -0
- package/{es → src}/json/nodes/JsonKey.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonNode.cjs +3 -0
- package/{es → src}/json/nodes/JsonNode.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonNull.cjs +3 -0
- package/{es → src}/json/nodes/JsonNull.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonNumber.cjs +3 -0
- package/{es → src}/json/nodes/JsonNumber.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonObject.cjs +3 -0
- package/{es → src}/json/nodes/JsonObject.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonProperty.cjs +7 -0
- package/{es → src}/json/nodes/JsonProperty.mjs +6 -0
- package/{cjs → src}/json/nodes/JsonString.cjs +3 -0
- package/{es → src}/json/nodes/JsonString.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonStringContent.cjs +3 -0
- package/{es → src}/json/nodes/JsonStringContent.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonTrue.cjs +3 -0
- package/{es → src}/json/nodes/JsonTrue.mjs +3 -0
- package/{cjs → src}/json/nodes/JsonValue.cjs +7 -0
- package/{es → src}/json/nodes/JsonValue.mjs +6 -0
- package/{cjs → src}/json/nodes/predicates.cjs +47 -0
- package/{es → src}/json/nodes/predicates.mjs +47 -0
- package/{cjs → src}/predicates.cjs +19 -0
- package/{es → src}/predicates.mjs +19 -0
- package/{cjs → src}/traversal/visitor.cjs +43 -16
- package/{es → src}/traversal/visitor.mjs +43 -16
- package/{cjs → src}/yaml/anchors-aliases/ReferenceManager.cjs +3 -0
- package/{es → src}/yaml/anchors-aliases/ReferenceManager.mjs +3 -0
- package/{cjs → src}/yaml/errors/YamlError.cjs +3 -0
- package/{es → src}/yaml/errors/YamlError.mjs +4 -0
- package/{cjs → src}/yaml/errors/YamlReferenceError.cjs +3 -0
- package/{es → src}/yaml/errors/YamlReferenceError.mjs +3 -0
- package/{cjs → src}/yaml/errors/YamlSchemaError.cjs +3 -0
- package/{es → src}/yaml/errors/YamlSchemaError.mjs +3 -0
- package/{cjs → src}/yaml/errors/YamlTagError.cjs +7 -0
- package/{es → src}/yaml/errors/YamlTagError.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlAlias.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlAlias.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlAnchor.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlAnchor.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlCollection.cjs +3 -0
- package/{es → src}/yaml/nodes/YamlCollection.mjs +3 -0
- package/{cjs → src}/yaml/nodes/YamlComment.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlComment.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlDirective.cjs +11 -0
- package/{es → src}/yaml/nodes/YamlDirective.mjs +9 -0
- package/{cjs → src}/yaml/nodes/YamlDocument.cjs +3 -0
- package/{es → src}/yaml/nodes/YamlDocument.mjs +3 -0
- package/{cjs → src}/yaml/nodes/YamlKeyValuePair.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlKeyValuePair.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlMapping.cjs +3 -0
- package/{es → src}/yaml/nodes/YamlMapping.mjs +3 -0
- package/{cjs → src}/yaml/nodes/YamlNode.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlNode.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlScalar.cjs +7 -0
- package/{es → src}/yaml/nodes/YamlScalar.mjs +6 -0
- package/{cjs → src}/yaml/nodes/YamlSequence.cjs +3 -0
- package/{es → src}/yaml/nodes/YamlSequence.mjs +3 -0
- package/{cjs → src}/yaml/nodes/YamlStream.cjs +3 -0
- package/{es → src}/yaml/nodes/YamlStream.mjs +3 -0
- package/{cjs → src}/yaml/nodes/YamlStyle.cjs +6 -0
- package/{es → src}/yaml/nodes/YamlStyle.mjs +7 -0
- package/{cjs → src}/yaml/nodes/YamlTag.cjs +9 -0
- package/{es → src}/yaml/nodes/YamlTag.mjs +11 -0
- package/{cjs → src}/yaml/nodes/predicates.cjs +43 -0
- package/{es → src}/yaml/nodes/predicates.mjs +43 -0
- package/{cjs → src}/yaml/schemas/failsafe/index.cjs +3 -0
- package/{es → src}/yaml/schemas/failsafe/index.mjs +3 -0
- package/{cjs → src}/yaml/schemas/json/index.cjs +3 -0
- package/{es → src}/yaml/schemas/json/index.mjs +3 -0
- package/types/apidom-ast.d.ts +826 -0
- package/types/dist.d.ts +0 -486
- /package/{cjs → src}/index.cjs +0 -0
- /package/{cjs → src}/yaml/schemas/ScalarTag.cjs +0 -0
- /package/{es → src}/yaml/schemas/ScalarTag.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/Tag.cjs +0 -0
- /package/{es → src}/yaml/schemas/Tag.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/canonical-format.cjs +0 -0
- /package/{es → src}/yaml/schemas/canonical-format.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/failsafe/GenericMapping.cjs +0 -0
- /package/{es → src}/yaml/schemas/failsafe/GenericMapping.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/failsafe/GenericSequence.cjs +0 -0
- /package/{es → src}/yaml/schemas/failsafe/GenericSequence.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/failsafe/GenericString.cjs +0 -0
- /package/{es → src}/yaml/schemas/failsafe/GenericString.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/json/Boolean.cjs +0 -0
- /package/{es → src}/yaml/schemas/json/Boolean.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/json/FloatingPoint.cjs +0 -0
- /package/{es → src}/yaml/schemas/json/FloatingPoint.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/json/Integer.cjs +0 -0
- /package/{es → src}/yaml/schemas/json/Integer.mjs +0 -0
- /package/{cjs → src}/yaml/schemas/json/Null.cjs +0 -0
- /package/{es → src}/yaml/schemas/json/Null.mjs +0 -0
@@ -5,6 +5,9 @@ exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
6
6
|
var _ramda = require("ramda");
|
7
7
|
var _JsonNode = _interopRequireDefault(require("./JsonNode.cjs"));
|
8
|
+
/**
|
9
|
+
* @public
|
10
|
+
*/
|
8
11
|
class JsonDocument extends _JsonNode.default {
|
9
12
|
static type = 'document';
|
10
13
|
get child() {
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonEscapeSequence extends _JsonValue.default {
|
8
11
|
static type = 'escapeSequence';
|
9
12
|
}
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonFalse extends _JsonValue.default {
|
8
11
|
static type = 'false';
|
9
12
|
}
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonString = _interopRequireDefault(require("./JsonString.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonKey extends _JsonString.default {
|
8
11
|
static type = 'key';
|
9
12
|
}
|
@@ -4,5 +4,8 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _Node = _interopRequireDefault(require("../../Node.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonNode extends _Node.default {}
|
8
11
|
var _default = exports.default = JsonNode;
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonNull extends _JsonValue.default {
|
8
11
|
static type = 'null';
|
9
12
|
}
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonNumber extends _JsonValue.default {
|
8
11
|
static type = 'number';
|
9
12
|
}
|
@@ -5,6 +5,9 @@ exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonNode = _interopRequireDefault(require("./JsonNode.cjs"));
|
7
7
|
var _predicates = require("./predicates.cjs");
|
8
|
+
/**
|
9
|
+
* @public
|
10
|
+
*/
|
8
11
|
class JsonObject extends _JsonNode.default {
|
9
12
|
static type = 'object';
|
10
13
|
get properties() {
|
@@ -5,6 +5,13 @@ exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonNode = _interopRequireDefault(require("./JsonNode.cjs"));
|
7
7
|
var _predicates = require("./predicates.cjs");
|
8
|
+
/**
|
9
|
+
* @public
|
10
|
+
*/
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @public
|
14
|
+
*/
|
8
15
|
class JsonProperty extends _JsonNode.default {
|
9
16
|
static type = 'property';
|
10
17
|
get key() {
|
@@ -1,5 +1,11 @@
|
|
1
1
|
import JsonNode from "./JsonNode.mjs";
|
2
2
|
import { isArray, isFalse, isKey, isNull, isNumber, isObject, isString, isTrue } from "./predicates.mjs";
|
3
|
+
/**
|
4
|
+
* @public
|
5
|
+
*/
|
6
|
+
/**
|
7
|
+
* @public
|
8
|
+
*/
|
3
9
|
class JsonProperty extends JsonNode {
|
4
10
|
static type = 'property';
|
5
11
|
get key() {
|
@@ -5,6 +5,9 @@ exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonNode = _interopRequireDefault(require("./JsonNode.cjs"));
|
7
7
|
var _predicates = require("./predicates.cjs");
|
8
|
+
/**
|
9
|
+
* @public
|
10
|
+
*/
|
8
11
|
class JsonString extends _JsonNode.default {
|
9
12
|
static type = 'string';
|
10
13
|
get value() {
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonStringContent extends _JsonValue.default {
|
8
11
|
static type = 'stringContent';
|
9
12
|
}
|
@@ -4,6 +4,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonValue = _interopRequireDefault(require("./JsonValue.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
7
10
|
class JsonTrue extends _JsonValue.default {
|
8
11
|
static type = 'true';
|
9
12
|
}
|
@@ -4,6 +4,13 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
exports.__esModule = true;
|
5
5
|
exports.default = void 0;
|
6
6
|
var _JsonNode = _interopRequireDefault(require("./JsonNode.cjs"));
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @public
|
13
|
+
*/
|
7
14
|
class JsonValue extends _JsonNode.default {
|
8
15
|
static type = 'value';
|
9
16
|
value;
|
@@ -3,27 +3,74 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.isTrue = exports.isStringContent = exports.isString = exports.isProperty = exports.isObject = exports.isNumber = exports.isNull = exports.isKey = exports.isFalse = exports.isEscapeSequence = exports.isDocument = exports.isArray = void 0;
|
5
5
|
var _predicates = require("../../predicates.cjs");
|
6
|
+
/**
|
7
|
+
* @public
|
8
|
+
*/
|
6
9
|
const isDocument = node => (0, _predicates.isNodeType)('document', node);
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @public
|
13
|
+
*/
|
7
14
|
exports.isDocument = isDocument;
|
8
15
|
const isString = node => (0, _predicates.isNodeType)('string', node);
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @public
|
19
|
+
*/
|
9
20
|
exports.isString = isString;
|
10
21
|
const isFalse = node => (0, _predicates.isNodeType)('false', node);
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @public
|
25
|
+
*/
|
11
26
|
exports.isFalse = isFalse;
|
12
27
|
const isTrue = node => (0, _predicates.isNodeType)('true', node);
|
28
|
+
|
29
|
+
/**
|
30
|
+
* @public
|
31
|
+
*/
|
13
32
|
exports.isTrue = isTrue;
|
14
33
|
const isNull = node => (0, _predicates.isNodeType)('null', node);
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @public
|
37
|
+
*/
|
15
38
|
exports.isNull = isNull;
|
16
39
|
const isNumber = node => (0, _predicates.isNodeType)('number', node);
|
40
|
+
|
41
|
+
/**
|
42
|
+
* @public
|
43
|
+
*/
|
17
44
|
exports.isNumber = isNumber;
|
18
45
|
const isArray = node => (0, _predicates.isNodeType)('array', node);
|
46
|
+
|
47
|
+
/**
|
48
|
+
* @public
|
49
|
+
*/
|
19
50
|
exports.isArray = isArray;
|
20
51
|
const isObject = node => (0, _predicates.isNodeType)('object', node);
|
52
|
+
|
53
|
+
/**
|
54
|
+
* @public
|
55
|
+
*/
|
21
56
|
exports.isObject = isObject;
|
22
57
|
const isStringContent = node => (0, _predicates.isNodeType)('stringContent', node);
|
58
|
+
|
59
|
+
/**
|
60
|
+
* @public
|
61
|
+
*/
|
23
62
|
exports.isStringContent = isStringContent;
|
24
63
|
const isEscapeSequence = node => (0, _predicates.isNodeType)('escapeSequence', node);
|
64
|
+
|
65
|
+
/**
|
66
|
+
* @public
|
67
|
+
*/
|
25
68
|
exports.isEscapeSequence = isEscapeSequence;
|
26
69
|
const isProperty = node => (0, _predicates.isNodeType)('property', node);
|
70
|
+
|
71
|
+
/**
|
72
|
+
* @public
|
73
|
+
*/
|
27
74
|
exports.isProperty = isProperty;
|
28
75
|
const isKey = node => (0, _predicates.isNodeType)('key', node);
|
29
76
|
exports.isKey = isKey;
|
@@ -1,13 +1,60 @@
|
|
1
1
|
import { isNodeType } from "../../predicates.mjs";
|
2
|
+
/**
|
3
|
+
* @public
|
4
|
+
*/
|
2
5
|
export const isDocument = node => isNodeType('document', node);
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @public
|
9
|
+
*/
|
3
10
|
export const isString = node => isNodeType('string', node);
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @public
|
14
|
+
*/
|
4
15
|
export const isFalse = node => isNodeType('false', node);
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @public
|
19
|
+
*/
|
5
20
|
export const isTrue = node => isNodeType('true', node);
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @public
|
24
|
+
*/
|
6
25
|
export const isNull = node => isNodeType('null', node);
|
26
|
+
|
27
|
+
/**
|
28
|
+
* @public
|
29
|
+
*/
|
7
30
|
export const isNumber = node => isNodeType('number', node);
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @public
|
34
|
+
*/
|
8
35
|
export const isArray = node => isNodeType('array', node);
|
36
|
+
|
37
|
+
/**
|
38
|
+
* @public
|
39
|
+
*/
|
9
40
|
export const isObject = node => isNodeType('object', node);
|
41
|
+
|
42
|
+
/**
|
43
|
+
* @public
|
44
|
+
*/
|
10
45
|
export const isStringContent = node => isNodeType('stringContent', node);
|
46
|
+
|
47
|
+
/**
|
48
|
+
* @public
|
49
|
+
*/
|
11
50
|
export const isEscapeSequence = node => isNodeType('escapeSequence', node);
|
51
|
+
|
52
|
+
/**
|
53
|
+
* @public
|
54
|
+
*/
|
12
55
|
export const isProperty = node => isNodeType('property', node);
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @public
|
59
|
+
*/
|
13
60
|
export const isKey = node => isNodeType('key', node);
|
@@ -2,13 +2,32 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.isPosition = exports.isPoint = exports.isParseResult = exports.isNodeType = exports.isLiteral = void 0;
|
5
|
+
/**
|
6
|
+
* @public
|
7
|
+
*/
|
5
8
|
const isNodeType = (type, node) => node != null && typeof node === 'object' && 'type' in node && node.type === type;
|
9
|
+
|
10
|
+
/**
|
11
|
+
* @public
|
12
|
+
*/
|
6
13
|
exports.isNodeType = isNodeType;
|
7
14
|
const isLiteral = node => isNodeType('literal', node);
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @public
|
18
|
+
*/
|
8
19
|
exports.isLiteral = isLiteral;
|
9
20
|
const isPosition = node => isNodeType('position', node);
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @public
|
24
|
+
*/
|
10
25
|
exports.isPosition = isPosition;
|
11
26
|
const isPoint = node => isNodeType('point', node);
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @public
|
30
|
+
*/
|
12
31
|
exports.isPoint = isPoint;
|
13
32
|
const isParseResult = node => isNodeType('parseResult', node);
|
14
33
|
exports.isParseResult = isParseResult;
|
@@ -1,5 +1,24 @@
|
|
1
|
+
/**
|
2
|
+
* @public
|
3
|
+
*/
|
1
4
|
export const isNodeType = (type, node) => node != null && typeof node === 'object' && 'type' in node && node.type === type;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @public
|
8
|
+
*/
|
2
9
|
export const isLiteral = node => isNodeType('literal', node);
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @public
|
13
|
+
*/
|
3
14
|
export const isPosition = node => isNodeType('position', node);
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @public
|
18
|
+
*/
|
4
19
|
export const isPoint = node => isNodeType('point', node);
|
20
|
+
|
21
|
+
/**
|
22
|
+
* @public
|
23
|
+
*/
|
5
24
|
export const isParseResult = node => isNodeType('parseResult', node);
|
@@ -9,8 +9,11 @@ var _apidomError = require("@swagger-api/apidom-error");
|
|
9
9
|
* SPDX-License-Identifier: MIT
|
10
10
|
*/
|
11
11
|
|
12
|
-
|
12
|
+
/**
|
13
|
+
* @public
|
14
|
+
*/
|
13
15
|
const getVisitFn = (visitor, type, isLeaving) => {
|
16
|
+
// @ts-ignore
|
14
17
|
const typeVisitor = visitor[type];
|
15
18
|
if (typeVisitor != null) {
|
16
19
|
if (!isLeaving && typeof typeVisitor === 'function') {
|
@@ -29,6 +32,7 @@ const getVisitFn = (visitor, type, isLeaving) => {
|
|
29
32
|
// { enter() {}, leave() {} }
|
30
33
|
return specificVisitor;
|
31
34
|
}
|
35
|
+
// @ts-ignore
|
32
36
|
const specificTypeVisitor = specificVisitor[type];
|
33
37
|
if (typeof specificTypeVisitor === 'function') {
|
34
38
|
// { enter: { Type() {} }, leave: { Type() {} } }
|
@@ -38,17 +42,27 @@ const getVisitFn = (visitor, type, isLeaving) => {
|
|
38
42
|
}
|
39
43
|
return null;
|
40
44
|
};
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @public
|
48
|
+
*/
|
41
49
|
exports.getVisitFn = getVisitFn;
|
42
50
|
const BREAK = exports.BREAK = {};
|
43
51
|
|
44
|
-
|
52
|
+
/**
|
53
|
+
* @public
|
54
|
+
*/
|
45
55
|
const getNodeType = node => node == null ? void 0 : node.type;
|
46
56
|
|
47
|
-
|
57
|
+
/**
|
58
|
+
* @public
|
59
|
+
*/
|
48
60
|
exports.getNodeType = getNodeType;
|
49
61
|
const isNode = node => typeof getNodeType(node) === 'string';
|
50
62
|
|
51
|
-
|
63
|
+
/**
|
64
|
+
* @public
|
65
|
+
*/
|
52
66
|
exports.isNode = isNode;
|
53
67
|
const cloneNode = node => Object.create(Object.getPrototypeOf(node), Object.getOwnPropertyDescriptors(node));
|
54
68
|
|
@@ -58,8 +72,16 @@ const cloneNode = node => Object.create(Object.getPrototypeOf(node), Object.getO
|
|
58
72
|
*
|
59
73
|
* If a prior visitor edits a node, no following visitors will see that node.
|
60
74
|
* `exposeEdits=true` can be used to expose the edited node from the previous visitors.
|
75
|
+
* @public
|
76
|
+
*/
|
77
|
+
|
78
|
+
/**
|
79
|
+
* @public
|
61
80
|
*/
|
62
81
|
exports.cloneNode = cloneNode;
|
82
|
+
/**
|
83
|
+
* @public
|
84
|
+
*/
|
63
85
|
const mergeAll = (visitors, {
|
64
86
|
visitFnGetter = getVisitFn,
|
65
87
|
nodeTypeGetter = getNodeType,
|
@@ -242,9 +264,11 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
242
264
|
* a new version of the AST with the changes applied will be returned from the
|
243
265
|
* visit function.
|
244
266
|
*
|
267
|
+
* @example
|
268
|
+
* ```
|
245
269
|
* const editedAST = visit(ast, {
|
246
270
|
* enter(node, key, parent, path, ancestors) {
|
247
|
-
* //
|
271
|
+
* // return
|
248
272
|
* // undefined: no action
|
249
273
|
* // false: skip visiting this node
|
250
274
|
* // BREAK: stop visiting altogether
|
@@ -252,7 +276,7 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
252
276
|
* // any value: replace this node with the returned value
|
253
277
|
* },
|
254
278
|
* leave(node, key, parent, path, ancestors) {
|
255
|
-
* //
|
279
|
+
* // return
|
256
280
|
* // undefined: no action
|
257
281
|
* // false: no action
|
258
282
|
* // BREAK: stop visiting altogether
|
@@ -260,23 +284,23 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
260
284
|
* // any value: replace this node with the returned value
|
261
285
|
* }
|
262
286
|
* });
|
263
|
-
|
287
|
+
*```
|
264
288
|
* Alternatively to providing enter() and leave() functions, a visitor can
|
265
289
|
* instead provide functions named the same as the kinds of AST nodes, or
|
266
290
|
* enter/leave visitors at a named key, leading to four permutations of
|
267
291
|
* visitor API:
|
268
292
|
*
|
269
293
|
* 1) Named visitors triggered when entering a node a specific kind.
|
270
|
-
*
|
294
|
+
* ```
|
271
295
|
* visit(ast, {
|
272
296
|
* Kind(node) {
|
273
297
|
* // enter the "Kind" node
|
274
298
|
* }
|
275
299
|
* })
|
276
|
-
*
|
300
|
+
* ```
|
277
301
|
* 2) Named visitors that trigger upon entering and leaving a node of
|
278
302
|
* a specific kind.
|
279
|
-
*
|
303
|
+
* ```
|
280
304
|
* visit(ast, {
|
281
305
|
* Kind: {
|
282
306
|
* enter(node) {
|
@@ -287,9 +311,9 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
287
311
|
* }
|
288
312
|
* }
|
289
313
|
* })
|
290
|
-
*
|
314
|
+
* ```
|
291
315
|
* 3) Generic visitors that trigger upon entering and leaving any node.
|
292
|
-
*
|
316
|
+
* ```
|
293
317
|
* visit(ast, {
|
294
318
|
* enter(node) {
|
295
319
|
* // enter any node
|
@@ -298,9 +322,9 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
298
322
|
* // leave any node
|
299
323
|
* }
|
300
324
|
* })
|
301
|
-
*
|
325
|
+
* ```
|
302
326
|
* 4) Parallel visitors for entering and leaving nodes of a specific kind.
|
303
|
-
*
|
327
|
+
* ```
|
304
328
|
* visit(ast, {
|
305
329
|
* enter: {
|
306
330
|
* Kind(node) {
|
@@ -313,9 +337,12 @@ mergeAll[Symbol.for('nodejs.util.promisify.custom')] = mergeAllAsync;
|
|
313
337
|
* }
|
314
338
|
* }
|
315
339
|
* })
|
340
|
+
* ```
|
341
|
+
* sig `visit :: (Node, Visitor, Options)`
|
342
|
+
*
|
343
|
+
* sig `Options = { keyMap: Object, state: Object }`
|
316
344
|
*
|
317
|
-
* @
|
318
|
-
* @sig Options = { keyMap: Object, state: Object }
|
345
|
+
* @public
|
319
346
|
*/
|
320
347
|
const visit = (
|
321
348
|
// @ts-ignore
|