5b7e4b4394
The `manualLowercase` & `manualUppercase` functions were inspired by Google Caja code which worked around Java issues where problems with `toLowerCase` working differently in Turkish locale are well known[1]. In JavaScript `String#toLowerCase` is defined in the ECMAScript spec and all implementations are required to lowercase I in the same way, regardless of the current locale. Differences may (and do) happen only in `String#toLocaleLowerCase`. The mirroring of the Java workarounds in Caja was needed due to an old Rhino bug. Rhino is a pre-Nashorn JavaScript interpreter written in Java and it used to delegate `String.prototype.toLowerCase` to `java.lang.String.toLowerCase`. This has since been long fixed. Other libraries doing string normalization, like jQuery or DOMPurify don't apply special lowercasing logic in a Turkish environment. Therefore, the `manualLowercase` & `manualUppercase` logic is dead code in AngularJS and can be removed. Also, the `manualLowercase` & `manualUppercase` functions are incomplete; they only lowercase ASCII characters which is different to native `String#toLowerCase`. Since those functions are used in many places in the library, they would break a lot of code. For example, the lowercase filter would not lowercase Ω to ω but leave it as Ω. [1] https://garygregory.wordpress.com/2015/11/03/java-lowercase-conversion-turkey/ Closes #15890 Ref #11387
183 lines
4.1 KiB
JSON
183 lines
4.1 KiB
JSON
{
|
|
"root": true,
|
|
"extends": "../.eslintrc-browser.json",
|
|
|
|
"env": {
|
|
"jasmine": true
|
|
},
|
|
|
|
"rules": {
|
|
// Some rules are not that important in tests and conflict with
|
|
// Jasmine or would make it easier to write some tests; we disable
|
|
// those ones here.
|
|
"no-invalid-this": "off",
|
|
"no-throw-literal": "off",
|
|
"no-unused-vars": "off"
|
|
},
|
|
|
|
"globals": {
|
|
/* browser */
|
|
"ArrayBuffer": false,
|
|
"Uint8Array": false,
|
|
|
|
/* auto/injector.js */
|
|
"createInjector": false,
|
|
|
|
/* angular.js */
|
|
"angular": false,
|
|
"minErrConfig": false,
|
|
"errorHandlingConfig": false,
|
|
"msie": false,
|
|
"jqLite": false,
|
|
"jQuery": false,
|
|
"slice": false,
|
|
"push": false,
|
|
"toString": false,
|
|
"ngMinErr": false,
|
|
"_angular": false,
|
|
"angularModule": false,
|
|
"nodeName_": false,
|
|
"uid": false,
|
|
"toDebugString": false,
|
|
"serializeObject": false,
|
|
|
|
"lowercase": false,
|
|
"uppercase": false,
|
|
"isArrayLike": false,
|
|
"forEach": false,
|
|
"reverseParams": false,
|
|
"nextUid": false,
|
|
"setHashKey": false,
|
|
"extend": false,
|
|
"merge": false,
|
|
"toInt": false,
|
|
"inherit": false,
|
|
"noop": false,
|
|
"identity": false,
|
|
"valueFn": false,
|
|
"isUndefined": false,
|
|
"isDefined": false,
|
|
"isObject": false,
|
|
"isString": false,
|
|
"isNumber": false,
|
|
"isNumberNaN": false,
|
|
"isDate": false,
|
|
"isError": false,
|
|
"isArray": false,
|
|
"isFunction": false,
|
|
"isRegExp": false,
|
|
"isWindow": false,
|
|
"isScope": false,
|
|
"isFile": false,
|
|
"isBlob": false,
|
|
"isBoolean": false,
|
|
"trim": false,
|
|
"isElement": false,
|
|
"isPromiseLike": false,
|
|
"makeMap": false,
|
|
"map": false,
|
|
"includes": false,
|
|
"arrayRemove": false,
|
|
"copy": false,
|
|
"shallowCopy": false,
|
|
"equals": false,
|
|
"csp": false,
|
|
"jq": false,
|
|
"concat": false,
|
|
"sliceArgs": false,
|
|
"bind": false,
|
|
"toJsonReplacer": false,
|
|
"toJson": false,
|
|
"fromJson": false,
|
|
"startingTag": false,
|
|
"tryDecodeURIComponent": false,
|
|
"parseKeyValue": false,
|
|
"toKeyValue": false,
|
|
"encodeUriSegment": false,
|
|
"encodeUriQuery": false,
|
|
"angularInit": false,
|
|
"bootstrap": false,
|
|
"snake_case": false,
|
|
"bindJQuery": false,
|
|
"assertArg": false,
|
|
"assertArgFn": false,
|
|
"assertNotHasOwnProperty": false,
|
|
"getter": false,
|
|
"getBlockNodes": false,
|
|
"createMap": false,
|
|
"VALIDITY_STATE_PROPERTY": true,
|
|
"allowAutoBootstrap": false,
|
|
"isAutoBootstrapAllowed": false,
|
|
|
|
/* AngularPublic.js */
|
|
"version": false,
|
|
"publishExternalAPI": false,
|
|
|
|
/* minerr.js */
|
|
"minErr": false,
|
|
|
|
/* loader.js */
|
|
"setupModuleLoader": false,
|
|
|
|
/* jqLite.js */
|
|
"BOOLEAN_ATTR": false,
|
|
"jqNextId": false,
|
|
"kebabToCamel": false,
|
|
"fnCamelCaseReplace": false,
|
|
"jqLitePatchJQueryRemove": false,
|
|
"JQLite": false,
|
|
"jqLiteClone": false,
|
|
"jqLiteDealoc": false,
|
|
"jqLiteOff": false,
|
|
"jqLiteRemoveData": false,
|
|
"jqLiteExpandoStore": false,
|
|
"jqLiteData": false,
|
|
"jqLiteHasClass": false,
|
|
"jqLiteRemoveClass": false,
|
|
"jqLiteAddClass": false,
|
|
"jqLiteAddNodes": false,
|
|
"jqLiteController": false,
|
|
"jqLiteInheritedData": false,
|
|
"getBooleanAttrName": false,
|
|
"createEventHandler": false,
|
|
"JQLitePrototype": false,
|
|
"jqLiteDocumentLoaded": false,
|
|
|
|
/* apis.js */
|
|
"hashKey": false,
|
|
"NgMapShim": false,
|
|
|
|
/* urlUtils.js */
|
|
"urlResolve": false,
|
|
"urlIsSameOrigin": false,
|
|
"urlIsSameOriginAsBaseUrl": false,
|
|
"urlIsAllowedOriginFactory": false,
|
|
|
|
/* karma */
|
|
"dump": false,
|
|
"they": false,
|
|
"fthey": false,
|
|
"xthey": false,
|
|
"assertCompareNodes": false,
|
|
|
|
/* testabilityPatch / matchers */
|
|
"inject": false,
|
|
"module": false,
|
|
"dealoc": false,
|
|
"_jQuery": false,
|
|
"_jqLiteMode": false,
|
|
"sortedHtml": false,
|
|
"childrenTagsOf": false,
|
|
"assertHidden": false,
|
|
"assertVisible": false,
|
|
"provideLog": false,
|
|
"spyOnlyCallsWithArgs": false,
|
|
"createMockStyleSheet": false,
|
|
"browserSupportsCssAnimations": false,
|
|
"browserTrigger": false,
|
|
"jqLiteCacheSize": false,
|
|
"createAsync": false,
|
|
"support": false
|
|
}
|
|
}
|