Skip to content

Commit 5433197

Browse files
authored
fix: avoid webpack bug by changing type mapping (#282)
Refs babel/babel#12874 Refs webpack/webpack#12767 Refs swagger-api/oss-planning#133
1 parent b0746fa commit 5433197

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+262
-338
lines changed

apidom/packages/@types/minim.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ declare module 'minim' {
3939
freeze(): void;
4040

4141
clone(): Element;
42+
43+
primitive(): string | undefined;
4244
}
4345

4446
interface Type<T> extends Element {

apidom/packages/apidom-ast/src/visitor.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { prop, pipe, curryN, tail, forEachObjIndexed, defaultTo, identity, pathO
22
import { isFunction, isString, isNotNil, isNotUndefined, isPlainObject } from 'ramda-adjunct';
33

44
// getVisitFn :: (Visitor, String, Boolean) -> Function
5-
// @ts-ignore
6-
export const getVisitFn = (visitor, type: string, isLeaving: boolean) => {
5+
export const getVisitFn = (visitor: any, type: string, isLeaving: boolean) => {
76
const typeVisitor = visitor[type];
87

98
if (isNotNil(typeVisitor)) {
@@ -114,7 +113,12 @@ const normalize = (visitor: any) => {
114113
return normalized;
115114
};
116115

117-
// merge all visitors provided in list
116+
/**
117+
* Creates a new visitor instance which delegates to many visitors to run in
118+
* parallel. Each visitor will be visited for each node before moving on.
119+
*
120+
* If a prior visitor edits a node, no following visitors will see that node.
121+
*/
118122
export const mergeAll = (visitors: any[]) => {
119123
return visitors.reduce((mergedVisitors, visitor) => {
120124
/* eslint-disable no-param-reassign */

apidom/packages/apidom-ns-asyncapi-2-0/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export {
4848
isAsyncApiExtension,
4949
} from './refractor/predicates';
5050

51-
export { visit, getNodeType, keyMapDefault as keyMap, BREAK } from './traversal/visitor';
51+
export { keyMap, getNodeType } from './traversal/visitor';
5252

5353
export { default as AsyncApi2_0Element } from './elements/AsyncApi2-0';
5454
export { default as AsyncApiVersionElement } from './elements/AsyncApiVersion';

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/index.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { refract as baseRefract } from 'minim';
2-
import { Element, dereference, mergeAllVisitors, createNamespace } from 'apidom';
2+
import { Element, visit, dereference, mergeAllVisitors, createNamespace } from 'apidom';
33
import { propOr } from 'ramda';
44
import { invokeArgs } from 'ramda-adjunct';
55

6-
import { visit } from '../traversal/visitor';
6+
import { keyMap, getNodeType } from '../traversal/visitor';
77
import specification from './specification';
88
import * as predicates from '../predicates';
99
import asyncApi2_0Namespace from '../namespace';
@@ -35,7 +35,11 @@ const refract = <T extends Element>(
3535
const pluginsSpecs = plugins.map((plugin: any) => plugin(toolbox));
3636
const pluginsVisitor = mergeAllVisitors(pluginsSpecs.map(propOr({}, 'visitor')));
3737
pluginsSpecs.forEach(invokeArgs(['pre'], []));
38-
const newElement: any = visit(rootVisitor.element, pluginsVisitor);
38+
const newElement: any = visit(rootVisitor.element, pluginsVisitor, {
39+
keyMap,
40+
// @ts-ignore
41+
nodeTypeGetter: getNodeType,
42+
});
3943
pluginsSpecs.forEach(invokeArgs(['post'], []));
4044
return newElement;
4145
}

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/FallbackVisitor.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import stampit from 'stampit';
2-
import { Element } from 'apidom';
2+
import { Element, BREAK } from 'apidom';
33

4-
import { BREAK } from '../../traversal/visitor';
54
import Visitor from './Visitor';
65

76
/**

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/SpecificationExtensionVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import stampit from 'stampit';
2-
import { MemberElement } from 'apidom';
2+
import { MemberElement, BREAK } from 'apidom';
33

4-
import { BREAK } from '../../traversal/visitor';
54
import SpecificationVisitor from './SpecificationVisitor';
65
import { appendMetadata } from '../metadata';
76

87
const SpecificationExtensionVisitor = stampit(SpecificationVisitor, {
98
methods: {
10-
Member(memberElement: MemberElement) {
9+
MemberElement(memberElement: MemberElement) {
1110
this.element = memberElement.clone();
1211
appendMetadata(['specification-extension'], this.element);
1312
return BREAK;

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/SpecificationVisitor.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import stampit from 'stampit';
22
import { pathSatisfies, path, pick, pipe, keys } from 'ramda';
33
import { isFunction } from 'ramda-adjunct';
4+
import { visit } from 'apidom';
45

5-
import { visit } from '../../traversal/visitor';
6+
import { keyMap, getNodeType } from '../../traversal/visitor';
67
import Visitor from './Visitor';
78

89
/**
@@ -42,7 +43,7 @@ const SpecificationVisitor = stampit(Visitor, {
4243

4344
toRefractedElement(specPath: string[], element, options = {}) {
4445
const visitor = this.retrieveVisitorInstance(specPath);
45-
visit(element, visitor, options);
46+
visit(element, visitor, { keyMap, ...options, nodeTypeGetter: getNodeType });
4647
return visitor.element;
4748
},
4849
},

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/Visitor.ts

-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ import { hasElementSourceMap } from 'apidom';
44
const Visitor = stampit({
55
props: {
66
element: null,
7-
namespace: null,
8-
},
9-
// @ts-ignore
10-
init({ namespace = this.namespace } = {}) {
11-
this.namespace = namespace;
127
},
138
methods: {
149
copyMetaAndAttributes(from, to) {

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/AsyncApiVersionVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import stampit from 'stampit';
2-
import { StringElement } from 'apidom';
2+
import { StringElement, BREAK } from 'apidom';
33

44
import FallbackVisitor from '../FallbackVisitor';
55
import SpecificationVisitor from '../SpecificationVisitor';
66
import AsyncApiVersionElement from '../../../elements/AsyncApiVersion';
7-
import { BREAK } from '../../../traversal/visitor';
87

98
const AsyncApiVersionVisitor = stampit(SpecificationVisitor, FallbackVisitor, {
109
methods: {
11-
String(stringElement: StringElement) {
10+
StringElement(stringElement: StringElement) {
1211
const asyncApiVersionElement = new AsyncApiVersionElement(stringElement.toValue());
1312

1413
this.copyMetaAndAttributes(stringElement, asyncApiVersionElement);

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/IdentifierVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import stampit from 'stampit';
2-
import { StringElement } from 'apidom';
2+
import { StringElement, BREAK } from 'apidom';
33

44
import FallbackVisitor from '../FallbackVisitor';
55
import SpecificationVisitor from '../SpecificationVisitor';
66
import IdentifierElement from '../../../elements/Identifier';
7-
import { BREAK } from '../../../traversal/visitor';
87

98
const IdentifierVisitor = stampit(SpecificationVisitor, FallbackVisitor, {
109
methods: {
11-
String(stringElement: StringElement) {
10+
StringElement(stringElement: StringElement) {
1211
const identifierElement = new IdentifierElement(stringElement.toValue());
1312

1413
this.copyMetaAndAttributes(stringElement, identifierElement);

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/info/VersionVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import stampit from 'stampit';
2-
import { StringElement } from 'apidom';
2+
import { StringElement, BREAK } from 'apidom';
33

44
import FallbackVisitor from '../../FallbackVisitor';
55
import { appendMetadata } from '../../../metadata';
6-
import { BREAK } from '../../../../traversal/visitor';
76

87
const VersionVisitor = stampit(FallbackVisitor, {
98
methods: {
10-
String(stringElement: StringElement) {
9+
StringElement(stringElement: StringElement) {
1110
this.element = new StringElement(stringElement.toValue());
1211

1312
this.copyMetaAndAttributes(stringElement, this.element);

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/schema/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import stampit from 'stampit';
2-
import { ObjectElement } from 'apidom';
2+
import { ObjectElement, BREAK } from 'apidom';
33

44
import SchemaElement from '../../../../elements/Schema';
55
import FallbackVisitor from '../../FallbackVisitor';
66
import SpecificationVisitor from '../../SpecificationVisitor';
7-
import { BREAK } from '../../../../traversal/visitor';
87

98
const SchemaVisitor = stampit(SpecificationVisitor, FallbackVisitor, {
109
methods: {
11-
Object(objectElement: ObjectElement) {
10+
ObjectElement(objectElement: ObjectElement) {
1211
// @ts-ignore
1312
const schemaElement = new SchemaElement(objectElement.content);
1413

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/server/SecurityVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import stampit from 'stampit';
2-
import { ArrayElement, Element } from 'apidom';
2+
import { ArrayElement, Element, BREAK } from 'apidom';
33

44
import SpecificationVisitor from '../../SpecificationVisitor';
55
import FallbackVisitor from '../../FallbackVisitor';
66
import { appendMetadata } from '../../../metadata';
7-
import { BREAK } from '../../../../traversal/visitor';
87
import { isSecurityRequirementLikeElement } from '../../../predicates';
98

109
const SecurityVisitor = stampit(SpecificationVisitor, FallbackVisitor, {
1110
init() {
1211
this.element = new ArrayElement();
1312
},
1413
methods: {
15-
Array(arrayElement: ArrayElement) {
14+
ArrayElement(arrayElement: ArrayElement) {
1615
arrayElement.forEach((item: Element) => {
1716
if (isSecurityRequirementLikeElement(item)) {
1817
const serverElement = this.toRefractedElement(

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/generics/AlternatingVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import stampit from 'stampit';
22
import { ifElse, always, Pred } from 'ramda';
33
import { dispatch, stubUndefined } from 'ramda-adjunct';
4-
import { ObjectElement } from 'apidom';
4+
import { ObjectElement, BREAK } from 'apidom';
55

6-
import { BREAK } from '../../../traversal/visitor';
76
import SpecificationVisitor from '../SpecificationVisitor';
87

98
const AlternatingVisitor = stampit(SpecificationVisitor, {
109
props: {
1110
alternator: [],
1211
},
1312
methods: {
14-
Object(objectElement: ObjectElement) {
13+
ObjectElement(objectElement: ObjectElement) {
1514
const functions = this.alternator.map(
1615
({ predicate, specPath }: { predicate: Pred; specPath: string[] }) =>
1716
ifElse(predicate, always(specPath), stubUndefined),

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/generics/FixedFieldsVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import stampit from 'stampit';
22
import { noop } from 'ramda-adjunct';
3-
import { isStringElement, MemberElement, Element } from 'apidom';
3+
import { BREAK, isStringElement, MemberElement, Element } from 'apidom';
44

55
import { appendMetadata } from '../../metadata';
66
import SpecificationVisitor from '../SpecificationVisitor';
77
import { isAsyncApiExtension } from '../../predicates';
8-
import { BREAK } from '../../../traversal/visitor';
98

109
const FixedFieldsVisitor = stampit(SpecificationVisitor, {
1110
props: {
@@ -30,7 +29,7 @@ const FixedFieldsVisitor = stampit(SpecificationVisitor, {
3029
this.specificationExtensionPredicate = specificationExtensionPredicate;
3130
},
3231
methods: {
33-
Object(objectElement) {
32+
ObjectElement(objectElement) {
3433
const specPath = this.specPath(objectElement);
3534
const fields = this.retrieveFixedFields(specPath);
3635

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/generics/MixedFieldsVisitor.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import stampit from 'stampit';
22
import { noop } from 'ramda-adjunct';
3-
import { ObjectElement } from 'apidom';
3+
import { ObjectElement, BREAK } from 'apidom';
44

5-
import { BREAK } from '../../../traversal/visitor';
65
import FixedFieldsVisitor from './FixedFieldsVisitor';
76
import PatternedFieldsVisitor from './PatternedFieldsVisitor';
87

@@ -12,17 +11,17 @@ const MixedFieldsVisitor = stampit(FixedFieldsVisitor, PatternedFieldsVisitor, {
1211
specPathPatternedFields: noop,
1312
},
1413
methods: {
15-
Object(objectElement: ObjectElement) {
14+
ObjectElement(objectElement: ObjectElement) {
1615
const { specPath } = this;
1716

1817
try {
1918
this.specPath = this.specPathFixedFields;
2019
// @ts-ignore
21-
FixedFieldsVisitor.compose.methods.Object.call(this, objectElement);
20+
FixedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement);
2221

2322
this.specPath = this.specPathPatternedFields;
2423
// @ts-ignore
25-
PatternedFieldsVisitor.compose.methods.Object.call(this, objectElement);
24+
PatternedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement);
2625
} catch (e) {
2726
this.specPath = specPath;
2827
throw e;

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/generics/PatternedFieldsVisitor.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import stampit from 'stampit';
22
import { F as stubFalse } from 'ramda';
33
import { noop } from 'ramda-adjunct';
4-
import { ObjectElement, Element, MemberElement } from 'apidom';
4+
import { ObjectElement, Element, MemberElement, BREAK } from 'apidom';
55

66
import SpecificationVisitor from '../SpecificationVisitor';
77
import { isAsyncApiExtension } from '../../predicates';
8-
import { BREAK } from '../../../traversal/visitor';
98
import { appendMetadata } from '../../metadata';
109

1110
const PatternedFieldsJsonObjectVisitor = stampit(SpecificationVisitor, {
@@ -32,7 +31,7 @@ const PatternedFieldsJsonObjectVisitor = stampit(SpecificationVisitor, {
3231
this.specificationExtensionPredicate = specificationExtensionPredicate;
3332
},
3433
methods: {
35-
Object(objectElement: ObjectElement) {
34+
ObjectElement(objectElement: ObjectElement) {
3635
// @ts-ignore
3736
objectElement.forEach((value: Element, key: Element, memberElement: MemberElement) => {
3837
if (

0 commit comments

Comments
 (0)