| | |
| | | return new ctor(props); |
| | | } |
| | | |
| | | /** Makes a `void 0` expression. Use instead of AST_Undefined which may conflict |
| | | * with an existing variable called `undefined` */ |
| | | function make_void_0(orig) { |
| | | return make_node(AST_UnaryPrefix, orig, { |
| | | operator: "void", |
| | | expression: make_node(AST_Number, orig, { value: 0 }) |
| | | }); |
| | | } |
| | | |
| | | function push_uniq(array, el) { |
| | | if (!array.includes(el)) |
| | | array.push(el); |
| | |
| | | ret = _make_symbol(AST_SymbolRef); |
| | | break; |
| | | case "num": |
| | | ret = new AST_Number({ |
| | | start: tok, |
| | | end: tok, |
| | | value: tok.value, |
| | | raw: LATEST_RAW |
| | | }); |
| | | if (tok.value === Infinity) { |
| | | // very large float values are parsed as Infinity |
| | | ret = new AST_Infinity({ |
| | | start: tok, |
| | | end: tok, |
| | | }); |
| | | } else { |
| | | ret = new AST_Number({ |
| | | start: tok, |
| | | end: tok, |
| | | value: tok.value, |
| | | raw: LATEST_RAW |
| | | }); |
| | | } |
| | | break; |
| | | case "big_int": |
| | | ret = new AST_BigInt({ |
| | |
| | | |
| | | PARENS(AST_Sequence, function(output) { |
| | | var p = output.parent(); |
| | | return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4) |
| | | || p instanceof AST_Unary // !(foo, bar, baz) |
| | | || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8 |
| | | || p instanceof AST_VarDefLike // var a = (1, 2), b = a + a; ==> b == 4 |
| | | || p instanceof AST_PropAccess // (1, {foo:2}).foo or (1, {foo:2})["foo"] ==> 2 |
| | | || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ] |
| | | || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2 |
| | | || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30) |
| | | * ==> 20 (side effect, set a := 10 and b := 20) */ |
| | | || p instanceof AST_Arrow // x => (x, x) |
| | | || p instanceof AST_DefaultAssign // x => (x = (0, function(){})) |
| | | || p instanceof AST_Expansion // [...(a, b)] |
| | | || p instanceof AST_ForOf && this === p.object // for (e of (foo, bar)) {} |
| | | || p instanceof AST_Yield // yield (foo, bar) |
| | | || p instanceof AST_Export // export default (foo, bar) |
| | | return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4) |
| | | || p instanceof AST_Unary // !(foo, bar, baz) |
| | | || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8 |
| | | || p instanceof AST_VarDefLike // var a = (1, 2), b = a + a; ==> b == 4 |
| | | || p instanceof AST_PropAccess && this !== p.property // (1, {foo:2}).foo, (1, {foo:2})["foo"], not foo[1, 2] |
| | | || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ] |
| | | || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2 |
| | | || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30) |
| | | * ==> 20 (side effect, set a := 10 and b := 20) */ |
| | | || p instanceof AST_Arrow // x => (x, x) |
| | | || p instanceof AST_DefaultAssign // x => (x = (0, function(){})) |
| | | || p instanceof AST_Expansion // [...(a, b)] |
| | | || p instanceof AST_ForOf && this === p.object // for (e of (foo, bar)) {} |
| | | || p instanceof AST_Yield // yield (foo, bar) |
| | | || p instanceof AST_Export // export default (foo, bar) |
| | | ; |
| | | }); |
| | | |
| | |
| | | case "boolean": |
| | | return make_node(val ? AST_True : AST_False, orig); |
| | | case "undefined": |
| | | return make_node(AST_Undefined, orig); |
| | | return make_void_0(orig); |
| | | default: |
| | | if (val === null) { |
| | | return make_node(AST_Null, orig, { value: null }); |
| | |
| | | AST_Call.DEFMETHOD("is_callee_pure", function(compressor) { |
| | | if (compressor.option("unsafe")) { |
| | | var expr = this.expression; |
| | | var first_arg = (this.args && this.args[0] && this.args[0].evaluate(compressor)); |
| | | var first_arg; |
| | | if ( |
| | | expr.expression && expr.expression.name === "hasOwnProperty" && |
| | | (first_arg == null || first_arg.thedef && first_arg.thedef.undeclared) |
| | | ( |
| | | (first_arg = (this.args && this.args[0] && this.args[0].evaluate(compressor))) == null |
| | | || first_arg.thedef && first_arg.thedef.undeclared |
| | | ) |
| | | ) { |
| | | return false; |
| | | } |
| | |
| | | return value; |
| | | }); |
| | | |
| | | def_eval(AST_Chain, function (compressor, depth) { |
| | | const evaluated = this.expression._eval(compressor, depth, /*ast_chain=*/true); |
| | | return evaluated === nullish |
| | | ? undefined |
| | | : evaluated === this.expression |
| | | ? this |
| | | : evaluated; |
| | | }); |
| | | |
| | | const global_objs = { Array, Math, Number, Object, String }; |
| | | |
| | | const regexp_flags = new Set([ |
| | |
| | | "unicode", |
| | | ]); |
| | | |
| | | def_eval(AST_PropAccess, function (compressor, depth) { |
| | | let obj = this.expression._eval(compressor, depth + 1); |
| | | if (obj === nullish || (this.optional && obj == null)) return nullish; |
| | | def_eval(AST_PropAccess, function (compressor, depth, ast_chain) { |
| | | let obj = (ast_chain || this.property === "length" || compressor.option("unsafe")) |
| | | && this.expression._eval(compressor, depth + 1, ast_chain); |
| | | |
| | | if (ast_chain) { |
| | | if (obj === nullish || (this.optional && obj == null)) return nullish; |
| | | } |
| | | |
| | | // `.length` of strings and arrays is always safe |
| | | if (this.property === "length") { |
| | |
| | | return this; |
| | | }); |
| | | |
| | | def_eval(AST_Chain, function (compressor, depth) { |
| | | const evaluated = this.expression._eval(compressor, depth); |
| | | return evaluated === nullish |
| | | ? undefined |
| | | : evaluated === this.expression |
| | | ? this |
| | | : evaluated; |
| | | }); |
| | | |
| | | def_eval(AST_Call, function (compressor, depth) { |
| | | def_eval(AST_Call, function (compressor, depth, ast_chain) { |
| | | var exp = this.expression; |
| | | |
| | | const callee = exp._eval(compressor, depth); |
| | | if (callee === nullish || (this.optional && callee == null)) return nullish; |
| | | if (ast_chain) { |
| | | const callee = exp._eval(compressor, depth, ast_chain); |
| | | if (callee === nullish || (this.optional && callee == null)) return nullish; |
| | | } |
| | | |
| | | if (compressor.option("unsafe") && exp instanceof AST_PropAccess) { |
| | | var key = exp.property; |
| | | if (key instanceof AST_Node) { |
| | | key = key._eval(compressor, depth); |
| | | if (key === exp.property) |
| | | if (typeof key !== "string" && typeof key !== "number") |
| | | return this; |
| | | } |
| | | var val; |
| | |
| | | if (!is_pure_native_fn(e.name, key)) return this; |
| | | val = global_objs[e.name]; |
| | | } else { |
| | | val = e._eval(compressor, depth + 1); |
| | | val = e._eval(compressor, depth + 1, /* don't pass ast_chain (exponential work) */); |
| | | |
| | | if (val === e || !val) |
| | | return this; |
| | | if (!is_pure_native_method(val.constructor.name, key)) |
| | |
| | | if (def.fixed == null) { |
| | | var orig = def.orig[0]; |
| | | if (orig instanceof AST_SymbolFunarg || orig.name == "arguments") return false; |
| | | def.fixed = make_node(AST_Undefined, orig); |
| | | def.fixed = make_void_0(orig); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | if (d.orig.length > 1) return; |
| | | if (d.fixed === undefined && (!this.uses_arguments || tw.has_directive("use strict"))) { |
| | | d.fixed = function() { |
| | | return iife.args[i] || make_node(AST_Undefined, iife); |
| | | return iife.args[i] || make_void_0(iife); |
| | | }; |
| | | tw.loop_ids.set(d.id, tw.in_loop); |
| | | mark(tw, d, true); |
| | |
| | | } |
| | | } else { |
| | | if (!arg) { |
| | | arg = make_node(AST_Undefined, sym).transform(compressor); |
| | | arg = make_void_0(sym).transform(compressor); |
| | | } else if (arg instanceof AST_Lambda && arg.pinned() |
| | | || has_overlapping_symbol(fn, arg, fn_strict)) { |
| | | arg = null; |
| | |
| | | found = true; |
| | | if (node instanceof AST_VarDef) { |
| | | node.value = node.name instanceof AST_SymbolConst |
| | | ? make_node(AST_Undefined, node.value) // `const` always needs value. |
| | | ? make_void_0(node.value) // `const` always needs value. |
| | | : null; |
| | | return node; |
| | | } |
| | |
| | | var stat = statements[i]; |
| | | if (prev) { |
| | | if (stat instanceof AST_Exit) { |
| | | stat.value = cons_seq(stat.value || make_node(AST_Undefined, stat).transform(compressor)); |
| | | stat.value = cons_seq(stat.value || make_void_0(stat).transform(compressor)); |
| | | } else if (stat instanceof AST_For) { |
| | | if (!(stat.init instanceof AST_DefinitionsLike)) { |
| | | const abort = walk(prev.body, node => { |
| | |
| | | if (returned) { |
| | | returned = returned.clone(true); |
| | | } else { |
| | | returned = make_node(AST_Undefined, self); |
| | | returned = make_void_0(self); |
| | | } |
| | | const args = self.args.concat(returned); |
| | | return make_sequence(self, args).optimize(compressor); |
| | |
| | | && returned.name === fn.argnames[0].name |
| | | ) { |
| | | const replacement = |
| | | (self.args[0] || make_node(AST_Undefined)).optimize(compressor); |
| | | (self.args[0] || make_void_0()).optimize(compressor); |
| | | |
| | | let parent; |
| | | if ( |
| | |
| | | |
| | | const can_drop_this_call = is_regular_func && compressor.option("side_effects") && fn.body.every(is_empty); |
| | | if (can_drop_this_call) { |
| | | var args = self.args.concat(make_node(AST_Undefined, self)); |
| | | var args = self.args.concat(make_void_0(self)); |
| | | return make_sequence(self, args).optimize(compressor); |
| | | } |
| | | |
| | |
| | | return self; |
| | | |
| | | function return_value(stat) { |
| | | if (!stat) return make_node(AST_Undefined, self); |
| | | if (!stat) return make_void_0(self); |
| | | if (stat instanceof AST_Return) { |
| | | if (!stat.value) return make_node(AST_Undefined, self); |
| | | if (!stat.value) return make_void_0(self); |
| | | return stat.value.clone(true); |
| | | } |
| | | if (stat instanceof AST_SimpleStatement) { |
| | |
| | | } else { |
| | | var symbol = make_node(AST_SymbolVar, name, name); |
| | | name.definition().orig.push(symbol); |
| | | if (!value && in_loop) value = make_node(AST_Undefined, self); |
| | | if (!value && in_loop) value = make_void_0(self); |
| | | append_var(decls, expressions, symbol, value); |
| | | } |
| | | } |
| | |
| | | operator: "=", |
| | | logical: false, |
| | | left: sym, |
| | | right: make_node(AST_Undefined, name) |
| | | right: make_void_0(name), |
| | | })); |
| | | } |
| | | } |
| | |
| | | set_flag(exp.expression, SQUEEZED); |
| | | self.args = []; |
| | | } else { |
| | | return make_node(AST_Undefined, self); |
| | | return make_void_0(self); |
| | | } |
| | | } |
| | | }); |
| | |
| | | : make_node(AST_EmptyStatement, node); |
| | | } |
| | | return make_node(AST_SimpleStatement, node, { |
| | | body: node.value || make_node(AST_UnaryPrefix, node, { |
| | | operator: "void", |
| | | expression: make_node(AST_Number, node, { |
| | | value: 0 |
| | | }) |
| | | }) |
| | | body: node.value || make_void_0(node) |
| | | }); |
| | | } |
| | | if (node instanceof AST_Class || node instanceof AST_Lambda && node !== self) { |
| | |
| | | return make_node(self.body.CTOR, self, { |
| | | value: make_node(AST_Conditional, self, { |
| | | condition : self.condition, |
| | | consequent : self.body.value || make_node(AST_Undefined, self.body), |
| | | alternative : self.alternative.value || make_node(AST_Undefined, self.alternative) |
| | | consequent : self.body.value || make_void_0(self.body), |
| | | alternative : self.alternative.value || make_void_0(self.alternative), |
| | | }).transform(compressor) |
| | | }).optimize(compressor); |
| | | } |
| | |
| | | const value = condition.evaluate(compressor); |
| | | |
| | | if (value === 1 || value === true) { |
| | | return make_node(AST_Undefined, self); |
| | | return make_void_0(self).optimize(compressor); |
| | | } |
| | | } |
| | | } |
| | |
| | | ) { |
| | | return make_sequence(self, [e, make_node(AST_True, self)]).optimize(compressor); |
| | | } |
| | | // Short-circuit common `void 0` |
| | | if (self.operator === "void" && e instanceof AST_Number && e.value === 0) { |
| | | return unsafe_undefined_ref(self, compressor) || self; |
| | | } |
| | | var seq = self.lift_sequences(compressor); |
| | | if (seq !== self) { |
| | | return seq; |
| | |
| | | self.expression = e; |
| | | return self; |
| | | } else { |
| | | return make_node(AST_Undefined, self).optimize(compressor); |
| | | return make_void_0(self).optimize(compressor); |
| | | } |
| | | } |
| | | if (compressor.in_boolean_context()) { |
| | |
| | | if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor) |
| | | : !(expr instanceof AST_PropAccess && compressor.option("ie8"))) { |
| | | self.right = expr; |
| | | self.left = make_node(AST_Undefined, self.left).optimize(compressor); |
| | | self.left = make_void_0(self.left).optimize(compressor); |
| | | if (self.operator.length == 2) self.operator += "="; |
| | | } |
| | | } else if (compressor.option("typeofs") |
| | |
| | | if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor) |
| | | : !(expr instanceof AST_PropAccess && compressor.option("ie8"))) { |
| | | self.left = expr; |
| | | self.right = make_node(AST_Undefined, self.right).optimize(compressor); |
| | | self.right = make_void_0(self.right).optimize(compressor); |
| | | if (self.operator.length == 2) self.operator += "="; |
| | | } |
| | | } else if (self.left instanceof AST_SymbolRef |
| | |
| | | return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE; |
| | | } |
| | | |
| | | def_optimize(AST_Undefined, function(self, compressor) { |
| | | /** Apply the `unsafe_undefined` option: find a variable called `undefined` and turn `self` into a reference to it. */ |
| | | function unsafe_undefined_ref(self, compressor) { |
| | | if (compressor.option("unsafe_undefined")) { |
| | | var undef = find_variable(compressor, "undefined"); |
| | | if (undef) { |
| | |
| | | return ref; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | def_optimize(AST_Undefined, function(self, compressor) { |
| | | var symbolref = unsafe_undefined_ref(self, compressor); |
| | | if (symbolref) return symbolref; |
| | | var lhs = compressor.is_lhs(); |
| | | if (lhs && is_atomic(lhs, self)) return self; |
| | | return make_node(AST_UnaryPrefix, self, { |
| | | operator: "void", |
| | | expression: make_node(AST_Number, self, { |
| | | value: 0 |
| | | }) |
| | | }); |
| | | return make_void_0(self); |
| | | }); |
| | | |
| | | def_optimize(AST_Infinity, function(self, compressor) { |
| | |
| | | } |
| | | } |
| | | if (retValue instanceof AST_Expansion) break FLATTEN; |
| | | retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue; |
| | | retValue = retValue instanceof AST_Hole ? make_void_0(retValue) : retValue; |
| | | if (!flatten) values.unshift(retValue); |
| | | while (--i >= 0) { |
| | | var value = elements[i]; |
| | |
| | | if (parent instanceof AST_UnaryPrefix && parent.operator === "delete") { |
| | | return make_node_from_constant(0, self); |
| | | } |
| | | return make_node(AST_Undefined, self); |
| | | return make_void_0(self).optimize(compressor); |
| | | } |
| | | if ( |
| | | self.expression instanceof AST_PropAccess |
| | |
| | | "Array", |
| | | "ArrayBuffer", |
| | | "ArrayType", |
| | | "AsyncDisposableStack", |
| | | "Atomics", |
| | | "Attr", |
| | | "Audio", |
| | |
| | | "COPY_WRITE_BUFFER", |
| | | "COPY_WRITE_BUFFER_BINDING", |
| | | "COUNTER_STYLE_RULE", |
| | | "CSPViolationReportBody", |
| | | "CSS", |
| | | "CSS2Properties", |
| | | "CSSAnimation", |
| | |
| | | "CSSFontFaceRule", |
| | | "CSSFontFeatureValuesRule", |
| | | "CSSFontPaletteValuesRule", |
| | | "CSSFunctionDeclarations", |
| | | "CSSFunctionDescriptors", |
| | | "CSSFunctionRule", |
| | | "CSSGroupingRule", |
| | | "CSSImageValue", |
| | | "CSSImportRule", |
| | |
| | | "CSSSkewY", |
| | | "CSSStartingStyleRule", |
| | | "CSSStyleDeclaration", |
| | | "CSSStyleProperties", |
| | | "CSSStyleRule", |
| | | "CSSStyleSheet", |
| | | "CSSStyleValue", |
| | |
| | | "CookieStoreManager", |
| | | "CountQueuingStrategy", |
| | | "Counter", |
| | | "CreateMonitor", |
| | | "CreateType", |
| | | "Credential", |
| | | "CredentialsContainer", |
| | |
| | | "DeviceMotionEventAcceleration", |
| | | "DeviceMotionEventRotationRate", |
| | | "DeviceOrientationEvent", |
| | | "DevicePosture", |
| | | "DeviceProximityEvent", |
| | | "DeviceStorage", |
| | | "DeviceStorageChangeEvent", |
| | | "DigitalCredential", |
| | | "Directory", |
| | | "DisplayNames", |
| | | "DisposableStack", |
| | | "Document", |
| | | "DocumentFragment", |
| | | "DocumentPictureInPicture", |
| | |
| | | "DocumentTimeline", |
| | | "DocumentType", |
| | | "DragEvent", |
| | | "Duration", |
| | | "DurationFormat", |
| | | "DynamicsCompressorNode", |
| | | "E", |
| | |
| | | "FeedEntry", |
| | | "Fence", |
| | | "FencedFrameConfig", |
| | | "FetchLaterResult", |
| | | "File", |
| | | "FileError", |
| | | "FileList", |
| | |
| | | "FileSystemFileEntry", |
| | | "FileSystemFileHandle", |
| | | "FileSystemHandle", |
| | | "FileSystemObserver", |
| | | "FileSystemWritableFileStream", |
| | | "FinalizationRegistry", |
| | | "FindInPage", |
| | |
| | | "HTMLQuoteElement", |
| | | "HTMLScriptElement", |
| | | "HTMLSelectElement", |
| | | "HTMLSelectedContentElement", |
| | | "HTMLShadowElement", |
| | | "HTMLSlotElement", |
| | | "HTMLSourceElement", |
| | |
| | | "IDBMutableFile", |
| | | "IDBObjectStore", |
| | | "IDBOpenDBRequest", |
| | | "IDBRecord", |
| | | "IDBRequest", |
| | | "IDBTransaction", |
| | | "IDBVersionChangeEvent", |
| | |
| | | "InstallTrigger", |
| | | "InstallTriggerImpl", |
| | | "Instance", |
| | | "Instant", |
| | | "Int16Array", |
| | | "Int32Array", |
| | | "Int8Array", |
| | | "IntegrityViolationReportBody", |
| | | "Intent", |
| | | "InterestEvent", |
| | | "InternalError", |
| | | "IntersectionObserver", |
| | | "IntersectionObserverEntry", |
| | |
| | | "LUMINANCE", |
| | | "LUMINANCE_ALPHA", |
| | | "LanguageCode", |
| | | "LanguageDetector", |
| | | "LargestContentfulPaint", |
| | | "LaunchParams", |
| | | "LaunchQueue", |
| | |
| | | "NavigationCurrentEntryChangeEvent", |
| | | "NavigationDestination", |
| | | "NavigationHistoryEntry", |
| | | "NavigationPrecommitController", |
| | | "NavigationPreloadManager", |
| | | "NavigationTransition", |
| | | "Navigator", |
| | |
| | | "Notation", |
| | | "Notification", |
| | | "NotifyPaintEvent", |
| | | "Now", |
| | | "Number", |
| | | "NumberFormat", |
| | | "OBJECT_TYPE", |
| | |
| | | "OTPCredential", |
| | | "OUT_OF_MEMORY", |
| | | "Object", |
| | | "Observable", |
| | | "OfflineAudioCompletionEvent", |
| | | "OfflineAudioContext", |
| | | "OfflineResourceList", |
| | |
| | | "PhotoCapabilities", |
| | | "PictureInPictureEvent", |
| | | "PictureInPictureWindow", |
| | | "PlainDate", |
| | | "PlainDateTime", |
| | | "PlainMonthDay", |
| | | "PlainTime", |
| | | "PlainYearMonth", |
| | | "PlatformArch", |
| | | "PlatformInfo", |
| | | "PlatformNaclArch", |
| | |
| | | "QUOTA_ERR", |
| | | "QUOTA_EXCEEDED_ERR", |
| | | "QueryInterface", |
| | | "QuotaExceededError", |
| | | "R11F_G11F_B10F", |
| | | "R16F", |
| | | "R16I", |
| | |
| | | "ResizeObserverEntry", |
| | | "ResizeObserverSize", |
| | | "Response", |
| | | "RestrictionTarget", |
| | | "RuntimeError", |
| | | "SAMPLER_2D", |
| | | "SAMPLER_2D_ARRAY", |
| | |
| | | "ShadowRoot", |
| | | "SharedArrayBuffer", |
| | | "SharedStorage", |
| | | "SharedStorageAppendMethod", |
| | | "SharedStorageClearMethod", |
| | | "SharedStorageDeleteMethod", |
| | | "SharedStorageModifierMethod", |
| | | "SharedStorageSetMethod", |
| | | "SharedStorageWorklet", |
| | | "SharedWorker", |
| | | "SharingState", |
| | |
| | | "SnapEvent", |
| | | "SourceBuffer", |
| | | "SourceBufferList", |
| | | "SpeechGrammar", |
| | | "SpeechGrammarList", |
| | | "SpeechRecognition", |
| | | "SpeechRecognitionErrorEvent", |
| | | "SpeechRecognitionEvent", |
| | | "SpeechRecognitionPhrase", |
| | | "SpeechSynthesis", |
| | | "SpeechSynthesisErrorEvent", |
| | | "SpeechSynthesisEvent", |
| | |
| | | "StyleSheet", |
| | | "StyleSheetList", |
| | | "SubmitEvent", |
| | | "Subscriber", |
| | | "SubtleCrypto", |
| | | "Summarizer", |
| | | "SuppressedError", |
| | | "SuspendError", |
| | | "Suspending", |
| | | "Symbol", |
| | | "SyncManager", |
| | | "SyntaxError", |
| | |
| | | "TaskController", |
| | | "TaskPriorityChangeEvent", |
| | | "TaskSignal", |
| | | "Temporal", |
| | | "Text", |
| | | "TextDecoder", |
| | | "TextDecoderStream", |
| | |
| | | "TransformStream", |
| | | "TransformStreamDefaultController", |
| | | "TransitionEvent", |
| | | "Translator", |
| | | "TreeWalker", |
| | | "TrustedHTML", |
| | | "TrustedScript", |
| | |
| | | "ViewTransition", |
| | | "ViewTransitionTypeSet", |
| | | "ViewType", |
| | | "Viewport", |
| | | "VirtualKeyboard", |
| | | "VirtualKeyboardGeometryChangeEvent", |
| | | "VisibilityStateEntry", |
| | |
| | | "XRWebGLLayer", |
| | | "XSLTProcessor", |
| | | "ZERO", |
| | | "ZonedDateTime", |
| | | "ZoomSettings", |
| | | "ZoomSettingsMode", |
| | | "ZoomSettingsScope", |
| | |
| | | "activeSourceCount", |
| | | "activeTexture", |
| | | "activeVRDisplays", |
| | | "activeViewTransition", |
| | | "activityLog", |
| | | "actualBoundingBoxAscent", |
| | | "actualBoundingBoxDescent", |
| | |
| | | "actualBoundingBoxRight", |
| | | "adAuctionComponents", |
| | | "adAuctionHeaders", |
| | | "adapterInfo", |
| | | "add", |
| | | "addAll", |
| | | "addBehavior", |
| | |
| | | "addSearchEngine", |
| | | "addSourceBuffer", |
| | | "addStream", |
| | | "addTeardown", |
| | | "addTextTrack", |
| | | "addTrack", |
| | | "addTransceiver", |
| | |
| | | "addressModeU", |
| | | "addressModeV", |
| | | "addressModeW", |
| | | "adopt", |
| | | "adoptNode", |
| | | "adoptedCallback", |
| | | "adoptedStyleSheets", |
| | |
| | | "amplitude", |
| | | "ancestorOrigins", |
| | | "anchor", |
| | | "anchorName", |
| | | "anchorNode", |
| | | "anchorOffset", |
| | | "anchorScope", |
| | | "anchorSpace", |
| | | "anchors", |
| | | "and", |
| | |
| | | "animationTimingFunction", |
| | | "animationsPaused", |
| | | "anniversary", |
| | | "annotation", |
| | | "antialias", |
| | | "anticipatedRemoval", |
| | | "any", |
| | |
| | | "archive", |
| | | "areas", |
| | | "arguments", |
| | | "ariaActiveDescendantElement", |
| | | "ariaAtomic", |
| | | "ariaAutoComplete", |
| | | "ariaBrailleLabel", |
| | |
| | | "ariaColIndex", |
| | | "ariaColIndexText", |
| | | "ariaColSpan", |
| | | "ariaControlsElements", |
| | | "ariaCurrent", |
| | | "ariaDescribedByElements", |
| | | "ariaDescription", |
| | | "ariaDetailsElements", |
| | | "ariaDisabled", |
| | | "ariaErrorMessageElements", |
| | | "ariaExpanded", |
| | | "ariaFlowToElements", |
| | | "ariaHasPopup", |
| | | "ariaHidden", |
| | | "ariaInvalid", |
| | | "ariaKeyShortcuts", |
| | | "ariaLabel", |
| | | "ariaLabelledByElements", |
| | | "ariaLevel", |
| | | "ariaLive", |
| | | "ariaModal", |
| | | "ariaMultiLine", |
| | | "ariaMultiSelectable", |
| | | "ariaNotify", |
| | | "ariaOrientation", |
| | | "ariaOwnsElements", |
| | | "ariaPlaceholder", |
| | | "ariaPosInSet", |
| | | "ariaPressed", |
| | |
| | | "baseline-source", |
| | | "baselineShift", |
| | | "baselineSource", |
| | | "batchUpdate", |
| | | "battery", |
| | | "bday", |
| | | "before", |
| | |
| | | "blockDirection", |
| | | "blockSize", |
| | | "blockedURI", |
| | | "blockedURL", |
| | | "blocking", |
| | | "blockingDuration", |
| | | "blue", |
| | |
| | | "bold", |
| | | "bookmarks", |
| | | "booleanValue", |
| | | "boost", |
| | | "border", |
| | | "border-block", |
| | | "border-block-color", |
| | |
| | | "characterData", |
| | | "characterDataOldValue", |
| | | "characterSet", |
| | | "characterVariant", |
| | | "characteristic", |
| | | "charging", |
| | | "chargingTime", |
| | |
| | | "closeCode", |
| | | "closePath", |
| | | "closed", |
| | | "closedBy", |
| | | "closest", |
| | | "clz", |
| | | "clz32", |
| | |
| | | "columnWidth", |
| | | "columns", |
| | | "command", |
| | | "commandForElement", |
| | | "commands", |
| | | "commit", |
| | | "commitLoadTime", |
| | | "commitPreferences", |
| | | "commitStyles", |
| | | "committed", |
| | | "commonAncestorContainer", |
| | | "compact", |
| | | "compare", |
| | |
| | | "coneOuterAngle", |
| | | "coneOuterGain", |
| | | "config", |
| | | "configURL", |
| | | "configurable", |
| | | "configuration", |
| | | "configurationName", |
| | |
| | | "connectStart", |
| | | "connected", |
| | | "connectedCallback", |
| | | "connectedMoveCallback", |
| | | "connection", |
| | | "connectionInfo", |
| | | "connectionList", |
| | |
| | | "contentBoxSize", |
| | | "contentDocument", |
| | | "contentEditable", |
| | | "contentEncoding", |
| | | "contentHint", |
| | | "contentOverflow", |
| | | "contentRect", |
| | |
| | | "decodedBodySize", |
| | | "decoding", |
| | | "decodingInfo", |
| | | "decreaseZoomLevel", |
| | | "decrypt", |
| | | "default", |
| | | "defaultCharset", |
| | |
| | | "deprecatedReplaceInURN", |
| | | "deprecatedRunAdAuctionEnforcesKAnonymity", |
| | | "deprecatedURNToURL", |
| | | "depthActive", |
| | | "depthBias", |
| | | "depthBiasClamp", |
| | | "depthBiasSlopeScale", |
| | |
| | | "depthStencilAttachment", |
| | | "depthStencilFormat", |
| | | "depthStoreOp", |
| | | "depthType", |
| | | "depthUsage", |
| | | "depthWriteEnabled", |
| | | "deref", |
| | |
| | | "deviceMemory", |
| | | "devicePixelContentBoxSize", |
| | | "devicePixelRatio", |
| | | "devicePosture", |
| | | "deviceProtocol", |
| | | "deviceSubclass", |
| | | "deviceVersionMajor", |
| | |
| | | "displayName", |
| | | "displayWidth", |
| | | "dispose", |
| | | "disposeAsync", |
| | | "disposed", |
| | | "disposition", |
| | | "distanceModel", |
| | | "div", |
| | |
| | | "documentOrigins", |
| | | "documentPictureInPicture", |
| | | "documentURI", |
| | | "documentURL", |
| | | "documentUrl", |
| | | "documentUrls", |
| | | "dolphin", |
| | |
| | | "expandEntityReferences", |
| | | "expando", |
| | | "expansion", |
| | | "expectedContextLanguages", |
| | | "expectedImprovement", |
| | | "expectedInputLanguages", |
| | | "experiments", |
| | | "expiration", |
| | | "expirationTime", |
| | |
| | | "fence", |
| | | "fenceSync", |
| | | "fetch", |
| | | "fetchLater", |
| | | "fetchPriority", |
| | | "fetchStart", |
| | | "fftSize", |
| | |
| | | "filterResY", |
| | | "filterUnits", |
| | | "filters", |
| | | "finalResponseHeadersStart", |
| | | "finally", |
| | | "find", |
| | | "findIndex", |
| | |
| | | "finished", |
| | | "fireEvent", |
| | | "firesTouchEvents", |
| | | "first", |
| | | "firstChild", |
| | | "firstElementChild", |
| | | "firstInterimResponseStart", |
| | |
| | | "flexGrow", |
| | | "flexShrink", |
| | | "flexWrap", |
| | | "flip", |
| | | "flipX", |
| | | "flipY", |
| | | "float", |
| | |
| | | "fontVariantAlternates", |
| | | "fontVariantCaps", |
| | | "fontVariantEastAsian", |
| | | "fontVariantEmoji", |
| | | "fontVariantLigatures", |
| | | "fontVariantNumeric", |
| | | "fontVariantPosition", |
| | |
| | | "formatToParts", |
| | | "forms", |
| | | "forward", |
| | | "forwardWheel", |
| | | "forwardX", |
| | | "forwardY", |
| | | "forwardZ", |
| | |
| | | "getAdjacentText", |
| | | "getAll", |
| | | "getAllKeys", |
| | | "getAllRecords", |
| | | "getAllResponseHeaders", |
| | | "getAllowlistForFeature", |
| | | "getAnimations", |
| | |
| | | "getCharNumAtPosition", |
| | | "getCharacteristic", |
| | | "getCharacteristics", |
| | | "getClientCapabilities", |
| | | "getClientExtensionResults", |
| | | "getClientRect", |
| | | "getClientRects", |
| | | "getCoalescedEvents", |
| | | "getCompilationInfo", |
| | | "getComposedRanges", |
| | | "getCompositionAlternatives", |
| | | "getComputedStyle", |
| | | "getComputedTextLength", |
| | |
| | | "getNotifier", |
| | | "getNumberOfChars", |
| | | "getOffsetReferenceSpace", |
| | | "getOrInsert", |
| | | "getOrInsertComputed", |
| | | "getOutputTimestamp", |
| | | "getOverrideHistoryNavigationMode", |
| | | "getOverrideStyle", |
| | |
| | | "getParameter", |
| | | "getParameters", |
| | | "getParent", |
| | | "getPathData", |
| | | "getPathSegAtLength", |
| | | "getPathSegmentAtLength", |
| | | "getPermissionWarningsByManifest", |
| | | "getPhotoCapabilities", |
| | | "getPhotoSettings", |
| | |
| | | "getSupportedConstraints", |
| | | "getSupportedExtensions", |
| | | "getSupportedFormats", |
| | | "getSupportedZoomLevels", |
| | | "getSyncParameter", |
| | | "getSynchronizationSources", |
| | | "getTags", |
| | |
| | | "highWaterMark", |
| | | "highlight", |
| | | "highlights", |
| | | "highlightsFromPoint", |
| | | "hint", |
| | | "hints", |
| | | "history", |
| | |
| | | "hwTimestamp", |
| | | "hyphenate-character", |
| | | "hyphenateCharacter", |
| | | "hyphenateLimitChars", |
| | | "hyphens", |
| | | "hypot", |
| | | "i18n", |
| | |
| | | "incomingHighWaterMark", |
| | | "incomingMaxAge", |
| | | "incomingUnidirectionalStreams", |
| | | "increaseZoomLevel", |
| | | "incremental", |
| | | "indeterminate", |
| | | "index", |
| | |
| | | "inputEncoding", |
| | | "inputMethod", |
| | | "inputMode", |
| | | "inputQuota", |
| | | "inputSource", |
| | | "inputSources", |
| | | "inputType", |
| | |
| | | "insetInline", |
| | | "insetInlineEnd", |
| | | "insetInlineStart", |
| | | "inspect", |
| | | "install", |
| | | "installing", |
| | | "instanceRoot", |
| | |
| | | "int32", |
| | | "int8", |
| | | "integrity", |
| | | "interactionCount", |
| | | "interactionId", |
| | | "interactionMode", |
| | | "intercept", |
| | | "interestForElement", |
| | | "interfaceClass", |
| | | "interfaceName", |
| | | "interfaceNumber", |
| | |
| | | "isEnabled", |
| | | "isEqual", |
| | | "isEqualNode", |
| | | "isError", |
| | | "isExtended", |
| | | "isExtensible", |
| | | "isExternalCTAP2SecurityKeySupported", |
| | |
| | | "language", |
| | | "languages", |
| | | "largeArcFlag", |
| | | "last", |
| | | "lastChild", |
| | | "lastElementChild", |
| | | "lastError", |
| | |
| | | "math-depth", |
| | | "math-style", |
| | | "mathDepth", |
| | | "mathShift", |
| | | "mathStyle", |
| | | "matrix", |
| | | "matrixTransform", |
| | |
| | | "maxWidth", |
| | | "maximumLatency", |
| | | "measure", |
| | | "measureInputUsage", |
| | | "measureText", |
| | | "media", |
| | | "mediaCapabilities", |
| | |
| | | "module", |
| | | "mount", |
| | | "move", |
| | | "moveBefore", |
| | | "moveBy", |
| | | "moveEnd", |
| | | "moveFirst", |
| | |
| | | "objectStoreNames", |
| | | "objectType", |
| | | "observe", |
| | | "observedAttributes", |
| | | "occlusionQuerySet", |
| | | "of", |
| | | "off", |
| | |
| | | "onclick", |
| | | "onclose", |
| | | "onclosing", |
| | | "oncommand", |
| | | "oncompassneedscalibration", |
| | | "oncomplete", |
| | | "oncompositionend", |
| | |
| | | "ondisplay", |
| | | "ondispose", |
| | | "ondownloading", |
| | | "ondownloadprogress", |
| | | "ondrag", |
| | | "ondragend", |
| | | "ondragenter", |
| | |
| | | "onwebkittransitionend", |
| | | "onwheel", |
| | | "onzoom", |
| | | "onzoomlevelchange", |
| | | "opacity", |
| | | "open", |
| | | "openCursor", |
| | |
| | | "originAgentCluster", |
| | | "originalPolicy", |
| | | "originalTarget", |
| | | "ornaments", |
| | | "orphans", |
| | | "os", |
| | | "oscpu", |
| | |
| | | "outlineWidth", |
| | | "outputBuffer", |
| | | "outputChannelCount", |
| | | "outputLanguage", |
| | | "outputLatency", |
| | | "outputs", |
| | | "overallProgress", |
| | | "overflow", |
| | | "overflow-anchor", |
| | | "overflow-block", |
| | |
| | | "paint-order", |
| | | "paintOrder", |
| | | "paintRequests", |
| | | "paintTime", |
| | | "paintType", |
| | | "paintWorklet", |
| | | "palette", |
| | |
| | | "patternUnits", |
| | | "pause", |
| | | "pauseAnimations", |
| | | "pauseDepthSensing", |
| | | "pauseDuration", |
| | | "pauseOnExit", |
| | | "pauseProfilers", |
| | |
| | | "phoneticFamilyName", |
| | | "phoneticGivenName", |
| | | "photo", |
| | | "phrase", |
| | | "phrases", |
| | | "pictureInPictureChild", |
| | | "pictureInPictureElement", |
| | | "pictureInPictureEnabled", |
| | |
| | | "pitch", |
| | | "pixelBottom", |
| | | "pixelDepth", |
| | | "pixelFormat", |
| | | "pixelHeight", |
| | | "pixelLeft", |
| | | "pixelRight", |
| | |
| | | "positionAlign", |
| | | "positionAnchor", |
| | | "positionArea", |
| | | "positionTry", |
| | | "positionTryFallbacks", |
| | | "positionVisibility", |
| | | "positionX", |
| | | "positionY", |
| | | "positionZ", |
| | |
| | | "presentation", |
| | | "presentationArea", |
| | | "presentationStyle", |
| | | "presentationTime", |
| | | "preserveAlpha", |
| | | "preserveAspectRatio", |
| | | "preserveAspectRatioString", |
| | |
| | | "probeSpace", |
| | | "process", |
| | | "processIceMessage", |
| | | "processLocally", |
| | | "processingEnd", |
| | | "processingStart", |
| | | "processorOptions", |
| | |
| | | "profiles", |
| | | "projectionMatrix", |
| | | "promise", |
| | | "promising", |
| | | "prompt", |
| | | "properties", |
| | | "propertyIsEnumerable", |
| | |
| | | "querySet", |
| | | "queue", |
| | | "queueMicrotask", |
| | | "quota", |
| | | "quote", |
| | | "quotes", |
| | | "r", |
| | |
| | | "reportError", |
| | | "reportEvent", |
| | | "reportId", |
| | | "reportOnly", |
| | | "reportValidity", |
| | | "request", |
| | | "requestAdapter", |
| | |
| | | "requestVideoFrameCallback", |
| | | "requestViewportScale", |
| | | "requestWindow", |
| | | "requested", |
| | | "requestingWindow", |
| | | "requireInteraction", |
| | | "required", |
| | |
| | | "resetLatency", |
| | | "resetPose", |
| | | "resetTransform", |
| | | "resetZoomLevel", |
| | | "resizable", |
| | | "resize", |
| | | "resizeBy", |
| | |
| | | "restartAfterDelay", |
| | | "restartIce", |
| | | "restore", |
| | | "restrictTo", |
| | | "result", |
| | | "resultIndex", |
| | | "resultType", |
| | | "results", |
| | | "resume", |
| | | "resumeDepthSensing", |
| | | "resumeProfilers", |
| | | "resumeTransformFeedback", |
| | | "retry", |
| | | "returnType", |
| | | "returnValue", |
| | | "rev", |
| | | "reverse", |
| | |
| | | "searchParams", |
| | | "sectionRowIndex", |
| | | "secureConnectionStart", |
| | | "securePaymentConfirmationAvailability", |
| | | "security", |
| | | "seed", |
| | | "seek", |
| | | "seekToNextFrame", |
| | | "seekable", |
| | | "seeking", |
| | | "segments", |
| | | "select", |
| | | "selectAllChildren", |
| | | "selectAlternateInterface", |
| | |
| | | "setPaint", |
| | | "setParameter", |
| | | "setParameters", |
| | | "setPathData", |
| | | "setPeriodicWave", |
| | | "setPipeline", |
| | | "setPointerCapture", |
| | |
| | | "shapeOutside", |
| | | "shapeRendering", |
| | | "share", |
| | | "sharedContext", |
| | | "sharedStorage", |
| | | "sharedStorageWritable", |
| | | "sheet", |
| | |
| | | "sidebarAction", |
| | | "sign", |
| | | "signal", |
| | | "signalAllAcceptedCredentials", |
| | | "signalCurrentUserDetails", |
| | | "signalUnknownCredential", |
| | | "signalingState", |
| | | "signature", |
| | | "silent", |
| | |
| | | "sourceBuffers", |
| | | "sourceCapabilities", |
| | | "sourceCharPosition", |
| | | "sourceElement", |
| | | "sourceFile", |
| | | "sourceFunctionName", |
| | | "sourceIndex", |
| | | "sourceLanguage", |
| | | "sourceMap", |
| | | "sourceURL", |
| | | "sources", |
| | |
| | | "styleSheet", |
| | | "styleSheetSets", |
| | | "styleSheets", |
| | | "styleset", |
| | | "stylistic", |
| | | "sub", |
| | | "subarray", |
| | | "subgroupMaxSize", |
| | | "subgroupMinSize", |
| | | "subject", |
| | | "submit", |
| | | "submitFrame", |
| | |
| | | "subtree", |
| | | "suffix", |
| | | "suffixes", |
| | | "sumPrecise", |
| | | "summarize", |
| | | "summarizeStreaming", |
| | | "summary", |
| | | "sup", |
| | | "supported", |
| | |
| | | "supportsFiber", |
| | | "supportsSession", |
| | | "supportsText", |
| | | "suppressed", |
| | | "surfaceScale", |
| | | "surroundContents", |
| | | "suspend", |
| | |
| | | "svw", |
| | | "swapCache", |
| | | "swapNode", |
| | | "swash", |
| | | "sweepFlag", |
| | | "switchMap", |
| | | "symbols", |
| | | "symmetricDifference", |
| | | "sync", |
| | |
| | | "take", |
| | | "takePhoto", |
| | | "takeRecords", |
| | | "takeUntil", |
| | | "tan", |
| | | "tangentialPressure", |
| | | "tanh", |
| | | "target", |
| | | "targetAddressSpace", |
| | | "targetElement", |
| | | "targetLanguage", |
| | | "targetRayMode", |
| | | "targetRaySpace", |
| | | "targetTouches", |
| | |
| | | "textDecoration", |
| | | "textDecorationBlink", |
| | | "textDecorationColor", |
| | | "textDecorationInset", |
| | | "textDecorationLine", |
| | | "textDecorationLineThrough", |
| | | "textDecorationNone", |
| | |
| | | "toString", |
| | | "toStringTag", |
| | | "toSum", |
| | | "toTemporalInstant", |
| | | "toTimeString", |
| | | "toUTCString", |
| | | "toUpperCase", |
| | |
| | | "transitionTimingFunction", |
| | | "translate", |
| | | "translateSelf", |
| | | "translateStreaming", |
| | | "translationX", |
| | | "translationY", |
| | | "transport", |
| | |
| | | "usbVersionMajor", |
| | | "usbVersionMinor", |
| | | "usbVersionSubminor", |
| | | "use", |
| | | "useCurrentView", |
| | | "useMap", |
| | | "useProgram", |
| | |
| | | "user-select", |
| | | "userActivation", |
| | | "userAgent", |
| | | "userAgentAllowsProtocol", |
| | | "userAgentData", |
| | | "userChoice", |
| | | "userHandle", |
| | |
| | | "viewTarget", |
| | | "viewTargetString", |
| | | "viewTransition", |
| | | "viewTransitionClass", |
| | | "viewTransitionName", |
| | | "viewport", |
| | | "viewportAnchorX", |
| | | "viewportAnchorY", |
| | |
| | | "wheelDelta", |
| | | "wheelDeltaX", |
| | | "wheelDeltaY", |
| | | "when", |
| | | "whenDefined", |
| | | "which", |
| | | "white-space", |
| | |
| | | "wordBreak", |
| | | "wordSpacing", |
| | | "wordWrap", |
| | | "workerCacheLookupStart", |
| | | "workerFinalSourceType", |
| | | "workerMatchedSourceType", |
| | | "workerRouterEvaluationStart", |
| | | "workerStart", |
| | | "worklet", |
| | | "wow64", |
| | |
| | | "zIndex", |
| | | "zoom", |
| | | "zoomAndPan", |
| | | "zoomLevel", |
| | | "zoomRectScreen", |
| | | ]; |
| | | |