diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json
new file mode 100644
index 0000000..986fac3
--- /dev/null
+++ b/graphify-out/.graphify_labels.json
@@ -0,0 +1,8 @@
+{
+ "0": "khanegiSettingCatalog.ts",
+ "1": "formatValueForSave",
+ "2": "resolveSwitchChecked",
+ "3": "normalizeSettingRow",
+ "4": "superAdminSettingKeys.ts",
+ "5": "isSettingVisible"
+}
diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig
new file mode 100644
index 0000000..f969ad4
--- /dev/null
+++ b/graphify-out/.graphify_labels.json.sig
@@ -0,0 +1 @@
+{"0": "c47c6c9a6cdd6684", "1": "2504a600231e9767", "2": "04e8f5fc588d14b2", "3": "d0038b93f872317a", "4": "4fea0ed0deb11c56", "5": "8955a16d55c2d309"}
\ No newline at end of file
diff --git a/graphify-out/.graphify_root b/graphify-out/.graphify_root
new file mode 100644
index 0000000..945c9b4
--- /dev/null
+++ b/graphify-out/.graphify_root
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md
new file mode 100644
index 0000000..b912da8
--- /dev/null
+++ b/graphify-out/GRAPH_REPORT.md
@@ -0,0 +1,80 @@
+# Graph Report - controlpanel_user (2026-10-04)
+
+## Corpus Check
+- 56 files · ~46,173 words
+- Verdict: corpus is large enough that graph structure adds value.
+- Unclassified: 38 file(s) not represented in the graph (top: .ttf 16, .eot 6, .woff 6)
+
+## Summary
+- 63 nodes · 87 edges · 6 communities (4 shown, 2 thin omitted)
+- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
+- Token cost: 0 input · 0 output
+
+## Graph Freshness
+- Built from commit: `bef5da62`
+- Run `git rev-parse HEAD` and compare to check if the graph is stale.
+- Run `graphify update .` after code changes (no API cost).
+
+## Community Hubs (Navigation)
+- khanegiSettingCatalog.ts
+- formatValueForSave
+- resolveSwitchChecked
+- normalizeSettingRow
+- superAdminSettingKeys.ts
+- isSettingVisible
+
+## God Nodes (most connected - your core abstractions)
+1. `formatValueForSave()` - 7 edges
+2. `resolveSwitchChecked()` - 5 edges
+3. `switchValueFromChecked()` - 5 edges
+4. `normalizeSettingRow()` - 5 edges
+5. `normalizeMainWalletProductsValue()` - 4 edges
+6. `isSupportMessengerType()` - 4 edges
+7. `parseSupportMessengers()` - 4 edges
+8. `resolveSettingFieldType()` - 4 edges
+9. `resolveSettingDescription()` - 4 edges
+10. `parseSupportMessengersDraft()` - 3 edges
+
+## Surprising Connections (you probably didn't know these)
+- `formatValueForSave()` --calls--> `resolveSwitchChecked()` [EXTRACTED]
+ src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 2 → community 1_
+
+## Import Cycles
+- None detected.
+
+## Communities (6 total, 2 thin omitted)
+
+### Community 0 - "khanegiSettingCatalog.ts"
+Cohesion: 0.06
+Nodes (26): ref_config, ACTIVATE_DEACTIVATE_SWITCH_KEYS, conditionalOrderEnabledSetting, HIDDEN_LEGACY_SETTING_KEYS, KEY_HELP_FALLBACK, KEY_LABEL_FALLBACK, KEY_TYPE_FALLBACK, MAIN_WALLET_PRODUCTS_DEFAULT (+18 more)
+
+### Community 1 - "formatValueForSave"
+Cohesion: 0.28
+Nodes (9): formatMainWalletProductIds(), formatSupportMessengers(), formatValueForSave(), isSupportMessengerType(), normalizeMainWalletProductsValue(), normalizeTimeValue(), parseMainWalletProductIds(), parseSupportMessengers() (+1 more)
+
+### Community 2 - "resolveSwitchChecked"
+Cohesion: 0.29
+Nodes (7): isActivateDeactivateSwitch(), isReferralRequired(), isSwitchOn(), referralRequiredToString(), resolveSwitchChecked(), switchToString(), switchValueFromChecked()
+
+### Community 3 - "normalizeSettingRow"
+Cohesion: 0.47
+Nodes (6): helpText(), normalizeSettingRow(), resolveSettingCanEdit(), resolveSettingDescription(), resolveSettingFieldType(), resolveSettingTitle()
+
+## Knowledge Gaps
+- **27 isolated node(s):** `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting`, `showToUsersChatSetting`, `SettingFieldType` (+22 more)
+ These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 37 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
+- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
+
+## Suggested Questions
+_Questions this graph is uniquely positioned to answer:_
+
+- **Why does `formatValueForSave()` connect `formatValueForSave` to `khanegiSettingCatalog.ts`, `resolveSwitchChecked`?**
+ _High betweenness centrality (0.004) - this node is a cross-community bridge._
+- **Why does `resolveSwitchChecked()` connect `resolveSwitchChecked` to `khanegiSettingCatalog.ts`, `formatValueForSave`?**
+ _High betweenness centrality (0.001) - this node is a cross-community bridge._
+- **Why does `switchValueFromChecked()` connect `resolveSwitchChecked` to `khanegiSettingCatalog.ts`, `formatValueForSave`?**
+ _High betweenness centrality (0.001) - this node is a cross-community bridge._
+- **What connects `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting` to the rest of the system?**
+ _27 weakly-connected nodes found - possible documentation gaps or missing edges._
+- **Should `khanegiSettingCatalog.ts` be split into smaller, more focused modules?**
+ _Cohesion score 0.05714285714285714 - nodes in this community are weakly interconnected._
\ No newline at end of file
diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json
index 3458d16..63ea111 100644
--- a/graphify-out/cache/stat-index.json
+++ b/graphify-out/cache/stat-index.json
@@ -1 +1 @@
-{"README.md":{"size":442,"mtime_ns":1786352915196344500,"indexed_at_ns":1790064372776161689,"word_count":55},"index.html":{"size":382,"mtime_ns":1786352915196795000,"indexed_at_ns":1790064372776620016,"word_count":31},"package.json":{"size":681,"mtime_ns":1787153733241869200,"indexed_at_ns":1790064372776988000,"word_count":60},"public/favicon.svg":{"size":278,"mtime_ns":1786352915197578700,"indexed_at_ns":1790064372777406070,"word_count":29},"public/icons.svg":{"size":5031,"mtime_ns":1786352915197721800,"indexed_at_ns":1790064372777824028,"word_count":382},"src/App.vue":{"size":344,"mtime_ns":1786352915197867600,"indexed_at_ns":1790064372778270918,"word_count":35},"src/api/http.ts":{"size":598,"mtime_ns":1786352915198027600,"indexed_at_ns":1790064372778751712,"word_count":59},"src/auth/permissions.ts":{"size":1871,"mtime_ns":1786377085786641100,"indexed_at_ns":1790064372793560922,"word_count":201},"src/components/JalaliDatePicker.vue":{"size":3871,"mtime_ns":1789554412084637500,"indexed_at_ns":1790064372794104845,"word_count":394},"src/components/KhanegiDepositPanel.vue":{"size":4406,"mtime_ns":1788876816247845000,"indexed_at_ns":1790064372794625871,"word_count":399},"src/components/MoneyInput.vue":{"size":2327,"mtime_ns":1788875079255983200,"indexed_at_ns":1790064372795145094,"word_count":275},"src/components/SettingsCatalogPanel.vue":{"size":6149,"mtime_ns":1786986825333444900,"indexed_at_ns":1790064372795654230,"word_count":592},"src/components/TenantPanelShortcuts.vue":{"size":7331,"mtime_ns":1786352915211626500,"indexed_at_ns":1790064372796203334,"word_count":845},"src/components/VersionPageTabs.vue":{"size":1530,"mtime_ns":1786990119536758700,"indexed_at_ns":1790064372796738652,"word_count":163},"src/components/program-settings/SettingCard.vue":{"size":5485,"mtime_ns":1786972416689591300,"indexed_at_ns":1790064372797318999,"word_count":469},"src/components/program-settings/SettingToggle.vue":{"size":2508,"mtime_ns":1786972307025286900,"indexed_at_ns":1790064372797930858,"word_count":227},"src/components/program-settings/SettingValueField.vue":{"size":5839,"mtime_ns":1786972346815993800,"indexed_at_ns":1790064372798508320,"word_count":487},"src/config/defaultHamkarUiConfig.ts":{"size":7039,"mtime_ns":1786352915211833800,"indexed_at_ns":1790064372799040724,"word_count":737},"src/config/defaultKhanegiUiConfig.ts":{"size":11193,"mtime_ns":1787560898434721100,"indexed_at_ns":1790064372799735825,"word_count":1207},"src/config/hamkarEffectiveTheme.ts":{"size":2249,"mtime_ns":1786352915212110500,"indexed_at_ns":1790064372800619081,"word_count":280},"src/config/khanegiSettingCatalog.ts":{"size":77368,"mtime_ns":1788614933096693600,"indexed_at_ns":1790064372801442038,"word_count":6864},"src/config/khanegiSettingRow.ts":{"size":220,"mtime_ns":1786972105440816700,"indexed_at_ns":1790064372802543731,"word_count":30},"src/config/khanegiSystemSettingGroups.ts":{"size":5360,"mtime_ns":1788614855858223400,"indexed_at_ns":1790064372803081099,"word_count":496},"src/config/khanegiThemePresets.ts":{"size":6447,"mtime_ns":1786352915212270300,"indexed_at_ns":1790064372803607363,"word_count":673},"src/config/numeric.ts":{"size":1219,"mtime_ns":1786972105440556800,"indexed_at_ns":1790064372804143516,"word_count":160},"src/config/superAdminSettingKeys.ts":{"size":5766,"mtime_ns":1788614865698831900,"indexed_at_ns":1790064372804643626,"word_count":271},"src/layouts/AppLayout.vue":{"size":5556,"mtime_ns":1788873083851134400,"indexed_at_ns":1790064372805165061,"word_count":583},"src/main.ts":{"size":320,"mtime_ns":1786352915212587300,"indexed_at_ns":1790064372805613647,"word_count":36},"src/pages/AdminsPage.vue":{"size":13582,"mtime_ns":1788873155751709500,"indexed_at_ns":1790064372806094296,"word_count":1222},"src/pages/AuditPage.vue":{"size":1489,"mtime_ns":1786352915212934700,"indexed_at_ns":1790064372806641792,"word_count":147},"src/pages/HamkarUiConfigPage.vue":{"size":17660,"mtime_ns":1788873030907565000,"indexed_at_ns":1790064372807135608,"word_count":1416},"src/pages/HomePage.vue":{"size":14431,"mtime_ns":1788942596466701600,"indexed_at_ns":1790064372807700175,"word_count":1193},"src/pages/KhanegiModularUiConfigPage.vue":{"size":11664,"mtime_ns":1788873133224847700,"indexed_at_ns":1790064372808256118,"word_count":1089},"src/pages/LoginPage.vue":{"size":2146,"mtime_ns":1786352915213618700,"indexed_at_ns":1790064372808801466,"word_count":199},"src/pages/PluginCatalogPage.vue":{"size":23753,"mtime_ns":1788972334617575800,"indexed_at_ns":1790064372809320051,"word_count":2151},"src/pages/PluginPanelPage.vue":{"size":17743,"mtime_ns":1788972326034320200,"indexed_at_ns":1790064372809956623,"word_count":1637},"src/pages/PluginTenantPage.vue":{"size":34201,"mtime_ns":1789554426924640600,"indexed_at_ns":1790064372810528293,"word_count":2896},"src/pages/ProductVersionsPage.vue":{"size":7495,"mtime_ns":1788964077410396400,"indexed_at_ns":1790064372811210401,"word_count":630},"src/pages/ProgramSettingsPage.vue":{"size":22948,"mtime_ns":1788873135269548700,"indexed_at_ns":1790064372811739551,"word_count":2126},"src/pages/ServerPanelPage.vue":{"size":9388,"mtime_ns":1788873043565847500,"indexed_at_ns":1790064372812387805,"word_count":841},"src/pages/ServerTenantPage.vue":{"size":21393,"mtime_ns":1788873091808932500,"indexed_at_ns":1790064372813031103,"word_count":1904},"src/pages/SmsPanelPage.vue":{"size":8548,"mtime_ns":1788873043565660600,"indexed_at_ns":1790064372813665380,"word_count":767},"src/pages/SmsTenantPage.vue":{"size":31808,"mtime_ns":1788873091930502100,"indexed_at_ns":1790064372814236209,"word_count":2737},"src/pages/SupportPanelPage.vue":{"size":8509,"mtime_ns":1788873042587012800,"indexed_at_ns":1790064372814894330,"word_count":774},"src/pages/SupportTenantPage.vue":{"size":21721,"mtime_ns":1788873155504786500,"indexed_at_ns":1790064372815496774,"word_count":1826},"src/pages/TenantFormPage.vue":{"size":15067,"mtime_ns":1789626500502038200,"indexed_at_ns":1790064372816115036,"word_count":1275},"src/pages/UiConfigPage.vue":{"size":31846,"mtime_ns":1788873137816556400,"indexed_at_ns":1790064372816727638,"word_count":2641},"src/router/index.ts":{"size":5974,"mtime_ns":1788852471469088500,"indexed_at_ns":1790064372817391902,"word_count":541},"src/stores/auth.ts":{"size":1801,"mtime_ns":1786377085791489900,"indexed_at_ns":1790064372817923077,"word_count":204},"src/theme/tokens.ts":{"size":4616,"mtime_ns":1786352915216459100,"indexed_at_ns":1790064372818684017,"word_count":422},"src/types/vue3-persian-datetime-picker.d.ts":{"size":212,"mtime_ns":1786352915216636300,"indexed_at_ns":1790064372819206900,"word_count":22},"src/utils/datetime.ts":{"size":6276,"mtime_ns":1789550690341050700,"indexed_at_ns":1790064372819699742,"word_count":928},"src/utils/money.ts":{"size":1600,"mtime_ns":1786352915216957500,"indexed_at_ns":1790064372820318927,"word_count":222},"src/utils/rewriteLegacyUploadUrl.ts":{"size":651,"mtime_ns":1788799101621580600,"indexed_at_ns":1790064372820846732,"word_count":75},"src/vite-env.d.ts":{"size":157,"mtime_ns":1786352915217058100,"indexed_at_ns":1790064372821286287,"word_count":18},"tsconfig.app.json":{"size":340,"mtime_ns":1786352915217159500,"indexed_at_ns":1790064372821637400,"word_count":24},"tsconfig.json":{"size":119,"mtime_ns":1786352915217253500,"indexed_at_ns":1790064372821991589,"word_count":15},"tsconfig.node.json":{"size":633,"mtime_ns":1787153734300967400,"indexed_at_ns":1790064372822338391,"word_count":43},"vite.config.ts":{"size":1105,"mtime_ns":1786973481403445100,"indexed_at_ns":1790064372822681270,"word_count":106}}
\ No newline at end of file
+{"README.md":{"size":442,"mtime_ns":1786352915196344500,"indexed_at_ns":1790064372776161689,"word_count":55},"index.html":{"size":382,"mtime_ns":1786352915196795000,"indexed_at_ns":1790064372776620016,"word_count":31},"package.json":{"size":681,"mtime_ns":1787153733241869200,"indexed_at_ns":1790064372776988000,"word_count":60},"public/favicon.svg":{"size":278,"mtime_ns":1786352915197578700,"indexed_at_ns":1790064372777406070,"word_count":29},"public/icons.svg":{"size":5031,"mtime_ns":1786352915197721800,"indexed_at_ns":1790064372777824028,"word_count":382},"src/App.vue":{"size":344,"mtime_ns":1786352915197867600,"indexed_at_ns":1790064372778270918,"word_count":35},"src/api/http.ts":{"size":598,"mtime_ns":1786352915198027600,"indexed_at_ns":1790064372778751712,"word_count":59},"src/auth/permissions.ts":{"size":1871,"mtime_ns":1786377085786641100,"indexed_at_ns":1790064372793560922,"word_count":201},"src/components/JalaliDatePicker.vue":{"size":3871,"mtime_ns":1789554412084637500,"indexed_at_ns":1790064372794104845,"word_count":394},"src/components/KhanegiDepositPanel.vue":{"size":4406,"mtime_ns":1788876816247845000,"indexed_at_ns":1790064372794625871,"word_count":399},"src/components/MoneyInput.vue":{"size":2327,"mtime_ns":1788875079255983200,"indexed_at_ns":1790064372795145094,"word_count":275},"src/components/SettingsCatalogPanel.vue":{"size":6149,"mtime_ns":1786986825333444900,"indexed_at_ns":1790064372795654230,"word_count":592},"src/components/TenantPanelShortcuts.vue":{"size":7331,"mtime_ns":1786352915211626500,"indexed_at_ns":1790064372796203334,"word_count":845},"src/components/VersionPageTabs.vue":{"size":1530,"mtime_ns":1786990119536758700,"indexed_at_ns":1790064372796738652,"word_count":163},"src/components/program-settings/SettingCard.vue":{"size":5485,"mtime_ns":1786972416689591300,"indexed_at_ns":1790064372797318999,"word_count":469},"src/components/program-settings/SettingToggle.vue":{"size":2508,"mtime_ns":1786972307025286900,"indexed_at_ns":1790064372797930858,"word_count":227},"src/components/program-settings/SettingValueField.vue":{"size":5839,"mtime_ns":1786972346815993800,"indexed_at_ns":1790064372798508320,"word_count":487},"src/config/defaultHamkarUiConfig.ts":{"size":7039,"mtime_ns":1786352915211833800,"indexed_at_ns":1790064372799040724,"word_count":737},"src/config/defaultKhanegiUiConfig.ts":{"size":11193,"mtime_ns":1787560898434721100,"indexed_at_ns":1790064372799735825,"word_count":1207},"src/config/hamkarEffectiveTheme.ts":{"size":2249,"mtime_ns":1786352915212110500,"indexed_at_ns":1790064372800619081,"word_count":280},"src/config/khanegiSettingCatalog.ts":{"size":77901,"mtime_ns":1791015842829780600,"indexed_at_ns":1791133977495028910,"word_count":6905},"src/config/khanegiSettingRow.ts":{"size":220,"mtime_ns":1786972105440816700,"indexed_at_ns":1790064372802543731,"word_count":30},"src/config/khanegiSystemSettingGroups.ts":{"size":5360,"mtime_ns":1788614855858223400,"indexed_at_ns":1790064372803081099,"word_count":496},"src/config/khanegiThemePresets.ts":{"size":6447,"mtime_ns":1786352915212270300,"indexed_at_ns":1790064372803607363,"word_count":673},"src/config/numeric.ts":{"size":1219,"mtime_ns":1786972105440556800,"indexed_at_ns":1790064372804143516,"word_count":160},"src/config/superAdminSettingKeys.ts":{"size":5806,"mtime_ns":1791015842830027600,"indexed_at_ns":1791133977498601933,"word_count":272},"src/layouts/AppLayout.vue":{"size":5556,"mtime_ns":1788873083851134400,"indexed_at_ns":1790064372805165061,"word_count":583},"src/main.ts":{"size":320,"mtime_ns":1786352915212587300,"indexed_at_ns":1790064372805613647,"word_count":36},"src/pages/AdminsPage.vue":{"size":13582,"mtime_ns":1788873155751709500,"indexed_at_ns":1790064372806094296,"word_count":1222},"src/pages/AuditPage.vue":{"size":1489,"mtime_ns":1786352915212934700,"indexed_at_ns":1790064372806641792,"word_count":147},"src/pages/HamkarUiConfigPage.vue":{"size":17660,"mtime_ns":1788873030907565000,"indexed_at_ns":1790064372807135608,"word_count":1416},"src/pages/HomePage.vue":{"size":14431,"mtime_ns":1788942596466701600,"indexed_at_ns":1790064372807700175,"word_count":1193},"src/pages/KhanegiModularUiConfigPage.vue":{"size":11664,"mtime_ns":1788873133224847700,"indexed_at_ns":1790064372808256118,"word_count":1089},"src/pages/LoginPage.vue":{"size":2146,"mtime_ns":1786352915213618700,"indexed_at_ns":1790064372808801466,"word_count":199},"src/pages/PluginCatalogPage.vue":{"size":23753,"mtime_ns":1788972334617575800,"indexed_at_ns":1790064372809320051,"word_count":2151},"src/pages/PluginPanelPage.vue":{"size":17743,"mtime_ns":1788972326034320200,"indexed_at_ns":1790064372809956623,"word_count":1637},"src/pages/PluginTenantPage.vue":{"size":34201,"mtime_ns":1789554426924640600,"indexed_at_ns":1790064372810528293,"word_count":2896},"src/pages/ProductVersionsPage.vue":{"size":7495,"mtime_ns":1790177785564258700,"indexed_at_ns":1791133977503698401,"word_count":630},"src/pages/ProgramSettingsPage.vue":{"size":22948,"mtime_ns":1788873135269548700,"indexed_at_ns":1790064372811739551,"word_count":2126},"src/pages/ServerPanelPage.vue":{"size":9388,"mtime_ns":1788873043565847500,"indexed_at_ns":1790064372812387805,"word_count":841},"src/pages/ServerTenantPage.vue":{"size":21393,"mtime_ns":1788873091808932500,"indexed_at_ns":1790064372813031103,"word_count":1904},"src/pages/SmsPanelPage.vue":{"size":8548,"mtime_ns":1788873043565660600,"indexed_at_ns":1790064372813665380,"word_count":767},"src/pages/SmsTenantPage.vue":{"size":31808,"mtime_ns":1788873091930502100,"indexed_at_ns":1790064372814236209,"word_count":2737},"src/pages/SupportPanelPage.vue":{"size":8509,"mtime_ns":1788873042587012800,"indexed_at_ns":1790064372814894330,"word_count":774},"src/pages/SupportTenantPage.vue":{"size":21721,"mtime_ns":1788873155504786500,"indexed_at_ns":1790064372815496774,"word_count":1826},"src/pages/TenantFormPage.vue":{"size":15067,"mtime_ns":1789626500502038200,"indexed_at_ns":1790064372816115036,"word_count":1275},"src/pages/UiConfigPage.vue":{"size":31846,"mtime_ns":1788873137816556400,"indexed_at_ns":1790064372816727638,"word_count":2641},"src/router/index.ts":{"size":5974,"mtime_ns":1788852471469088500,"indexed_at_ns":1790064372817391902,"word_count":541},"src/stores/auth.ts":{"size":1801,"mtime_ns":1786377085791489900,"indexed_at_ns":1790064372817923077,"word_count":204},"src/theme/tokens.ts":{"size":4616,"mtime_ns":1786352915216459100,"indexed_at_ns":1790064372818684017,"word_count":422},"src/types/vue3-persian-datetime-picker.d.ts":{"size":212,"mtime_ns":1786352915216636300,"indexed_at_ns":1790064372819206900,"word_count":22},"src/utils/datetime.ts":{"size":6276,"mtime_ns":1789550690341050700,"indexed_at_ns":1790064372819699742,"word_count":928},"src/utils/money.ts":{"size":1600,"mtime_ns":1786352915216957500,"indexed_at_ns":1790064372820318927,"word_count":222},"src/utils/rewriteLegacyUploadUrl.ts":{"size":651,"mtime_ns":1788799101621580600,"indexed_at_ns":1790064372820846732,"word_count":75},"src/vite-env.d.ts":{"size":157,"mtime_ns":1786352915217058100,"indexed_at_ns":1790064372821286287,"word_count":18},"tsconfig.app.json":{"size":340,"mtime_ns":1786352915217159500,"indexed_at_ns":1790064372821637400,"word_count":24},"tsconfig.json":{"size":119,"mtime_ns":1786352915217253500,"indexed_at_ns":1790064372821991589,"word_count":15},"tsconfig.node.json":{"size":633,"mtime_ns":1787153734300967400,"indexed_at_ns":1790064372822338391,"word_count":43},"vite.config.ts":{"size":1105,"mtime_ns":1786973481403445100,"indexed_at_ns":1790064372822681270,"word_count":106}}
\ No newline at end of file
diff --git a/graphify-out/graph.html b/graphify-out/graph.html
new file mode 100644
index 0000000..a578e4f
--- /dev/null
+++ b/graphify-out/graph.html
@@ -0,0 +1,351 @@
+
+
+
+
+graphify - graphify-out/graph.html
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/graphify-out/graph.json b/graphify-out/graph.json
new file mode 100644
index 0000000..2d7277b
--- /dev/null
+++ b/graphify-out/graph.json
@@ -0,0 +1,1730 @@
+{
+ "directed": false,
+ "multigraph": false,
+ "graph": {},
+ "nodes": [
+ {
+ "id": "src_config_khanegisettingcatalog_partnerurlrow",
+ "label": "PartnerUrlRow",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "partnerurlrow",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L121"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_settingfieldtype",
+ "label": "SettingFieldType",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "settingfieldtype",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L10"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_supportmessengerentrydraft",
+ "label": "SupportMessengerEntryDraft",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "supportmessengerentrydraft",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L57"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_switchhelpparts",
+ "label": "SwitchHelpParts",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "switchhelpparts",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L596"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_formatpartnerserverurls",
+ "label": "formatPartnerServerUrls()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "formatpartnerserverurls()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L150"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_issettingactive",
+ "label": "isSettingActive()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "issettingactive()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L226"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_issettinglocked",
+ "label": "isSettingLocked()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "issettinglocked()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L222"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parsepartnerserverurlsdraft",
+ "label": "parsePartnerServerUrlsDraft()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "parsepartnerserverurlsdraft()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L126"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parseselectoptions",
+ "label": "parseSelectOptions()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "parseselectoptions()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L505"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parseswitchhelp",
+ "label": "parseSwitchHelp()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "parseswitchhelp()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L607"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_supportmessengeridplaceholder",
+ "label": "supportMessengerIdPlaceholder()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "supportmessengeridplaceholder()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L162"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_switchlabels",
+ "label": "switchLabels()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "switchlabels()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L586"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_formatmainwalletproductids",
+ "label": "formatMainWalletProductIds()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "formatmainwalletproductids()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L44"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_formatsupportmessengers",
+ "label": "formatSupportMessengers()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "formatsupportmessengers()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L109"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "label": "formatValueForSave()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "formatvalueforsave()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L557"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_issupportmessengertype",
+ "label": "isSupportMessengerType()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "issupportmessengertype()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L73"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue",
+ "label": "normalizeMainWalletProductsValue()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "normalizemainwalletproductsvalue()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L52"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_normalizetimevalue",
+ "label": "normalizeTimeValue()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "normalizetimevalue()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1335"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parsemainwalletproductids",
+ "label": "parseMainWalletProductIds()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "parsemainwalletproductids()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L23"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parsesupportmessengers",
+ "label": "parseSupportMessengers()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "parsesupportmessengers()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L79"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_parsesupportmessengersdraft",
+ "label": "parseSupportMessengersDraft()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "formatValueForSave",
+ "file_type": "code",
+ "norm_label": "parsesupportmessengersdraft()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L86"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_isactivatedeactivateswitch",
+ "label": "isActivateDeactivateSwitch()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "isactivatedeactivateswitch()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L480"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_isreferralrequired",
+ "label": "isReferralRequired()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "isreferralrequired()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L484"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_isswitchon",
+ "label": "isSwitchOn()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "isswitchon()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L527"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_referralrequiredtostring",
+ "label": "referralRequiredToString()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "referralrequiredtostring()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L488"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "label": "resolveSwitchChecked()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "resolveswitchchecked()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L536"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_switchtostring",
+ "label": "switchToString()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "switchtostring()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L532"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "label": "switchValueFromChecked()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "resolveSwitchChecked",
+ "file_type": "code",
+ "norm_label": "switchvaluefromchecked()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L547"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_helptext",
+ "label": "helpText()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "helptext()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1316"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "label": "normalizeSettingRow()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "normalizesettingrow()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1298"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_resolvesettingcanedit",
+ "label": "resolveSettingCanEdit()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "resolvesettingcanedit()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1287"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_resolvesettingdescription",
+ "label": "resolveSettingDescription()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "resolvesettingdescription()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1268"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_resolvesettingfieldtype",
+ "label": "resolveSettingFieldType()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "resolvesettingfieldtype()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L492"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_resolvesettingtitle",
+ "label": "resolveSettingTitle()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "normalizeSettingRow",
+ "file_type": "code",
+ "norm_label": "resolvesettingtitle()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1261"
+ },
+ {
+ "id": "src_config_superadminsettingkeys_issuperadminsystemsettingkey",
+ "label": "isSuperAdminSystemSettingKey()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "superAdminSettingKeys.ts",
+ "file_type": "code",
+ "norm_label": "issuperadminsystemsettingkey()",
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L227"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_issettingvisible",
+ "label": "isSettingVisible()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "isSettingVisible",
+ "file_type": "code",
+ "norm_label": "issettingvisible()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L231"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_isstoreapp",
+ "label": "isStoreApp()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "isSettingVisible",
+ "file_type": "code",
+ "norm_label": "isstoreapp()",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L4"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog",
+ "label": "khanegiSettingCatalog.ts",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "khanegisettingcatalog.ts",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_activate_deactivate_switch_keys",
+ "label": "ACTIVATE_DEACTIVATE_SWITCH_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "activate_deactivate_switch_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L478"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_conditionalorderenabledsetting",
+ "label": "conditionalOrderEnabledSetting",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "conditionalorderenabledsetting",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L5"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_hidden_legacy_setting_keys",
+ "label": "HIDDEN_LEGACY_SETTING_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "hidden_legacy_setting_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L203"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_key_help_fallback",
+ "label": "KEY_HELP_FALLBACK",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "key_help_fallback",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L645"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_key_label_fallback",
+ "label": "KEY_LABEL_FALLBACK",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "key_label_fallback",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1012"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_key_type_fallback",
+ "label": "KEY_TYPE_FALLBACK",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "key_type_fallback",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L273"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_main_wallet_products_default",
+ "label": "MAIN_WALLET_PRODUCTS_DEFAULT",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "main_wallet_products_default",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L20"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_partner_server_urls_max",
+ "label": "PARTNER_SERVER_URLS_MAX",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "partner_server_urls_max",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L123"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_price_channel_panel_keys",
+ "label": "PRICE_CHANNEL_PANEL_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "price_channel_panel_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L249"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_pricechannelaccesssetting",
+ "label": "priceChannelAccessSetting",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "pricechannelaccesssetting",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L6"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_priceprovidersetting",
+ "label": "priceProviderSetting",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "priceprovidersetting",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L7"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_referral_required_key",
+ "label": "REFERRAL_REQUIRED_KEY",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "referral_required_key",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L475"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_select_labels_by_key",
+ "label": "SELECT_LABELS_BY_KEY",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "select_labels_by_key",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L439"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_select_options_by_key",
+ "label": "SELECT_OPTIONS_BY_KEY",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "select_options_by_key",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L463"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_setting_code_managed_keys",
+ "label": "SETTING_CODE_MANAGED_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "setting_code_managed_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L186"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_setting_editable_keys",
+ "label": "SETTING_EDITABLE_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "setting_editable_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1213"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_setting_locked_keys",
+ "label": "SETTING_LOCKED_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "setting_locked_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1156"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_setting_type_options",
+ "label": "SETTING_TYPE_OPTIONS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "setting_type_options",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L262"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_showtouserschatsetting",
+ "label": "showToUsersChatSetting",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "showtouserschatsetting",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L8"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_store_only_setting_keys",
+ "label": "STORE_ONLY_SETTING_KEYS",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "store_only_setting_keys",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L220"
+ },
+ {
+ "id": "src_config_khanegisettingcatalog_support_messenger_types",
+ "label": "SUPPORT_MESSENGER_TYPES",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "file_type": "code",
+ "norm_label": "support_messenger_types",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L62"
+ },
+ {
+ "id": "src_config_superadminsettingkeys",
+ "label": "superAdminSettingKeys.ts",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "superAdminSettingKeys.ts",
+ "file_type": "code",
+ "norm_label": "superadminsettingkeys.ts",
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L1"
+ },
+ {
+ "id": "src_config_superadminsettingkeys_superadmin_editable_setting_keys",
+ "label": "SUPERADMIN_EDITABLE_SETTING_KEYS",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "superAdminSettingKeys.ts",
+ "file_type": "code",
+ "norm_label": "superadmin_editable_setting_keys",
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L24"
+ },
+ {
+ "id": "src_config_superadminsettingkeys_superadmin_system_setting_keys",
+ "label": "SUPERADMIN_SYSTEM_SETTING_KEYS",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "superAdminSettingKeys.ts",
+ "file_type": "code",
+ "norm_label": "superadmin_system_setting_keys",
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L5"
+ },
+ {
+ "id": "ref_config",
+ "label": "ref_config",
+ "community": 0,
+ "community_name": "khanegiSettingCatalog.ts",
+ "external": true,
+ "file_type": "concept",
+ "norm_label": "ref_config",
+ "source_file": "",
+ "type": "external"
+ }
+ ],
+ "links": [
+ {
+ "source": "src_config_khanegisettingcatalog_formatsupportmessengers",
+ "target": "src_config_khanegisettingcatalog_issupportmessengertype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L115",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L563",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L565",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_normalizetimevalue",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L575",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L578",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_formatsupportmessengers",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L581",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "target": "src_config_khanegisettingcatalog_parsesupportmessengers",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L581",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_helptext",
+ "target": "src_config_khanegisettingcatalog_resolvesettingdescription",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1322",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_helptext",
+ "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1325",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_issettingvisible",
+ "target": "src_config_khanegisettingcatalog_isstoreapp",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L235",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue",
+ "target": "src_config_khanegisettingcatalog_formatmainwalletproductids",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L53",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue",
+ "target": "src_config_khanegisettingcatalog_parsemainwalletproductids",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L53",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "target": "src_config_khanegisettingcatalog_resolvesettingtitle",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1309",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "target": "src_config_khanegisettingcatalog_resolvesettingdescription",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1310",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "target": "src_config_khanegisettingcatalog_resolvesettingcanedit",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1311",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1312",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_parsesupportmessengers",
+ "target": "src_config_khanegisettingcatalog_parsesupportmessengersdraft",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L80",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_parsesupportmessengers",
+ "target": "src_config_khanegisettingcatalog_issupportmessengertype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L81",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_parsesupportmessengersdraft",
+ "target": "src_config_khanegisettingcatalog_issupportmessengertype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L103",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_resolvesettingdescription",
+ "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1272",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "target": "src_config_khanegisettingcatalog_isreferralrequired",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L538",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L540",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "target": "src_config_khanegisettingcatalog_isswitchon",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L544",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "target": "src_config_khanegisettingcatalog_referralrequiredtostring",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L549",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L551",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "target": "src_config_khanegisettingcatalog_switchtostring",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L554",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "ref_config",
+ "relation": "imports_from",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L2",
+ "type_only": true,
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_settingfieldtype",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L10",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_key_label_fallback",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1012",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_formatsupportmessengers",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L109",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_setting_locked_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1156",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_partnerurlrow",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L121",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_setting_editable_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1213",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_partner_server_urls_max",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L123",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parsepartnerserverurlsdraft",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L126",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_resolvesettingtitle",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1261",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_resolvesettingdescription",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1268",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_resolvesettingcanedit",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1287",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_normalizesettingrow",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1298",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_helptext",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1316",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_normalizetimevalue",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L1335",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_formatpartnerserverurls",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L150",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_supportmessengeridplaceholder",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L162",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_setting_code_managed_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L186",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_main_wallet_products_default",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L20",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_hidden_legacy_setting_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L203",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_store_only_setting_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L220",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_issettinglocked",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L222",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_issettingactive",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L226",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parsemainwalletproductids",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_issettingvisible",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L231",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_price_channel_panel_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L249",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_setting_type_options",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L262",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_key_type_fallback",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L273",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_isstoreapp",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L4",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_select_labels_by_key",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L439",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_formatmainwalletproductids",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L44",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_select_options_by_key",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L463",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_referral_required_key",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L475",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_activate_deactivate_switch_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L478",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L480",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_isreferralrequired",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L484",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_referralrequiredtostring",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L488",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L492",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_conditionalorderenabledsetting",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L5",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parseselectoptions",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L505",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L52",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_isswitchon",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L527",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_switchtostring",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L532",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_resolveswitchchecked",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L536",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_switchvaluefromchecked",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L547",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_formatvalueforsave",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L557",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_supportmessengerentrydraft",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L57",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_switchlabels",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L586",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_switchhelpparts",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L596",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_pricechannelaccesssetting",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L6",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parseswitchhelp",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L607",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_support_messenger_types",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L62",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_key_help_fallback",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L645",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_priceprovidersetting",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L7",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_issupportmessengertype",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L73",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parsesupportmessengers",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L79",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_showtouserschatsetting",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L8",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_khanegisettingcatalog",
+ "target": "src_config_khanegisettingcatalog_parsesupportmessengersdraft",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/khanegiSettingCatalog.ts",
+ "source_location": "L86",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_superadminsettingkeys",
+ "target": "src_config_superadminsettingkeys_issuperadminsystemsettingkey",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L227",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_superadminsettingkeys",
+ "target": "src_config_superadminsettingkeys_superadmin_editable_setting_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L24",
+ "weight": 1.0
+ },
+ {
+ "source": "src_config_superadminsettingkeys",
+ "target": "src_config_superadminsettingkeys_superadmin_system_setting_keys",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "src/config/superAdminSettingKeys.ts",
+ "source_location": "L5",
+ "weight": 1.0
+ }
+ ],
+ "hyperedges": [],
+ "built_at_commit": "bef5da6239125c09d0be11736fc906a96b76ac3a"
+}
\ No newline at end of file
diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json
new file mode 100644
index 0000000..f498f63
--- /dev/null
+++ b/graphify-out/manifest.json
@@ -0,0 +1,356 @@
+{
+ "package.json": {
+ "mtime": 1787153733.2418692,
+ "seen": 1791133977.6193485,
+ "ast_hash": "0ea185a5e1e78aadf7025665e9b39e9e",
+ "semantic_hash": ""
+ },
+ "src/App.vue": {
+ "mtime": 1786352915.1978676,
+ "seen": 1791133977.619354,
+ "ast_hash": "d87851861f641427b9beb7dab5a75980",
+ "semantic_hash": ""
+ },
+ "src/api/http.ts": {
+ "mtime": 1786352915.1980276,
+ "seen": 1791133977.6193569,
+ "ast_hash": "9dc615bf4662aa79f29b0db92134b79e",
+ "semantic_hash": ""
+ },
+ "src/auth/permissions.ts": {
+ "mtime": 1786377085.7866411,
+ "seen": 1791133977.6193588,
+ "ast_hash": "20cf34abc737e76f0fd1f9c2c233dc8f",
+ "semantic_hash": ""
+ },
+ "src/components/JalaliDatePicker.vue": {
+ "mtime": 1789554412.0846374,
+ "seen": 1791133977.6193602,
+ "ast_hash": "a9754baab2ad0987a406000a6f61fbf8",
+ "semantic_hash": ""
+ },
+ "src/components/KhanegiDepositPanel.vue": {
+ "mtime": 1788876816.247845,
+ "seen": 1791133977.6193616,
+ "ast_hash": "d1e30b30e0d99d792c6b705e2fe34991",
+ "semantic_hash": ""
+ },
+ "src/components/MoneyInput.vue": {
+ "mtime": 1788875079.255983,
+ "seen": 1791133977.6193628,
+ "ast_hash": "06eff041abd7a55e4832cf98db8e754b",
+ "semantic_hash": ""
+ },
+ "src/components/SettingsCatalogPanel.vue": {
+ "mtime": 1786986825.3334448,
+ "seen": 1791133977.619364,
+ "ast_hash": "baff7fe473f274cbaaacf87f81a5c615",
+ "semantic_hash": ""
+ },
+ "src/components/TenantPanelShortcuts.vue": {
+ "mtime": 1786352915.2116265,
+ "seen": 1791133977.6193655,
+ "ast_hash": "4829dc2470e432c360cb4f00a3b7f372",
+ "semantic_hash": ""
+ },
+ "src/components/VersionPageTabs.vue": {
+ "mtime": 1786990119.5367587,
+ "seen": 1791133977.6193666,
+ "ast_hash": "df3345b45d52c55e49244b7807cbcf1f",
+ "semantic_hash": ""
+ },
+ "src/components/program-settings/SettingCard.vue": {
+ "mtime": 1786972416.6895914,
+ "seen": 1791133977.6193678,
+ "ast_hash": "7629045273cd0b04c29473fdd562a179",
+ "semantic_hash": ""
+ },
+ "src/components/program-settings/SettingToggle.vue": {
+ "mtime": 1786972307.025287,
+ "seen": 1791133977.6193695,
+ "ast_hash": "e538c09c9a630204f5ff7a0287817ee3",
+ "semantic_hash": ""
+ },
+ "src/components/program-settings/SettingValueField.vue": {
+ "mtime": 1786972346.8159938,
+ "seen": 1791133977.6193707,
+ "ast_hash": "41c146f501265f37d643dc76fc0d7392",
+ "semantic_hash": ""
+ },
+ "src/config/defaultHamkarUiConfig.ts": {
+ "mtime": 1786352915.2118337,
+ "seen": 1791133977.6193721,
+ "ast_hash": "f3376ee71c1d8f7d68f9af6ec1db6e6b",
+ "semantic_hash": ""
+ },
+ "src/config/defaultKhanegiUiConfig.ts": {
+ "mtime": 1787560898.434721,
+ "seen": 1791133977.6193733,
+ "ast_hash": "273b1d70ada3296dd50a9e92a5a8238d",
+ "semantic_hash": ""
+ },
+ "src/config/hamkarEffectiveTheme.ts": {
+ "mtime": 1786352915.2121105,
+ "seen": 1791133977.6193743,
+ "ast_hash": "0fec3d7e57d42a3db8a76a2a78f11ea5",
+ "semantic_hash": ""
+ },
+ "src/config/khanegiSettingCatalog.ts": {
+ "mtime": 1791015842.8297806,
+ "seen": 1791133977.619376,
+ "ast_hash": "ab5c90f95d716e0172f4cfa88b8ba56d",
+ "semantic_hash": ""
+ },
+ "src/config/khanegiSettingRow.ts": {
+ "mtime": 1786972105.4408166,
+ "seen": 1791133977.6193771,
+ "ast_hash": "e231618c0266b4898b8250abd77bc8f9",
+ "semantic_hash": ""
+ },
+ "src/config/khanegiSystemSettingGroups.ts": {
+ "mtime": 1788614855.8582234,
+ "seen": 1791133977.6193783,
+ "ast_hash": "50e2e92d1428b4eacb9c21315de227ce",
+ "semantic_hash": ""
+ },
+ "src/config/khanegiThemePresets.ts": {
+ "mtime": 1786352915.2122703,
+ "seen": 1791133977.6193798,
+ "ast_hash": "40385f7f94dd9e317b2e2c46deed52ec",
+ "semantic_hash": ""
+ },
+ "src/config/numeric.ts": {
+ "mtime": 1786972105.4405568,
+ "seen": 1791133977.619381,
+ "ast_hash": "cd431f7af9e4b0d4a03be856ef78341e",
+ "semantic_hash": ""
+ },
+ "src/config/superAdminSettingKeys.ts": {
+ "mtime": 1791015842.8300276,
+ "seen": 1791133977.6193826,
+ "ast_hash": "09d0079d23d5f15fd0cc137844a18540",
+ "semantic_hash": ""
+ },
+ "src/layouts/AppLayout.vue": {
+ "mtime": 1788873083.8511343,
+ "seen": 1791133977.619384,
+ "ast_hash": "cd71c1876ad38c9bcfc15eaa31ef2151",
+ "semantic_hash": ""
+ },
+ "src/main.ts": {
+ "mtime": 1786352915.2125874,
+ "seen": 1791133977.6193852,
+ "ast_hash": "ecb1b140df8f5c8250545a335fa47c9e",
+ "semantic_hash": ""
+ },
+ "src/pages/AdminsPage.vue": {
+ "mtime": 1788873155.7517095,
+ "seen": 1791133977.6193867,
+ "ast_hash": "e5b4a807bdea957ba1ca0f21348d6a6c",
+ "semantic_hash": ""
+ },
+ "src/pages/AuditPage.vue": {
+ "mtime": 1786352915.2129347,
+ "seen": 1791133977.6193879,
+ "ast_hash": "26848d52a3dbb5069aa54775acab8e85",
+ "semantic_hash": ""
+ },
+ "src/pages/HamkarUiConfigPage.vue": {
+ "mtime": 1788873030.907565,
+ "seen": 1791133977.6193893,
+ "ast_hash": "51c4a855048ace46e1b37008827f0d47",
+ "semantic_hash": ""
+ },
+ "src/pages/HomePage.vue": {
+ "mtime": 1788942596.4667015,
+ "seen": 1791133977.6193905,
+ "ast_hash": "5e73449136257e730f06538014d05850",
+ "semantic_hash": ""
+ },
+ "src/pages/KhanegiModularUiConfigPage.vue": {
+ "mtime": 1788873133.2248478,
+ "seen": 1791133977.6193962,
+ "ast_hash": "43ae7cd439ddbd7206d5feae0a035808",
+ "semantic_hash": ""
+ },
+ "src/pages/LoginPage.vue": {
+ "mtime": 1786352915.2136188,
+ "seen": 1791133977.6193972,
+ "ast_hash": "b629d53ac0df833f863c19f9d2eedc61",
+ "semantic_hash": ""
+ },
+ "src/pages/PluginCatalogPage.vue": {
+ "mtime": 1788972334.617576,
+ "seen": 1791133977.619398,
+ "ast_hash": "12f79da56c91cd3b554b3eed346f1b63",
+ "semantic_hash": ""
+ },
+ "src/pages/PluginPanelPage.vue": {
+ "mtime": 1788972326.03432,
+ "seen": 1791133977.6193993,
+ "ast_hash": "2b3a45073ef16ab7063785956b913d80",
+ "semantic_hash": ""
+ },
+ "src/pages/PluginTenantPage.vue": {
+ "mtime": 1789554426.9246407,
+ "seen": 1791133977.6194007,
+ "ast_hash": "d23afb3fdde3aa701a3e02ad82bf73ef",
+ "semantic_hash": ""
+ },
+ "src/pages/ProductVersionsPage.vue": {
+ "mtime": 1790177785.5642588,
+ "seen": 1791133977.6194022,
+ "ast_hash": "458e757f30b3fa12021205581741ce10",
+ "semantic_hash": ""
+ },
+ "src/pages/ProgramSettingsPage.vue": {
+ "mtime": 1788873135.2695487,
+ "seen": 1791133977.6194036,
+ "ast_hash": "ec6a273ff3ff292f8e1fa07f21682518",
+ "semantic_hash": ""
+ },
+ "src/pages/ServerPanelPage.vue": {
+ "mtime": 1788873043.5658474,
+ "seen": 1791133977.6194046,
+ "ast_hash": "426a0e93e52bfc2b588b28669a0d28fa",
+ "semantic_hash": ""
+ },
+ "src/pages/ServerTenantPage.vue": {
+ "mtime": 1788873091.8089325,
+ "seen": 1791133977.619406,
+ "ast_hash": "7ae5ebd7cbdea8fde31ea4d78601a23e",
+ "semantic_hash": ""
+ },
+ "src/pages/SmsPanelPage.vue": {
+ "mtime": 1788873043.5656607,
+ "seen": 1791133977.6194072,
+ "ast_hash": "696297a851fae528b55756f8590284ad",
+ "semantic_hash": ""
+ },
+ "src/pages/SmsTenantPage.vue": {
+ "mtime": 1788873091.9305022,
+ "seen": 1791133977.6194084,
+ "ast_hash": "5dd4c6671629e829371c3d5b5dcb064f",
+ "semantic_hash": ""
+ },
+ "src/pages/SupportPanelPage.vue": {
+ "mtime": 1788873042.5870128,
+ "seen": 1791133977.6194096,
+ "ast_hash": "ec2f46ea98eb15d7ab9fc84f91fdb5c0",
+ "semantic_hash": ""
+ },
+ "src/pages/SupportTenantPage.vue": {
+ "mtime": 1788873155.5047865,
+ "seen": 1791133977.619411,
+ "ast_hash": "26119695bf9ae113f723761a96e9920c",
+ "semantic_hash": ""
+ },
+ "src/pages/TenantFormPage.vue": {
+ "mtime": 1789626500.5020382,
+ "seen": 1791133977.6194122,
+ "ast_hash": "bdc1ad360c59703855dde8852bbdf182",
+ "semantic_hash": ""
+ },
+ "src/pages/UiConfigPage.vue": {
+ "mtime": 1788873137.8165565,
+ "seen": 1791133977.6194139,
+ "ast_hash": "5fb5e68a4aae67c73c7320a0f302575f",
+ "semantic_hash": ""
+ },
+ "src/router/index.ts": {
+ "mtime": 1788852471.4690886,
+ "seen": 1791133977.6194155,
+ "ast_hash": "550d87d0ccccb911ab2337a740ddf081",
+ "semantic_hash": ""
+ },
+ "src/stores/auth.ts": {
+ "mtime": 1786377085.7914898,
+ "seen": 1791133977.6194167,
+ "ast_hash": "1ba25b41a49803e021a3973a752e3d25",
+ "semantic_hash": ""
+ },
+ "src/theme/tokens.ts": {
+ "mtime": 1786352915.216459,
+ "seen": 1791133977.6194181,
+ "ast_hash": "ceecfc226cf4db2c5fe72fd57834f094",
+ "semantic_hash": ""
+ },
+ "src/types/vue3-persian-datetime-picker.d.ts": {
+ "mtime": 1786352915.2166362,
+ "seen": 1791133977.6194193,
+ "ast_hash": "d6c63254beaf8e4cba21615c737081f6",
+ "semantic_hash": ""
+ },
+ "src/utils/datetime.ts": {
+ "mtime": 1789550690.3410506,
+ "seen": 1791133977.6194208,
+ "ast_hash": "3f44d9ee7b87d32892366eafc03e89b6",
+ "semantic_hash": ""
+ },
+ "src/utils/money.ts": {
+ "mtime": 1786352915.2169576,
+ "seen": 1791133977.619422,
+ "ast_hash": "3dd9ef861fcaa479a7ce3c6c5da2c6e3",
+ "semantic_hash": ""
+ },
+ "src/utils/rewriteLegacyUploadUrl.ts": {
+ "mtime": 1788799101.6215806,
+ "seen": 1791133977.6194232,
+ "ast_hash": "da4e9d04bd43513e9644e8203cbc3819",
+ "semantic_hash": ""
+ },
+ "src/vite-env.d.ts": {
+ "mtime": 1786352915.2170582,
+ "seen": 1791133977.6194243,
+ "ast_hash": "53ef1e204e58e29f9e328d6ddb0d5ef5",
+ "semantic_hash": ""
+ },
+ "tsconfig.app.json": {
+ "mtime": 1786352915.2171595,
+ "seen": 1791133977.6194255,
+ "ast_hash": "d067e3ba63ec213fcec98b687b5e54e2",
+ "semantic_hash": ""
+ },
+ "tsconfig.json": {
+ "mtime": 1786352915.2172534,
+ "seen": 1791133977.6194267,
+ "ast_hash": "a3d39fa780ebff65444de257f291ce6c",
+ "semantic_hash": ""
+ },
+ "tsconfig.node.json": {
+ "mtime": 1787153734.3009675,
+ "seen": 1791133977.6194282,
+ "ast_hash": "308bb19a1eb06cf3481482994c5c7bd5",
+ "semantic_hash": ""
+ },
+ "vite.config.ts": {
+ "mtime": 1786973481.403445,
+ "seen": 1791133977.6194293,
+ "ast_hash": "90a02fc0c5386c89adc80703c4344995",
+ "semantic_hash": ""
+ },
+ "README.md": {
+ "mtime": 1786352915.1963446,
+ "seen": 1791133977.619431,
+ "ast_hash": "64ba9c1ddf7098960f302d6dcbd66522",
+ "semantic_hash": ""
+ },
+ "index.html": {
+ "mtime": 1786352915.196795,
+ "seen": 1791133977.6194324,
+ "ast_hash": "4a22619d085cffe0062757a639d1636e",
+ "semantic_hash": ""
+ },
+ "public/favicon.svg": {
+ "mtime": 1786352915.1975787,
+ "seen": 1791133977.6194336,
+ "ast_hash": "ddb1b57182207e652a01e2b0266df08e",
+ "semantic_hash": ""
+ },
+ "public/icons.svg": {
+ "mtime": 1786352915.1977217,
+ "seen": 1791133977.619435,
+ "ast_hash": "3b4fcfcf393eca4d264dca4a4663bc37",
+ "semantic_hash": ""
+ }
+}
\ No newline at end of file
diff --git a/src/components/LayoutVariantsEditor.vue b/src/components/LayoutVariantsEditor.vue
new file mode 100644
index 0000000..44f4947
--- /dev/null
+++ b/src/components/LayoutVariantsEditor.vue
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/config/defaultKhanegiUiConfig.ts b/src/config/defaultKhanegiUiConfig.ts
index ad0bb46..1029512 100644
--- a/src/config/defaultKhanegiUiConfig.ts
+++ b/src/config/defaultKhanegiUiConfig.ts
@@ -1,3 +1,5 @@
+import { applyKhanegiLayoutVariants, createDefaultKhanegiLayoutVariants } from '@/config/khanegiLayoutVariants'
+
export type ThemeColors = {
primary: string
secondary: string
@@ -112,6 +114,7 @@ export function createDefaultKhanegiUiConfig() {
showProfile: true,
brandSubtitle: 'پنل کاربری',
},
+ layoutVariants: createDefaultKhanegiLayoutVariants(),
},
pages: {} as Record,
}
@@ -303,6 +306,7 @@ export function normalizeKhanegiUiConfigForClient>
if (app.header && typeof app.header === 'object') {
app.header.variant = 'default'
}
+ applyKhanegiLayoutVariants(app)
if (app.navigation && typeof app.navigation === 'object') {
if (app.navigation.type === 'sidebar+bottom') app.navigation.type = 'both'
app.navigation.sidebar = mapLegacyNavItems(app.navigation.sidebar)
diff --git a/src/config/khanegiLayoutVariants.ts b/src/config/khanegiLayoutVariants.ts
new file mode 100644
index 0000000..8611d2c
--- /dev/null
+++ b/src/config/khanegiLayoutVariants.ts
@@ -0,0 +1,145 @@
+/**
+ * چیدمان المانهای تم جدید.
+ * با controlpanel_server/src/get-user/khanegi-layout-variants.ts یکی بماند.
+ * variant شناسهٔ themeN است. جزئیات المان داخل options میماند.
+ */
+
+export const LAYOUT_VARIANT_ID = /^theme[1-9]\d*$/
+export const LAYOUT_OPTION_KEY = /^[a-zA-Z][a-zA-Z0-9_]*$/
+
+export type LayoutThemeDef = {
+ id: string
+ label: string
+}
+
+export type LayoutElementConfig = {
+ id: string
+ variant: string
+ options: Record
+}
+
+export type KhanegiLayoutVariants = {
+ schemaId: 'layout-variants'
+ version: '1.0.0'
+ themes: LayoutThemeDef[]
+ header: LayoutElementConfig
+ footer: LayoutElementConfig
+ home: {
+ assets: LayoutElementConfig
+ livePrice: LayoutElementConfig
+ quickAccess: LayoutElementConfig
+ recentTransactions: LayoutElementConfig
+ [elementId: string]: LayoutElementConfig
+ }
+}
+
+function isRecord(value: unknown): value is Record {
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value)
+}
+
+export function isLayoutVariantId(value: unknown): value is string {
+ return typeof value === 'string' && LAYOUT_VARIANT_ID.test(value)
+}
+
+export function nextLayoutThemeId(ids: string[]): string {
+ let n = 1
+ const used = new Set(ids)
+ while (used.has(`theme${n}`)) n += 1
+ return `theme${n}`
+}
+
+function defaultThemes(): LayoutThemeDef[] {
+ return [
+ { id: 'theme1', label: 'تم ۱' },
+ { id: 'theme2', label: 'تم ۲' },
+ ]
+}
+
+function element(id: string): LayoutElementConfig {
+ return { id, variant: 'theme1', options: {} }
+}
+
+export function mergeLayoutThemes(stored: unknown, usedIds: string[] = []): LayoutThemeDef[] {
+ const parsed: LayoutThemeDef[] = []
+ const seen = new Set()
+ if (Array.isArray(stored)) {
+ for (const row of stored) {
+ if (!isRecord(row) || !isLayoutVariantId(row.id) || seen.has(row.id)) continue
+ seen.add(row.id)
+ const label = typeof row.label === 'string' && row.label.trim()
+ ? row.label.trim().slice(0, 40)
+ : row.id
+ parsed.push({ id: row.id, label })
+ }
+ }
+ const list = parsed.length ? parsed : defaultThemes()
+ for (const id of usedIds) {
+ if (!isLayoutVariantId(id) || list.some((theme) => theme.id === id)) continue
+ list.push({ id, label: id })
+ }
+ return list
+}
+
+export function createDefaultKhanegiLayoutVariants(): KhanegiLayoutVariants {
+ return {
+ schemaId: 'layout-variants',
+ version: '1.0.0',
+ themes: defaultThemes(),
+ header: element('header'),
+ footer: element('footer'),
+ home: {
+ assets: element('assets'),
+ livePrice: element('livePrice'),
+ quickAccess: element('quickAccess'),
+ recentTransactions: element('recentTransactions'),
+ },
+ }
+}
+
+export function mergeLayoutElement(id: string, stored: unknown): LayoutElementConfig {
+ const base = element(id)
+ if (!isRecord(stored)) return base
+ const options = isRecord(stored.options) ? { ...stored.options } : {}
+ return {
+ ...stored,
+ id,
+ variant: isLayoutVariantId(stored.variant) ? stored.variant : 'theme1',
+ options,
+ }
+}
+
+/** تم انتخابشده و کلید options پاک نمیشود. فهرست تم خالی به تم ۱ و ۲ برمیگردد. */
+export function mergeKhanegiLayoutVariants(stored: unknown): KhanegiLayoutVariants {
+ const defaults = createDefaultKhanegiLayoutVariants()
+ const src = isRecord(stored) ? stored : {}
+ const homeSrc = isRecord(src.home) ? src.home : {}
+ const knownHome = Object.keys(defaults.home)
+ const home: KhanegiLayoutVariants['home'] = { ...defaults.home }
+
+ for (const key of Object.keys(homeSrc)) {
+ if (knownHome.includes(key)) continue
+ home[key] = mergeLayoutElement(key, homeSrc[key])
+ }
+ for (const key of knownHome) {
+ home[key] = mergeLayoutElement(key, homeSrc[key])
+ }
+
+ const header = mergeLayoutElement('header', src.header)
+ const footer = mergeLayoutElement('footer', src.footer)
+ const usedIds = [header.variant, footer.variant, ...Object.values(home).map((item) => item.variant)]
+
+ return {
+ ...src,
+ schemaId: 'layout-variants',
+ version: '1.0.0',
+ themes: mergeLayoutThemes(src.themes, usedIds),
+ header,
+ footer,
+ home,
+ }
+}
+
+export function applyKhanegiLayoutVariants(app: { layoutVariants?: unknown } | null | undefined) {
+ if (!app || typeof app !== 'object') return
+ app.layoutVariants = mergeKhanegiLayoutVariants(app.layoutVariants)
+}
diff --git a/src/pages/UiConfigPage.vue b/src/pages/UiConfigPage.vue
index 5dfdf51..bbce5fe 100644
--- a/src/pages/UiConfigPage.vue
+++ b/src/pages/UiConfigPage.vue
@@ -4,6 +4,7 @@ import { useRoute, useRouter } from 'vue-router'
import { message, Modal } from 'ant-design-vue'
import { ArrowRightOutlined, HolderOutlined } from '@ant-design/icons-vue'
import api from '@/api/http'
+import LayoutVariantsEditor from '@/components/LayoutVariantsEditor.vue'
import VersionPageTabs from '@/components/VersionPageTabs.vue'
import {
applyKhanegiNavSample,
@@ -14,6 +15,7 @@ import {
normalizeKhanegiUiConfigForClient,
type KhanegiNavItem,
} from '@/config/defaultKhanegiUiConfig'
+import { applyKhanegiLayoutVariants } from '@/config/khanegiLayoutVariants'
import {
applyKhanegiPreset,
khanegiThemePresets,
@@ -260,6 +262,7 @@ function applyAdvancedJson() {
config.defaultSnapshot = keepSnapshot
}
applySharedNavSample()
+ applyKhanegiLayoutVariants(config.app)
ensureSchemes()
selectedPreset.value = resolvePresetId(config)
jsonError.value = ''
@@ -312,6 +315,8 @@ async function load() {
}
}
applySharedNavSample()
+ applyKhanegiLayoutVariants(config.app)
+ applyKhanegiLayoutVariants(config.defaultSnapshot?.app)
ensureSchemes()
if (!config.defaultSnapshot) {
config.defaultSnapshot = cloneKhanegiAppSnapshot(config)
@@ -418,6 +423,7 @@ function resetToDefault() {
config.app = JSON.parse(JSON.stringify(snap.app))
config.pages = JSON.parse(JSON.stringify(snap.pages || {}))
applySharedNavSample()
+ applyKhanegiLayoutVariants(config.app)
ensureSchemes()
selectedPreset.value = resolvePresetId(config)
previewMode.value = config.app.theme.mode === 'light' ? 'light' : 'dark'
@@ -740,6 +746,14 @@ onMounted(load)
+
+
+
+
برای pages و جزئیات کامل میتوانید JSON را مستقیم ویرایش کنید.