fix landing and logo border show
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"0": "deploy-setting-catalog-keys.ts"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"0": "f48f5874db6771b2"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Graph Report - controlpanel_server (2026-10-04)
|
||||||
|
|
||||||
|
## Corpus Check
|
||||||
|
- 157 files · ~66,840 words
|
||||||
|
- Verdict: corpus is large enough that graph structure adds value.
|
||||||
|
- Unclassified: 9 file(s) not represented in the graph (top: (none) 3, .example 2, .toml 2)
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
- 3 nodes · 2 edges · 1 communities (0 shown, 1 thin omitted)
|
||||||
|
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
|
||||||
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
|
## Graph Freshness
|
||||||
|
- Built from commit: `0c29222e`
|
||||||
|
- 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)
|
||||||
|
- deploy-setting-catalog-keys.ts
|
||||||
|
|
||||||
|
## God Nodes (most connected - your core abstractions)
|
||||||
|
1. `DEPLOY_SETTING_CATALOG_KEYS` - 1 edges
|
||||||
|
2. `DEPLOY_SETTING_EDITABLE_KEYS` - 1 edges
|
||||||
|
|
||||||
|
## Surprising Connections (you probably didn't know these)
|
||||||
|
- None detected - all connections are within the same source files.
|
||||||
|
|
||||||
|
## Import Cycles
|
||||||
|
- None detected.
|
||||||
|
|
||||||
|
## Communities (1 total, 1 thin omitted)
|
||||||
|
|
||||||
|
## Knowledge Gaps
|
||||||
|
- **2 isolated node(s):** `DEPLOY_SETTING_CATALOG_KEYS`, `DEPLOY_SETTING_EDITABLE_KEYS`
|
||||||
|
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 2 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
|
||||||
|
- **1 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||||
|
|
||||||
|
## Suggested Questions
|
||||||
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
|
|
||||||
|
- **What connects `DEPLOY_SETTING_CATALOG_KEYS`, `DEPLOY_SETTING_EDITABLE_KEYS` to the rest of the system?**
|
||||||
|
_2 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,351 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>graphify - graphify-out/graph.html</title>
|
||||||
|
<script src="https://unpkg.com/vis-network@9.1.6/standalone/umd/vis-network.min.js"
|
||||||
|
integrity="sha384-Ux6phic9PEHJ38YtrijhkzyJ8yQlH8i/+buBR8s3mAZOJrP1gwyvAcIYl3GWtpX1"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<style>
|
||||||
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
|
||||||
|
#graph { flex: 1; }
|
||||||
|
#sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
|
||||||
|
#search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
|
||||||
|
#search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
|
||||||
|
#search:focus { border-color: #4E79A7; }
|
||||||
|
#search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
|
||||||
|
.search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
||||||
|
.search-item:hover { background: #2a2a4e; }
|
||||||
|
#info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
|
||||||
|
#info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
|
||||||
|
#info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
|
||||||
|
#info-content .field { margin-bottom: 5px; }
|
||||||
|
#info-content .field b { color: #e0e0e0; }
|
||||||
|
#info-content .empty { color: #555; font-style: italic; }
|
||||||
|
.neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
|
||||||
|
.neighbor-link:hover { background: #2a2a4e; }
|
||||||
|
#neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
|
||||||
|
#legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
|
||||||
|
#legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
|
||||||
|
.legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
|
||||||
|
.legend-item:hover { background: #2a2a4e; padding-left: 4px; }
|
||||||
|
.legend-item.dimmed { opacity: 0.35; }
|
||||||
|
.legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
|
||||||
|
.legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||||
|
.legend-count { color: #666; font-size: 11px; }
|
||||||
|
#stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
|
||||||
|
#legend-controls { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 4px 0; }
|
||||||
|
#legend-controls label { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; color: #aaa; user-select: none; }
|
||||||
|
#legend-controls label:hover { color: #e0e0e0; }
|
||||||
|
.legend-cb, #select-all-cb { appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border: 1.5px solid #3a3a5e; border-radius: 3px; background: #0f0f1a; cursor: pointer; position: relative; flex-shrink: 0; }
|
||||||
|
.legend-cb:checked, #select-all-cb:checked { background: #4E79A7; border-color: #4E79A7; }
|
||||||
|
.legend-cb:checked::after, #select-all-cb:checked::after { content: ''; position: absolute; left: 3.5px; top: 1px; width: 4px; height: 7px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
|
||||||
|
#select-all-cb:indeterminate { background: #4E79A7; border-color: #4E79A7; }
|
||||||
|
#select-all-cb:indeterminate::after { content: ''; position: absolute; left: 2px; top: 5px; width: 8px; height: 2px; background: #fff; border: none; transform: none; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="graph"></div>
|
||||||
|
<div id="sidebar">
|
||||||
|
<div id="search-wrap">
|
||||||
|
<input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
|
||||||
|
<div id="search-results"></div>
|
||||||
|
</div>
|
||||||
|
<div id="info-panel">
|
||||||
|
<h3>Node Info</h3>
|
||||||
|
<div id="info-content"><span class="empty">Click a node to inspect it</span></div>
|
||||||
|
</div>
|
||||||
|
<div id="legend-wrap">
|
||||||
|
<h3>Communities</h3>
|
||||||
|
<div id="legend-controls">
|
||||||
|
<label><input type="checkbox" id="select-all-cb" checked onchange="toggleAllCommunities(!this.checked)">Select All</label>
|
||||||
|
</div>
|
||||||
|
<div id="legend"></div>
|
||||||
|
</div>
|
||||||
|
<div id="stats">3 nodes · 2 edges · 1 communities</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
const RAW_NODES = [{"id": "src_program_settings_deploy_setting_catalog_keys", "label": "deploy-setting-catalog-keys.ts", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "deploy-setting-catalog-keys.ts", "community": 0, "community_name": "deploy-setting-catalog-keys.ts", "source_file": "src/program-settings/deploy-setting-catalog-keys.ts", "file_type": "code", "degree": 2}, {"id": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_catalog_keys", "label": "DEPLOY_SETTING_CATALOG_KEYS", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "DEPLOY_SETTING_CATALOG_KEYS", "community": 0, "community_name": "deploy-setting-catalog-keys.ts", "source_file": "src/program-settings/deploy-setting-catalog-keys.ts", "file_type": "code", "degree": 1}, {"id": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_editable_keys", "label": "DEPLOY_SETTING_EDITABLE_KEYS", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "DEPLOY_SETTING_EDITABLE_KEYS", "community": 0, "community_name": "deploy-setting-catalog-keys.ts", "source_file": "src/program-settings/deploy-setting-catalog-keys.ts", "file_type": "code", "degree": 1}];
|
||||||
|
const RAW_EDGES = [{"from": "src_program_settings_deploy_setting_catalog_keys", "to": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_editable_keys", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_program_settings_deploy_setting_catalog_keys", "to": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_catalog_keys", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
|
||||||
|
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "deploy-setting-catalog-keys.ts", "count": 3}];
|
||||||
|
|
||||||
|
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||||
|
function esc(s) {
|
||||||
|
return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build vis datasets
|
||||||
|
const nodesDS = new vis.DataSet(RAW_NODES.map((n, i) => ({
|
||||||
|
id: n.id, label: n.label, color: n.color, size: n.size,
|
||||||
|
font: n.font, title: n.title,
|
||||||
|
// Fermat/golden-angle spiral seed positions (#3699): spreading nodes out
|
||||||
|
// before physics runs keeps avoidOverlap from computing near-zero-distance
|
||||||
|
// repulsion that blows the BarnesHut recursion into a stack overflow on large
|
||||||
|
// graphs. `i` is the map index — physics still settles small graphs identically.
|
||||||
|
x: 30 * Math.sqrt(i) * Math.cos(i * 2.4),
|
||||||
|
y: 30 * Math.sqrt(i) * Math.sin(i * 2.4),
|
||||||
|
_community: n.community, _community_name: n.community_name,
|
||||||
|
_source_file: n.source_file, _file_type: n.file_type, _degree: n.degree,
|
||||||
|
})));
|
||||||
|
|
||||||
|
const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
|
||||||
|
id: i, from: e.from, to: e.to,
|
||||||
|
label: '',
|
||||||
|
title: e.title,
|
||||||
|
dashes: e.dashes,
|
||||||
|
width: e.width,
|
||||||
|
color: e.color,
|
||||||
|
arrows: { to: { enabled: true, scaleFactor: 0.5 } },
|
||||||
|
})));
|
||||||
|
|
||||||
|
const container = document.getElementById('graph');
|
||||||
|
const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
|
||||||
|
physics: {
|
||||||
|
enabled: true,
|
||||||
|
solver: 'forceAtlas2Based',
|
||||||
|
forceAtlas2Based: {
|
||||||
|
gravitationalConstant: -60,
|
||||||
|
centralGravity: 0.005,
|
||||||
|
springLength: 120,
|
||||||
|
springConstant: 0.08,
|
||||||
|
damping: 0.4,
|
||||||
|
avoidOverlap: 0.8,
|
||||||
|
},
|
||||||
|
stabilization: { iterations: 200, fit: true },
|
||||||
|
},
|
||||||
|
interaction: {
|
||||||
|
hover: true,
|
||||||
|
tooltipDelay: 100,
|
||||||
|
hideEdgesOnDrag: true,
|
||||||
|
navigationButtons: false,
|
||||||
|
keyboard: false,
|
||||||
|
},
|
||||||
|
nodes: { shape: 'dot', borderWidth: 1.5 },
|
||||||
|
edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
|
||||||
|
});
|
||||||
|
|
||||||
|
network.once('stabilizationIterationsDone', () => {
|
||||||
|
network.setOptions({ physics: { enabled: false } });
|
||||||
|
});
|
||||||
|
|
||||||
|
function showInfo(nodeId) {
|
||||||
|
const n = nodesDS.get(nodeId);
|
||||||
|
if (!n) return;
|
||||||
|
const neighborIds = network.getConnectedNodes(nodeId);
|
||||||
|
const neighborItems = neighborIds.map(nid => {
|
||||||
|
const nb = nodesDS.get(nid);
|
||||||
|
const color = nb ? nb.color.background : '#555';
|
||||||
|
return `<span class="neighbor-link" style="border-left-color:${esc(color)}" data-nid="${esc(nid)}">${esc(nb ? nb.label : nid)}</span>`;
|
||||||
|
}).join('');
|
||||||
|
document.getElementById('info-content').innerHTML = `
|
||||||
|
<div class="field"><b>${esc(n.label)}</b></div>
|
||||||
|
<div class="field">Type: ${esc(n._file_type || 'unknown')}</div>
|
||||||
|
<div class="field">Community: ${esc(n._community_name)}</div>
|
||||||
|
<div class="field">Source: ${esc(n._source_file || '-')}</div>
|
||||||
|
<div class="field">Degree: ${n._degree}</div>
|
||||||
|
${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function focusNode(nodeId) {
|
||||||
|
network.focus(nodeId, { scale: 1.4, animation: true });
|
||||||
|
network.selectNodes([nodeId]);
|
||||||
|
showInfo(nodeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Neighbor links use a data attribute + one delegated listener rather than an
|
||||||
|
// inline onclick. A node id/label sourced from a document or a scraped URL
|
||||||
|
// (graphify add) can contain a double-quote; dropping the stringified id
|
||||||
|
// unescaped into a quoted onclick both broke every link and allowed a hostile
|
||||||
|
// source to inject an event handler into the local report (stored XSS, #1838).
|
||||||
|
// esc() on data-nid keeps the value inside the attribute; the listener reads it
|
||||||
|
// back verbatim. Bound to document so it survives the innerHTML rebuild that
|
||||||
|
// recreates #neighbors-list on each showInfo().
|
||||||
|
document.addEventListener('click', e => {
|
||||||
|
const el = e.target.closest('.neighbor-link');
|
||||||
|
if (el && el.dataset.nid !== undefined) focusNode(el.dataset.nid);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Track hovered node — hover detection is more reliable than click params
|
||||||
|
let hoveredNodeId = null;
|
||||||
|
network.on('hoverNode', params => {
|
||||||
|
hoveredNodeId = params.node;
|
||||||
|
container.style.cursor = 'pointer';
|
||||||
|
});
|
||||||
|
network.on('blurNode', () => {
|
||||||
|
hoveredNodeId = null;
|
||||||
|
container.style.cursor = 'default';
|
||||||
|
});
|
||||||
|
container.addEventListener('click', () => {
|
||||||
|
if (hoveredNodeId !== null) {
|
||||||
|
showInfo(hoveredNodeId);
|
||||||
|
network.selectNodes([hoveredNodeId]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
network.on('click', params => {
|
||||||
|
if (params.nodes.length > 0) {
|
||||||
|
showInfo(params.nodes[0]);
|
||||||
|
} else if (hoveredNodeId === null) {
|
||||||
|
document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const searchInput = document.getElementById('search');
|
||||||
|
const searchResults = document.getElementById('search-results');
|
||||||
|
searchInput.addEventListener('input', () => {
|
||||||
|
const q = searchInput.value.toLowerCase().trim();
|
||||||
|
searchResults.innerHTML = '';
|
||||||
|
if (!q) { searchResults.style.display = 'none'; return; }
|
||||||
|
const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
|
||||||
|
if (!matches.length) { searchResults.style.display = 'none'; return; }
|
||||||
|
searchResults.style.display = 'block';
|
||||||
|
matches.forEach(n => {
|
||||||
|
const el = document.createElement('div');
|
||||||
|
el.className = 'search-item';
|
||||||
|
el.textContent = n.label;
|
||||||
|
el.style.borderLeft = `3px solid ${n.color.background}`;
|
||||||
|
el.style.paddingLeft = '8px';
|
||||||
|
el.onclick = () => {
|
||||||
|
network.focus(n.id, { scale: 1.5, animation: true });
|
||||||
|
network.selectNodes([n.id]);
|
||||||
|
showInfo(n.id);
|
||||||
|
searchResults.style.display = 'none';
|
||||||
|
searchInput.value = '';
|
||||||
|
};
|
||||||
|
searchResults.appendChild(el);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
document.addEventListener('click', e => {
|
||||||
|
if (!searchResults.contains(e.target) && e.target !== searchInput)
|
||||||
|
searchResults.style.display = 'none';
|
||||||
|
});
|
||||||
|
|
||||||
|
const hiddenCommunities = new Set();
|
||||||
|
|
||||||
|
const selectAllCb = document.getElementById('select-all-cb');
|
||||||
|
|
||||||
|
function updateSelectAllState() {
|
||||||
|
const total = LEGEND.length;
|
||||||
|
const hidden = hiddenCommunities.size;
|
||||||
|
selectAllCb.checked = hidden === 0;
|
||||||
|
selectAllCb.indeterminate = hidden > 0 && hidden < total;
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleAllCommunities(hide) {
|
||||||
|
document.querySelectorAll('.legend-item').forEach(item => {
|
||||||
|
hide ? item.classList.add('dimmed') : item.classList.remove('dimmed');
|
||||||
|
});
|
||||||
|
document.querySelectorAll('.legend-cb').forEach(cb => {
|
||||||
|
cb.checked = !hide;
|
||||||
|
});
|
||||||
|
LEGEND.forEach(c => {
|
||||||
|
if (hide) hiddenCommunities.add(c.cid); else hiddenCommunities.delete(c.cid);
|
||||||
|
});
|
||||||
|
const updates = RAW_NODES.map(n => ({ id: n.id, hidden: hide }));
|
||||||
|
nodesDS.update(updates);
|
||||||
|
updateSelectAllState();
|
||||||
|
}
|
||||||
|
|
||||||
|
const legendEl = document.getElementById('legend');
|
||||||
|
LEGEND.forEach(c => {
|
||||||
|
const item = document.createElement('div');
|
||||||
|
item.className = 'legend-item';
|
||||||
|
const cb = document.createElement('input');
|
||||||
|
cb.type = 'checkbox';
|
||||||
|
cb.className = 'legend-cb';
|
||||||
|
cb.checked = true;
|
||||||
|
cb.addEventListener('change', (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
if (cb.checked) {
|
||||||
|
hiddenCommunities.delete(c.cid);
|
||||||
|
item.classList.remove('dimmed');
|
||||||
|
} else {
|
||||||
|
hiddenCommunities.add(c.cid);
|
||||||
|
item.classList.add('dimmed');
|
||||||
|
}
|
||||||
|
const updates = RAW_NODES
|
||||||
|
.filter(n => n.community === c.cid)
|
||||||
|
.map(n => ({ id: n.id, hidden: !cb.checked }));
|
||||||
|
nodesDS.update(updates);
|
||||||
|
updateSelectAllState();
|
||||||
|
});
|
||||||
|
item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
|
||||||
|
<span class="legend-label">${c.label}</span>
|
||||||
|
<span class="legend-count">${c.count}</span>`;
|
||||||
|
item.prepend(cb);
|
||||||
|
item.onclick = (e) => {
|
||||||
|
if (e.target === cb) return;
|
||||||
|
cb.checked = !cb.checked;
|
||||||
|
cb.dispatchEvent(new Event('change'));
|
||||||
|
};
|
||||||
|
legendEl.appendChild(item);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Render hyperedges as shaded regions
|
||||||
|
const hyperedges = [];
|
||||||
|
// afterDrawing passes ctx already transformed to network coordinate space.
|
||||||
|
// Draw node positions raw — no manual pan/zoom/DPR math needed.
|
||||||
|
|
||||||
|
// Andrew's monotone chain. Returns the hull in counter-clockwise order, which
|
||||||
|
// is what the perimeter must be traced in. Collinear and duplicate points
|
||||||
|
// collapse to the extremes, so degenerate member sets render as a segment
|
||||||
|
// rather than a zero-area crossed path.
|
||||||
|
function convexHull(pts) {
|
||||||
|
const p = pts.slice().sort((a, b) => (a.x - b.x) || (a.y - b.y));
|
||||||
|
if (p.length < 3) return p;
|
||||||
|
const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);
|
||||||
|
const build = seq => {
|
||||||
|
const out = [];
|
||||||
|
for (const q of seq) {
|
||||||
|
while (out.length >= 2 && cross(out[out.length - 2], out[out.length - 1], q) <= 0) out.pop();
|
||||||
|
out.push(q);
|
||||||
|
}
|
||||||
|
out.pop();
|
||||||
|
return out;
|
||||||
|
};
|
||||||
|
const hull = build(p).concat(build(p.slice().reverse()));
|
||||||
|
return hull.length >= 3 ? hull : p;
|
||||||
|
}
|
||||||
|
network.on('afterDrawing', function(ctx) {
|
||||||
|
hyperedges.forEach(h => {
|
||||||
|
const positions = h.nodes
|
||||||
|
.map(nid => network.getPositions([nid])[nid])
|
||||||
|
.filter(p => p !== undefined);
|
||||||
|
if (positions.length < 2) return;
|
||||||
|
ctx.save();
|
||||||
|
ctx.globalAlpha = 0.12;
|
||||||
|
ctx.fillStyle = '#6366f1';
|
||||||
|
ctx.strokeStyle = '#6366f1';
|
||||||
|
ctx.lineWidth = 2;
|
||||||
|
ctx.beginPath();
|
||||||
|
// Centroid and expanded hull in network coordinates.
|
||||||
|
// The perimeter must follow hull order, not h.nodes order: tracing the
|
||||||
|
// raw member order self-intersects whenever the layout does not happen
|
||||||
|
// to place members in angular order, filling as crossed wedges.
|
||||||
|
const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
|
||||||
|
const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
|
||||||
|
const hull = convexHull(positions);
|
||||||
|
const expanded = hull.map(p => ({
|
||||||
|
x: cx + (p.x - cx) * 1.15,
|
||||||
|
y: cy + (p.y - cy) * 1.15
|
||||||
|
}));
|
||||||
|
ctx.moveTo(expanded[0].x, expanded[0].y);
|
||||||
|
expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.globalAlpha = 0.4;
|
||||||
|
ctx.stroke();
|
||||||
|
// Label
|
||||||
|
ctx.globalAlpha = 0.8;
|
||||||
|
ctx.fillStyle = '#4f46e5';
|
||||||
|
ctx.font = 'bold 11px sans-serif';
|
||||||
|
ctx.textAlign = 'center';
|
||||||
|
ctx.fillText(h.label, cx, cy - 5);
|
||||||
|
ctx.restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
{
|
||||||
|
"directed": false,
|
||||||
|
"multigraph": false,
|
||||||
|
"graph": {},
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "src_program_settings_deploy_setting_catalog_keys",
|
||||||
|
"label": "deploy-setting-catalog-keys.ts",
|
||||||
|
"_origin": "ast",
|
||||||
|
"community": 0,
|
||||||
|
"community_name": "deploy-setting-catalog-keys.ts",
|
||||||
|
"file_type": "code",
|
||||||
|
"norm_label": "deploy-setting-catalog-keys.ts",
|
||||||
|
"source_file": "src/program-settings/deploy-setting-catalog-keys.ts",
|
||||||
|
"source_location": "L1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_catalog_keys",
|
||||||
|
"label": "DEPLOY_SETTING_CATALOG_KEYS",
|
||||||
|
"_origin": "ast",
|
||||||
|
"community": 0,
|
||||||
|
"community_name": "deploy-setting-catalog-keys.ts",
|
||||||
|
"file_type": "code",
|
||||||
|
"norm_label": "deploy_setting_catalog_keys",
|
||||||
|
"source_file": "src/program-settings/deploy-setting-catalog-keys.ts",
|
||||||
|
"source_location": "L5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_editable_keys",
|
||||||
|
"label": "DEPLOY_SETTING_EDITABLE_KEYS",
|
||||||
|
"_origin": "ast",
|
||||||
|
"community": 0,
|
||||||
|
"community_name": "deploy-setting-catalog-keys.ts",
|
||||||
|
"file_type": "code",
|
||||||
|
"norm_label": "deploy_setting_editable_keys",
|
||||||
|
"source_file": "src/program-settings/deploy-setting-catalog-keys.ts",
|
||||||
|
"source_location": "L28"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"source": "src_program_settings_deploy_setting_catalog_keys",
|
||||||
|
"target": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_editable_keys",
|
||||||
|
"relation": "contains",
|
||||||
|
"_origin": "ast",
|
||||||
|
"confidence": "EXTRACTED",
|
||||||
|
"confidence_score": 1.0,
|
||||||
|
"source_file": "src/program-settings/deploy-setting-catalog-keys.ts",
|
||||||
|
"source_location": "L28",
|
||||||
|
"weight": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "src_program_settings_deploy_setting_catalog_keys",
|
||||||
|
"target": "src_program_settings_deploy_setting_catalog_keys_deploy_setting_catalog_keys",
|
||||||
|
"relation": "contains",
|
||||||
|
"_origin": "ast",
|
||||||
|
"confidence": "EXTRACTED",
|
||||||
|
"confidence_score": 1.0,
|
||||||
|
"source_file": "src/program-settings/deploy-setting-catalog-keys.ts",
|
||||||
|
"source_location": "L5",
|
||||||
|
"weight": 1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hyperedges": [],
|
||||||
|
"built_at_commit": "0c29222e9dcf1842463054b6c426472486c7a987"
|
||||||
|
}
|
||||||
@@ -0,0 +1,944 @@
|
|||||||
|
{
|
||||||
|
"deploy/ecosystem.config.cjs": {
|
||||||
|
"mtime": 1786352929.4852936,
|
||||||
|
"seen": 1791133976.7242782,
|
||||||
|
"ast_hash": "10c25b0909c8d6ab6251d83357d48a43",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/khanegi-sms-enable-remote.sh": {
|
||||||
|
"mtime": 1786352929.4853961,
|
||||||
|
"seen": 1791133976.7242827,
|
||||||
|
"ast_hash": "d790ac65204dfc5864184a605c846eac",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/khanegi-sms-import-one.sh": {
|
||||||
|
"mtime": 1786352929.4854975,
|
||||||
|
"seen": 1791133976.7242846,
|
||||||
|
"ast_hash": "d4ec0fc6ae00036ac8c89030007164f0",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/run-khanegi-sms-inventory.sh": {
|
||||||
|
"mtime": 1786352929.4857686,
|
||||||
|
"seen": 1791133976.7242856,
|
||||||
|
"ast_hash": "9364b0a5e0e1cd15f02ba6b0bc667d50",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/sync-replica-data.sh": {
|
||||||
|
"mtime": 1788879455.3665333,
|
||||||
|
"seen": 1791133976.7242866,
|
||||||
|
"ast_hash": "85392d739d29788527f50b0f17bf07ad",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/sync-replica-schema.sh": {
|
||||||
|
"mtime": 1787055322.4637306,
|
||||||
|
"seen": 1791133976.724287,
|
||||||
|
"ast_hash": "1af077a2248ee28056f0f72fd69fcf53",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"eslint.config.mjs": {
|
||||||
|
"mtime": 1786352929.4858541,
|
||||||
|
"seen": 1791133976.7242877,
|
||||||
|
"ast_hash": "d7647004fcd6fc51a724065fc878a559",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"nest-cli.json": {
|
||||||
|
"mtime": 1786352929.485933,
|
||||||
|
"seen": 1791133976.7242885,
|
||||||
|
"ast_hash": "b6c9c4b64b7092bea720263a47b574cf",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"package.json": {
|
||||||
|
"mtime": 1787844546.0921357,
|
||||||
|
"seen": 1791133976.7242892,
|
||||||
|
"ast_hash": "7538e329a01b88238e01d27bb74a8d82",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/backfill-app-version.js": {
|
||||||
|
"mtime": 1786352929.4881291,
|
||||||
|
"seen": 1791133976.7242901,
|
||||||
|
"ast_hash": "9d2cefe9722941c568818eb973ea38dc",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/backfill-appearance-from-registry.ts": {
|
||||||
|
"mtime": 1786352929.4882898,
|
||||||
|
"seen": 1791133976.7242908,
|
||||||
|
"ast_hash": "7d48fc3d8613a284c6196eed257e2f40",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/bulk-khanegi-modular-brand.ts": {
|
||||||
|
"mtime": 1786470929.6370435,
|
||||||
|
"seen": 1791133976.7242916,
|
||||||
|
"ast_hash": "a1697f2d8a668cc4305a949a8a835b22",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/bulk-khanegi-sms-defaults.ts": {
|
||||||
|
"mtime": 1786352929.4886072,
|
||||||
|
"seen": 1791133976.724292,
|
||||||
|
"ast_hash": "48e0739b3f983b8c3581f2cdaee0bf99",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/copy-sms-between-tenants.ts": {
|
||||||
|
"mtime": 1786352929.4888642,
|
||||||
|
"seen": 1791133976.7242928,
|
||||||
|
"ast_hash": "9b68dc066eea8f7710f05ab0f1ca9bdd",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/data/users.json": {
|
||||||
|
"mtime": 1786352929.4898038,
|
||||||
|
"seen": 1791133976.7242935,
|
||||||
|
"ast_hash": "04420d6a6acfa9b042157624adf61044",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/ensure-pilot-sms-tokens.ts": {
|
||||||
|
"mtime": 1786352929.4899447,
|
||||||
|
"seen": 1791133976.7242942,
|
||||||
|
"ast_hash": "bf65e0b46cc3636e4085e2ca02e386b7",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/import-sms-batch.ts": {
|
||||||
|
"mtime": 1786352929.4901161,
|
||||||
|
"seen": 1791133976.7242947,
|
||||||
|
"ast_hash": "8a5e17915b70cfafd5eb760a00e84fd7",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/import-sms-from-product.ts": {
|
||||||
|
"mtime": 1786352929.4903257,
|
||||||
|
"seen": 1791133976.7242954,
|
||||||
|
"ast_hash": "68ff697558dd1434668728c49a5a947d",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/import-users.ts": {
|
||||||
|
"mtime": 1786470929.6372163,
|
||||||
|
"seen": 1791133976.7242959,
|
||||||
|
"ast_hash": "f3b280d91ae82ce8e6bb34722bc5c859",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/inventory-khanegi-sms.ts": {
|
||||||
|
"mtime": 1786352929.4906397,
|
||||||
|
"seen": 1791133976.7242968,
|
||||||
|
"ast_hash": "999317e722a80b72ff1801058a4207df",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/khanegi-sms-targets.example.json": {
|
||||||
|
"mtime": 1786352929.490761,
|
||||||
|
"seen": 1791133976.7242975,
|
||||||
|
"ast_hash": "498756448f378207a4c400e141833949",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/khanegi-variant-locks.ts": {
|
||||||
|
"mtime": 1786470929.637339,
|
||||||
|
"seen": 1791133976.7242982,
|
||||||
|
"ast_hash": "dbea9f602463233281145b5b810718c0",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/lib/appearance-builders.ts": {
|
||||||
|
"mtime": 1786352929.4909744,
|
||||||
|
"seen": 1791133976.724299,
|
||||||
|
"ast_hash": "4a606ff7722ecf0029ed396c59eff48a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/list-tenants.ts": {
|
||||||
|
"mtime": 1786352929.4910982,
|
||||||
|
"seen": 1791133976.7242997,
|
||||||
|
"ast_hash": "f1c6714ed67af16fb6660409a35e80e9",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260730180000_init_postgres/migration.sql": {
|
||||||
|
"mtime": 1786352929.4914,
|
||||||
|
"seen": 1791133976.7243009,
|
||||||
|
"ast_hash": "275efa650a270bad0e3a92e9b71921d5",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260806190000_multi_server_accounts/migration.sql": {
|
||||||
|
"mtime": 1786352929.4915934,
|
||||||
|
"seen": 1791133976.7243013,
|
||||||
|
"ast_hash": "fcbbedfc4408e49cee7d2d9f15deb620",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260808110000_support_subscriptions/migration.sql": {
|
||||||
|
"mtime": 1786352929.4918096,
|
||||||
|
"seen": 1791133976.724302,
|
||||||
|
"ast_hash": "8be18536c519b5749325cb921497919b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260808140000_sms_auto_block_below/migration.sql": {
|
||||||
|
"mtime": 1786352929.49202,
|
||||||
|
"seen": 1791133976.7243025,
|
||||||
|
"ast_hash": "6cc8a653a35704ca39c65e335916e467",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260809120000_khanegi_ui_variant/migration.sql": {
|
||||||
|
"mtime": 1786352929.4922168,
|
||||||
|
"seen": 1791133976.7243032,
|
||||||
|
"ast_hash": "3dfdebc10c23fbe3f90c8fbb2dca275b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260810150000_admin_permissions/migration.sql": {
|
||||||
|
"mtime": 1786377085.7571647,
|
||||||
|
"seen": 1791133976.7243042,
|
||||||
|
"ast_hash": "5469fe4f672274ecbdfe074061f281fe",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260811120000_server_access_blocked/migration.sql": {
|
||||||
|
"mtime": 1786470929.63757,
|
||||||
|
"seen": 1791133976.724305,
|
||||||
|
"ast_hash": "2080adc2aee237c12b06e9d39008899a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260817120000_tenant_setting/migration.sql": {
|
||||||
|
"mtime": 1786965988.335908,
|
||||||
|
"seen": 1791133976.7243056,
|
||||||
|
"ast_hash": "e389362f92b0fc7966ebfe06b3fba292",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260817190000_settings_tables/migration.sql": {
|
||||||
|
"mtime": 1786984016.106289,
|
||||||
|
"seen": 1791133976.724306,
|
||||||
|
"ast_hash": "06dd42882c75732d55163ec7783d9372",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260908110000_plugin_store_catalog_tables/migration.sql": {
|
||||||
|
"mtime": 1788879455.2852135,
|
||||||
|
"seen": 1791133976.724307,
|
||||||
|
"ast_hash": "4c318ac97d208a60d8994f22dcfc95c9",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260908120000_plugin_store_images_receipt/migration.sql": {
|
||||||
|
"mtime": 1788860316.9214523,
|
||||||
|
"seen": 1791133976.7243078,
|
||||||
|
"ast_hash": "2c24139cbca1d6aa8ebf5cc14772544b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations/20260910120000_plugin_subscription_catalog_key/migration.sql": {
|
||||||
|
"mtime": 1789026291.061192,
|
||||||
|
"seen": 1791133976.7243085,
|
||||||
|
"ast_hash": "08d8653b5cc57d519883d13b68670a57",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260722125821_init/migration.sql": {
|
||||||
|
"mtime": 1786352929.4926655,
|
||||||
|
"seen": 1791133976.724309,
|
||||||
|
"ast_hash": "f372e809847596ce2fe1d9415bf3d498",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260722152640_add_app_ui_config/migration.sql": {
|
||||||
|
"mtime": 1786352929.492852,
|
||||||
|
"seen": 1791133976.7243094,
|
||||||
|
"ast_hash": "6f2798cd063294603bfc698df5f1d059",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260723073638_sms_settings_cache/migration.sql": {
|
||||||
|
"mtime": 1786352929.4930475,
|
||||||
|
"seen": 1791133976.7243102,
|
||||||
|
"ast_hash": "565ac7450b117a3bcd57234a7f114f1d",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260723143623_sms_accounts_owned/migration.sql": {
|
||||||
|
"mtime": 1786352929.4932685,
|
||||||
|
"seen": 1791133976.724311,
|
||||||
|
"ast_hash": "cf76c033f7d3efc9ba6d552782ec11eb",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260727120000_product_releases/migration.sql": {
|
||||||
|
"mtime": 1786352929.4934802,
|
||||||
|
"seen": 1791133976.7243116,
|
||||||
|
"ast_hash": "d4ec3980f695de7e8fa6685de0503811",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260727140000_tenant_app_version/migration.sql": {
|
||||||
|
"mtime": 1786352929.4937072,
|
||||||
|
"seen": 1791133976.7243123,
|
||||||
|
"ast_hash": "e148a415acb7e83fd5991c244b936268",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260727150000_users_mobile_admins/migration.sql": {
|
||||||
|
"mtime": 1786352929.493925,
|
||||||
|
"seen": 1791133976.724313,
|
||||||
|
"ast_hash": "2e74c178d9b67ed5b38d571edc7bc58e",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260727160000_server_accounts/migration.sql": {
|
||||||
|
"mtime": 1786352929.4941335,
|
||||||
|
"seen": 1791133976.7243142,
|
||||||
|
"ast_hash": "cbacdd42965ae8d5749bbfde5506230b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260728120000_plugin_subscriptions/migration.sql": {
|
||||||
|
"mtime": 1786352929.4943483,
|
||||||
|
"seen": 1791133976.724315,
|
||||||
|
"ast_hash": "6a83006e82a3431da32f89256cb6f51a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/20260729150000_sms_panel_parity/migration.sql": {
|
||||||
|
"mtime": 1786352929.494557,
|
||||||
|
"seen": 1791133976.7243154,
|
||||||
|
"ast_hash": "eefafec6339e9bb1eeeac74d8edc9936",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/repair-khanegi-ui-config.ts": {
|
||||||
|
"mtime": 1786352929.4949555,
|
||||||
|
"seen": 1791133976.7243161,
|
||||||
|
"ast_hash": "9d174565a402435b259ea2cb01c3eebe",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/seed-hamkar-default-snapshots.ts": {
|
||||||
|
"mtime": 1786352929.495282,
|
||||||
|
"seen": 1791133976.7243168,
|
||||||
|
"ast_hash": "1d0e317b51948ad90f93f818fc189a2a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/seed-khanegi-default-snapshots.ts": {
|
||||||
|
"mtime": 1786352929.4954495,
|
||||||
|
"seen": 1791133976.7243176,
|
||||||
|
"ast_hash": "4c22852c81dbbb79685d944258a25052",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/seed.ts": {
|
||||||
|
"mtime": 1786352929.4955816,
|
||||||
|
"seen": 1791133976.7243183,
|
||||||
|
"ast_hash": "e39daba03d995220b90f6e5fa8a24971",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/setting-templates-from-deploy.json": {
|
||||||
|
"mtime": 1788614868.19252,
|
||||||
|
"seen": 1791133976.724319,
|
||||||
|
"ast_hash": "bd57e444959915a85f0377310f6ddbea",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"scripts/fix-gholaktala-to-khanegi-newtheme.mjs": {
|
||||||
|
"mtime": 1786470929.6759033,
|
||||||
|
"seen": 1791133976.7243195,
|
||||||
|
"ast_hash": "2ad3b9c50ed2d7e776a3677d74600dd1",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"scripts/sync-superadmin-setting-template.mjs": {
|
||||||
|
"mtime": 1788614867.008285,
|
||||||
|
"seen": 1791133976.7243202,
|
||||||
|
"ast_hash": "ad1d928bad39f8c81634c96523879cf4",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/admins/admins.controller.ts": {
|
||||||
|
"mtime": 1786377085.7580488,
|
||||||
|
"seen": 1791133976.7243207,
|
||||||
|
"ast_hash": "c3abc6a2fadc1377d840546e7714e880",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/admins/admins.module.ts": {
|
||||||
|
"mtime": 1786377085.7582588,
|
||||||
|
"seen": 1791133976.7243216,
|
||||||
|
"ast_hash": "c89a0fc99a3740bb0ff266002d6774d1",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/admins/admins.service.ts": {
|
||||||
|
"mtime": 1786377085.7585385,
|
||||||
|
"seen": 1791133976.724322,
|
||||||
|
"ast_hash": "7a5fd7495a34e69a34725fc8957e2df2",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/admins/dto/admin.dto.ts": {
|
||||||
|
"mtime": 1786377085.7588398,
|
||||||
|
"seen": 1791133976.7243228,
|
||||||
|
"ast_hash": "c1023e9a63ea2035870d67ab3db8a1ef",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/app.module.ts": {
|
||||||
|
"mtime": 1787043263.5524516,
|
||||||
|
"seen": 1791133976.7243233,
|
||||||
|
"ast_hash": "0b7a1bafc219199f18769f0b48a62304",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/audit/audit.controller.ts": {
|
||||||
|
"mtime": 1786377085.7591932,
|
||||||
|
"seen": 1791133976.724324,
|
||||||
|
"ast_hash": "b0d5f36d4dcaab8e02a5340d4fb966b6",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/audit/audit.module.ts": {
|
||||||
|
"mtime": 1786377085.7594087,
|
||||||
|
"seen": 1791133976.7243247,
|
||||||
|
"ast_hash": "c925a966f664bae7458065969f22ec80",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/audit/audit.service.ts": {
|
||||||
|
"mtime": 1786352929.4970534,
|
||||||
|
"seen": 1791133976.7243254,
|
||||||
|
"ast_hash": "de5da4f46971a8e04a42cfdb94675685",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/auth.controller.ts": {
|
||||||
|
"mtime": 1786352929.4972322,
|
||||||
|
"seen": 1791133976.724326,
|
||||||
|
"ast_hash": "419014e60b71d28626a008d8a93d606f",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/auth.module.ts": {
|
||||||
|
"mtime": 1786377085.7596831,
|
||||||
|
"seen": 1791133976.7243266,
|
||||||
|
"ast_hash": "6e56586bd55e23acf0aef42154db0500",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/auth.service.ts": {
|
||||||
|
"mtime": 1786377085.7599285,
|
||||||
|
"seen": 1791133976.724327,
|
||||||
|
"ast_hash": "7b66be1855b722223e37b2cbed13208c",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/current-user.decorator.ts": {
|
||||||
|
"mtime": 1786352929.497619,
|
||||||
|
"seen": 1791133976.724328,
|
||||||
|
"ast_hash": "ff483a679757121f803160ca7fc8651a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/dto/login.dto.ts": {
|
||||||
|
"mtime": 1786352929.4978468,
|
||||||
|
"seen": 1791133976.7243285,
|
||||||
|
"ast_hash": "babc6b307bbef2e1140182ef040d60dd",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/jwt-auth.guard.ts": {
|
||||||
|
"mtime": 1786352929.4979775,
|
||||||
|
"seen": 1791133976.7243292,
|
||||||
|
"ast_hash": "184c5bd056e5657c27ecdd69e1e40701",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/jwt.strategy.ts": {
|
||||||
|
"mtime": 1786377085.7601564,
|
||||||
|
"seen": 1791133976.7243297,
|
||||||
|
"ast_hash": "8ae03f0635a702f2feb5df5c6826c858",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/permissions.decorator.ts": {
|
||||||
|
"mtime": 1786377085.760331,
|
||||||
|
"seen": 1791133976.7243304,
|
||||||
|
"ast_hash": "b3faa4eb2e916682233a071435fedbf3",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/permissions.guard.ts": {
|
||||||
|
"mtime": 1786377085.7605183,
|
||||||
|
"seen": 1791133976.724331,
|
||||||
|
"ast_hash": "7cacb1789db0ef61c574a23ca333fd01",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/permissions.ts": {
|
||||||
|
"mtime": 1786377085.760719,
|
||||||
|
"seen": 1791133976.7243319,
|
||||||
|
"ast_hash": "69f424cbafb8d83ff0914d986db9a432",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/remote-sms-auth.guard.ts": {
|
||||||
|
"mtime": 1788979630.1514752,
|
||||||
|
"seen": 1791133976.7243323,
|
||||||
|
"ast_hash": "c11bf99cca64b53c4940b11533382752",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/remote-tenant.decorator.ts": {
|
||||||
|
"mtime": 1786352929.4983776,
|
||||||
|
"seen": 1791133976.724333,
|
||||||
|
"ast_hash": "54016eeaa77366db530cb02e67d54aa6",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/remote-token.guard.ts": {
|
||||||
|
"mtime": 1786352929.4985,
|
||||||
|
"seen": 1791133976.7243338,
|
||||||
|
"ast_hash": "23dc86ccf9c8b1e2e9598ef3ca5dad55",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/tenant-host.util.spec.ts": {
|
||||||
|
"mtime": 1789026291.0614831,
|
||||||
|
"seen": 1791133976.7243342,
|
||||||
|
"ast_hash": "d8706ae40f721b9069320cee916dcf5f",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/auth/tenant-host.util.ts": {
|
||||||
|
"mtime": 1788979280.957051,
|
||||||
|
"seen": 1791133976.7243352,
|
||||||
|
"ast_hash": "3bd76516c638d2584671449f30d14c13",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/common/iran-time.util.ts": {
|
||||||
|
"mtime": 1789638651.7054584,
|
||||||
|
"seen": 1791133976.7243357,
|
||||||
|
"ast_hash": "ba3c8d3697e93e27e405aa7539d70eb6",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/common/mobile.util.ts": {
|
||||||
|
"mtime": 1786352929.4988315,
|
||||||
|
"seen": 1791133976.7243364,
|
||||||
|
"ast_hash": "e527c82bde84ec1175e17c0f04e89cd0",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-manifest/get-manifest.controller.ts": {
|
||||||
|
"mtime": 1786352929.499016,
|
||||||
|
"seen": 1791133976.724337,
|
||||||
|
"ast_hash": "a73321b2f0d0e2e7dc8ace460239e916",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-manifest/get-manifest.module.ts": {
|
||||||
|
"mtime": 1786352929.499144,
|
||||||
|
"seen": 1791133976.7243378,
|
||||||
|
"ast_hash": "22a64f7c0e7f4aa1173a0cda3d3b31cf",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-user/get-user.controller.ts": {
|
||||||
|
"mtime": 1786352929.4993262,
|
||||||
|
"seen": 1791133976.7243388,
|
||||||
|
"ast_hash": "27209235a7040181e41fc66baa86ec3b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-user/get-user.module.ts": {
|
||||||
|
"mtime": 1788876478.0709732,
|
||||||
|
"seen": 1791133976.7243392,
|
||||||
|
"ast_hash": "54e66c015b6fc817e24054745174f631",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-user/get-user.service.ts": {
|
||||||
|
"mtime": 1788876727.3289642,
|
||||||
|
"seen": 1791133976.72434,
|
||||||
|
"ast_hash": "7119fb9fca78b01e8e9fceaec7e546c2",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-user/khanegi-nav-sample.ts": {
|
||||||
|
"mtime": 1787560898.4858353,
|
||||||
|
"seen": 1791133976.7243407,
|
||||||
|
"ast_hash": "28e0abbbc21cb644cf3155ba5863286b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-version/get-version.controller.ts": {
|
||||||
|
"mtime": 1787032970.921446,
|
||||||
|
"seen": 1791133976.7243412,
|
||||||
|
"ast_hash": "0dd9cfaa890e518803d6a59fdfdd6fee",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-version/get-version.module.ts": {
|
||||||
|
"mtime": 1786352929.499936,
|
||||||
|
"seen": 1791133976.724342,
|
||||||
|
"ast_hash": "d39e7cb813c7703050db1172fc2f057b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/get-version/get-version.service.ts": {
|
||||||
|
"mtime": 1786352929.500079,
|
||||||
|
"seen": 1791133976.7243433,
|
||||||
|
"ast_hash": "ec8b71fe2a18551181e9e583ddfb0cb0",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/health.controller.ts": {
|
||||||
|
"mtime": 1786352929.5001915,
|
||||||
|
"seen": 1791133976.724344,
|
||||||
|
"ast_hash": "603611b1b0db4ab49ca209d1bfee01ae",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/main.ts": {
|
||||||
|
"mtime": 1786973744.513951,
|
||||||
|
"seen": 1791133976.7243445,
|
||||||
|
"ast_hash": "b4237a90e4d1341fffde0fa2a71c5c68",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/admin-notify.service.ts": {
|
||||||
|
"mtime": 1786352929.50051,
|
||||||
|
"seen": 1791133976.724345,
|
||||||
|
"ast_hash": "44675af58747de193e4cbaf208ecc174",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/central-sms.service.ts": {
|
||||||
|
"mtime": 1786352929.5006545,
|
||||||
|
"seen": 1791133976.724346,
|
||||||
|
"ast_hash": "704e0b969952c7318fc8bc78dda57a57",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/dto/update-admin-sms.dto.ts": {
|
||||||
|
"mtime": 1786352929.5008552,
|
||||||
|
"seen": 1791133976.7243466,
|
||||||
|
"ast_hash": "e705366ede0ee514d2cbc00d57b2e0cf",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/dto/update-khanegi-deposit.dto.ts": {
|
||||||
|
"mtime": 1788876474.050021,
|
||||||
|
"seen": 1791133976.724347,
|
||||||
|
"ast_hash": "c6d3cc559afe80e7228505a710149b3e",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/notifications.module.ts": {
|
||||||
|
"mtime": 1786377085.7610135,
|
||||||
|
"seen": 1791133976.7243478,
|
||||||
|
"ast_hash": "a25c856f6847f056e7f3ad1f34b6f91d",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/runtime-settings.controller.ts": {
|
||||||
|
"mtime": 1790177785.509505,
|
||||||
|
"seen": 1791133976.7243488,
|
||||||
|
"ast_hash": "569bc4ce0fc3e5f95835d3c89adabbdb",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/notifications/runtime-settings.service.ts": {
|
||||||
|
"mtime": 1790177846.0557916,
|
||||||
|
"seen": 1791133976.7243493,
|
||||||
|
"ast_hash": "7027b99e26bd72c545ef59f550120c1e",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/dto/plugin-store.dto.ts": {
|
||||||
|
"mtime": 1788860335.4903193,
|
||||||
|
"seen": 1791133976.72435,
|
||||||
|
"ast_hash": "6d7cb02df7228eca0bf189c5841238f4",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/dto/plugin.dto.ts": {
|
||||||
|
"mtime": 1789550923.6182344,
|
||||||
|
"seen": 1791133976.7243505,
|
||||||
|
"ast_hash": "b2d7135faf106ad0db716a7c6df3fb4c",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugin-catalog.seed.ts": {
|
||||||
|
"mtime": 1788972183.2738802,
|
||||||
|
"seen": 1791133976.7243512,
|
||||||
|
"ast_hash": "d4cfaf85fbdfe645239c112b0057434c",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugin-store.controller.ts": {
|
||||||
|
"mtime": 1788860395.1242146,
|
||||||
|
"seen": 1791133976.7243516,
|
||||||
|
"ast_hash": "1bc6670edcd79a4121da7f1316c857bd",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugin-store.service.ts": {
|
||||||
|
"mtime": 1789026291.0619051,
|
||||||
|
"seen": 1791133976.7243526,
|
||||||
|
"ast_hash": "d2c32b46d44bd45c6d34abaf9d8437fa",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugins.controller.ts": {
|
||||||
|
"mtime": 1788797873.9723158,
|
||||||
|
"seen": 1791133976.724353,
|
||||||
|
"ast_hash": "00c61c672d104513ff8d12a99846e193",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugins.module.ts": {
|
||||||
|
"mtime": 1789026291.06219,
|
||||||
|
"seen": 1791133976.7243536,
|
||||||
|
"ast_hash": "f59a7190d98612d9425acc900377d295",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/plugins.service.ts": {
|
||||||
|
"mtime": 1789550948.3455684,
|
||||||
|
"seen": 1791133976.7243543,
|
||||||
|
"ast_hash": "88f715edbbcb160fd61aaef7766bdde2",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/public-plugin-store.controller.ts": {
|
||||||
|
"mtime": 1789026291.0623066,
|
||||||
|
"seen": 1791133976.724355,
|
||||||
|
"ast_hash": "d0d0715347bd82a7caf08ce5890eb1e6",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/plugins/remote-plugins.controller.ts": {
|
||||||
|
"mtime": 1788860395.3522294,
|
||||||
|
"seen": 1791133976.724356,
|
||||||
|
"ast_hash": "4dcdd66eae8154ca77de42dcf35f9216",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/prisma/prisma.module.ts": {
|
||||||
|
"mtime": 1786352929.5021794,
|
||||||
|
"seen": 1791133976.7243564,
|
||||||
|
"ast_hash": "3505a1831c78f0a9475e4ce0f0092410",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/prisma/prisma.service.ts": {
|
||||||
|
"mtime": 1786352929.5023031,
|
||||||
|
"seen": 1791133976.7243571,
|
||||||
|
"ast_hash": "f3eee7e045708ad54099bf275985a1a3",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/api-public-program-settings.controller.ts": {
|
||||||
|
"mtime": 1787032965.2339754,
|
||||||
|
"seen": 1791133976.7243576,
|
||||||
|
"ast_hash": "e182e1c4853a6269c095ae45c42087fc",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/deploy-setting-catalog-keys.ts": {
|
||||||
|
"mtime": 1791015836.6535373,
|
||||||
|
"seen": 1791133976.7243583,
|
||||||
|
"ast_hash": "ef59f064b91cfccec54feb3f6d206122",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/dto/import-program-settings.dto.ts": {
|
||||||
|
"mtime": 1786984107.672335,
|
||||||
|
"seen": 1791133976.7243588,
|
||||||
|
"ast_hash": "a5637d5a12c73341540266ac5bba5eac",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/dto/setting-keys.dto.ts": {
|
||||||
|
"mtime": 1786984110.4226904,
|
||||||
|
"seen": 1791133976.7243598,
|
||||||
|
"ast_hash": "355da6c8da5c8d67551cf51a8cd54b80",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/dto/update-program-settings.dto.ts": {
|
||||||
|
"mtime": 1786973213.6280973,
|
||||||
|
"seen": 1791133976.7243605,
|
||||||
|
"ast_hash": "6045563f1b7d5ac850013ba5da1b72de",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/program-settings.controller.ts": {
|
||||||
|
"mtime": 1787554316.2609072,
|
||||||
|
"seen": 1791133976.724361,
|
||||||
|
"ast_hash": "b9bcffd632d1e4f5e46558081acfa318",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/program-settings.module.ts": {
|
||||||
|
"mtime": 1786984123.3401637,
|
||||||
|
"seen": 1791133976.7243617,
|
||||||
|
"ast_hash": "0e78f36441a8de899dc592c2a3f78f79",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/program-settings.service.ts": {
|
||||||
|
"mtime": 1788787102.8801534,
|
||||||
|
"seen": 1791133976.7243621,
|
||||||
|
"ast_hash": "8f492c8d5951c4eb490b12d5fa1ff816",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/public-program-settings.controller.ts": {
|
||||||
|
"mtime": 1787032967.526884,
|
||||||
|
"seen": 1791133976.724363,
|
||||||
|
"ast_hash": "f5df48bfed125159a88f0868288522fd",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/remote-program-settings.controller.ts": {
|
||||||
|
"mtime": 1786973213.6318178,
|
||||||
|
"seen": 1791133976.7243638,
|
||||||
|
"ast_hash": "b716e880d70daea681059e9b6f93a5d7",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/runtime-setting-keys.ts": {
|
||||||
|
"mtime": 1788797820.5022392,
|
||||||
|
"seen": 1791133976.7243645,
|
||||||
|
"ast_hash": "828b87f0a867ef4dd747b69c80a70b67",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/secret-setting-keys.ts": {
|
||||||
|
"mtime": 1787510943.5991995,
|
||||||
|
"seen": 1791133976.7243652,
|
||||||
|
"ast_hash": "85dfd8ba4f7918c71e58c1cb0c0a9a8c",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/program-settings/setting-templates.controller.ts": {
|
||||||
|
"mtime": 1787151957.605376,
|
||||||
|
"seen": 1791133976.7243657,
|
||||||
|
"ast_hash": "5692d442485985e568490e19e5ecbd9b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/replica-watch/replica-watch.module.ts": {
|
||||||
|
"mtime": 1787043253.521665,
|
||||||
|
"seen": 1791133976.7243667,
|
||||||
|
"ast_hash": "bc5c25a86cebd075cd6c0e60ab160a86",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/replica-watch/replica-watch.service.ts": {
|
||||||
|
"mtime": 1787043253.2335062,
|
||||||
|
"seen": 1791133976.7243674,
|
||||||
|
"ast_hash": "bf0b53c4012875abffe9be35524ddc2e",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/servers/dto/server-account.dto.ts": {
|
||||||
|
"mtime": 1786470929.681465,
|
||||||
|
"seen": 1791133976.7243679,
|
||||||
|
"ast_hash": "60f01f052a8c40cfe2ab7990ae285977",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/servers/servers.controller.ts": {
|
||||||
|
"mtime": 1786470929.682539,
|
||||||
|
"seen": 1791133976.7243686,
|
||||||
|
"ast_hash": "abd01dba0f237c26a51a25d9d14cb2b7",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/servers/servers.module.ts": {
|
||||||
|
"mtime": 1786470929.6832016,
|
||||||
|
"seen": 1791133976.7243695,
|
||||||
|
"ast_hash": "981b415b56a905d452f831550fa56718",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/servers/servers.service.ts": {
|
||||||
|
"mtime": 1787587777.9340675,
|
||||||
|
"seen": 1791133976.72437,
|
||||||
|
"ast_hash": "71a99a066a9e0be059244082b05b7809",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/settings-proxy/settings-proxy.controller.ts": {
|
||||||
|
"mtime": 1786377085.7621837,
|
||||||
|
"seen": 1791133976.7243707,
|
||||||
|
"ast_hash": "8ed77b55a73c1c768fc6688f339f8b99",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/settings-proxy/settings-proxy.module.ts": {
|
||||||
|
"mtime": 1786470929.6853492,
|
||||||
|
"seen": 1791133976.7243714,
|
||||||
|
"ast_hash": "5dd08690cb81c98c40895edf4f8dcf16",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/settings-proxy/settings-proxy.service.ts": {
|
||||||
|
"mtime": 1786868237.6113873,
|
||||||
|
"seen": 1791133976.724372,
|
||||||
|
"ast_hash": "3029cdc2945544ee88c59ab690131862",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/dto/sms-account.dto.ts": {
|
||||||
|
"mtime": 1786352929.5037386,
|
||||||
|
"seen": 1791133976.7243726,
|
||||||
|
"ast_hash": "ad86dfe2fc6d9a616ebe072c7afa6efc",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/remote-sms.controller.ts": {
|
||||||
|
"mtime": 1786352929.5038674,
|
||||||
|
"seen": 1791133976.7243736,
|
||||||
|
"ast_hash": "47c5e084e92cacd2b2b22b331f0ee7f5",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/sms-keys.ts": {
|
||||||
|
"mtime": 1790177846.0579102,
|
||||||
|
"seen": 1791133976.7243743,
|
||||||
|
"ast_hash": "6411ce9cadfa509fa572e922a6b390c7",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/sms.controller.ts": {
|
||||||
|
"mtime": 1786377085.762577,
|
||||||
|
"seen": 1791133976.7243748,
|
||||||
|
"ast_hash": "bf0c9a43ae2c99deeca01d1560892218",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/sms.module.ts": {
|
||||||
|
"mtime": 1786973249.326113,
|
||||||
|
"seen": 1791133976.7243755,
|
||||||
|
"ast_hash": "bfa1c5941c8cba331bceec77b19c044e",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/sms/sms.service.ts": {
|
||||||
|
"mtime": 1788876746.0936482,
|
||||||
|
"seen": 1791133976.7243762,
|
||||||
|
"ast_hash": "610dfcdd434ca19f2d9167f1d039a818",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/support/dto/support.dto.ts": {
|
||||||
|
"mtime": 1786352929.5047445,
|
||||||
|
"seen": 1791133976.724377,
|
||||||
|
"ast_hash": "76700d6fd242e01fef820e3a0f92a5b1",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/support/support.controller.ts": {
|
||||||
|
"mtime": 1786377085.7629156,
|
||||||
|
"seen": 1791133976.7243776,
|
||||||
|
"ast_hash": "b65ae44ea47c434b53510dac6f5b8508",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/support/support.module.ts": {
|
||||||
|
"mtime": 1786377085.7630632,
|
||||||
|
"seen": 1791133976.7243783,
|
||||||
|
"ast_hash": "51ffff6c80edbe7557becfa75d4a29b0",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/support/support.service.ts": {
|
||||||
|
"mtime": 1787587777.9345336,
|
||||||
|
"seen": 1791133976.724379,
|
||||||
|
"ast_hash": "045ec95870de072105f30dcf25376c51",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/tenants/dto/create-tenant.dto.ts": {
|
||||||
|
"mtime": 1786980601.044571,
|
||||||
|
"seen": 1791133976.72438,
|
||||||
|
"ast_hash": "d5b0dbe3b88e5de782a6b0c1edd7f356",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/tenants/dto/update-tenant.dto.ts": {
|
||||||
|
"mtime": 1786352929.5055187,
|
||||||
|
"seen": 1791133976.7243807,
|
||||||
|
"ast_hash": "3f47f9a37e156dddf1081f9fc3a1cd94",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/tenants/tenants.controller.ts": {
|
||||||
|
"mtime": 1786377085.763266,
|
||||||
|
"seen": 1791133976.7243814,
|
||||||
|
"ast_hash": "644391d284f1457467d12bad4f906a30",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/tenants/tenants.module.ts": {
|
||||||
|
"mtime": 1786984135.8400395,
|
||||||
|
"seen": 1791133976.724382,
|
||||||
|
"ast_hash": "feb0ab3bd0c3a2cea0350b65ac1ed71f",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/tenants/tenants.service.ts": {
|
||||||
|
"mtime": 1789626505.4637377,
|
||||||
|
"seen": 1791133976.7243826,
|
||||||
|
"ast_hash": "ed56416fe08c68e5575673e1f31ba0c1",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/types/jalaali-js.d.ts": {
|
||||||
|
"mtime": 1787844546.0994003,
|
||||||
|
"seen": 1791133976.724383,
|
||||||
|
"ast_hash": "f16002ff3968351f5d07bf7305799100",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"src/uploads/uploads.util.ts": {
|
||||||
|
"mtime": 1788860317.3664668,
|
||||||
|
"seen": 1791133976.724384,
|
||||||
|
"ast_hash": "3b026f16b17bf01e9a57dd03988b972a",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"test/app.e2e-spec.ts": {
|
||||||
|
"mtime": 1786352929.5062904,
|
||||||
|
"seen": 1791133976.7243848,
|
||||||
|
"ast_hash": "9e728a6e18b08b2df8899646d18553d8",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"test/jest-e2e.json": {
|
||||||
|
"mtime": 1786352929.5064073,
|
||||||
|
"seen": 1791133976.7243853,
|
||||||
|
"ast_hash": "9f2f5b0e1da31d7b04e205c944e85e8d",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"tsconfig.build.json": {
|
||||||
|
"mtime": 1786352929.506525,
|
||||||
|
"seen": 1791133976.724386,
|
||||||
|
"ast_hash": "4d717fbe39407b1dd8139ff31d080a97",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"tsconfig.json": {
|
||||||
|
"mtime": 1786352929.5066385,
|
||||||
|
"seen": 1791133976.724387,
|
||||||
|
"ast_hash": "fb7208f309746355edd966c8a0588b52",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"AGENTS.md": {
|
||||||
|
"mtime": 1786361643.0923526,
|
||||||
|
"seen": 1791133976.7243876,
|
||||||
|
"ast_hash": "f0b8930067827e683732bd4d7143920b",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"README.md": {
|
||||||
|
"mtime": 1786352929.484881,
|
||||||
|
"seen": 1791133976.7243884,
|
||||||
|
"ast_hash": "f9b30a57e215bc0b63868065fc71a1ac",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/DEPLOY.md": {
|
||||||
|
"mtime": 1787055325.1046598,
|
||||||
|
"seen": 1791133976.7243888,
|
||||||
|
"ast_hash": "fa12790fa281c14da62bd0599b297cfe",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/SMS-MIGRATION-STEPS.md": {
|
||||||
|
"mtime": 1786352929.4851882,
|
||||||
|
"seen": 1791133976.7243896,
|
||||||
|
"ast_hash": "0212017272c04d35905676f7c9a79603",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"deploy/khanegi-sms-rollout-tracker.md": {
|
||||||
|
"mtime": 1786352929.4855921,
|
||||||
|
"seen": 1791133976.72439,
|
||||||
|
"ast_hash": "096f3c01c4d60b93610d12d47e4e72ea",
|
||||||
|
"semantic_hash": ""
|
||||||
|
},
|
||||||
|
"prisma/migrations_sqlite_archive/README.md": {
|
||||||
|
"mtime": 1786352929.4946783,
|
||||||
|
"seen": 1791133976.7243946,
|
||||||
|
"ast_hash": "2523a27a473d1bffd1d82a124d794d79",
|
||||||
|
"semantic_hash": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user