@amazon-devices/eslint-plugin-kepler 0.1.8 → 0.1.11
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/README.md +13 -11
- package/dist/formatters/default.js +8 -189
- package/dist/formatters/default.js.LICENSE.txt +1 -0
- package/dist/index.js +1 -107
- package/package.json +1 -1
- package/dist/formatters/KeplerReport.js +0 -40
- package/dist/metrics/Metrics.js +0 -69
- package/dist/metrics/TelemetryService.js +0 -48
- package/dist/rules/apiPrivileges/ApiPrivilegeStateCheck.js +0 -102
- package/dist/rules/apiPrivileges/ApiPrivilegesCheck.js +0 -67
- package/dist/rules/apiPrivileges/apiPermissionsNeeded.js +0 -58
- package/dist/rules/apiPrivileges/manifestHelper.js +0 -44
- package/dist/rules/backwardCompatibility/BackwardCompatibility.js +0 -119
- package/dist/rules/backwardCompatibility/BackwardCompatibilityCopyOnPack.js +0 -101
- package/dist/rules/backwardCompatibility/BackwardCompatibilitySysconfCheck.js +0 -73
- package/dist/rules/performance/Animated.js +0 -64
- package/dist/rules/performance/CheckSubscription.js +0 -150
- package/dist/rules/performance/DetectSplashScreen.js +0 -62
- package/dist/rules/performance/DetectUseReportFullyDrawn.js +0 -50
- package/dist/rules/performance/FlatList.js +0 -39
- package/dist/rules/systemDistributedLibs/SDLPackageVersionCheck.js +0 -136
- package/dist/rules/systemDistributedLibs/SDLPackageVersionCheckImports.js +0 -58
- package/dist/rules/systemDistributedLibs/sdlHelpers.js +0 -232
- package/dist/rules/systemDistributedLibs/sdlRuleMessages.js +0 -25
- package/dist/state/KeplerESLintPluginStateManager.js +0 -94
- package/dist/utils/Constants.js +0 -40
- package/dist/utils/PackageUtils.js +0 -50
- package/dist/utils/RuleUtils.js +0 -128
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
package/dist/index.js
CHANGED
|
@@ -1,107 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Animated = require("./rules/performance/Animated");
|
|
4
|
-
var _CheckSubscription = require("./rules/performance/CheckSubscription");
|
|
5
|
-
var _DetectSplashScreen = require("./rules/performance/DetectSplashScreen");
|
|
6
|
-
var _DetectUseReportFullyDrawn = require("./rules/performance/DetectUseReportFullyDrawn");
|
|
7
|
-
var _FlatList = require("./rules/performance/FlatList");
|
|
8
|
-
var _SDLPackageVersionCheck = require("./rules/systemDistributedLibs/SDLPackageVersionCheck");
|
|
9
|
-
var _SDLPackageVersionCheckImports = require("./rules/systemDistributedLibs/SDLPackageVersionCheckImports");
|
|
10
|
-
var _ApiPrivilegesCheck = require("./rules/apiPrivileges/ApiPrivilegesCheck");
|
|
11
|
-
var _ApiPrivilegeStateCheck = require("./rules/apiPrivileges/ApiPrivilegeStateCheck");
|
|
12
|
-
var _BackwardCompatibility = require("./rules/backwardCompatibility/BackwardCompatibility");
|
|
13
|
-
var _BackwardCompatibilityCopyOnPack = require("./rules/backwardCompatibility/BackwardCompatibilityCopyOnPack");
|
|
14
|
-
var _BackwardCompatibilitySysconfCheck = require("./rules/backwardCompatibility/BackwardCompatibilitySysconfCheck");
|
|
15
|
-
var _KeplerESLintPluginStateManager = require("./state/KeplerESLintPluginStateManager");
|
|
16
|
-
var _PackageUtils = require("./utils/PackageUtils");
|
|
17
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
18
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
19
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
20
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
21
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
22
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
23
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
24
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
25
|
-
|
|
26
|
-
const stateManager = _KeplerESLintPluginStateManager.KeplerESLintPluginStateManager.getInstance();
|
|
27
|
-
stateManager.initialize();
|
|
28
|
-
module.exports = {
|
|
29
|
-
meta: {
|
|
30
|
-
name: (0, _PackageUtils.getKeplerESLintPackageJson)().name,
|
|
31
|
-
version: (0, _PackageUtils.getKeplerESLintPackageJson)().version,
|
|
32
|
-
filePatterns: ['**/*.jsx', '**/*.tsx', '**/package.json']
|
|
33
|
-
},
|
|
34
|
-
configs: {
|
|
35
|
-
kepler: {
|
|
36
|
-
plugins: ['@amazon-devices/eslint-plugin-kepler'],
|
|
37
|
-
rules: {
|
|
38
|
-
'@amazon-devices/kepler/flat-list': 'warn',
|
|
39
|
-
'@amazon-devices/kepler/check-subscription': 'warn',
|
|
40
|
-
'@amazon-devices/kepler/animated': 'error',
|
|
41
|
-
'@amazon-devices/kepler/detect-report-fully-drawn': 'warn',
|
|
42
|
-
'@amazon-devices/kepler/detect-splash-screen': 'warn',
|
|
43
|
-
'@amazon-devices/kepler/sdl-package-version-check': ['error', {
|
|
44
|
-
'semverGuidance': 'auto'
|
|
45
|
-
}],
|
|
46
|
-
'@amazon-devices/kepler/sdl-package-version-check-imports': ['warn', {
|
|
47
|
-
'semverGuidance': 'auto'
|
|
48
|
-
}],
|
|
49
|
-
'@amazon-devices/kepler/api-privileges-check': 'error',
|
|
50
|
-
'@amazon-devices/kepler/api-privilege-state-check': 'error',
|
|
51
|
-
'@amazon-devices/kepler/backward-compatibility': 'error',
|
|
52
|
-
'@amazon-devices/kepler/backward-compatibility-copy-on-pack': 'error',
|
|
53
|
-
'@amazon-devices/kepler/backward-compatibility-sysconf-check': 'error'
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
performance: {
|
|
57
|
-
plugins: ['@amazon-devices/eslint-plugin-kepler'],
|
|
58
|
-
rules: {
|
|
59
|
-
'@amazon-devices/kepler/flat-list': 'warn',
|
|
60
|
-
'@amazon-devices/kepler/check-subscription': 'warn',
|
|
61
|
-
'@amazon-devices/kepler/animated': 'error',
|
|
62
|
-
'@amazon-devices/kepler/detect-report-fully-drawn': 'warn',
|
|
63
|
-
'@amazon-devices/kepler/detect-splash-screen': 'warn'
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
'system-distributed-libs': {
|
|
67
|
-
plugins: ['@amazon-devices/eslint-plugin-kepler'],
|
|
68
|
-
rules: {
|
|
69
|
-
'@amazon-devices/kepler/sdl-package-version-check': ['error', {
|
|
70
|
-
'semverGuidance': 'auto'
|
|
71
|
-
}],
|
|
72
|
-
'@amazon-devices/kepler/sdl-package-version-check-imports': ['warn', {
|
|
73
|
-
'semverGuidance': 'auto'
|
|
74
|
-
}]
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
'api-privileges': {
|
|
78
|
-
plugins: ['@amazon-devices/eslint-plugin-kepler'],
|
|
79
|
-
rules: {
|
|
80
|
-
'@amazon-devices/kepler/api-privileges-check': 'error',
|
|
81
|
-
'@amazon-devices/kepler/api-privilege-state-check': 'error'
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
'backward-compatibility': {
|
|
85
|
-
plugins: ['@amazon-devices/eslint-plugin-kepler'],
|
|
86
|
-
rules: {
|
|
87
|
-
'@amazon-devices/kepler/backward-compatibility': 'error',
|
|
88
|
-
'@amazon-devices/kepler/backward-compatibility-copy-on-pack': 'error',
|
|
89
|
-
'@amazon-devices/kepler/backward-compatibility-sysconf-check': 'error'
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
rules: {
|
|
94
|
-
'flat-list': _FlatList.FlatList,
|
|
95
|
-
'check-subscription': _CheckSubscription.CheckSubscription,
|
|
96
|
-
'animated': _Animated.Animated,
|
|
97
|
-
'detect-report-fully-drawn': _DetectUseReportFullyDrawn.DetectUseReportFullyDrawn,
|
|
98
|
-
'detect-splash-screen': _DetectSplashScreen.DetectSplashScreen,
|
|
99
|
-
'sdl-package-version-check': _SDLPackageVersionCheck.SDLPackageVersionCheck,
|
|
100
|
-
'sdl-package-version-check-imports': _SDLPackageVersionCheckImports.SDLPackageVersionCheckImports,
|
|
101
|
-
'api-privileges-check': _ApiPrivilegesCheck.ApiPrivilegesCheck,
|
|
102
|
-
'api-privilege-state-check': _ApiPrivilegeStateCheck.ApiPrivilegeStateCheck,
|
|
103
|
-
'backward-compatibility': _BackwardCompatibility.BackwardCompatibility,
|
|
104
|
-
'backward-compatibility-copy-on-pack': _BackwardCompatibilityCopyOnPack.BackwardCompatibilityCopyOnPack,
|
|
105
|
-
'backward-compatibility-sysconf-check': _BackwardCompatibilitySysconfCheck.BackwardCompatibilitySysconfCheck
|
|
106
|
-
}
|
|
107
|
-
};
|
|
1
|
+
(()=>{var e={144:(e,t,r)=>{const s=r(3908);e.exports=(e,t,r=!1)=>{if(e instanceof s)return e;try{return new s(e,t)}catch(e){if(!r)return null;throw e}}},270:(e,t,r)=>{const s=r(3908),i=r(8311);e.exports=(e,t,r)=>{let n=null,a=null,o=null;try{o=new i(t,r)}catch(e){return null}return e.forEach((e=>{o.test(e)&&(n&&1!==a.compare(e)||(n=e,a=new s(n,r)))})),n}},272:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DetectSplashScreen=void 0;var s=r(5816),i=r(8886);const n="usePreventHideSplashScreen",a="useHideSplashScreenCallback";t.DetectSplashScreen={meta:{type:"suggestion",docs:{description:"usePreventHideSplashScreen() should be used to natively render splash screen, for better App launch performance",recommended:!0,category:"Performance"},fixable:"code",schema:[]},create(e){const t=new Set,r=new Set;return{VariableDeclarator(e){(0,i.isFunctionAssignedToVariable)(e,n)||(0,i.isModuleFunctionAssignedToVariable)(e,n)?t.add(e.id.name):((0,i.isFunctionAssignedToVariable)(e,a)||(0,i.isModuleFunctionAssignedToVariable)(e,a))&&r.add(e.id.name)},CallExpression(e){if((0,i.isDirectCall)(e,n)||(0,i.isAliasCall)(e,n,t)||(0,i.isNamespacedCall)(e,n)){const e=s.KeplerESLintPluginStateManager.getInstance().getKeplerESLintState();e.splashScreen.usePreventHideSplashScreenFound=!0,s.KeplerESLintPluginStateManager.getInstance().setKeplerESLintState(e)}else if((0,i.isDirectCall)(e,a)||(0,i.isAliasCall)(e,a,r)||(0,i.isNamespacedCall)(e,a)){const e=s.KeplerESLintPluginStateManager.getInstance().getKeplerESLintState();e.splashScreen.useHideSplashScreenCallbackFound=!0,s.KeplerESLintPluginStateManager.getInstance().setKeplerESLintState(e)}}}}}},407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CheckSubscription=void 0;const s=`See ${r(9624).VEGA_BEST_PRACTICE_URL}#listeners-event-subscriptions-and-timers for more.`;t.CheckSubscription={meta:{type:"suggestion",docs:{description:"Checks if subscriptions are set to be cleaned up",recommended:!0,category:"Performance"},fixable:"code",schema:[],messages:{failedToKeepSubscription:`Subscription must be kept in variable so that it can be cleaned up on the component is detached. ${s}`,missingCleanUp:`Subscription \`{{varName}}\` is not cleaned up. ${s}`}},create(e){const t=new Set,r=new Set,s=new Set,i=new Set;return{"VariableDeclarator[init.callee.name = /^useAdd(KeplerAppState|UserInput)ListenerCallback$/]":e=>{if("Identifier"===e.id.type){const r=e.id.name;t.add(r)}},"VariableDeclarator[init.callee.name = /^useKeplerAppStateManager$/]":e=>{if("Identifier"===e.id.type){const t=e.id.name;i.add(t)}},"CallExpression[callee.name='useEffect'] :function CallExpression":n=>{if(function(e){return"Identifier"===e.callee.type?t.has(e.callee.name):!("MemberExpression"!==e.callee.type||"Identifier"!==e.callee.object.type||!i.has(e.callee.object.name)||"Identifier"!==e.callee.property.type||"addAppStateListener"!==e.callee.property.name)}(n)){const t=e.sourceCode??e.getSourceCode(),i=t.getAncestors?.(n)??e.getAncestors();if(i.length>=1){const e=i[i.length-1];if("VariableDeclarator"===e.type&&"Identifier"==e.id.type)return void r.add(e.id.name);if("AssignmentExpression"===e.type&&"Identifier"==e.left.type)return void r.add(e.left.name);if("CallExpression"===e.type&&e.arguments[0]===n&&"MemberExpression"===e.callee.type){const t=e.callee;if("Identifier"===t.property.type&&["add","push"].includes(t.property.name)&&"Identifier"===t.object.type)return void s.add(t.object.name)}}e.report({node:n,messageId:"failedToKeepSubscription"})}},"CallExpression[callee.name='useEffect'] :function ReturnStatement CallExpression[callee.property.name='remove']":e=>{if("MemberExpression"===e.callee.type){const t=e.callee;"Identifier"===t.object.type&&r.has(t.object.name)&&r.delete(t.object.name)}},"CallExpression[callee.name='useEffect'] :function ReturnStatement CallExpression[callee.property.name='forEach']":e=>{if("MemberExpression"===e.callee.type){const t=e.callee;"Identifier"===t.object.type&&s.has(t.object.name)&&s.delete(t.object.name)}},"CallExpression[callee.name='useEffect']:exit":t=>{for(const s of r)e.report({node:t,messageId:"missingCleanUp",data:{varName:s}});for(const r of s)e.report({node:t,messageId:"missingCleanUp",data:{varName:r}});r.clear(),s.clear()}}}}},560:(e,t,r)=>{const s=r(3908);e.exports=(e,t,r)=>new s(e,r).compare(new s(t,r))},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allowsMajorUpgrades=function(e){try{return"*"===e||!!/^\d+\.\*$/.test(e)||!!e.startsWith(">")}catch{return!1}},t.allowsMinorUpgrades=d,t.allowsPatchUpgrades=u,t.determineMinorUpdateMode=function(e="auto",t=process.cwd()){switch(e){case"minor":return!0;case"patch":return!1;case"auto":try{return(0,a.isBrazilRepo)()}catch{return!1}default:return!1}},t.hasGreaterThanOperators=function(e){return e.startsWith(">")||e.startsWith(">=")},t.hasWildcards=c,t.isLockedOrPartialRange=function(e){try{if(e.includes("-")&&!e.startsWith("-")){const t=e.split("-");if(2===t.length){const e=t[0].trim(),r=t[1].trim(),s=null!==n.valid(e)&&!e.includes("-"),i=null!==n.valid(r)&&!r.includes("-");return s&&i}}if(p(e)){const t=n.parse(e);return null!==t&&!t.prerelease.length}return!1}catch{return!1}},t.isLockedVersion=p,t.isSystemDistributedLibrary=function(e,t=process.cwd()){if(!e.startsWith("@amazon-devices/")&&!e.startsWith("@amazon-devices/"))return!1;const r=i.join(t,"node_modules",e);if(!s.existsSync(r))return!1;const n=i.join(r,"SystemModules");try{return s.existsSync(n)&&s.statSync(n).isDirectory()}catch{return!1}},t.prohibitsMinorUpgrades=function(e){return u(e)&&!d(e)};var s=l(r(9896)),i=l(r(6928)),n=l(r(9589)),a=r(8886);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}function l(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var a=i?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(s,n,a):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}function c(e){return e.includes("*")||e.includes("x")||e.includes("X")}function p(e){return!(e.startsWith("^")||e.startsWith("~")||e.startsWith("<")||e.startsWith(">")||e.startsWith(">=")||c(e))}function u(e){try{if(/^\d+\.\d+\.[xX]$/.test(e))return!0;if(e.startsWith("~")){const t=e.substring(1);return null!==n.parse(t)}if(e.startsWith("<")){const t=e.substring(1),r=n.parse(t);if(r)return r.patch>0}return!1}catch{return!1}}function d(e){try{if(/^\d+\.[xX](\.[xX])?$/.test(e))return!0;if(e.startsWith("^")){const t=e.substring(1);return null!==n.parse(t)}if(e.startsWith("<")){const t=e.substring(1),r=n.parse(t);if(r)return 0===r.minor&&0===r.patch&&r.major>1}return!1}catch{return!1}}},909:(e,t,r)=>{const s=r(3908);e.exports=(e,t,r)=>{const i=new s(e,r),n=new s(t,r);return i.compare(n)||i.compareBuild(n)}},970:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DetectUseReportFullyDrawn=void 0;var s=r(5816),i=r(8886);const n="useReportFullyDrawn";t.DetectUseReportFullyDrawn={meta:{type:"suggestion",docs:{description:"useReportFullyDrawn() callback should be used to measure Time to Fully Drawn",recommended:!0,category:"Performance"},fixable:"code",schema:[]},create(e){const t=new Set;return{VariableDeclarator(e){(0,i.isFunctionAssignedToVariable)(e,n)&&t.add(e.id.name),(0,i.isModuleFunctionAssignedToVariable)(e,n)&&t.add(e.id.name)},CallExpression(e){if((0,i.isDirectCall)(e,n)||(0,i.isAliasCall)(e,n,t)||(0,i.isNamespacedCall)(e,n)){const e=s.KeplerESLintPluginStateManager.getInstance().getKeplerESLintState();e.fullyDrawn.useReportFullyDrawnFound=!0,s.KeplerESLintPluginStateManager.getInstance().setKeplerESLintState(e)}}}}}},1123:e=>{const t=/^[0-9]+$/,r=(e,r)=>{const s=t.test(e),i=t.test(r);return s&&i&&(e=+e,r=+r),e===r?0:s&&!i?-1:i&&!s?1:e<r?-1:1};e.exports={compareIdentifiers:r,rcompareIdentifiers:(e,t)=>r(t,e)}},1261:(e,t,r)=>{const s=r(3908),i=r(8311),n=r(5580);e.exports=(e,t)=>{e=new i(e,t);let r=new s("0.0.0");if(e.test(r))return r;if(r=new s("0.0.0-0"),e.test(r))return r;r=null;for(let t=0;t<e.set.length;++t){const i=e.set[t];let a=null;i.forEach((e=>{const t=new s(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":a&&!n(t,a)||(a=t);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${e.operator}`)}})),!a||r&&!n(r,a)||(r=a)}return r&&e.test(r)?r:null}},1458:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiPrivilegesCheck=void 0;var s=r(6075),i=r(7443);t.ApiPrivilegesCheck={meta:{type:"problem",docs:{description:"Checks that APIs requiring permissions have proper manifest.toml entries",recommended:!0,category:"API Privileges"},fixable:void 0,schema:[]},create(e){const t=new Map;return s.API_PRIV_NEEDED.forEach((e=>{t.set(e.packageName,e)})),{ImportDeclaration(r){const s=r.source.value,n=t.get(s);n&&(n.needsPrivilege.length>0?n.needsPrivilege.some((e=>(0,i.checkManifestForPrivilege)(e,"needs")))||e.report({node:r,message:`Using the APIs in ${s} requires the [[needs.privilege]] id="${n.needsPrivilege[0]}" entry in the Vega manifest.toml. Please see the Vega documentation for more information.`}):n.wantsPrivilege.length>0&&(n.wantsPrivilege.some((e=>(0,i.checkManifestForPrivilege)(e,"wants")))||e.report({node:r,message:`Using the APIs in ${s} requires the [[wants.privilege]] id="${n.wantsPrivilege[0]}" entry in the Vega manifest.toml. Please see the Vega documentation for more information.`})))}}}}},1729:(e,t,r)=>{const s=r(144);e.exports=(e,t)=>{const r=s(e,t);return r&&r.prerelease.length?r.prerelease:null}},1763:(e,t,r)=>{const s=r(560);e.exports=(e,t)=>s(e,t,!0)},1832:(e,t,r)=>{const s=r(144);e.exports=(e,t)=>{const r=s(e,null,!0),i=s(t,null,!0),n=r.compare(i);if(0===n)return null;const a=n>0,o=a?r:i,l=a?i:r,c=!!o.prerelease.length;if(l.prerelease.length&&!c){if(!l.patch&&!l.minor)return"major";if(0===l.compareMain(o))return l.minor&&!l.patch?"minor":"patch"}const p=c?"pre":"";return r.major!==i.major?p+"major":r.minor!==i.minor?p+"minor":r.patch!==i.patch?p+"patch":"prerelease"}},2024:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAppManifest=function(){if(p)return p;try{const e=s.readFileSync(i.join(o.PROJECT_DIR_PATH,u),"utf8");p=n.parse(e)}catch(e){return}return p},t.getKeplerESLintPackageJson=function(){return a};var s=c(r(9896)),i=c(r(6928)),n=c(r(6094)),a=c(r(8330)),o=r(9624);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}function c(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var a=i?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(s,n,a):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}let p;const u="manifest.toml"},2111:(e,t,r)=>{const s=r(4641),i=r(3999),n=r(5580),a=r(4089),o=r(7059),l=r(5200);e.exports=(e,t,r,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e===r;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return s(e,r,c);case"!=":return i(e,r,c);case">":return n(e,r,c);case">=":return a(e,r,c);case"<":return o(e,r,c);case"<=":return l(e,r,c);default:throw new TypeError(`Invalid operator: ${t}`)}}},2525:(e,t,r)=>{const s=r(7638),i=r(560);e.exports=(e,t,r)=>{const n=[];let a=null,o=null;const l=e.sort(((e,t)=>i(e,t,r)));for(const e of l)s(e,t,r)?(o=e,a||(a=e)):(o&&n.push([a,o]),o=null,a=null);a&&n.push([a,null]);const c=[];for(const[e,t]of n)e===t?c.push(e):t||e!==l[0]?t?e===l[0]?c.push(`<=${t}`):c.push(`${e} - ${t}`):c.push(`>=${e}`):c.push("*");const p=c.join(" || "),u="string"==typeof t.raw?t.raw:String(t);return p.length<u.length?p:t}},2591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PackageMigration=void 0;var s=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}(r(9589)),i=r(7138),n=r(8886);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}t.PackageMigration={meta:{type:"problem",docs:{description:"Check for outdated package versions that need migration to system distributed libraries",category:"Possible Errors"},schema:[]},create(e){const t=(0,n.isBrazilRepo)();return{JSONProperty(r){const n=r.parent;if("JSONObjectExpression"===n?.type&&"JSONProperty"===n.parent?.type){const a=n.parent;if("JSONLiteral"===a.key?.type){const n=a.key.value;if(["dependencies","peerDependencies"].includes(n)&&"JSONLiteral"===r.key?.type&&"JSONLiteral"===r.value?.type){const n=r.key.value,a=r.value.value,o=i.PACKAGES_TO_MIGRATE.find((e=>e.packageName===n));if(o&&"string"==typeof a){const i=s.coerce(a.replace(/^[~^<>=]+/,"")),l=s.coerce(o.migrateFrom.replace(/^[~^<>=]+/,""));if(i&&l&&s.lte(i,l)){const s=((e,t)=>{const r=e.replace(/^[~^<>=]+/,"");return t?`^${r}`:`~${r}`})(o.migrateTo,t);e.report({node:r.value,message:`${n} has been released as a system distributed library as of version ${s} and above. Please update your dependency to use the newer version or your app may fail to load or crash at runtime.`})}}}}}}}}}},2938:(e,t,r)=>{const s=r(3908);e.exports=(e,t)=>new s(e,t).major},3007:(e,t,r)=>{const s=r(3908);e.exports=(e,t,r,i,n)=>{"string"==typeof r&&(n=i,i=r,r=void 0);try{return new s(e instanceof s?e.version:e,r).inc(t,i,n).version}catch(e){return null}}},3723:(e,t,r)=>{"use strict";var s=r(1458),i=r(4638),n=r(5456),a=r(4373),o=r(6881),l=r(2591),c=r(3737),p=r(407),u=r(272),d=r(970),m=r(3819),f=r(6423),h=r(8241),E=r(5816),g=r(2024);E.KeplerESLintPluginStateManager.getInstance().initialize(),e.exports={meta:{name:(0,g.getKeplerESLintPackageJson)().name,version:(0,g.getKeplerESLintPackageJson)().version,filePatterns:["**/*.jsx","**/*.tsx","**/package.json"]},configs:{kepler:{plugins:["@amazon-devices/eslint-plugin-kepler"],rules:{"@amazon-devices/kepler/flat-list":"warn","@amazon-devices/kepler/check-subscription":"warn","@amazon-devices/kepler/animated":"error","@amazon-devices/kepler/detect-report-fully-drawn":"warn","@amazon-devices/kepler/detect-splash-screen":"warn","@amazon-devices/kepler/sdl-package-version-check":["error",{semverGuidance:"auto"}],"@amazon-devices/kepler/sdl-package-version-check-imports":["warn",{semverGuidance:"auto"}],"@amazon-devices/kepler/api-privileges-check":"error","@amazon-devices/kepler/api-privilege-state-check":"error","@amazon-devices/kepler/backward-compatibility":"error","@amazon-devices/kepler/backward-compatibility-copy-on-pack":"error","@amazon-devices/kepler/backward-compatibility-sysconf-check":"error","@amazon-devices/kepler/package-migration":"warn"}},performance:{plugins:["@amazon-devices/eslint-plugin-kepler"],rules:{"@amazon-devices/kepler/flat-list":"warn","@amazon-devices/kepler/check-subscription":"warn","@amazon-devices/kepler/animated":"error","@amazon-devices/kepler/detect-report-fully-drawn":"warn","@amazon-devices/kepler/detect-splash-screen":"warn"}},"system-distributed-libs":{plugins:["@amazon-devices/eslint-plugin-kepler"],rules:{"@amazon-devices/kepler/sdl-package-version-check":["error",{semverGuidance:"auto"}],"@amazon-devices/kepler/sdl-package-version-check-imports":["warn",{semverGuidance:"auto"}]}},"api-privileges":{plugins:["@amazon-devices/eslint-plugin-kepler"],rules:{"@amazon-devices/kepler/api-privileges-check":"error","@amazon-devices/kepler/api-privilege-state-check":"error"}},"backward-compatibility":{plugins:["@amazon-devices/eslint-plugin-kepler"],rules:{"@amazon-devices/kepler/backward-compatibility":"error","@amazon-devices/kepler/backward-compatibility-copy-on-pack":"error","@amazon-devices/kepler/backward-compatibility-sysconf-check":"error","@amazon-devices/kepler/package-migration":"warn"}}},rules:{"flat-list":m.FlatList,"check-subscription":p.CheckSubscription,animated:c.Animated,"detect-report-fully-drawn":d.DetectUseReportFullyDrawn,"detect-splash-screen":u.DetectSplashScreen,"sdl-package-version-check":f.SDLPackageVersionCheck,"sdl-package-version-check-imports":h.SDLPackageVersionCheckImports,"api-privileges-check":s.ApiPrivilegesCheck,"api-privilege-state-check":i.ApiPrivilegeStateCheck,"backward-compatibility":n.BackwardCompatibility,"backward-compatibility-copy-on-pack":a.BackwardCompatibilityCopyOnPack,"backward-compatibility-sysconf-check":o.BackwardCompatibilitySysconfCheck,"package-migration":l.PackageMigration}}},3737:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Animated=void 0;var s=r(9624);const i="useNativeDriver",n=`Set ${i} to 'true' to run animations on UI thread for better performance. See ${s.VEGA_BEST_PRACTICE_URL}#the-animated-library for more.`;t.Animated={meta:{type:"suggestion",docs:{description:"Recommends performance optimization configs for 'Animated' component",recommended:!0,category:"Performance"},fixable:"code",schema:[]},create:e=>({CallExpression(t){if("MemberExpression"!==t.callee.type||"Animated"!==t.callee.object.name||"timing"!==t.callee.property.name&&"spring"!==t.callee.property.name&&"decay"!==t.callee.property.name)return;const r=`${t.callee.object.name}.${t.callee.property.name}()`;if(t.arguments.length<2)return;const s=t.arguments[1];if("ObjectExpression"!==s.type)return;const a=s.properties.find((e=>"Property"===e.type&&"Identifier"===e.key.type&&e.key.name===i));a?a&&"Literal"===a.value.type&&!0===a.value.value||e.report({node:t,message:`'${i}' property is set to 'false'. ${n}`}):e.report({node:t,message:`${r} missing props: '${i}'. ${n}`})}})}},3785:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WILDCARD_VERSION_ERROR=t.SBL_IMPORT_MESSAGE=t.PROHIBITS_MINOR_WARNING=t.MINOR_UPGRADE_MODE_WILDCARD_WARNING=t.MINOR_UPGRADE_MODE_LOCKED_VERSION_WARNING=t.MINOR_OR_MAJOR_UPGRADE_WARNING=t.MAJOR_UPGRADE_WARNING=t.LOCKED_VERSION_WARNING=t.GREATER_THAN_VERSION_ERROR=void 0;var s=r(9624);t.MINOR_OR_MAJOR_UPGRADE_WARNING='Allowing minor or major version upgrades for system distributed libraries may result in unpredictable behavior or incompatibility with Vega devices in the field that have not upgraded. It is strongly recommended to specify patch versions only using "~" or "<" in the semantic version.',t.MAJOR_UPGRADE_WARNING='Allowing major version upgrades for system distributed libraries may cause breaking changes. For pre-release development, it is strongly recommended to allow minor upgrades only using "^" in the semantic version.',t.PROHIBITS_MINOR_WARNING='Prohibiting minor upgrades for system distributed libraries may result in this app becoming unusable after an OS upgrade. It is strongly recommended you allow for minor and patch versions by using "^" in the semantic version.',t.GREATER_THAN_VERSION_ERROR='Using ">" or ">=" operators for system distributed libraries may cause backwards compatibility issues. Use "~" to allow patch updates (recommended) or "^" to allow minor version updates (for pre-release development) instead.',t.WILDCARD_VERSION_ERROR='Wildcard versions for system distributed libraries is strongly discouraged as this can result in app instability or failure to launch. Use "~" for patch updates or "<" for specific version ranges instead.',t.MINOR_UPGRADE_MODE_WILDCARD_WARNING='Use "^" for minor updates instead of wildcards for system distributed libraries to prevent app instability or failure to launch.',t.LOCKED_VERSION_WARNING="Locking semantic versions of system distributed packages may result in this app becoming unusable after an OS upgrade. It is strongly recommended you allow for patch versions by using ~ or < in the semantic version.",t.MINOR_UPGRADE_MODE_LOCKED_VERSION_WARNING="Locking semantic versions of system distributed packages will result in this app becoming unusable after an OS upgrade. For pre-release development, it is strongly recommended you allow for minor and patch versions by using ^ in the semantic version.",t.SBL_IMPORT_MESSAGE=`is a system distributed library. This is not an error. However, please see the React Native for Vega documentation for important information on system distributed libraries (${s.VEGA_DOC_BASE_URL}/vega-rn-arch.html). Please see the documentation for this plugin for how to turn this warning off once you understand the implications of system distributed libraries.`},3819:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlatList=void 0;var s=r(9624);const i=["initialNumToRender","windowSize","removeClippedSubviews","maxToRenderPerBatch","updateCellsBatchingPeriod"];t.FlatList={meta:{type:"suggestion",docs:{description:"FlatList causes performance overhead and should be used carefully",recommended:!0,category:"Performance"},fixable:"code",schema:[]},create:e=>({JSXOpeningElement(t){if("FlatList"===t.name.name){const r=t.attributes.map((e=>e.name.name)),n=i.filter((e=>!r.includes(e)));n.length>0&&e.report({node:t,message:`FlatList missing props: '${n}'. FlatList performance is not fully unlocked without these props. See ${s.VEGA_BEST_PRACTICE_URL}#flatlist for more.`})}}})}},3874:(e,t,r)=>{const s=r(8311);e.exports=(e,t)=>{try{return new s(e,t).range||"*"}catch(e){return null}}},3904:(e,t,r)=>{const s=Symbol("SemVer ANY");class i{static get ANY(){return s}constructor(e,t){if(t=n(t),e instanceof i){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),c("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===s?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(e){const t=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],r=e.match(t);if(!r)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==r[1]?r[1]:"","="===this.operator&&(this.operator=""),r[2]?this.semver=new p(r[2],this.options.loose):this.semver=s}toString(){return this.value}test(e){if(c("Comparator.test",e,this.options.loose),this.semver===s||e===s)return!0;if("string"==typeof e)try{e=new p(e,this.options)}catch(e){return!1}return l(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new u(e.value,t).test(this.value):""===e.operator?""===e.value||new u(this.value,t).test(e.semver):!((t=n(t)).includePrerelease&&("<0.0.0-0"===this.value||"<0.0.0-0"===e.value)||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))||(!this.operator.startsWith(">")||!e.operator.startsWith(">"))&&(!this.operator.startsWith("<")||!e.operator.startsWith("<"))&&(this.semver.version!==e.semver.version||!this.operator.includes("=")||!e.operator.includes("="))&&!(l(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<"))&&!(l(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}}e.exports=i;const n=r(8587),{safeRe:a,t:o}=r(9718),l=r(2111),c=r(7272),p=r(3908),u=r(8311)},3908:(e,t,r)=>{const s=r(7272),{MAX_LENGTH:i,MAX_SAFE_INTEGER:n}=r(6874),{safeRe:a,safeSrc:o,t:l}=r(9718),c=r(8587),{compareIdentifiers:p}=r(1123);class u{constructor(e,t){if(t=c(t),e instanceof u){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>i)throw new TypeError(`version is longer than ${i} characters`);s("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?a[l.LOOSE]:a[l.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<n)return t}return e})):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(s("SemVer.compare",this.version,this.options,e),!(e instanceof u)){if("string"==typeof e&&e===this.version)return 0;e=new u(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof u||(e=new u(e,this.options)),p(this.major,e.major)||p(this.minor,e.minor)||p(this.patch,e.patch)}comparePre(e){if(e instanceof u||(e=new u(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],i=e.prerelease[t];if(s("prerelease compare",t,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return p(r,i)}while(++t)}compareBuild(e){e instanceof u||(e=new u(e,this.options));let t=0;do{const r=this.build[t],i=e.build[t];if(s("build compare",t,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return p(r,i)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(t){const e=new RegExp(`^${this.options.loose?o[l.PRERELEASELOOSE]:o[l.PRERELEASE]}$`),r=`-${t}`.match(e);if(!r||r[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"release":if(0===this.prerelease.length)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(0===this.prerelease.length)this.prerelease=[e];else{let s=this.prerelease.length;for(;--s>=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let s=[t,e];!1===r&&(s=[t]),0===p(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}e.exports=u},3927:(e,t,r)=>{const s=r(909);e.exports=(e,t)=>e.sort(((e,r)=>s(e,r,t)))},3999:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>0!==s(e,t,r)},4089:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>s(e,t,r)>=0},4277:(e,t,r)=>{const s=r(909);e.exports=(e,t)=>e.sort(((e,r)=>s(r,e,t)))},4373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KEP_COMPAT_PACK_CTA=t.BackwardCompatibilityCopyOnPack=void 0;var s=r(8886);const i=t.KEP_COMPAT_PACK_CTA="kepler-compatibility.json must be included in npm packages. Please add kepler-compatibility.json to the `files` field in your package.json.",n=e=>{const t=e.getText(),r=t.match(/"files"\s*:\s*\[[^\]]*\]/);if(r){const s=t.indexOf(r[0]);return{start:e.getLocFromIndex(s),end:e.getLocFromIndex(s+r[0].length)}}return{start:{line:1,column:0},end:{line:1,column:0}}};t.BackwardCompatibilityCopyOnPack={meta:{type:"problem",docs:{description:"Ensures kepler-compatibility.json is included in npm packages",recommended:!0,category:"Backward Compatibility"},schema:[]},create:e=>({Program(){if(!(0,s.isBrazilRepo)()||!(0,s.isSDLProject)())return;if(!(e.filename||e.getFilename()).endsWith("package.json"))return;const t=e.sourceCode||e.getSourceCode(),r=t.getText();try{const s=JSON.parse(r).files;if(!s||!Array.isArray(s))return void e.report({node:t.ast,message:i,loc:n(t)});s.includes("kepler-compatibility.json")||e.report({node:t.ast,message:i,loc:n(t)})}catch{}}})}},4493:(e,t,r)=>{const s=r(3908);e.exports=(e,t)=>new s(e,t).patch},4638:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiPrivilegeStateCheck=void 0;var s=o(r(9896)),i=o(r(6928)),n=r(6075);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}t.ApiPrivilegeStateCheck={meta:{type:"problem",docs:{description:"Checks that APIs requiring user prompts have SecurityManager implementation",recommended:!0,category:"API Privileges"},fixable:void 0,schema:[]},create(e){const t=new Map;n.API_PRIV_NEEDED.forEach((e=>{e.requiresUserPrompt&&t.set(e.packageName,e)}));let r=!1,a=!1;const o=[];return{MemberExpression(e){e.object&&"SecurityManager"===e.object.name&&(e.property&&"getPrivilegeState"===e.property.name&&(r=!0),e.property&&"requestPrivilege"===e.property.name&&(a=!0))},ImportDeclaration(e){const r=e.source.value;t.get(r)&&o.push({node:e,importSource:r})},"Program:exit"(){const t=(()=>{try{const e=i.join(process.cwd(),"package.json");if(!s.existsSync(e))return!1;const t=JSON.parse(s.readFileSync(e,"utf8")),r={...t.dependencies,...t.devDependencies};return!(!r["@amazon-devices/security-manager-lib"]&&!r["@amazon-devices/security-manager-lib"])}catch(e){return!1}})(),n=r&&a;o.forEach((({node:r,importSource:s})=>{t&&n||e.report({node:r,message:`The API ${s} requires you prompt the user for privilige acceptance. See the Vega documentation for this API as well as for SecurityManager.`})}))}}}}},4641:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>0===s(e,t,r)},5032:(e,t,r)=>{const s=r(8311),i=r(3904),{ANY:n}=i,a=r(7638),o=r(560),l=[new i(">=0.0.0-0")],c=[new i(">=0.0.0")],p=(e,t,r)=>{if(e===t)return!0;if(1===e.length&&e[0].semver===n){if(1===t.length&&t[0].semver===n)return!0;e=r.includePrerelease?l:c}if(1===t.length&&t[0].semver===n){if(r.includePrerelease)return!0;t=c}const s=new Set;let i,p,m,f,h,E,g;for(const t of e)">"===t.operator||">="===t.operator?i=u(i,t,r):"<"===t.operator||"<="===t.operator?p=d(p,t,r):s.add(t.semver);if(s.size>1)return null;if(i&&p){if(m=o(i.semver,p.semver,r),m>0)return null;if(0===m&&(">="!==i.operator||"<="!==p.operator))return null}for(const e of s){if(i&&!a(e,String(i),r))return null;if(p&&!a(e,String(p),r))return null;for(const s of t)if(!a(e,String(s),r))return!1;return!0}let v=!(!p||r.includePrerelease||!p.semver.prerelease.length)&&p.semver,y=!(!i||r.includePrerelease||!i.semver.prerelease.length)&&i.semver;v&&1===v.prerelease.length&&"<"===p.operator&&0===v.prerelease[0]&&(v=!1);for(const e of t){if(g=g||">"===e.operator||">="===e.operator,E=E||"<"===e.operator||"<="===e.operator,i)if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),">"===e.operator||">="===e.operator){if(f=u(i,e,r),f===e&&f!==i)return!1}else if(">="===i.operator&&!a(i.semver,String(e),r))return!1;if(p)if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),"<"===e.operator||"<="===e.operator){if(h=d(p,e,r),h===e&&h!==p)return!1}else if("<="===p.operator&&!a(p.semver,String(e),r))return!1;if(!e.operator&&(p||i)&&0!==m)return!1}return!(i&&E&&!p&&0!==m||p&&g&&!i&&0!==m||y||v)},u=(e,t,r)=>{if(!e)return t;const s=o(e.semver,t.semver,r);return s>0?e:s<0||">"===t.operator&&">="===e.operator?t:e},d=(e,t,r)=>{if(!e)return t;const s=o(e.semver,t.semver,r);return s<0?e:s>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,r={})=>{if(e===t)return!0;e=new s(e,r),t=new s(t,r);let i=!1;e:for(const s of e.set){for(const e of t.set){const t=p(s,e,r);if(i=i||null!==t,t)continue e}if(i)return!1}return!0}},5200:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>s(e,t,r)<=0},5342:(e,t,r)=>{const s=r(7075);e.exports=(e,t,r)=>s(e,t,"<",r)},5456:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BackwardCompatibility=void 0;var s=o(r(9896)),i=o(r(6928)),n=r(8886);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}const l=e=>{const t=e.getText(),r=t.match(/"version"\s*:\s*"[^"]*"/);if(r){const s=t.indexOf(r[0]);return{start:e.getLocFromIndex(s),end:e.getLocFromIndex(s+r[0].length)}}return{start:{line:1,column:0},end:{line:1,column:0}}};t.BackwardCompatibility={meta:{type:"problem",docs:{description:"Checks for backward compatibility issues in Kepler projects",recommended:!0,category:"Backward Compatibility"},schema:[]},create:e=>({Program(){if(!(0,n.isBrazilRepo)()||!(0,n.isSDLProject)())return;if(!(e.filename||e.getFilename()).endsWith("package.json"))return;const t=e.sourceCode||e.getSourceCode(),r=t.getText();try{const n=JSON.parse(r),a=process.cwd(),o=i.join(a,"kepler-compatibility.json");if(!s.existsSync(o))return void e.report({node:t.ast,message:"You project is missing a kepler-compatibility.json file. This file is required for Vega library development. Please add it.",loc:l(t)});try{const r=s.readFileSync(o,"utf8"),i=JSON.parse(r),a=Object.keys(i.versions||{}),c=n.version;c&&!a.includes(c)&&e.report({node:t.ast,message:`This version of the library (${c}) is not found in the kepler-compatibility.json. Please add an entry for this version.`,loc:l(t)})}catch{const r=n.version;r&&e.report({node:t.ast,message:`This version of the library (${r}) is not found in the kepler-compatibility.json (JSON is malformed).`,loc:l(t)})}}catch{}}})}},5571:(e,t,r)=>{const s=r(7075);e.exports=(e,t,r)=>s(e,t,">",r)},5580:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>s(e,t,r)>0},5816:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeplerESLintPluginStateManager=void 0;var s=o(r(9896)),i=o(r(6928)),n=r(9624);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}const l=i.join(n.KEPLER_ESLINT_OUTPUT_DIR_PATH,"keplerESLintState.json");class c{constructor(){this.keplerESLintState={fullyDrawn:{useReportFullyDrawnFound:!1},splashScreen:{usePreventHideSplashScreenFound:!1,useHideSplashScreenCallbackFound:!1}}}static getInstance(){return c.instance||(c.instance=new c),c.instance}initialize(){s.existsSync(n.KEPLER_ESLINT_OUTPUT_DIR_PATH)||s.mkdirSync(n.KEPLER_ESLINT_OUTPUT_DIR_PATH,{recursive:!0}),this.persistKeplerAnalyzerState()}setKeplerESLintState(e){this.keplerESLintState=e,this.persistKeplerAnalyzerState()}getKeplerESLintState(){return this.keplerESLintState}persistKeplerAnalyzerState(){s.writeFileSync(l,JSON.stringify(this.keplerESLintState),"utf8")}static readKeplerESLintState(){let e;try{e=JSON.parse(s.readFileSync(l,"utf8"))}catch(e){console.error(e)}return e}static cleanUpKeplerESLintState(){try{s.rmSync(n.KEPLER_ESLINT_OUTPUT_DIR_PATH)}catch(e){console.error(`Error deleting ${n.KEPLER_ESLINT_OUTPUT_DIR_PATH}`),console.error(e)}}}t.KeplerESLintPluginStateManager=c},6075:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.API_PRIV_NEEDED=void 0,t.API_PRIV_NEEDED=[{packageName:"@amazon-devices/kepler-amazon-device-messaging",needsPrivilege:["com.amazon.device-messaging.privilege.access"],wantsPrivilege:[],requiresUserPrompt:!1},{packageName:"@amazon-devices/kepler-amazon-device-messaging",needsPrivilege:["com.amazon.device-messaging.privilege.access"],wantsPrivilege:[],requiresUserPrompt:!1},{packageName:"@amazon-devices/keplerscript-audio-lib",needsPrivilege:["com.amazon.audio.privilege.settings.control","com.amazon.audio.privilege.microphone.access"],wantsPrivilege:[],requiresUserPrompt:!1},{packageName:"@amazon-devices/keplerscript-audio-lib",needsPrivilege:["com.amazon.audio.privilege.settings.control"],wantsPrivilege:[],requiresUserPrompt:!1},{packageName:"@amazon-devices/kepler-identifiers",needsPrivilege:["com.amazon.devconf.privilege.identifiers.device-friendly-name"],wantsPrivilege:[],requiresUserPrompt:!0},{packageName:"@amazon-devices/kepler-identifiers",needsPrivilege:["com.amazon.devconf.privilege.identifiers.device-friendly-name"],wantsPrivilege:[],requiresUserPrompt:!0},{packageName:"@amazon-devices/keplerscript-netmgr-lib",needsPrivilege:[],wantsPrivilege:["com.amazon.network.privilege.net-info"],requiresUserPrompt:!1},{packageName:"@amazon-devices/keplerscript-netmgr-lib",needsPrivilege:[],wantsPrivilege:["com.amazon.network.privilege.net-info"],requiresUserPrompt:!1}]},6094:e=>{"use strict";e.exports=require("toml")},6170:(e,t,r)=>{const s=r(3908),i=r(144),{safeRe:n,t:a}=r(9718);e.exports=(e,t)=>{if(e instanceof s)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let r=null;if((t=t||{}).rtl){const s=t.includePrerelease?n[a.COERCERTLFULL]:n[a.COERCERTL];let i;for(;(i=s.exec(e))&&(!r||r.index+r[0].length!==e.length);)r&&i.index+i[0].length===r.index+r[0].length||(r=i),s.lastIndex=i.index+i[1].length+i[2].length;s.lastIndex=-1}else r=e.match(t.includePrerelease?n[a.COERCEFULL]:n[a.COERCE]);if(null===r)return null;const o=r[2],l=r[3]||"0",c=r[4]||"0",p=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return i(`${o}.${l}.${c}${p}${u}`,t)}},6254:(e,t,r)=>{const s=r(3908);e.exports=(e,t)=>new s(e,t).minor},6423:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SDLPackageVersionCheck=void 0;var s=r(574),i=r(3785);t.SDLPackageVersionCheck={meta:{type:"problem",docs:{description:"Validates that SDL dependencies use proper semantic versioning with ~ or < prefixes",recommended:!0,category:"System Distributed Libraries"},schema:[{type:"object",properties:{semverGuidance:{oneOf:[{type:"string",enum:["minor","patch","auto"]}]}},additionalProperties:!1}]},create(e){const t=e.options[0]||{},r=(0,s.determineMinorUpdateMode)(t.semverGuidance);return{JSONProperty(t){const n=t.parent;if("JSONObjectExpression"===n?.type&&"JSONProperty"===n.parent?.type){const a=n.parent;if("JSONLiteral"===a.key?.type){const n=a.key.value;if(["dependencies","peerDependencies"].includes(n)&&"JSONLiteral"===t.key?.type&&"JSONLiteral"===t.value?.type){const n=t.key.value,a=t.value.value;if((0,s.isSystemDistributedLibrary)(n)&&"string"==typeof a){if((0,s.hasGreaterThanOperators)(a))return void e.report({node:t.value,message:i.GREATER_THAN_VERSION_ERROR});if((0,s.hasWildcards)(a)&&!(0,s.allowsPatchUpgrades)(a))return void(r?e.report({node:t.value,message:i.MINOR_UPGRADE_MODE_WILDCARD_WARNING}):e.report({node:t.value,message:i.WILDCARD_VERSION_ERROR}));if((0,s.isLockedOrPartialRange)(a))return void(r?e.report({node:t.value,message:i.MINOR_UPGRADE_MODE_LOCKED_VERSION_WARNING}):e.report({node:t.value,message:i.LOCKED_VERSION_WARNING}));r?(0,s.allowsMajorUpgrades)(a)?e.report({node:t.value,message:i.MAJOR_UPGRADE_WARNING}):(0,s.prohibitsMinorUpgrades)(a)&&e.report({node:t.value,message:i.PROHIBITS_MINOR_WARNING}):((0,s.allowsMinorUpgrades)(a)||(0,s.allowsMajorUpgrades)(a))&&e.report({node:t.value,message:i.MINOR_OR_MAJOR_UPGRADE_WARNING})}}}}}}}}},6780:(e,t,r)=>{const s=r(8311);e.exports=(e,t,r)=>(e=new s(e,r),t=new s(t,r),e.intersects(t,r))},6874:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},6881:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BackwardCompatibilitySysconfCheck=void 0;var s=o(r(9896)),i=o(r(6928)),n=r(8886);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}t.BackwardCompatibilitySysconfCheck={meta:{type:"problem",docs:{description:"Validates that versions or modules in kepler-compatibility.json exist in kepler-system-conf.toml.",recommended:!0,category:"Backward Compatibility"},schema:[]},create:e=>({Program(){if(!(0,n.isBrazilRepo)()||!(0,n.isSDLProject)())return;if(!(e.filename||e.getFilename()).endsWith("kepler-compatibility.json"))return;const t=e.sourceCode||e.getSourceCode(),r=t.getText();try{const n=JSON.parse(r),a=process.cwd(),o=i.join(a,"kepler-system-conf.toml");if(!s.existsSync(o))return;const l=s.readFileSync(o,"utf8"),c=Object.values(n.versions||{});for(const r of c)l.includes(`id = "${r}"`)||e.report({node:t.ast,message:`Library "${r}" referenced in kepler-compatibility.json is not found in kepler-system-conf.toml. Please add the module definition.`})}catch{}}})}},6928:e=>{"use strict";e.exports=require("path")},6953:(e,t,r)=>{const s=r(144);e.exports=(e,t)=>{const r=s(e,t);return r?r.version:null}},7059:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>s(e,t,r)<0},7075:(e,t,r)=>{const s=r(3908),i=r(3904),{ANY:n}=i,a=r(8311),o=r(7638),l=r(5580),c=r(7059),p=r(5200),u=r(4089);e.exports=(e,t,r,d)=>{let m,f,h,E,g;switch(e=new s(e,d),t=new a(t,d),r){case">":m=l,f=p,h=c,E=">",g=">=";break;case"<":m=c,f=u,h=l,E="<",g="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(o(e,t,d))return!1;for(let r=0;r<t.set.length;++r){const s=t.set[r];let a=null,o=null;if(s.forEach((e=>{e.semver===n&&(e=new i(">=0.0.0")),a=a||e,o=o||e,m(e.semver,a.semver,d)?a=e:h(e.semver,o.semver,d)&&(o=e)})),a.operator===E||a.operator===g)return!1;if((!o.operator||o.operator===E)&&f(e,o.semver))return!1;if(o.operator===g&&h(e,o.semver))return!1}return!0}},7138:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PACKAGES_TO_MIGRATE=void 0,t.PACKAGES_TO_MIGRATE=[{packageName:"@amazon-devices/package-manager-lib",migrateFrom:"1.0.0",migrateTo:"2.0.0"},{packageName:"@amazon-devices/package-manager-lib",migrateFrom:"1.0.0",migrateTo:"2.0.0"},{packageName:"@amazon-devices/keplerscript-appstore-iap-lib",migrateFrom:"1.0.0",migrateTo:"2.0.0"},{packageName:"@amazon-devices/keplerscript-appstore-iap-lib",migrateFrom:"1.0.0",migrateTo:"2.0.0"}]},7272:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},7414:(e,t,r)=>{const s=r(144);e.exports=(e,t)=>{const r=s(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null}},7443:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkManifestForPrivilege=void 0;var s=o(r(9896)),i=o(r(6928)),n=o(r(6094));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var o=i?Object.getOwnPropertyDescriptor(e,n):null;o&&(o.get||o.set)?Object.defineProperty(s,n,o):s[n]=e[n]}return s.default=e,r&&r.set(e,s),s}t.checkManifestForPrivilege=(e,t)=>{try{const r=i.join(process.cwd(),"manifest.toml");if(!s.existsSync(r))return!1;const a=s.readFileSync(r,"utf8"),o=n.parse(a);return!(!o[t]||!Array.isArray(o[t].privilege))&&o[t].privilege.some((t=>"object"==typeof t&&t.id===e))}catch(e){return!1}}},7631:(e,t,r)=>{const s=r(8311);e.exports=(e,t)=>new s(e,t).set.map((e=>e.map((e=>e.value)).join(" ").trim().split(" ")))},7638:(e,t,r)=>{const s=r(8311);e.exports=(e,t,r)=>{try{t=new s(t,r)}catch(e){return!1}return t.test(e)}},8241:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SDLPackageVersionCheckImports=void 0;var s=r(574),i=r(3785);t.SDLPackageVersionCheckImports={meta:{type:"suggestion",docs:{description:"Flags imports of system distributed libraries with informational messages",recommended:!0,category:"System Distributed Libraries"},schema:[{type:"object",properties:{semverGuidance:{oneOf:[{type:"string",enum:["minor","patch","auto"]}]}},additionalProperties:!1}]},create:e=>({ImportDeclaration(t){const r=t.source.value;(0,s.isSystemDistributedLibrary)(r)&&e.report({node:t.source,message:`${r} ${i.SBL_IMPORT_MESSAGE}`})}})}},8311:(e,t,r)=>{const s=/\s+/g;class i{constructor(e,t){if(t=a(t),e instanceof i)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new i(e.raw,t);if(e instanceof o)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(s," "),this.set=this.raw.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!g(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&v(e[0])){this.set=[e];break}}this.formatted=void 0}get range(){if(void 0===this.formatted){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");const t=this.set[e];for(let e=0;e<t.length;e++)e>0&&(this.formatted+=" "),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){const t=((this.options.includePrerelease&&h)|(this.options.loose&&E))+":"+e,r=n.get(t);if(r)return r;const s=this.options.loose,i=s?p[u.HYPHENRANGELOOSE]:p[u.HYPHENRANGE];e=e.replace(i,k(this.options.includePrerelease)),l("hyphen replace",e),e=e.replace(p[u.COMPARATORTRIM],d),l("comparator trim",e),e=e.replace(p[u.TILDETRIM],m),l("tilde trim",e),e=e.replace(p[u.CARETTRIM],f),l("caret trim",e);let a=e.split(" ").map((e=>R(e,this.options))).join(" ").split(/\s+/).map((e=>L(e,this.options)));s&&(a=a.filter((e=>(l("loose invalid filter",e,this.options),!!e.match(p[u.COMPARATORLOOSE]))))),l("range list",a);const c=new Map,v=a.map((e=>new o(e,this.options)));for(const e of v){if(g(e))return[e];c.set(e.value,e)}c.size>1&&c.has("")&&c.delete("");const y=[...c.values()];return n.set(t,y),y}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Range is required");return this.set.some((r=>y(r,t)&&e.set.some((e=>y(e,t)&&r.every((r=>e.every((e=>r.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new c(e,this.options)}catch(e){return!1}for(let t=0;t<this.set.length;t++)if(w(this.set[t],e,this.options))return!0;return!1}}e.exports=i;const n=new(r(8794)),a=r(8587),o=r(3904),l=r(7272),c=r(3908),{safeRe:p,t:u,comparatorTrimReplace:d,tildeTrimReplace:m,caretTrimReplace:f}=r(9718),{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:E}=r(6874),g=e=>"<0.0.0-0"===e.value,v=e=>""===e.value,y=(e,t)=>{let r=!0;const s=e.slice();let i=s.pop();for(;r&&s.length;)r=s.every((e=>i.intersects(e,t))),i=s.pop();return r},R=(e,t)=>(l("comp",e,t),e=I(e,t),l("caret",e),e=S(e,t),l("tildes",e),e=_(e,t),l("xrange",e),e=A(e,t),l("stars",e),e),O=e=>!e||"x"===e.toLowerCase()||"*"===e,S=(e,t)=>e.trim().split(/\s+/).map((e=>P(e,t))).join(" "),P=(e,t)=>{const r=t.loose?p[u.TILDELOOSE]:p[u.TILDE];return e.replace(r,((t,r,s,i,n)=>{let a;return l("tilde",e,t,r,s,i,n),O(r)?a="":O(s)?a=`>=${r}.0.0 <${+r+1}.0.0-0`:O(i)?a=`>=${r}.${s}.0 <${r}.${+s+1}.0-0`:n?(l("replaceTilde pr",n),a=`>=${r}.${s}.${i}-${n} <${r}.${+s+1}.0-0`):a=`>=${r}.${s}.${i} <${r}.${+s+1}.0-0`,l("tilde return",a),a}))},I=(e,t)=>e.trim().split(/\s+/).map((e=>b(e,t))).join(" "),b=(e,t)=>{l("caret",e,t);const r=t.loose?p[u.CARETLOOSE]:p[u.CARET],s=t.includePrerelease?"-0":"";return e.replace(r,((t,r,i,n,a)=>{let o;return l("caret",e,t,r,i,n,a),O(r)?o="":O(i)?o=`>=${r}.0.0${s} <${+r+1}.0.0-0`:O(n)?o="0"===r?`>=${r}.${i}.0${s} <${r}.${+i+1}.0-0`:`>=${r}.${i}.0${s} <${+r+1}.0.0-0`:a?(l("replaceCaret pr",a),o="0"===r?"0"===i?`>=${r}.${i}.${n}-${a} <${r}.${i}.${+n+1}-0`:`>=${r}.${i}.${n}-${a} <${r}.${+i+1}.0-0`:`>=${r}.${i}.${n}-${a} <${+r+1}.0.0-0`):(l("no pr"),o="0"===r?"0"===i?`>=${r}.${i}.${n}${s} <${r}.${i}.${+n+1}-0`:`>=${r}.${i}.${n}${s} <${r}.${+i+1}.0-0`:`>=${r}.${i}.${n} <${+r+1}.0.0-0`),l("caret return",o),o}))},_=(e,t)=>(l("replaceXRanges",e,t),e.split(/\s+/).map((e=>N(e,t))).join(" ")),N=(e,t)=>{e=e.trim();const r=t.loose?p[u.XRANGELOOSE]:p[u.XRANGE];return e.replace(r,((r,s,i,n,a,o)=>{l("xRange",e,r,s,i,n,a,o);const c=O(i),p=c||O(n),u=p||O(a),d=u;return"="===s&&d&&(s=""),o=t.includePrerelease?"-0":"",c?r=">"===s||"<"===s?"<0.0.0-0":"*":s&&d?(p&&(n=0),a=0,">"===s?(s=">=",p?(i=+i+1,n=0,a=0):(n=+n+1,a=0)):"<="===s&&(s="<",p?i=+i+1:n=+n+1),"<"===s&&(o="-0"),r=`${s+i}.${n}.${a}${o}`):p?r=`>=${i}.0.0${o} <${+i+1}.0.0-0`:u&&(r=`>=${i}.${n}.0${o} <${i}.${+n+1}.0-0`),l("xRange return",r),r}))},A=(e,t)=>(l("replaceStars",e,t),e.trim().replace(p[u.STAR],"")),L=(e,t)=>(l("replaceGTE0",e,t),e.trim().replace(p[t.includePrerelease?u.GTE0PRE:u.GTE0],"")),k=e=>(t,r,s,i,n,a,o,l,c,p,u,d)=>`${r=O(s)?"":O(i)?`>=${s}.0.0${e?"-0":""}`:O(n)?`>=${s}.${i}.0${e?"-0":""}`:a?`>=${r}`:`>=${r}${e?"-0":""}`} ${l=O(c)?"":O(p)?`<${+c+1}.0.0-0`:O(u)?`<${c}.${+p+1}.0-0`:d?`<=${c}.${p}.${u}-${d}`:e?`<${c}.${p}.${+u+1}-0`:`<=${l}`}`.trim(),w=(e,t,r)=>{for(let r=0;r<e.length;r++)if(!e[r].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let r=0;r<e.length;r++)if(l(e[r].semver),e[r].semver!==o.ANY&&e[r].semver.prerelease.length>0){const s=e[r].semver;if(s.major===t.major&&s.minor===t.minor&&s.patch===t.patch)return!0}return!1}return!0}},8330:e=>{"use strict";e.exports=JSON.parse('{"name":"@amazon-devices/eslint-plugin-kepler","version":"0.1.11","description":"An ESLint Plugin to suggest Vega App Development best practices","main":"dist/index.js","files":["dist","THIRD_PARTY_NOTICES.txt"],"scripts":{"test":"jest --colors","lint":"eslint src __tests__ --ext .js,.ts,.tsx","lint:fix":"eslint src __tests__ --ext .js,.ts,.tsx --fix","prepare":"npm run build","typeCheck":"tsc --noEmit","bundle":"webpack","clean":"rm -rf node_modules && rm package-lock.json && rm -rf dist","build":"npm-run-all lint typeCheck test bundle","rebuild":"rm -rf ./dist && npm run bundle","watch":"node scripts/watch.js","format":"prettier --config .prettierrc \'src/**/*.ts\' \'__tests__/**/*.ts\' --write","checkLicenses":"license-checker --production --exclude MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause,ISC,0BSD,Python-2.0","genAttribution":"generate-attribution -o ./.attr && mv .attr/attribution.txt ./dist/LICENSE-THIRD-PARTY && rm -rf .attr"},"devDependencies":{"@amazon-devices/kepler-telemetry-service-config":"*","@amazon-devices/kepler-telemetry-service-typescript-client":"*","@babel/cli":"^7.26.4","@babel/core":"^7.26.9","@babel/preset-env":"^7.26.9","@babel/preset-typescript":"^7.26.0","@eslint/js":"^8.12.0","@trivago/prettier-plugin-sort-imports":"^5.2.1","@types/eslint":"^8.4.1","@types/jest":"^29.5.14","@types/node":"^22.10.2","@types/semver":"7.5.8","@typescript-eslint/eslint-plugin":"^8.18.0","@typescript-eslint/parser":"^8.18.0","@typescript-eslint/types":"^8.18.0","@typescript-eslint/utils":"^8.18.0","babel-loader":"^9.2.1","babel-plugin-transform-remove-console":"^6.9.0","eslint":"^8.12.0","globals":"^15.13.0","husky":"^9.1.7","jest":"^29.7.0","license-checker":"^25.0.1","npm-run-all":"^4.1.5","oss-attribution-generator":"^1.7.1","prettier-plugin-organize-imports":"^4.1.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2","typescript-eslint":"^8.18.0","webpack":"5.98.0","webpack-cli":"6.0.1"},"dependencies":{"chalk":"^4.1.2","jsonc-eslint-parser":">=2.0.0","semver":"7.7.1","toml":"3.0.0","uuid":"11.0.5"},"peerDependencies":{"eslint":">=8.12.0","jsonc-eslint-parser":">=2.0.0"},"husky":{"hooks":{"pre-commit":"npm run format"}}}')},8587:e=>{const t=Object.freeze({loose:!0}),r=Object.freeze({});e.exports=e=>e?"object"!=typeof e?t:e:r},8794:e=>{e.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);return void 0===t?void 0:(this.map.delete(e),this.map.set(e,t),t)}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&void 0!==t){if(this.map.size>=this.max){const e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}},8886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAliasCall=function(e,t,r){return e.callee.type===o&&r.has(e.callee.name)},t.isBrazilRepo=void 0,t.isDirectCall=function(e,t){return e.callee.type===o&&e.callee.name===t},t.isFunctionAssignedToVariable=function(e,t){return e.init?.type===o&&e.init.name===t&&e.id.type===o},t.isModuleFunctionAssignedToVariable=function(e,t){return e.init?.type===l&&e.init.property.type===o&&e.init.property.name===t&&e.id.type===o},t.isNamespacedCall=function(e,t){return e.callee.type===l&&e.callee.property.type===o&&e.callee.property.name===t},t.isSDLProject=void 0;var s=a(r(9896)),i=a(r(6928));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function a(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}return s.default=e,r&&r.set(e,s),s}const o="Identifier",l="MemberExpression",c=(e,t=process.cwd())=>{const r=i.join(t,e);return s.existsSync(r)};t.isBrazilRepo=()=>c("Config"),t.isSDLProject=()=>c("kepler-system-conf.toml")},9589:(e,t,r)=>{const s=r(9718),i=r(6874),n=r(3908),a=r(1123),o=r(144),l=r(6953),c=r(7414),p=r(3007),u=r(1832),d=r(2938),m=r(6254),f=r(4493),h=r(1729),E=r(560),g=r(9970),v=r(1763),y=r(909),R=r(3927),O=r(4277),S=r(5580),P=r(7059),I=r(4641),b=r(3999),_=r(4089),N=r(5200),A=r(2111),L=r(6170),k=r(3904),w=r(8311),$=r(7638),T=r(7631),C=r(9628),D=r(270),M=r(1261),j=r(3874),x=r(7075),U=r(5571),G=r(5342),F=r(6780),W=r(2525),z=r(5032);e.exports={parse:o,valid:l,clean:c,inc:p,diff:u,major:d,minor:m,patch:f,prerelease:h,compare:E,rcompare:g,compareLoose:v,compareBuild:y,sort:R,rsort:O,gt:S,lt:P,eq:I,neq:b,gte:_,lte:N,cmp:A,coerce:L,Comparator:k,Range:w,satisfies:$,toComparators:T,maxSatisfying:C,minSatisfying:D,minVersion:M,validRange:j,outside:x,gtr:U,ltr:G,intersects:F,simplifyRange:W,subset:z,SemVer:n,re:s.re,src:s.src,tokens:s.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}},9624:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VEGA_DOC_BASE_URL=t.VEGA_BEST_PRACTICE_URL=t.UNKNOWN=t.REACT_DOC_BASE_URL=t.PROJECT_DIR_PATH=t.KeplerESLintRuleIds=t.KEPLER_ESLINT_RULE_PREFIX=t.KEPLER_ESLINT_OUTPUT_DIR_PATH=t.ICON_WARN=t.ICON_ERROR=t.ESLintRuleSeverity=t.DOC_BASE_URL=void 0;var s=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var s={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=n?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(s,a,o):s[a]=e[a]}return s.default=e,r&&r.set(e,s),s}(r(6928));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}t.KeplerESLintRuleIds=function(e){return e.FlatList="@amazon-devices/kepler/flat-list",e.Animated="@amazon-devices/kepler/animated",e.NoComplexScrollView="@amazon-devices/kepler/no-complex-scroll-view",e.DetectReportFullyDrawn="@amazon-devices/kepler/detect-report-fully-drawn",e.DetectSplashScreen="@amazon-devices/kepler/detect-splash-screen",e}({}),t.ESLintRuleSeverity=function(e){return e[e.OFF=0]="OFF",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR",e}({});const n=t.PROJECT_DIR_PATH=process.cwd(),a=(t.KEPLER_ESLINT_OUTPUT_DIR_PATH=s.join(n,"generated","eslint-plugin-kepler"),t.ICON_WARN="⚠️",t.ICON_ERROR="❌",t.KEPLER_ESLINT_RULE_PREFIX="@amazon-devices/kepler",t.UNKNOWN="UNKNOWN",t.DOC_BASE_URL="https://developer.amazon.com/docs"),o=(t.REACT_DOC_BASE_URL=`${a}/react-native-vega/0.72`,t.VEGA_DOC_BASE_URL=`${a}/vega/0.21`);t.VEGA_BEST_PRACTICE_URL=`${o}/best_practices.html`},9628:(e,t,r)=>{const s=r(3908),i=r(8311);e.exports=(e,t,r)=>{let n=null,a=null,o=null;try{o=new i(t,r)}catch(e){return null}return e.forEach((e=>{o.test(e)&&(n&&-1!==a.compare(e)||(n=e,a=new s(n,r)))})),n}},9718:(e,t,r)=>{const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:n}=r(6874),a=r(7272),o=(t=e.exports={}).re=[],l=t.safeRe=[],c=t.src=[],p=t.safeSrc=[],u=t.t={};let d=0;const m="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",n],[m,i]],h=(e,t,r)=>{const s=(e=>{for(const[t,r]of f)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,p[i]=s,o[i]=new RegExp(t,r?"g":void 0),l[i]=new RegExp(s,r?"g":void 0)};h("NUMERICIDENTIFIER","0|[1-9]\\d*"),h("NUMERICIDENTIFIERLOOSE","\\d+"),h("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${m}*`),h("MAINVERSION",`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h("MAINVERSIONLOOSE",`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h("PRERELEASEIDENTIFIER",`(?:${c[u.NUMERICIDENTIFIER]}|${c[u.NONNUMERICIDENTIFIER]})`),h("PRERELEASEIDENTIFIERLOOSE",`(?:${c[u.NUMERICIDENTIFIERLOOSE]}|${c[u.NONNUMERICIDENTIFIER]})`),h("PRERELEASE",`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h("PRERELEASELOOSE",`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h("BUILDIDENTIFIER",`${m}+`),h("BUILD",`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h("FULLPLAIN",`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h("FULL",`^${c[u.FULLPLAIN]}$`),h("LOOSEPLAIN",`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h("LOOSE",`^${c[u.LOOSEPLAIN]}$`),h("GTLT","((?:<|>)?=?)"),h("XRANGEIDENTIFIERLOOSE",`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h("XRANGEIDENTIFIER",`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h("XRANGEPLAIN",`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h("XRANGEPLAINLOOSE",`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h("XRANGE",`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h("XRANGELOOSE",`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),h("COERCE",`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h("COERCEFULL",c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?`+`(?:${c[u.BUILD]})?(?:$|[^\\d])`),h("COERCERTL",c[u.COERCE],!0),h("COERCERTLFULL",c[u.COERCEFULL],!0),h("LONETILDE","(?:~>?)"),h("TILDETRIM",`(\\s*)${c[u.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",h("TILDE",`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h("TILDELOOSE",`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h("LONECARET","(?:\\^)"),h("CARETTRIM",`(\\s*)${c[u.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",h("CARET",`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h("CARETLOOSE",`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h("COMPARATORLOOSE",`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h("COMPARATOR",`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h("COMPARATORTRIM",`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",h("HYPHENRANGE",`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h("HYPHENRANGELOOSE",`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h("STAR","(<|>)?=?\\s*\\*"),h("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),h("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},9896:e=>{"use strict";e.exports=require("fs")},9970:(e,t,r)=>{const s=r(560);e.exports=(e,t,r)=>s(t,e,r)}},t={},r=function r(s){var i=t[s];if(void 0!==i)return i.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,r),n.exports}(3723);module.exports=r})();
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@amazon-devices/eslint-plugin-kepler", "version": "0.1.
|
|
1
|
+
{"name": "@amazon-devices/eslint-plugin-kepler", "version": "0.1.11", "description": "An ESLint Plugin to suggest Vega App Development best practices", "main": "dist/index.js", "files": ["dist", "THIRD_PARTY_NOTICES.txt"], "scripts": {"test": "jest --colors", "lint": "eslint src __tests__ --ext .js,.ts,.tsx", "lint:fix": "eslint src __tests__ --ext .js,.ts,.tsx --fix", "typeCheck": "tsc --noEmit", "bundle": "webpack", "clean": "rm -rf node_modules && rm package-lock.json && rm -rf dist", "build": "npm-run-all lint typeCheck test bundle", "rebuild": "rm -rf ./dist && npm run bundle", "watch": "node scripts/watch.js", "format": "prettier --config .prettierrc 'src/**/*.ts' '__tests__/**/*.ts' --write", "checkLicenses": "license-checker --production --exclude MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause,ISC,0BSD,Python-2.0", "genAttribution": "generate-attribution -o ./.attr && mv .attr/attribution.txt ./dist/LICENSE-THIRD-PARTY && rm -rf .attr"}, "devDependencies": {"@amazon-devices/kepler-telemetry-service-config": "*", "@amazon-devices/kepler-telemetry-service-typescript-client": "*", "@babel/cli": "^7.26.4", "@babel/core": "^7.26.9", "@babel/preset-env": "^7.26.9", "@babel/preset-typescript": "^7.26.0", "@eslint/js": "^8.12.0", "@trivago/prettier-plugin-sort-imports": "^5.2.1", "@types/eslint": "^8.4.1", "@types/jest": "^29.5.14", "@types/node": "^22.10.2", "@types/semver": "7.5.8", "@typescript-eslint/eslint-plugin": "^8.18.0", "@typescript-eslint/parser": "^8.18.0", "@typescript-eslint/types": "^8.18.0", "@typescript-eslint/utils": "^8.18.0", "babel-loader": "^9.2.1", "babel-plugin-transform-remove-console": "^6.9.0", "eslint": "^8.12.0", "globals": "^15.13.0", "husky": "^9.1.7", "jest": "^29.7.0", "license-checker": "^25.0.1", "npm-run-all": "^4.1.5", "oss-attribution-generator": "^1.7.1", "prettier-plugin-organize-imports": "^4.1.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", "typescript": "^5.7.2", "typescript-eslint": "^8.18.0", "webpack": "5.98.0", "webpack-cli": "6.0.1"}, "dependencies": {"chalk": "^4.1.2", "jsonc-eslint-parser": ">=2.0.0", "semver": "7.7.1", "toml": "3.0.0", "uuid": "11.0.5"}, "peerDependencies": {"eslint": ">=8.12.0", "jsonc-eslint-parser": ">=2.0.0"}, "husky": {"hooks": {"pre-commit": "npm run format"}}, "license": "See license in LICENSE"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.exportHTMLReport = exportHTMLReport;
|
|
7
|
-
var _eslint = require("eslint");
|
|
8
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
9
|
-
var path = _interopRequireWildcard(require("path"));
|
|
10
|
-
var _Constants = require("../utils/Constants");
|
|
11
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
13
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
14
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
15
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
16
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
17
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
18
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
19
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
20
|
-
|
|
21
|
-
const KEPLER_ESLINT_HTML_REPORT_FILE_NAME = path.join(_Constants.KEPLER_ESLINT_OUTPUT_DIR_PATH, 'vega-eslint-report.html');
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Exports ESLint results to HTML file.
|
|
25
|
-
* @param results
|
|
26
|
-
*/
|
|
27
|
-
async function exportHTMLReport(results, outputPath = KEPLER_ESLINT_HTML_REPORT_FILE_NAME) {
|
|
28
|
-
try {
|
|
29
|
-
const eslint = new _eslint.ESLint();
|
|
30
|
-
const htmlFormatter = await eslint.loadFormatter('html');
|
|
31
|
-
const output = htmlFormatter.format(results);
|
|
32
|
-
if (!output) {
|
|
33
|
-
throw new Error('No Results to write');
|
|
34
|
-
}
|
|
35
|
-
fs.writeFileSync(outputPath, output, 'utf8');
|
|
36
|
-
return outputPath;
|
|
37
|
-
} catch (error) {
|
|
38
|
-
throw error;
|
|
39
|
-
}
|
|
40
|
-
}
|
package/dist/metrics/Metrics.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.emitMetric = emitMetric;
|
|
7
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
-
var path = _interopRequireWildcard(require("path"));
|
|
9
|
-
var _uuid = require("uuid");
|
|
10
|
-
var _keplerTelemetryServiceTypescriptClient = require("@amazon-devices/kepler-telemetry-service-typescript-client");
|
|
11
|
-
var _Constants = require("../utils/Constants");
|
|
12
|
-
var _TelemetryService = require("./TelemetryService");
|
|
13
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
15
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
16
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
17
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
18
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
19
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
20
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
21
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
22
|
-
|
|
23
|
-
let lintSessionId = undefined;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Emits the provided metric object.
|
|
27
|
-
* @param metric KeplerESLintSummaryMetric object
|
|
28
|
-
*/
|
|
29
|
-
async function emitMetric(metric) {
|
|
30
|
-
const disableTelemetry = process.env.KEPLER_ESLINT_TELEMETRY_DISABLE;
|
|
31
|
-
if (disableTelemetry && disableTelemetry.toUpperCase() === 'TRUE') {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
const metricsToFile = process.env.KEPLER_ESLINT_TELEMETRY_TO_FILE;
|
|
36
|
-
if (metricsToFile && metricsToFile.toUpperCase() === 'TRUE') {
|
|
37
|
-
const filePath = path.join(_Constants.KEPLER_ESLINT_OUTPUT_DIR_PATH, 'keplerESLintMetrics.json');
|
|
38
|
-
fs.writeFileSync(filePath, JSON.stringify(metric), 'utf8');
|
|
39
|
-
} else {
|
|
40
|
-
const telemetryClient = (0, _TelemetryService.getTelemetryClient)();
|
|
41
|
-
const records = toTelemetryRecords(metric, await telemetryClient?.getMachineId());
|
|
42
|
-
for (const record of records) {
|
|
43
|
-
await telemetryClient?.publishMetric(record);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
} catch (err) {}
|
|
47
|
-
}
|
|
48
|
-
function toTelemetryRecords(metric, machineId) {
|
|
49
|
-
const lintSessionId = getLintSessionId();
|
|
50
|
-
const records = [];
|
|
51
|
-
metric.ruleMetrics.forEach(ruleMetric => {
|
|
52
|
-
const lintResultMetric = new _keplerTelemetryServiceTypescriptClient.TelemetryRecordBuilder().withOperationName('lint_result').withMetricType(_keplerTelemetryServiceTypescriptClient.MetricType.Value).withMetricValue(1).withMetricAdditionalProperty('lint_session_id', lintSessionId).withMetricAdditionalProperty('app_id', metric.project?.name ?? _Constants.UNKNOWN).withMetricAdditionalProperty('severity', ruleMetric.severity).withMetricAdditionalProperty('rule_id', ruleMetric.ruleId).withMetricAdditionalProperty('message_id', ruleMetric.messageId ?? _Constants.UNKNOWN).withMetricAdditionalProperty('message', ruleMetric.message ?? _Constants.UNKNOWN).withMetricAdditionalProperty('suppressions', ruleMetric.suppressions ? JSON.stringify(ruleMetric.suppressions) : "").withMetricAdditionalProperty('machine_id', machineId).buildBehavioralAndOperational();
|
|
53
|
-
if (lintResultMetric instanceof _keplerTelemetryServiceTypescriptClient.TelemetryRecord) {
|
|
54
|
-
records.push(lintResultMetric);
|
|
55
|
-
} else {}
|
|
56
|
-
});
|
|
57
|
-
const reportMetric = new _keplerTelemetryServiceTypescriptClient.TelemetryRecordBuilder().withOperationName('lint_html_report').withMetricType(_keplerTelemetryServiceTypescriptClient.MetricType.Error).withMetricValue(metric.reportMetric.exportSuccess ? 0 : 1).withMetricAdditionalProperty('session_id', lintSessionId).withMetricAdditionalProperty('app_id', metric.project?.name ?? _Constants.UNKNOWN).withMetricAdditionalProperty('message', metric.reportMetric.exportError ?? _Constants.UNKNOWN).withMetricAdditionalProperty('machine_id', machineId).buildBehavioralAndOperational();
|
|
58
|
-
if (reportMetric instanceof _keplerTelemetryServiceTypescriptClient.TelemetryRecord) {
|
|
59
|
-
records.push(reportMetric);
|
|
60
|
-
} else {}
|
|
61
|
-
return records;
|
|
62
|
-
}
|
|
63
|
-
function getLintSessionId() {
|
|
64
|
-
if (lintSessionId === undefined) {
|
|
65
|
-
// generate random UUID
|
|
66
|
-
lintSessionId = (0, _uuid.v4)();
|
|
67
|
-
}
|
|
68
|
-
return lintSessionId;
|
|
69
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getTelemetryClient = getTelemetryClient;
|
|
7
|
-
exports.resetTelemetryClientForTests = resetTelemetryClientForTests;
|
|
8
|
-
var _keplerTelemetryServiceTypescriptClient = require("@amazon-devices/kepler-telemetry-service-typescript-client");
|
|
9
|
-
var _PackageUtils = require("../utils/PackageUtils");
|
|
10
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
11
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
12
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
13
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
14
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
15
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
16
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
17
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
19
|
-
|
|
20
|
-
const KIA_COMPONENT_NAME = "kepler_eslint_plugin";
|
|
21
|
-
let client = undefined;
|
|
22
|
-
class SilentLogger {
|
|
23
|
-
debug(message) {}
|
|
24
|
-
info(message) {}
|
|
25
|
-
warn(message) {}
|
|
26
|
-
error(message) {}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Returns the TelemetryClient singleton instance.
|
|
31
|
-
* @returns TelemetryClient instance, or undefined if the client could not be created.
|
|
32
|
-
*/
|
|
33
|
-
function getTelemetryClient() {
|
|
34
|
-
if (!client) {
|
|
35
|
-
client = new _keplerTelemetryServiceTypescriptClient.TelemetryClientBuilder().withLogger(new SilentLogger()).withComponentName(KIA_COMPONENT_NAME).withComponentVersion((0, _PackageUtils.getKeplerESLintPackageJson)().version).build();
|
|
36
|
-
}
|
|
37
|
-
if (client instanceof _keplerTelemetryServiceTypescriptClient.TelemetryClientError) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
return client;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Resets the TelemetryClient singleton instance for tests.
|
|
45
|
-
*/
|
|
46
|
-
function resetTelemetryClientForTests() {
|
|
47
|
-
client = undefined;
|
|
48
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ApiPrivilegeStateCheck = void 0;
|
|
7
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
-
var path = _interopRequireWildcard(require("path"));
|
|
9
|
-
var _apiPermissionsNeeded = require("./apiPermissionsNeeded");
|
|
10
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
12
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
13
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
14
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
15
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
16
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
17
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* ESLint rule to check for SecurityManager usage when APIs require user prompts
|
|
22
|
-
*/
|
|
23
|
-
const ApiPrivilegeStateCheck = exports.ApiPrivilegeStateCheck = {
|
|
24
|
-
meta: {
|
|
25
|
-
type: 'problem',
|
|
26
|
-
docs: {
|
|
27
|
-
description: 'Checks that APIs requiring user prompts have SecurityManager implementation',
|
|
28
|
-
recommended: true,
|
|
29
|
-
category: 'API Privileges'
|
|
30
|
-
},
|
|
31
|
-
fixable: undefined,
|
|
32
|
-
schema: []
|
|
33
|
-
},
|
|
34
|
-
create(context) {
|
|
35
|
-
const packageRequirements = new Map();
|
|
36
|
-
_apiPermissionsNeeded.API_PRIV_NEEDED.forEach(req => {
|
|
37
|
-
if (req.requiresUserPrompt) {
|
|
38
|
-
packageRequirements.set(req.packageName, req);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Checks if SecurityManager package is in package.json dependencies
|
|
44
|
-
*/
|
|
45
|
-
const hasSecurityManagerDependency = () => {
|
|
46
|
-
try {
|
|
47
|
-
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
48
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
52
|
-
const allDeps = {
|
|
53
|
-
...packageJson.dependencies,
|
|
54
|
-
...packageJson.devDependencies
|
|
55
|
-
};
|
|
56
|
-
return !!(allDeps['@amazon-devices/security-manager-lib'] || allDeps['@amazon-devices/security-manager-lib']);
|
|
57
|
-
} catch (error) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
let hasGetPrivilegeState = false;
|
|
62
|
-
let hasRequestPrivilege = false;
|
|
63
|
-
const importNodes = [];
|
|
64
|
-
return {
|
|
65
|
-
MemberExpression(node) {
|
|
66
|
-
if (node.object && node.object.name === 'SecurityManager') {
|
|
67
|
-
if (node.property && node.property.name === 'getPrivilegeState') {
|
|
68
|
-
hasGetPrivilegeState = true;
|
|
69
|
-
}
|
|
70
|
-
if (node.property && node.property.name === 'requestPrivilege') {
|
|
71
|
-
hasRequestPrivilege = true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
ImportDeclaration(node) {
|
|
76
|
-
const importSource = node.source.value;
|
|
77
|
-
const requirement = packageRequirements.get(importSource);
|
|
78
|
-
if (requirement) {
|
|
79
|
-
importNodes.push({
|
|
80
|
-
node,
|
|
81
|
-
importSource
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
'Program:exit'() {
|
|
86
|
-
const hasDependency = hasSecurityManagerDependency();
|
|
87
|
-
const hasCalls = hasGetPrivilegeState && hasRequestPrivilege;
|
|
88
|
-
importNodes.forEach(({
|
|
89
|
-
node,
|
|
90
|
-
importSource
|
|
91
|
-
}) => {
|
|
92
|
-
if (!hasDependency || !hasCalls) {
|
|
93
|
-
context.report({
|
|
94
|
-
node,
|
|
95
|
-
message: `The API ${importSource} requires you prompt the user for privilige acceptance. See the Vega documentation for this API as well as for SecurityManager.`
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ApiPrivilegesCheck = void 0;
|
|
7
|
-
var _apiPermissionsNeeded = require("./apiPermissionsNeeded");
|
|
8
|
-
var _manifestHelper = require("./manifestHelper");
|
|
9
|
-
// Copyright 2025 Amazon.com, Inc. or its affiliates. All rights reserved.
|
|
10
|
-
// AMAZON PROPRIETARY/CONFIDENTIAL
|
|
11
|
-
// You may not use this file except in compliance with the terms and conditions
|
|
12
|
-
// set forth in the accompanying LICENSE.TXT file.
|
|
13
|
-
// THESE MATERIALS ARE PROVIDED ON AN "AS IS" BASIS. AMAZON SPECIFICALLY
|
|
14
|
-
// DISCLAIMS, WITH RESPECT TO THESE MATERIALS, ALL WARRANTIES, EXPRESS,
|
|
15
|
-
// IMPLIED, OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
16
|
-
// FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* ESLint rule to check for API imports that require permissions in manifest.toml
|
|
20
|
-
*/
|
|
21
|
-
const ApiPrivilegesCheck = exports.ApiPrivilegesCheck = {
|
|
22
|
-
meta: {
|
|
23
|
-
type: 'problem',
|
|
24
|
-
docs: {
|
|
25
|
-
description: 'Checks that APIs requiring permissions have proper manifest.toml entries',
|
|
26
|
-
recommended: true,
|
|
27
|
-
category: 'API Privileges'
|
|
28
|
-
},
|
|
29
|
-
fixable: undefined,
|
|
30
|
-
schema: []
|
|
31
|
-
},
|
|
32
|
-
create(context) {
|
|
33
|
-
const packageRequirements = new Map();
|
|
34
|
-
_apiPermissionsNeeded.API_PRIV_NEEDED.forEach(req => {
|
|
35
|
-
packageRequirements.set(req.packageName, req);
|
|
36
|
-
});
|
|
37
|
-
return {
|
|
38
|
-
ImportDeclaration(node) {
|
|
39
|
-
const importSource = node.source.value;
|
|
40
|
-
const requirement = packageRequirements.get(importSource);
|
|
41
|
-
if (requirement) {
|
|
42
|
-
// Check needs privileges first (higher priority)
|
|
43
|
-
if (requirement.needsPrivilege.length > 0) {
|
|
44
|
-
const hasAnyNeedsPrivilege = requirement.needsPrivilege.some(privilege => (0, _manifestHelper.checkManifestForPrivilege)(privilege, 'needs'));
|
|
45
|
-
if (!hasAnyNeedsPrivilege) {
|
|
46
|
-
// Report error with the first privilege as example
|
|
47
|
-
context.report({
|
|
48
|
-
node,
|
|
49
|
-
message: `Using the APIs in ${importSource} requires the [[needs.privilege]] id="${requirement.needsPrivilege[0]}" entry in the Vega manifest.toml. Please see the Vega documentation for more information.`
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
} else if (requirement.wantsPrivilege.length > 0) {
|
|
53
|
-
// Only check wants privileges if no needs privileges are defined
|
|
54
|
-
const hasAnyWantsPrivilege = requirement.wantsPrivilege.some(privilege => (0, _manifestHelper.checkManifestForPrivilege)(privilege, 'wants'));
|
|
55
|
-
if (!hasAnyWantsPrivilege) {
|
|
56
|
-
// Report error with the first privilege as example
|
|
57
|
-
context.report({
|
|
58
|
-
node,
|
|
59
|
-
message: `Using the APIs in ${importSource} requires the [[wants.privilege]] id="${requirement.wantsPrivilege[0]}" entry in the Vega manifest.toml. Please see the Vega documentation for more information.`
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
};
|