Skip to content

Commit bb0ff1e

Browse files
committed
SVGUnitTypes is not a mixin anymore
1 parent 8100a39 commit bb0ff1e

File tree

3 files changed

+56
-35
lines changed

3 files changed

+56
-35
lines changed

baselines/dom.generated.d.ts

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11591,7 +11591,7 @@ declare var SVGCircleElement: {
1159111591
new(): SVGCircleElement;
1159211592
};
1159311593

11594-
interface SVGClipPathElement extends SVGGraphicsElement, SVGUnitTypes {
11594+
interface SVGClipPathElement extends SVGGraphicsElement {
1159511595
readonly clipPathUnits: SVGAnimatedEnumeration;
1159611596
addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1159711597
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
@@ -11602,9 +11602,6 @@ interface SVGClipPathElement extends SVGGraphicsElement, SVGUnitTypes {
1160211602
declare var SVGClipPathElement: {
1160311603
prototype: SVGClipPathElement;
1160411604
new(): SVGClipPathElement;
11605-
readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
11606-
readonly SVG_UNIT_TYPE_UNKNOWN: number;
11607-
readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
1160811605
};
1160911606

1161011607
interface SVGComponentTransferFunctionElement extends SVGElement {
@@ -12176,7 +12173,7 @@ declare var SVGFETurbulenceElement: {
1217612173
readonly SVG_TURBULENCE_TYPE_UNKNOWN: number;
1217712174
};
1217812175

12179-
interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGURIReference {
12176+
interface SVGFilterElement extends SVGElement, SVGURIReference {
1218012177
/** @deprecated */
1218112178
readonly filterResX: SVGAnimatedInteger;
1218212179
/** @deprecated */
@@ -12198,9 +12195,6 @@ interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGURIReference {
1219812195
declare var SVGFilterElement: {
1219912196
prototype: SVGFilterElement;
1220012197
new(): SVGFilterElement;
12201-
readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
12202-
readonly SVG_UNIT_TYPE_UNKNOWN: number;
12203-
readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
1220412198
};
1220512199

1220612200
interface SVGFilterPrimitiveStandardAttributes {
@@ -12261,7 +12255,7 @@ declare var SVGGeometryElement: {
1226112255
new(): SVGGeometryElement;
1226212256
};
1226312257

12264-
interface SVGGradientElement extends SVGElement, SVGUnitTypes, SVGURIReference {
12258+
interface SVGGradientElement extends SVGElement, SVGURIReference {
1226512259
readonly gradientTransform: SVGAnimatedTransformList;
1226612260
readonly gradientUnits: SVGAnimatedEnumeration;
1226712261
readonly spreadMethod: SVGAnimatedEnumeration;
@@ -12282,9 +12276,6 @@ declare var SVGGradientElement: {
1228212276
readonly SVG_SPREADMETHOD_REFLECT: number;
1228312277
readonly SVG_SPREADMETHOD_REPEAT: number;
1228412278
readonly SVG_SPREADMETHOD_UNKNOWN: number;
12285-
readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
12286-
readonly SVG_UNIT_TYPE_UNKNOWN: number;
12287-
readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
1228812279
};
1228912280

1229012281
interface SVGGraphicsElement extends SVGElement, SVGTests {
@@ -12439,7 +12430,7 @@ declare var SVGMarkerElement: {
1243912430
readonly SVG_MARKER_ORIENT_UNKNOWN: number;
1244012431
};
1244112432

12442-
interface SVGMaskElement extends SVGElement, SVGTests, SVGUnitTypes {
12433+
interface SVGMaskElement extends SVGElement, SVGTests {
1244312434
readonly height: SVGAnimatedLength;
1244412435
readonly maskContentUnits: SVGAnimatedEnumeration;
1244512436
readonly maskUnits: SVGAnimatedEnumeration;
@@ -12455,9 +12446,6 @@ interface SVGMaskElement extends SVGElement, SVGTests, SVGUnitTypes {
1245512446
declare var SVGMaskElement: {
1245612447
prototype: SVGMaskElement;
1245712448
new(): SVGMaskElement;
12458-
readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
12459-
readonly SVG_UNIT_TYPE_UNKNOWN: number;
12460-
readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
1246112449
};
1246212450

1246312451
interface SVGMetadataElement extends SVGElement {
@@ -12831,7 +12819,7 @@ declare var SVGPathSegMovetoRel: {
1283112819
new(): SVGPathSegMovetoRel;
1283212820
};
1283312821

12834-
interface SVGPatternElement extends SVGElement, SVGTests, SVGUnitTypes, SVGFitToViewBox, SVGURIReference {
12822+
interface SVGPatternElement extends SVGElement, SVGTests, SVGFitToViewBox, SVGURIReference {
1283512823
readonly height: SVGAnimatedLength;
1283612824
readonly patternContentUnits: SVGAnimatedEnumeration;
1283712825
readonly patternTransform: SVGAnimatedTransformList;
@@ -12848,9 +12836,6 @@ interface SVGPatternElement extends SVGElement, SVGTests, SVGUnitTypes, SVGFitTo
1284812836
declare var SVGPatternElement: {
1284912837
prototype: SVGPatternElement;
1285012838
new(): SVGPatternElement;
12851-
readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number;
12852-
readonly SVG_UNIT_TYPE_UNKNOWN: number;
12853-
readonly SVG_UNIT_TYPE_USERSPACEONUSE: number;
1285412839
};
1285512840

1285612841
interface SVGPointList {

inputfiles/removedTypes.json

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@
125125
}
126126
}
127127
},
128+
"SVGClipPathElement": {
129+
"implements": [
130+
"SVGUnitTypes"
131+
]
132+
},
128133
"SVGElementInstance": {
129134
"properties": {
130135
"property": {
@@ -137,7 +142,33 @@
137142
}
138143
}
139144
},
145+
"SVGFilterElement": {
146+
"implements": [
147+
"SVGUnitTypes"
148+
]
149+
},
150+
"SVGGradientElement": {
151+
"implements": [
152+
"SVGUnitTypes"
153+
]
154+
},
155+
"SVGMaskElement": {
156+
"implements": [
157+
"SVGUnitTypes"
158+
]
159+
},
160+
"SVGMatrix": null,
161+
"SVGPatternElement": {
162+
"implements": [
163+
"SVGUnitTypes"
164+
]
165+
},
166+
"SVGPoint": null,
167+
"SVGRect": null,
140168
"SVGSVGElement": {
169+
"implements": [
170+
"SVGUnitTypes"
171+
],
141172
"properties": {
142173
"property": {
143174
"onabort": null,
@@ -147,9 +178,11 @@
147178
}
148179
}
149180
},
150-
"SVGMatrix": null,
151-
"SVGPoint": null,
152-
"SVGRect": null,
181+
"SVGViewElement": {
182+
"implements": [
183+
"SVGUnitTypes"
184+
]
185+
},
153186
"WebKitCSSMatrix": null,
154187
"WebKitDirectoryEntry": null,
155188
"WebKitDirectoryReader": null,
@@ -198,9 +231,7 @@
198231
},
199232
"typedefs": {
200233
"typedef": [
201-
{
202-
"new-type": "ArrayBufferView"
203-
}
234+
"ArrayBufferView"
204235
]
205236
}
206237
}

src/index.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,27 @@ function emitDom() {
113113
emitES6DomIterators(webidl, tsWebIteratorsOutput);
114114

115115
function prune(obj: Browser.WebIdl, template: Partial<Browser.WebIdl>): Browser.WebIdl {
116-
const result = filterByNull(obj, template);
117-
if (obj.typedefs) result.typedefs!.typedef = obj.typedefs.typedef.filter(t => !(template.typedefs && template.typedefs.typedef.find(o => o["new-type"] === t["new-type"])));
118-
119-
return result;
116+
return filterByNull(obj, template);
120117

121118
function filterByNull(obj: any, template: any) {
122119
if (!template) return obj;
123120
const filtered: any = {};
124121
for (const k in obj) {
125-
if (template.hasOwnProperty(k) && !Array.isArray(template[k])) {
126-
if (template[k] !== null) {
127-
filtered[k] = filterByNull(obj[k], template[k]);
122+
if (!template.hasOwnProperty(k)) {
123+
filtered[k] = obj[k];
124+
}
125+
else if (Array.isArray(template[k])) {
126+
if (!Array.isArray(obj[k])) {
127+
throw new Error(`Removal template ${k} is an array but the original field is not`);
128128
}
129+
// template should include strings
130+
filtered[k] = obj[k].filter((item: any) => {
131+
const name = typeof item === "string" ? item : (item.name || item["new-type"]);
132+
return !template[k].includes(name);
133+
});
129134
}
130-
else {
131-
filtered[k] = obj[k];
135+
else if (template[k] !== null) {
136+
filtered[k] = filterByNull(obj[k], template[k]);
132137
}
133138
}
134139
return filtered;

0 commit comments

Comments
 (0)