Compare commits
11
Commits
main
...
refine/2026-10
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
869800d9c4 | ||
|
|
30d7ef701f | ||
|
|
5ee5dcd893 | ||
|
|
3d59903114 | ||
|
|
a9ab66e26f | ||
|
|
bf688257ef | ||
|
|
fc7243e5f8 | ||
|
|
fa07ba8910 | ||
|
|
f037001339 | ||
|
|
7d4efce025 | ||
|
|
15ddbfbde9 |
No files matched your search
@@ -0,0 +1,12 @@
|
||||
# Banco de dados SQLite usado pelo Prisma.
|
||||
# O caminho é relativo à pasta prisma/ (onde fica o schema), então este valor
|
||||
# aponta para prisma/prisma/db/database.sqlite.
|
||||
DATABASE_URL="file:./prisma/db/database.sqlite"
|
||||
|
||||
# Opcional. Quando "true", a aplicação responde apenas com o cache local
|
||||
# (data/products-cache.json) e não chama a API do Open Food Facts.
|
||||
# NEXT_PUBLIC_CACHE_ONLY_MODE="false"
|
||||
|
||||
# Opcional. Origem do proxy de analytics (Rybbit) configurado em next.config.mjs.
|
||||
# Padrão quando vazio: https://analytics.evandro.dev.br/api
|
||||
# NEXT_PUBLIC_RYBBIT_HOST="https://analytics.evandro.dev.br/api"
|
||||
@@ -0,0 +1,29 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
DATABASE_URL: file:./prisma/db/database.sqlite
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
- run: pnpm install --frozen-lockfile
|
||||
- run: pnpm lint
|
||||
- run: pnpm typecheck
|
||||
- run: pnpm test
|
||||
- run: pnpm build
|
||||
+6
-1
@@ -171,4 +171,9 @@ dist
|
||||
.pnp.*
|
||||
|
||||
.env*
|
||||
!.env.example
|
||||
!.env.example
|
||||
# Banco SQLite local (criado por `pnpm db:push`) e saída de ferramentas
|
||||
*.sqlite
|
||||
*.sqlite-journal
|
||||
data/*.tmp
|
||||
graphify-out/
|
||||
@@ -1,539 +1,243 @@
|
||||
# NutriScan
|
||||
|
||||
<div align="center">
|
||||
**Consulta nutricional de produtos de supermercado: busca por nome ou código de barras na base colaborativa do Open Food Facts, mostra Nutri-Score e grau de processamento (NOVA) e organiza listas de compras, com cache local para continuar funcionando sem internet.**
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
**Plataforma completa de informações nutricionais alimentares**
|
||||
Demonstração publicada pelo autor: <https://nutriscan.evandro.dev.br>
|
||||
|
||||
_Descubra o que a comunidade alimentar sabe sobre seus alimentos_
|
||||
## Sobre
|
||||
|
||||
[](https://nextjs.org/)
|
||||
[](https://www.typescriptlang.org/)
|
||||
[](https://www.prisma.io/)
|
||||
[](https://tailwindcss.com/)
|
||||
[](https://world.openfoodfacts.org/)
|
||||
Saber o que um produto industrializado tem de verdade exige consultar bases públicas e cruzar informação espalhada: nota Nutri-Score, grau de processamento, alérgenos, aditivos e tabela nutricional. O NutriScan junta isso em uma interface só.
|
||||
|
||||
[](https://nutriscan.evandro.dev.br)
|
||||
[](https://github.com/evandrodevbr/lista-compras/issues)
|
||||
[](https://github.com/evandrodevbr/lista-compras/issues)
|
||||
A aplicação consulta a base do Open Food Facts (mais de 2 milhões de produtos), aceita busca por texto ou por código de barras (8 a 13 dígitos, com detecção automática do tipo) e exibe Nutri-Score e grau de processamento NOVA de cada produto. O painel de filtros avançados oferece classificação nutricional, categorias, marcas, alérgenos, aditivos e faixas de valores nutricionais, com 12 opções de ordenação. Além da consulta, mantém listas de compras persistidas em SQLite.
|
||||
|
||||
</div>
|
||||
O ponto de arquitetura que diferencia o projeto é o cache em duas camadas: um arquivo JSON no servidor, versionado no repositório, com os produtos já vistos, e um cache no `localStorage` do navegador. Com o modo cache-only ligado, a aplicação responde apenas com o cache local, sem chamar a API externa.
|
||||
|
||||
## 📋 Índice
|
||||
## Como funciona
|
||||
|
||||
- [Sobre o Projeto](#-sobre-o-projeto)
|
||||
- [Demonstração Visual](#-demonstração-visual)
|
||||
- [Funcionalidades](#-funcionalidades)
|
||||
- [Stack Tecnológica](#-stack-tecnológica)
|
||||
- [Arquitetura](#-arquitetura)
|
||||
- [Instalação e Setup](#-instalação-e-setup)
|
||||
- [API e Integrações](#-api-e-integrações)
|
||||
- [Database Schema](#-database-schema)
|
||||
- [Performance e Otimizações](#-performance-e-otimizações)
|
||||
- [Deployment](#-deployment)
|
||||
- [Scripts Disponíveis](#-scripts-disponíveis)
|
||||
- [Contribuindo](#-contribuindo)
|
||||
- [Licença](#-licença)
|
||||
- [Contato](#-contato)
|
||||
- [Agradecimentos](#-agradecimentos)
|
||||
```
|
||||
navegador
|
||||
│
|
||||
├─ páginas Next.js (App Router, Server Components + Client Components)
|
||||
│
|
||||
├─ /api/search ──────────────▶ data/products-cache.json (cache do servidor, 232 produtos)
|
||||
│ └─ se faltam resultados ─▶ Open Food Facts (world.openfoodfacts.org/cgi/search.pl)
|
||||
├─ /api/products/[barcode] ──▶ cache JSON ─▶ Open Food Facts (api/v2/product/{code}.json)
|
||||
│ └─ produto novo é gravado no cache JSON
|
||||
├─ /api/location ────────────▶ headers do proxy ou api.ipify.org (país do usuário)
|
||||
└─ /api/storage-stats ───────▶ estatísticas do cache JSON
|
||||
|
||||
## 🚀 Sobre o Projeto
|
||||
listas de compras: componentes ─▶ Server Actions (app/actions.ts) ─▶ Prisma ─▶ SQLite
|
||||
cache do cliente: resultados de busca e filtros no localStorage (TTL configurável)
|
||||
```
|
||||
|
||||
**NutriScan** é uma plataforma web moderna que democratiza o acesso a informações nutricionais transparentes e confiáveis. Desenvolvida com foco na experiência do usuário e performance, a aplicação conecta consumidores conscientes à maior base de dados colaborativa de alimentos do mundo.
|
||||
- Produto não encontrado no cache JSON é buscado na API e salvo no cache, o que aumenta o acervo offline a cada uso.
|
||||
- A rota `/api/search` pagina em blocos de 1000 resultados na API externa, com pausa de 200 ms entre requisições.
|
||||
- Não há autenticação nem multiusuário: cada lista de compras é identificada por um id na URL.
|
||||
|
||||
### 🎯 Missão
|
||||
## Stack
|
||||
|
||||
Empoderar usuários com dados nutricionais precisos e abrangentes para tomada de decisões alimentares mais conscientes através de uma plataforma intuitiva, rápida e confiável.
|
||||
| Camada | Escolha |
|
||||
|---|---|
|
||||
| Framework | Next.js 15 (App Router, Server Actions, Route Handlers) |
|
||||
| UI | React 19, shadcn/ui sobre Radix UI, Tailwind CSS 3.4, Framer Motion 11, lucide-react 0.460 |
|
||||
| Tema | next-themes 0.4 (claro e escuro, persistido) |
|
||||
| Linguagem | TypeScript 5.9 em modo `strict` |
|
||||
| Listas de compras | SQLite com Prisma 6 (`prisma/schema.prisma`) |
|
||||
| Dados de produtos | API pública do Open Food Facts + cache JSON em `data/` |
|
||||
| Cache do cliente | `localStorage`, com modo cache-only |
|
||||
| Pacotes | pnpm (lockfile versionado) |
|
||||
| Deploy | nixpacks (`nixpacks.toml`) e Dokploy (`dokploy.yaml`) |
|
||||
|
||||
### ⭐ Diferenciais
|
||||
## Requisitos
|
||||
|
||||
- **Dados Colaborativos**: Acesso a milhões de produtos da maior base de dados open source do mundo
|
||||
- **Filtros Avançados**: Sistema sofisticado de busca e filtros para descoberta precisa de produtos
|
||||
- **Classificações de Saúde**: Nutri-Score e NOVA group para avaliação rápida da qualidade
|
||||
- **Atualizações em Tempo Real**: Sincronização de dados ao vivo e resultados instantâneos
|
||||
- **Arquitetura Moderna**: Desenvolvida com tecnologias de ponta e foco em performance
|
||||
- Node.js `>=18.18` (o deploy fixa Node 18; o build foi verificado em Node 24.20.0)
|
||||
- pnpm 10 ou superior (o deploy fixa 10.34.5; a instalação foi verificada com pnpm 12.4.1 e a resolução de dependências foi verificada com pnpm 10.34.5)
|
||||
- Para rodar os testes: Node.js `>=22.15` (verificado em 26.7.0)
|
||||
- Nenhum serviço externo é obrigatório para subir a aplicação: sem internet ela responde pelo cache local
|
||||
|
||||
### 📊 Estatísticas
|
||||
## Início rápido
|
||||
|
||||
| Métrica | Valor |
|
||||
| ------------------- | ----- |
|
||||
| Produtos no banco | 2M+ |
|
||||
| Países cobertos | 100+ |
|
||||
| Disponibilidade | 24/7 |
|
||||
| Dados colaborativos | Sim |
|
||||
```bash
|
||||
git clone https://github.com/evandrodevbr/nutriscan.git
|
||||
cd nutriscan
|
||||
|
||||
## 📱 Demonstração Visual
|
||||
pnpm install # o postinstall roda `prisma generate`
|
||||
cp .env.example .env
|
||||
pnpm db:push # cria as tabelas Lista e Produtos no SQLite
|
||||
pnpm dev # http://localhost:3000
|
||||
```
|
||||
|
||||
> **Nota**: Screenshots serão adicionados em breve mostrando as principais funcionalidades da aplicação.
|
||||
Duas pegadinhas que quebram a primeira execução e estão resolvidas acima:
|
||||
|
||||
### Principais Telas
|
||||
- O arquivo de ambiente precisa se chamar `.env`, não `.env.local`: a CLI do Prisma (`prisma generate`, `prisma db push`) só lê `.env`. O Next.js lê os dois.
|
||||
- `pnpm db:migrate` roda `prisma migrate deploy` e não cria nada aqui, porque o repositório não tem a pasta `prisma/migrations`. Quem cria o schema é `pnpm db:push`.
|
||||
|
||||
- **Página Inicial**: Interface de busca com hero section e barra de pesquisa
|
||||
- **Resultados**: Lista de produtos com filtros avançados e ordenação
|
||||
- **Detalhes do Produto**: Informações nutricionais completas e classificações
|
||||
- **Lista de Compras**: Gerenciamento de produtos com quantidades e status
|
||||
- **Modos de Tema**: Visualização em tema claro e escuro
|
||||
Com o servidor no ar:
|
||||
|
||||
## ✨ Funcionalidades
|
||||
```bash
|
||||
curl -s "http://localhost:3000/api/search?q=bis&cache_only=true&page_size=5"
|
||||
curl -s http://localhost:3000/api/storage-stats
|
||||
```
|
||||
|
||||
### 🔍 Sistema de Busca Inteligente
|
||||
## Uso
|
||||
|
||||
O NutriScan oferece múltiplas formas de encontrar produtos alimentícios:
|
||||
| Rota | O que é |
|
||||
|---|---|
|
||||
| `/` | Página inicial com busca por nome ou código de barras |
|
||||
| `/resultados?q=<termo>` | Resultados com filtros, ordenação e paginação |
|
||||
| `/produto/<barcode>` | Detalhe do produto: Nutri-Score, grupo NOVA, composição por 100 g e lista de ingredientes |
|
||||
| `/lista/<id>` | Lista de compras: adicionar item com quantidade e unidade, marcar como comprado, remover |
|
||||
| `/sobre` | Página institucional do projeto |
|
||||
| `/robots.txt`, `/sitemap.xml` | Gerados pelo Next.js |
|
||||
|
||||
- **Busca por Código de Barras**: Reconhecimento automático de códigos de 8-13 dígitos
|
||||
- **Busca por Nome/Marca**: Pesquisa textual inteligente com sugestões
|
||||
- **Detecção Automática**: Sistema que identifica o tipo de busca automaticamente
|
||||
- **Geolocalização**: Priorização de produtos locais baseada na localização do usuário
|
||||
- **API Proxy**: Chamadas seguras através de rotas Next.js para evitar problemas de CORS
|
||||
## API
|
||||
|
||||
### 💾 Sistema de Cache Avançado
|
||||
Todas as rotas ficam em `app/api` e são Route Handlers do Next.js.
|
||||
|
||||
Sistema multi-camada de cache para performance otimizada:
|
||||
| Rota | Método | O que faz |
|
||||
|---|---|---|
|
||||
| `/api/search` | GET | Busca produtos no cache JSON e, se faltar, no Open Food Facts |
|
||||
| `/api/products/[barcode]` | GET | Busca um produto pelo código de barras (cache primeiro, depois API) |
|
||||
| `/api/location` | GET | País estimado a partir do IP (`x-forwarded-for`, `x-real-ip` ou api.ipify.org) |
|
||||
| `/api/cache/sync` | POST | Grava um lote de produtos no cache JSON. Corpo: `{ "products": [...] }`; itens sem `code` numérico são ignorados e contados em `failed` |
|
||||
| `/api/storage-stats` | GET | Total de produtos, tamanho do arquivo e data da última atualização do cache |
|
||||
|
||||
- **Cache localStorage**: Armazenamento local com TTL configurável
|
||||
- **Cache de Buscas**: Armazenamento completo de buscas com filtros aplicados
|
||||
- **Cache JSON**: 218 produtos pré-carregados para uso offline
|
||||
- **Modo Cache-Only**: Funcionamento completo sem conexão com internet
|
||||
- **Sincronização Inteligente**: Atualização automática de dados quando online
|
||||
- **Estatísticas de Storage**: Monitoramento de uso de armazenamento
|
||||
Parâmetros de `/api/search`:
|
||||
|
||||
### 🎛️ Filtros e Ordenação
|
||||
| Parâmetro | Valores | Observação |
|
||||
|---|---|---|
|
||||
| `q` | texto | Obrigatório; sem ele a rota responde 400 |
|
||||
| `page`, `page_size` | inteiros `>= 1` | Padrão 1 e 20; valores inválidos respondem 400 |
|
||||
| `cache_only` | `true` | Responde só com o cache local, sem chamar a API externa |
|
||||
| `country` | código do país | Enviado como `countries_tags_en` |
|
||||
| `countries`, `categories`, `brands` | tags | Filtros repassados como `countries_tags`, `categories_tags`, `brands_tags` |
|
||||
| `nutrition_grades`, `nova_groups` | `a` a `e`, `1` a `4` | Filtros de classificação |
|
||||
| `allergens`, `exclude_allergens`, `additives`, `exclude_additives`, `no_additives` | tags, `true` | Filtros de composição |
|
||||
| `energy_min`, `energy_max`, `fat_min`, `fat_max`, `carbohydrates_min`, `carbohydrates_max`, `proteins_min`, `proteins_max`, `sugars_min`, `sugars_max`, `fiber_min`, `fiber_max`, `sodium_min`, `sodium_max` | número (por 100 g) | Faixas nutricionais |
|
||||
| `sort_by` | `nutrition_grade`, `name`, `brand`, `energy`, `fat`, `sugars` | Ordenação; o padrão é `popularity` |
|
||||
| `sort_order` | `asc`, `desc` | Padrão `asc` |
|
||||
|
||||
Sistema robusto de filtros para descoberta precisa:
|
||||
No modo `cache_only` a busca considera apenas texto (nome, marca, categoria) e país; os demais filtros só são repassados para o Open Food Facts nas buscas online.
|
||||
|
||||
#### Classificações de Saúde
|
||||
Exemplo de resposta de `/api/search`:
|
||||
|
||||
- **Nutri-Score**: Filtro por classificação A-E (muito bom a muito ruim)
|
||||
- **NOVA Group**: Filtro por nível de processamento 1-4 (não processado a ultraprocessado)
|
||||
```json
|
||||
{
|
||||
"products": [{ "code": "7622210575975", "product_name": "Bis", "brands": "Lacta" }],
|
||||
"count": 5,
|
||||
"page": 1,
|
||||
"page_size": 5,
|
||||
"fromCache": true,
|
||||
"fromAPI": false,
|
||||
"cacheStats": { "localProducts": 5, "apiProducts": 0, "newProducts": 0, "totalReturned": 5 }
|
||||
}
|
||||
```
|
||||
|
||||
#### Filtros de Produto
|
||||
## Produção
|
||||
|
||||
- **Categorias**: Filtro por tipo de alimento (bebidas, laticínios, snacks, etc.)
|
||||
- **Marcas**: Filtro por fabricante
|
||||
- **Alérgenos**: Identificação e filtro por substâncias alergênicas
|
||||
- **Aditivos**: Filtro por aditivos alimentares e conservantes
|
||||
```bash
|
||||
pnpm build # prisma generate + next build
|
||||
pnpm start # next start, porta 3000 (use -p <porta> para trocar)
|
||||
```
|
||||
|
||||
#### Filtros Nutricionais
|
||||
O `build` precisa de `DATABASE_URL` no ambiente para gerar o Prisma Client, e o `start` precisa dela para as rotas de lista de compras.
|
||||
|
||||
- **Ranges Personalizados**: Filtros por valores nutricionais (calorias, gorduras, açúcares, etc.)
|
||||
- **12 Opções de Ordenação**: Por relevância, nutrição, nome, marca, valores nutricionais, etc.
|
||||
## Deploy
|
||||
|
||||
### 🛒 Listas de Compras Colaborativas
|
||||
O repositório traz duas configurações de build, ambas para plataformas que usam nixpacks:
|
||||
|
||||
Sistema completo de gerenciamento de compras:
|
||||
- `nixpacks.toml`: Node 18 e pnpm 10.34.5, instala com `--no-frozen-lockfile`, roda `prisma generate`, `prisma db push --accept-data-loss` e o build, com `DATABASE_URL=file:./db/database.sqlite`. O start é `pnpm start` com a mesma variável.
|
||||
- `dokploy.yaml`: repete os passos de instalação (`pnpm install --no-frozen-lockfile`), geração do Prisma Client e build.
|
||||
|
||||
- **Múltiplas Listas**: Criação e gerenciamento de várias listas de compras
|
||||
- **Produtos Detalhados**: Adição com quantidade, unidade e observações
|
||||
- **Status de Compra**: Marcação de itens como comprados
|
||||
- **Sincronização**: Persistência via Prisma + SQLite
|
||||
- **Compartilhamento**: Compartilhamento de listas via ID único
|
||||
Como o `DATABASE_URL` do deploy aponta para `file:./db/database.sqlite` e o caminho relativo do SQLite é resolvido a partir da pasta `prisma/`, o banco de produção fica em `prisma/db/database.sqlite` no contêiner, separado do arquivo versionado no repositório.
|
||||
|
||||
### 🎨 Interface e Experiência do Usuário
|
||||
|
||||
Design moderno e acessível:
|
||||
|
||||
- **Design Responsivo**: Mobile-first com adaptação para todos os dispositivos
|
||||
- **Temas**: Modo claro e escuro com persistência de preferência
|
||||
- **Animações**: Transições suaves com Framer Motion
|
||||
- **Acessibilidade**: Componentes Radix UI com suporte completo a leitores de tela
|
||||
- **Estados de Loading**: Skeletons e indicadores de carregamento
|
||||
- **Paginação Otimizada**: Carregamento eficiente de grandes listas
|
||||
- **Imagens Otimizadas**: Lazy loading e otimização automática
|
||||
|
||||
## 🛠 Stack Tecnológica
|
||||
|
||||
### Framework Principal
|
||||
|
||||
- **[Next.js 14.2.18](https://nextjs.org/)** - React framework com App Router e Server Actions
|
||||
- **[TypeScript 5.7.2](https://www.typescriptlang.org/)** - JavaScript tipado para maior confiabilidade
|
||||
- **[React 18.3.1](https://react.dev/)** - Biblioteca de interface moderna com recursos concorrentes
|
||||
|
||||
### Banco de Dados e ORM
|
||||
|
||||
- **[Prisma 5.22.0](https://www.prisma.io/)** - ORM type-safe para gerenciamento de dados
|
||||
- **[SQLite](https://www.sqlite.org/)** - Banco de dados leve e serverless
|
||||
|
||||
### Estilização e UI
|
||||
|
||||
- **[Tailwind CSS 3.4.15](https://tailwindcss.com/)** - Framework CSS utility-first
|
||||
- **[shadcn/ui](https://ui.shadcn.com/)** - Biblioteca de componentes reutilizáveis
|
||||
- **[Radix UI](https://www.radix-ui.com/)** - Primitivos acessíveis não estilizados
|
||||
- **[Lucide Icons 0.460.0](https://lucide.dev/)** - Ícones bonitos e customizáveis
|
||||
- **[Framer Motion 11.12.0](https://www.framer.com/motion/)** - Biblioteca de animações
|
||||
|
||||
### APIs Externas
|
||||
|
||||
- **[Open Food Facts](https://world.openfoodfacts.org/)** - Base de dados global de produtos alimentícios
|
||||
- **Geolocation API** - Recomendações baseadas em localização
|
||||
|
||||
### Ferramentas de Desenvolvimento
|
||||
|
||||
- **[ESLint 8.57.1](https://eslint.org/)** - Linting e formatação de código
|
||||
- **[PostCSS 8.4.49](https://postcss.org/)** - Processamento de CSS
|
||||
- **[pnpm](https://pnpm.io/)** - Gerenciador de pacotes eficiente
|
||||
|
||||
## 🏗 Arquitetura
|
||||
|
||||
### Estrutura do App Router
|
||||
## Estrutura do projeto
|
||||
|
||||
```
|
||||
app/
|
||||
├── actions.ts # Server Actions para mutações de dados
|
||||
├── api/ # Rotas de API para proxies de serviços externos
|
||||
│ ├── cache/sync/ # Sincronização de cache
|
||||
│ ├── location/ # Serviços de geolocalização
|
||||
│ ├── products/[barcode]/ # Proxy de busca de produto
|
||||
│ ├── search/ # Proxy de busca Open Food Facts
|
||||
│ └── storage-stats/ # Estatísticas de armazenamento
|
||||
├── components/ # Componentes específicos de funcionalidades
|
||||
│ ├── landing/ # Seções da página inicial
|
||||
│ └── [componentes diversos] # Componentes reutilizáveis
|
||||
├── lista/[id]/ # Páginas de lista de compras
|
||||
├── produto/[barcode]/ # Páginas de detalhes do produto
|
||||
├── resultados/ # Página de resultados de busca
|
||||
└── layout.tsx # Layout raiz
|
||||
├── page.tsx página inicial (hero, recursos, como funciona, doação)
|
||||
├── sobre/ página institucional
|
||||
├── resultados/ busca com filtros, ordenação e paginação
|
||||
├── produto/[barcode]/ detalhe do produto
|
||||
├── lista/[id]/ lista de compras
|
||||
├── api/ search, products/[barcode], location, cache/sync, storage-stats
|
||||
├── actions.ts Server Actions das listas (criar, listar, marcar, remover)
|
||||
├── components/ componentes de tela (landing/, cards, filtros, paginação)
|
||||
├── layout.tsx layout raiz: fontes, metadados, analytics
|
||||
├── robots.ts, sitemap.ts metadados de indexação
|
||||
├── globals.css estilos globais e tokens de tema
|
||||
├── fonts/ fontes Geist
|
||||
hooks/ busca, filtros, cache, geolocalização e monitor de storage
|
||||
lib/
|
||||
├── openFoodFactsApi.ts cliente da API do Open Food Facts e ordenação
|
||||
├── jsonCacheManager.ts cache JSON do servidor (data/products-cache.json)
|
||||
├── offSearch.ts montagem e paginação das buscas no Open Food Facts
|
||||
├── cacheManager.ts cache de buscas no localStorage
|
||||
├── geolocation.ts detecção de país do usuário
|
||||
├── searchUtils.ts ordenação por relevância
|
||||
├── types.ts tipos compartilhados
|
||||
└── prisma.ts singleton do Prisma Client
|
||||
components/ui/ componentes shadcn/ui (button, dialog, select, sheet, ...)
|
||||
prisma/schema.prisma modelos Lista e Produtos
|
||||
tests/ testes (node:test) e helper de resolução de módulos
|
||||
.github/workflows/ci.yml CI: lint, typecheck, testes e build
|
||||
data/products-cache.json cache inicial com 232 produtos
|
||||
docs/ documentação interna
|
||||
nixpacks.toml, dokploy.yaml configuração de deploy
|
||||
```
|
||||
|
||||
### Fluxo de Dados
|
||||
## Testes e desenvolvimento
|
||||
|
||||
1. **Requisições de Busca**: Entrada do usuário → Rota de API → API Open Food Facts → Resposta
|
||||
2. **Gerenciamento de Listas**: Ações do usuário → Server Actions → Prisma → Banco de dados
|
||||
3. **Atualizações em Tempo Real**: Server Actions → Banco de dados → Revalidação → Atualização da UI
|
||||
| Comando | O que faz |
|
||||
|---|---|
|
||||
| `pnpm test` | Testes com o runner nativo do Node (`node:test`), sem framework adicional |
|
||||
| `pnpm lint` | ESLint via `next lint` |
|
||||
| `pnpm typecheck` | `tsc --noEmit` |
|
||||
| `pnpm build` | `prisma generate` + `next build` |
|
||||
|
||||
### Sistema de Cache
|
||||
Os testes não acessam a rede: `fetch` é substituído por um mock e o cache JSON do servidor aponta para uma pasta temporária, então `data/products-cache.json` não é alterado. Eles cobrem a normalização de energia e nutrientes, a ordenação, a montagem das requisições ao Open Food Facts (`lib/offSearch.ts`), as rotas `/api/search`, `/api/products/[barcode]` e `/api/cache/sync` e a gravação concorrente do cache. O código-fonte TypeScript é executado direto pelo Node (type stripping), por isso `pnpm test` exige Node.js 22.15 ou superior; o helper `tests/helpers/register.mjs` resolve o alias `@/` e os imports sem extensão.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Usuário] --> B[Interface]
|
||||
B --> C{Cache Local?}
|
||||
C -->|Sim| D[Retornar Dados]
|
||||
C -->|Não| E[API Route]
|
||||
E --> F[Open Food Facts API]
|
||||
F --> G[Salvar no Cache]
|
||||
G --> D
|
||||
```
|
||||
O workflow `.github/workflows/ci.yml` roda lint, typecheck, testes e build em cada push na `main` e em pull requests, com Node 22 e pnpm 10.
|
||||
|
||||
## 🚦 Instalação e Setup
|
||||
Última execução local (Node 26.7.0, pnpm 12.8.1): `pnpm test`, `pnpm typecheck`, `pnpm lint` e `pnpm build` terminam com sucesso; `pnpm start -p 3111` respondeu 200 em `/`, `/lista/<id>`, `/api/search?q=bis&cache_only=true&page_size=5`, `/api/storage-stats` e `/api/products/7622210575975?cache_only=true`, e 400 em `/api/search` sem `q`, `/api/products/123` e `POST /api/cache/sync` com corpo inválido.
|
||||
|
||||
### Pré-requisitos
|
||||
## Estado atual e limitações
|
||||
|
||||
- **Node.js** 18.0 ou superior
|
||||
- **pnpm** 8.0 ou superior (gerenciador de pacotes recomendado)
|
||||
- A busca textual depende do endpoint legado `cgi/search.pl` do Open Food Facts, que respondeu HTTP 503 em 14/09/2026. Na prática, buscar por nome retorna lista vazia, com a rota respondendo 200 e `count: 0`, sem derrubar a aplicação. A consulta por código de barras continua funcionando pelo endpoint `api/v2/product`.
|
||||
- O painel de filtros avançados da página de resultados guarda as escolhas na chave do cache, mas a busca enviada para `/api/search` leva apenas texto, país e paginação. Hoje o que realmente filtra a lista são os atalhos de classificação Nutri-Score e o botão de produtos sem alérgenos.
|
||||
- A ordenação implementada em `lib/openFoodFactsApi.ts` cobre quatro critérios (relevância, Nutri-Score, energia e nome). As demais opções do seletor caem no caso padrão da função e não reordenam o resultado.
|
||||
- O servidor grava em `data/products-cache.json`, que é versionado. Usar a aplicação altera o conteúdo do arquivo no diretório de trabalho.
|
||||
- Metadados, Open Graph e User-Agent (`lib/offSearch.ts`, `lib/openFoodFactsApi.ts`, `app/api/location/route.ts`) apontam para `nutriscan.com.br`, domínio que não responde; a instância publicada está em `nutriscan.evandro.dev.br`, que também é a URL do `sitemap.xml` e do `robots.txt`.
|
||||
- O repositório não traz banco SQLite: é necessário rodar `pnpm db:push` antes de usar as listas.
|
||||
- `pnpm db:migrate` existe no `package.json` mas não tem migrations para aplicar no repositório.
|
||||
- O analytics é servido via proxy em `/analytics/*` para o Rybbit configurado em `NEXT_PUBLIC_RYBBIT_HOST`; sem esse serviço no ar, o script falha silenciosamente no cliente.
|
||||
- A página de lista de compras renderiza para qualquer id, mesmo sem registro no banco, porque `verificarLista` retorna sucesso quando a lista não existe.
|
||||
|
||||
### Instalação Passo a Passo
|
||||
## Documentação
|
||||
|
||||
1. **Clone o repositório**
|
||||
| Documento | Conteúdo |
|
||||
|---|---|
|
||||
| [`docs/openFoodFacts.md`](docs/openFoodFacts.md) | Anotações sobre a API do Open Food Facts |
|
||||
| [`docs/logo-prompts.md`](docs/logo-prompts.md) | Prompts usados na criação das logos |
|
||||
| [`docs/resedesign/`](docs/resedesign) | Referência visual do redesign |
|
||||
| [`prisma/schema.prisma`](prisma/schema.prisma) | Modelo de dados das listas |
|
||||
|
||||
```bash
|
||||
git clone https://github.com/evandrodevbr/lista-compras.git
|
||||
cd lista-compras
|
||||
```
|
||||
## Licença
|
||||
|
||||
2. **Instale as dependências**
|
||||
Licença de uso pessoal, definida em [`LICENSE`](LICENSE): é permitido usar em máquina local, estudar o código e rodar para desenvolvimento. Não é permitido deploy público, uso comercial, redistribuição nem obras derivadas para distribuição. A instância em `nutriscan.evandro.dev.br` é do próprio autor.
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
Autor: Evandro, <https://evandro.dev.br> e [@evandrodevbr](https://github.com/evandrodevbr).
|
||||
|
||||
3. **Configure as variáveis de ambiente**
|
||||
## Normalização de energia e nutrientes
|
||||
|
||||
```bash
|
||||
cp .env.example .env.local
|
||||
```
|
||||
|
||||
Configure as seguintes variáveis:
|
||||
|
||||
```env
|
||||
DATABASE_URL="file:./prisma/db/database.sqlite"
|
||||
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
|
||||
```
|
||||
|
||||
4. **Inicialize o banco de dados**
|
||||
|
||||
```bash
|
||||
pnpm db:generate
|
||||
pnpm db:migrate
|
||||
```
|
||||
|
||||
5. **Inicie o servidor de desenvolvimento**
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
6. **Abra seu navegador**
|
||||
Navegue para [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
**Problema**: Erro de conexão com banco de dados
|
||||
|
||||
- **Solução**: Verifique se o arquivo `database.sqlite` existe em `prisma/db/`
|
||||
|
||||
**Problema**: Erro de build do Prisma
|
||||
|
||||
- **Solução**: Execute `pnpm db:generate` antes do build
|
||||
|
||||
**Problema**: Dependências não instaladas
|
||||
|
||||
- **Solução**: Use `pnpm install --no-frozen-lockfile`
|
||||
|
||||
## 🔌 API e Integrações
|
||||
|
||||
### Integração Open Food Facts
|
||||
|
||||
O NutriScan integra com a API Open Food Facts através de um wrapper customizado (`lib/openFoodFactsApi.ts`) que fornece:
|
||||
|
||||
- **Busca de Produtos**: Pesquisa por nome, marca ou categoria
|
||||
- **Lookup por Código de Barras**: Busca direta usando códigos de barras
|
||||
- **Filtros Avançados**: Filtros por notas nutricionais, alérgenos, aditivos e mais
|
||||
- **Cache**: Estratégia de cache inteligente para melhor performance
|
||||
- **Tratamento de Erros**: Tratamento abrangente de erros e mecanismos de fallback
|
||||
|
||||
### Endpoints Disponíveis
|
||||
|
||||
| Endpoint | Descrição | Método |
|
||||
| ------------------------- | ----------------------------- | ------ |
|
||||
| `/api/search` | Busca de produtos | GET |
|
||||
| `/api/products/[barcode]` | Busca de produto específico | GET |
|
||||
| `/api/location` | Serviços de geolocalização | GET |
|
||||
| `/api/cache/sync` | Sincronização de cache | POST |
|
||||
| `/api/storage-stats` | Estatísticas de armazenamento | GET |
|
||||
|
||||
### Rate Limits e Cache
|
||||
|
||||
- **Resultados de Busca**: Cache de 1 hora para reduzir chamadas à API
|
||||
- **Detalhes de Produto**: Cache de 24 horas para produtos frequentemente acessados
|
||||
- **Opções de Filtro**: Cache de 1 semana para dados estáticos como categorias e marcas
|
||||
|
||||
## 🗄 Database Schema
|
||||
|
||||
### Schema Prisma
|
||||
|
||||
```prisma
|
||||
model Lista {
|
||||
id String @id
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
produtos Produtos[]
|
||||
}
|
||||
|
||||
model Produtos {
|
||||
id Int @id @default(autoincrement())
|
||||
nome String
|
||||
qtd Float
|
||||
tipoUN String
|
||||
comprado Boolean @default(false)
|
||||
listaId String @default("default")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
lista Lista @relation(fields: [listaId], references: [id])
|
||||
}
|
||||
```
|
||||
|
||||
### Características Principais
|
||||
|
||||
- **Estrutura Simples**: Fácil de entender e manter
|
||||
- **Listas Flexíveis**: Suporte para múltiplas listas de compras
|
||||
- **Rastreamento de Produtos**: Gerenciamento de quantidade e unidade
|
||||
- **Rastreamento de Status**: Status de compra para cada item
|
||||
- **Timestamps**: Rastreamento automático de criação e atualização
|
||||
|
||||
## ⚡ Performance e Otimizações
|
||||
|
||||
### Estratégia de Cache Multi-Camada
|
||||
|
||||
1. **Cache de Busca**: Armazenamento local de resultados de busca
|
||||
2. **Cache de Produtos**: Cache JSON de produtos populares
|
||||
3. **Cache de Imagens**: Lazy loading e otimização automática
|
||||
4. **Cache de API**: Cache de respostas da API Open Food Facts
|
||||
|
||||
### Otimizações de Performance
|
||||
|
||||
- **Lazy Loading**: Carregamento sob demanda de imagens e componentes
|
||||
- **Code Splitting**: Divisão automática de código por rota
|
||||
- **Otimização de Bundle**: Minificação e tree-shaking automáticos
|
||||
- **Server Actions**: Atualizações de dados sem recarregamento de página
|
||||
- **Image Optimization**: Otimização automática de imagens com Next.js
|
||||
|
||||
### Métricas de Performance
|
||||
|
||||
- **First Load JS**: ~87.3 kB compartilhado
|
||||
- **Build Time**: Otimizado com Prisma e Next.js
|
||||
- **Cache Hit Rate**: Monitorado via storage stats API
|
||||
|
||||
## 🚀 Deployment
|
||||
|
||||
### Configuração Dokploy
|
||||
|
||||
O projeto inclui configuração para deployment via Dokploy (`dokploy.yaml`):
|
||||
|
||||
```yaml
|
||||
build:
|
||||
pre_build:
|
||||
- npm install -g pnpm@latest
|
||||
- export PNPM_HOME="/root/.local/share/pnpm"
|
||||
- export PATH="$PNPM_HOME:$PATH"
|
||||
steps:
|
||||
- name: Verify pnpm
|
||||
run: which pnpm && pnpm --version
|
||||
- name: Install dependencies
|
||||
run: pnpm install --no-frozen-lockfile
|
||||
- name: Generate Prisma Client
|
||||
run: pnpx prisma generate
|
||||
- name: Build application
|
||||
run: pnpm run build
|
||||
```
|
||||
|
||||
### Configuração Nixpacks
|
||||
|
||||
Configuração alternativa para deployment (`nixpacks.toml`):
|
||||
|
||||
```toml
|
||||
[phases.setup]
|
||||
nixPkgs = ['nodejs_18', 'openssl']
|
||||
cmds = [
|
||||
'npm install -g pnpm@latest',
|
||||
'npm install -g prisma'
|
||||
]
|
||||
|
||||
[phases.install]
|
||||
cmds = [
|
||||
'npx pnpm install --no-frozen-lockfile',
|
||||
'mkdir -p prisma',
|
||||
'touch prisma/dev.db',
|
||||
'chmod -R 777 prisma'
|
||||
]
|
||||
|
||||
[phases.build]
|
||||
cmds = [
|
||||
'mkdir -p node_modules/.prisma',
|
||||
'mkdir -p .next',
|
||||
'chmod -R 777 node_modules/.prisma node_modules/.bin .next prisma',
|
||||
'npx prisma generate',
|
||||
'npx prisma db push --accept-data-loss',
|
||||
'npx pnpm run build'
|
||||
]
|
||||
|
||||
[start]
|
||||
cmd = 'npx pnpm start'
|
||||
```
|
||||
|
||||
### Checklist de Deployment
|
||||
|
||||
- [ ] Configurar variáveis de ambiente
|
||||
- [ ] Executar migrações do banco de dados
|
||||
- [ ] Gerar Prisma Client
|
||||
- [ ] Build da aplicação
|
||||
- [ ] Configurar domínio e SSL
|
||||
- [ ] Testar funcionalidades principais
|
||||
|
||||
## 📜 Scripts Disponíveis
|
||||
|
||||
### Desenvolvimento
|
||||
|
||||
```bash
|
||||
pnpm dev # Inicia servidor de desenvolvimento (http://localhost:3000)
|
||||
pnpm build # Build para produção
|
||||
pnpm start # Inicia servidor de produção
|
||||
pnpm lint # Executa ESLint
|
||||
```
|
||||
|
||||
### Banco de Dados
|
||||
|
||||
```bash
|
||||
pnpm db:push # Push do schema Prisma para o banco
|
||||
pnpm db:generate # Gera Prisma Client
|
||||
pnpm db:migrate # Executa migrações do banco
|
||||
```
|
||||
|
||||
### Pós-instalação
|
||||
|
||||
```bash
|
||||
pnpm postinstall # Gera Prisma Client após instalação
|
||||
```
|
||||
|
||||
## 🤝 Contribuindo
|
||||
|
||||
Agradecemos contribuições da comunidade! Aqui está como você pode ajudar:
|
||||
|
||||
### Para Desenvolvedores
|
||||
|
||||
1. **Fork o repositório**
|
||||
2. **Crie uma branch de feature**
|
||||
```bash
|
||||
git checkout -b feature/amazing-feature
|
||||
```
|
||||
3. **Faça suas alterações**
|
||||
4. **Commit suas alterações**
|
||||
```bash
|
||||
git commit -m 'Add: amazing feature'
|
||||
```
|
||||
5. **Push para a branch**
|
||||
```bash
|
||||
git push origin feature/amazing-feature
|
||||
```
|
||||
6. **Abra um Pull Request**
|
||||
|
||||
### Para Usuários Finais
|
||||
|
||||
- **Reportar Bugs**: Use [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
|
||||
- **Solicitar Features**: Sugira novas funcionalidades via [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
|
||||
- **Fornecer Feedback**: Compartilhe sua experiência e sugestões
|
||||
|
||||
### Guidelines de Desenvolvimento
|
||||
|
||||
- Siga o estilo de código existente
|
||||
- Escreva mensagens de commit claras
|
||||
- Adicione testes para novas funcionalidades
|
||||
- Atualize documentação quando necessário
|
||||
- Certifique-se de que todos os checks passem antes de submeter PR
|
||||
|
||||
## 📄 Licença
|
||||
|
||||
Este projeto está licenciado sob uma **Licença de Uso Pessoal**.
|
||||
|
||||
### Permissões
|
||||
|
||||
- ✅ Uso pessoal em localhost
|
||||
- ✅ Inspeção de código e aprendizado
|
||||
- ✅ Desenvolvimento e teste local
|
||||
|
||||
### Restrições
|
||||
|
||||
- ❌ Deploy público na web
|
||||
- ❌ Uso comercial
|
||||
- ❌ Redistribuição para terceiros
|
||||
- ❌ Criação de obras derivadas para distribuição pública
|
||||
|
||||
Para os termos completos da licença, consulte o arquivo [LICENSE](LICENSE).
|
||||
|
||||
## 📫 Contato
|
||||
|
||||
**Autor:** Evandro
|
||||
**Website:** [evandro.dev.br](https://evandro.dev.br)
|
||||
**GitHub:** [@evandrodevbr](https://github.com/evandrodevbr)
|
||||
**Email:** evandro@evandro.dev.br
|
||||
|
||||
### Links do Projeto
|
||||
|
||||
- **Live Demo:** [nutriscan.evandro.dev.br](https://nutriscan.evandro.dev.br)
|
||||
- **Repositório:** [github.com/evandrodevbr/lista-compras](https://github.com/evandrodevbr/lista-compras)
|
||||
- **Issues:** [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
|
||||
|
||||
## 🙏 Agradecimentos
|
||||
|
||||
- **[Open Food Facts](https://world.openfoodfacts.org/)** - Pela base de dados abrangente de alimentos
|
||||
- **[shadcn/ui](https://ui.shadcn.com/)** - Pela biblioteca de componentes acessíveis
|
||||
- **[Next.js Team](https://nextjs.org/)** - Pelo framework React incrível
|
||||
- **[Vercel](https://vercel.com/)** - Por soluções de hosting e deployment
|
||||
- **[Prisma](https://www.prisma.io/)** - Pelo excelente ORM
|
||||
- **Contribuidores** - Obrigado a todos que ajudam a melhorar este projeto
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<p>Desenvolvido com ❤️ por <a href="https://evandro.dev.br">evandro.dev.br</a></p>
|
||||
<p>Feito para usuários conscientes com a saúde e desenvolvedores ao redor do mundo</p>
|
||||
</div>
|
||||
A exibição e a ordenação de energia priorizam `energy-kcal_100g`; na ausência dele, convertem o campo em kJ para kcal usando `1 kcal = 4,184 kJ`. A página do produto usa a mesma normalização. Zero é preservado como dado válido, e valores ausentes, negativos ou não finitos não entram no cálculo. Produtos sem energia ficam no fim da ordenação nas duas direções. A linha baseada em `salt_100g` é identificada como sal. A implementação está em `lib/nutrition.ts`; os campos seguem a [documentação do Open Food Facts](https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-off-api/).
|
||||
Vendored
+23
-9
@@ -1,26 +1,40 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { jsonCacheManager } from "@/lib/jsonCacheManager";
|
||||
import type { Product } from "@/lib/openFoodFactsApi";
|
||||
|
||||
const INVALID_PRODUCTS = { error: "Produtos inválidos" };
|
||||
|
||||
/** Aceita só objetos com `code` numérico (texto de dígitos): a chave do cache não pode ser arbitrária. */
|
||||
function isSyncableProduct(value: unknown): value is Product {
|
||||
if (typeof value !== "object" || value === null) return false;
|
||||
const code = (value as { code?: unknown }).code;
|
||||
return typeof code === "string" && /^\d{1,32}$/.test(code);
|
||||
}
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
let body: { products?: unknown };
|
||||
try {
|
||||
const { products } = await request.json();
|
||||
body = await request.json();
|
||||
} catch {
|
||||
return NextResponse.json(INVALID_PRODUCTS, { status: 400 });
|
||||
}
|
||||
|
||||
if (!products || !Array.isArray(products)) {
|
||||
return NextResponse.json(
|
||||
{ error: "Produtos inválidos" },
|
||||
{ status: 400 }
|
||||
);
|
||||
try {
|
||||
const products = body?.products;
|
||||
if (!Array.isArray(products)) {
|
||||
return NextResponse.json(INVALID_PRODUCTS, { status: 400 });
|
||||
}
|
||||
|
||||
// Salvar produtos no cache
|
||||
const result = await jsonCacheManager.saveProducts(products);
|
||||
// Salvar produtos válidos no cache; os demais contam como falha
|
||||
const valid = products.filter(isSyncableProduct);
|
||||
const result = await jsonCacheManager.saveProducts(valid);
|
||||
|
||||
console.log(`[Cache Sync] ${result.saved} novos produtos salvos`);
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
saved: result.saved,
|
||||
failed: result.failed,
|
||||
failed: result.failed + (products.length - valid.length),
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Erro ao sincronizar cache:", error);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { jsonCacheManager } from "@/lib/jsonCacheManager";
|
||||
|
||||
const USER_AGENT = "NutriScan/1.0 (https://nutriscan.com.br)";
|
||||
import { OFF_TIMEOUT_MS, OFF_USER_AGENT } from "@/lib/offSearch";
|
||||
|
||||
export async function GET(
|
||||
request: NextRequest,
|
||||
@@ -55,9 +54,10 @@ export async function GET(
|
||||
`https://world.openfoodfacts.org/api/v2/product/${cleanBarcode}.json`,
|
||||
{
|
||||
headers: {
|
||||
"User-Agent": USER_AGENT,
|
||||
"User-Agent": OFF_USER_AGENT,
|
||||
Accept: "application/json",
|
||||
},
|
||||
signal: AbortSignal.timeout(OFF_TIMEOUT_MS),
|
||||
}
|
||||
);
|
||||
|
||||
@@ -70,7 +70,7 @@ export async function GET(
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === 0) {
|
||||
if (data.status === 0 || !data.product) {
|
||||
return NextResponse.json(
|
||||
{ error: "Produto não encontrado" },
|
||||
{ status: 404 }
|
||||
|
||||
+91
-352
@@ -1,384 +1,123 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { jsonCacheManager } from "@/lib/jsonCacheManager";
|
||||
import { Product } from "@/lib/openFoodFactsApi";
|
||||
import { buildOffSearchParams, fetchOffProducts, parsePagination } from "@/lib/offSearch";
|
||||
import type { Product } from "@/lib/openFoodFactsApi";
|
||||
import { sortByRelevance } from "@/lib/searchUtils";
|
||||
|
||||
const USER_AGENT = "NutriScan/1.0 (https://nutriscan.com.br)";
|
||||
type LocalResults = Awaited<ReturnType<typeof jsonCacheManager.searchProducts>>;
|
||||
|
||||
function isCacheOnly(searchParams: URLSearchParams): boolean {
|
||||
return searchParams.get("cache_only") === "true" || process.env.NEXT_PUBLIC_CACHE_ONLY_MODE === "true";
|
||||
}
|
||||
|
||||
/** Complementa o cache com a API externa quando ele não alcança o tamanho da página. */
|
||||
async function loadApiProducts(
|
||||
query: string,
|
||||
params: URLSearchParams,
|
||||
localCount: number,
|
||||
pageSize: number
|
||||
): Promise<Product[]> {
|
||||
if (localCount >= pageSize) return [];
|
||||
|
||||
console.log(`Cache JSON retornou ${localCount} produtos, buscando na API externa...`);
|
||||
const fetched = await fetchOffProducts(params, pageSize - localCount);
|
||||
if (fetched.length === 0) return [];
|
||||
|
||||
const apiProducts = sortByRelevance(fetched, query);
|
||||
const saveResult = await jsonCacheManager.saveProducts(apiProducts);
|
||||
console.log(`Cache JSON atualizado: ${saveResult.saved} salvos, ${saveResult.failed} falharam`);
|
||||
return apiProducts;
|
||||
}
|
||||
|
||||
function buildSearchResponse(
|
||||
query: string,
|
||||
localResults: LocalResults,
|
||||
apiProducts: Product[],
|
||||
page: number,
|
||||
pageSize: number
|
||||
) {
|
||||
const localCodes = new Set(localResults.products.map((p) => p.code));
|
||||
const newApiProducts = apiProducts.filter((p) => !localCodes.has(p.code));
|
||||
const allProducts = [...localResults.products, ...newApiProducts];
|
||||
const paginated = sortByRelevance(allProducts, query).slice(0, pageSize);
|
||||
|
||||
console.log(
|
||||
`Busca finalizada: ${paginated.length} produtos (${localResults.products.length} do cache JSON, ${newApiProducts.length} novos da API)`
|
||||
);
|
||||
|
||||
return {
|
||||
products: paginated,
|
||||
count: allProducts.length,
|
||||
page,
|
||||
page_size: pageSize,
|
||||
skip: (page - 1) * pageSize,
|
||||
fromCache: localResults.fromCache,
|
||||
fromAPI: apiProducts.length > 0,
|
||||
cacheStats: {
|
||||
localProducts: localResults.products.length,
|
||||
apiProducts: apiProducts.length,
|
||||
newProducts: newApiProducts.length,
|
||||
totalReturned: paginated.length,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function errorResponse(page: number, pageSize: number) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
products: [],
|
||||
count: 0,
|
||||
page,
|
||||
page_size: pageSize,
|
||||
skip: (page - 1) * pageSize,
|
||||
fromCache: false,
|
||||
fromAPI: false,
|
||||
error: "Erro interno do servidor",
|
||||
cacheStats: { localProducts: 0, apiProducts: 0, newProducts: 0, totalReturned: 0 },
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
const searchParams = request.nextUrl.searchParams;
|
||||
const query = searchParams.get("q");
|
||||
const country = searchParams.get("country");
|
||||
const page = searchParams.get("page") || "1";
|
||||
const pageSize = searchParams.get("page_size") || "20";
|
||||
const cacheOnly = searchParams.get("cache_only") === "true";
|
||||
|
||||
if (!query) {
|
||||
return NextResponse.json(
|
||||
{ error: "Query parameter is required" },
|
||||
{ status: 400 }
|
||||
);
|
||||
return NextResponse.json({ error: "Query parameter is required" }, { status: 400 });
|
||||
}
|
||||
|
||||
// Validar parâmetros
|
||||
const pageNum = parseInt(page);
|
||||
const pageSizeNum = parseInt(pageSize);
|
||||
|
||||
if (isNaN(pageNum) || pageNum < 1) {
|
||||
return NextResponse.json(
|
||||
{ error: "Invalid page parameter" },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
if (isNaN(pageSizeNum) || pageSizeNum < 1) {
|
||||
return NextResponse.json(
|
||||
{ error: "Invalid page_size parameter" },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// Usar o máximo permitido pelo Open Food Facts (1000) para consultas na API
|
||||
const apiPageSize = Math.max(pageSizeNum, 1000);
|
||||
|
||||
const params = new URLSearchParams({
|
||||
search_terms: query,
|
||||
page_size: apiPageSize.toString(),
|
||||
page: page,
|
||||
json: "true",
|
||||
fields: [
|
||||
"code",
|
||||
"product_name",
|
||||
"brands",
|
||||
"categories",
|
||||
"ingredients_text",
|
||||
"nutriments",
|
||||
"nutrition_grades",
|
||||
"nova_group",
|
||||
"image_url",
|
||||
"image_small_url",
|
||||
"image_front_url",
|
||||
"image_front_small_url",
|
||||
"countries",
|
||||
"countries_tags",
|
||||
"allergens_tags",
|
||||
"additives_tags",
|
||||
].join(","),
|
||||
});
|
||||
|
||||
// Filtros básicos
|
||||
if (country) {
|
||||
params.append("countries_tags_en", country);
|
||||
}
|
||||
|
||||
// Filtros de classificação nutricional
|
||||
const nutritionGrades = searchParams.get("nutrition_grades");
|
||||
if (nutritionGrades) {
|
||||
params.append("nutrition_grades_tags", nutritionGrades);
|
||||
}
|
||||
|
||||
const novaGroups = searchParams.get("nova_groups");
|
||||
if (novaGroups) {
|
||||
params.append("nova_groups", novaGroups);
|
||||
}
|
||||
|
||||
// Filtros de categoria e marca
|
||||
const categories = searchParams.get("categories");
|
||||
if (categories) {
|
||||
params.append("categories_tags", categories);
|
||||
}
|
||||
|
||||
const brands = searchParams.get("brands");
|
||||
if (brands) {
|
||||
params.append("brands", brands);
|
||||
}
|
||||
|
||||
// Filtros de alérgenos
|
||||
const allergens = searchParams.get("allergens");
|
||||
if (allergens) {
|
||||
params.append("allergens_tags", allergens);
|
||||
}
|
||||
|
||||
const excludeAllergens = searchParams.get("exclude_allergens");
|
||||
if (excludeAllergens) {
|
||||
params.append("exclude_allergens_tags", excludeAllergens);
|
||||
}
|
||||
|
||||
// Filtros de aditivos
|
||||
const additives = searchParams.get("additives");
|
||||
if (additives) {
|
||||
params.append("additives_tags", additives);
|
||||
}
|
||||
|
||||
const excludeAdditives = searchParams.get("exclude_additives");
|
||||
if (excludeAdditives) {
|
||||
params.append("exclude_additives_tags", excludeAdditives);
|
||||
}
|
||||
|
||||
const noAdditives = searchParams.get("no_additives");
|
||||
if (noAdditives === "true") {
|
||||
params.append("additives_tags", "without-additives");
|
||||
}
|
||||
|
||||
// Filtros de países
|
||||
const countries = searchParams.get("countries");
|
||||
if (countries) {
|
||||
params.append("countries_tags", countries);
|
||||
}
|
||||
|
||||
// Filtros nutricionais (valores por 100g)
|
||||
const nutritionFilters = [
|
||||
"energy_min",
|
||||
"energy_max",
|
||||
"fat_min",
|
||||
"fat_max",
|
||||
"carbohydrates_min",
|
||||
"carbohydrates_max",
|
||||
"proteins_min",
|
||||
"proteins_max",
|
||||
"sugars_min",
|
||||
"sugars_max",
|
||||
"fiber_min",
|
||||
"fiber_max",
|
||||
"sodium_min",
|
||||
"sodium_max",
|
||||
];
|
||||
|
||||
nutritionFilters.forEach((filter) => {
|
||||
const value = searchParams.get(filter);
|
||||
if (value) {
|
||||
params.append(filter, value);
|
||||
}
|
||||
});
|
||||
|
||||
// Ordenação
|
||||
const sortBy = searchParams.get("sort_by");
|
||||
const sortOrder = searchParams.get("sort_order") || "asc";
|
||||
|
||||
if (sortBy) {
|
||||
let sortField = "";
|
||||
switch (sortBy) {
|
||||
case "nutrition_grade":
|
||||
sortField = "nutrition_grades";
|
||||
break;
|
||||
case "name":
|
||||
sortField = "product_name";
|
||||
break;
|
||||
case "brand":
|
||||
sortField = "brands";
|
||||
break;
|
||||
case "energy":
|
||||
sortField = "nutriments.energy_100g";
|
||||
break;
|
||||
case "fat":
|
||||
sortField = "nutriments.fat_100g";
|
||||
break;
|
||||
case "sugars":
|
||||
sortField = "nutriments.sugars_100g";
|
||||
break;
|
||||
default:
|
||||
sortField = "popularity";
|
||||
}
|
||||
|
||||
if (sortField) {
|
||||
params.append("sort_by", sortField);
|
||||
params.append("sort_order", sortOrder);
|
||||
}
|
||||
const pagination = parsePagination(searchParams);
|
||||
if ("error" in pagination) {
|
||||
return NextResponse.json({ error: pagination.error }, { status: 400 });
|
||||
}
|
||||
const { page, pageSize, pageParam } = pagination;
|
||||
|
||||
try {
|
||||
console.log(
|
||||
`[API] Iniciando busca: "${query}" (país: ${
|
||||
country || "todos"
|
||||
}, page_size: ${pageSizeNum})`
|
||||
);
|
||||
console.log(`[API] Iniciando busca: "${query}" (país: ${country || "todos"}, page_size: ${pageSize})`);
|
||||
|
||||
// Primeiro, buscar no cache JSON
|
||||
console.log(`[API] Buscando "${query}" no cache JSON...`);
|
||||
const localResults = await jsonCacheManager.searchProducts(
|
||||
query,
|
||||
country || undefined,
|
||||
pageSizeNum
|
||||
);
|
||||
const localResults = await jsonCacheManager.searchProducts(query, country || undefined, pageSize);
|
||||
|
||||
// Se modo cache-only estiver ativo, retornar apenas resultados locais
|
||||
if (cacheOnly || process.env.NEXT_PUBLIC_CACHE_ONLY_MODE === "true") {
|
||||
console.log(
|
||||
`[Cache-Only Mode] Retornando apenas ${localResults.products.length} produtos do cache`
|
||||
);
|
||||
if (isCacheOnly(searchParams)) {
|
||||
console.log(`[Cache-Only Mode] Retornando apenas ${localResults.products.length} produtos do cache`);
|
||||
return NextResponse.json({
|
||||
products: localResults.products,
|
||||
count: localResults.products.length,
|
||||
page: pageNum,
|
||||
page_size: pageSizeNum,
|
||||
page,
|
||||
page_size: pageSize,
|
||||
fromCache: true,
|
||||
fromAPI: false,
|
||||
cacheOnly: true,
|
||||
});
|
||||
}
|
||||
|
||||
let fromAPI = false;
|
||||
let apiProducts: Product[] = [];
|
||||
const params = buildOffSearchParams(searchParams, query, country, pageParam);
|
||||
const apiProducts = await loadApiProducts(query, params, localResults.products.length, pageSize);
|
||||
|
||||
// Se não encontrou resultados suficientes no cache JSON, buscar na API externa
|
||||
if (localResults.products.length < pageSizeNum) {
|
||||
console.log(
|
||||
`Cache JSON retornou ${localResults.products.length} produtos, buscando na API externa...`
|
||||
);
|
||||
|
||||
// Implementar busca paginada automática para page_size > 1000
|
||||
const allApiProducts: Product[] = [];
|
||||
const maxPerPage = 1000;
|
||||
let currentApiPage = 1;
|
||||
const totalNeeded = pageSizeNum - localResults.products.length;
|
||||
|
||||
while (allApiProducts.length < totalNeeded) {
|
||||
// Atualizar parâmetros para a página atual
|
||||
const currentParams = new URLSearchParams(params);
|
||||
currentParams.set("page", currentApiPage.toString());
|
||||
currentParams.set("page_size", maxPerPage.toString());
|
||||
|
||||
console.log(
|
||||
`Buscando página ${currentApiPage} da API (${allApiProducts.length}/${totalNeeded} produtos obtidos)...`
|
||||
);
|
||||
|
||||
const response = await fetch(
|
||||
`https://world.openfoodfacts.org/cgi/search.pl?${currentParams.toString()}`,
|
||||
{
|
||||
headers: {
|
||||
"User-Agent": USER_AGENT,
|
||||
Accept: "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
if (response.ok) {
|
||||
const apiData = await response.json();
|
||||
const pageProducts = apiData.products || [];
|
||||
|
||||
if (pageProducts.length === 0) {
|
||||
console.log("Não há mais produtos na API");
|
||||
break; // Não há mais produtos
|
||||
}
|
||||
|
||||
allApiProducts.push(...pageProducts);
|
||||
fromAPI = true;
|
||||
|
||||
console.log(
|
||||
`Página ${currentApiPage}: ${pageProducts.length} produtos (Total: ${allApiProducts.length})`
|
||||
);
|
||||
|
||||
// Se retornou menos que o máximo, acabaram os produtos
|
||||
if (pageProducts.length < maxPerPage) {
|
||||
console.log("Última página de produtos obtida");
|
||||
break;
|
||||
}
|
||||
|
||||
// Se já temos o suficiente, parar
|
||||
if (allApiProducts.length >= totalNeeded) {
|
||||
console.log(
|
||||
`Quantidade suficiente obtida: ${allApiProducts.length}/${totalNeeded}`
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
// Incrementar página para próxima iteração
|
||||
currentApiPage++;
|
||||
|
||||
// Rate limiting: aguardar 200ms entre requisições
|
||||
if (allApiProducts.length < totalNeeded) {
|
||||
console.log("Aguardando 200ms antes da próxima requisição...");
|
||||
await new Promise((resolve) => setTimeout(resolve, 200));
|
||||
}
|
||||
} else {
|
||||
console.error(
|
||||
`Erro na página ${currentApiPage}: ${response.status} ${response.statusText}`
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
apiProducts = allApiProducts;
|
||||
|
||||
// Ordenar produtos da API por relevância
|
||||
if (apiProducts.length > 0) {
|
||||
console.log(
|
||||
`Ordenando ${apiProducts.length} produtos da API por relevância...`
|
||||
);
|
||||
apiProducts = sortByRelevance(apiProducts, query);
|
||||
|
||||
console.log(
|
||||
`Salvando ${apiProducts.length} produtos da API no cache JSON...`
|
||||
);
|
||||
const saveResult = await jsonCacheManager.saveProducts(apiProducts);
|
||||
console.log(
|
||||
`Cache JSON atualizado: ${saveResult.saved} salvos, ${saveResult.failed} falharam`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Combinar resultados JSON e da API
|
||||
const allProducts: Product[] = [...localResults.products];
|
||||
const localProductCodes = new Set(localResults.products.map((p) => p.code));
|
||||
|
||||
// Adicionar apenas produtos da API que não estão no cache JSON
|
||||
const newApiProducts = apiProducts.filter(
|
||||
(p) => !localProductCodes.has(p.code)
|
||||
);
|
||||
allProducts.push(...newApiProducts);
|
||||
|
||||
// Reordenar a lista combinada por relevância
|
||||
console.log(
|
||||
`Reordenando ${allProducts.length} produtos combinados por relevância...`
|
||||
);
|
||||
const sortedProducts = sortByRelevance(allProducts, query);
|
||||
|
||||
// Limitar ao tamanho da página solicitada
|
||||
const paginatedProducts = sortedProducts.slice(0, pageSizeNum);
|
||||
|
||||
const responseData = {
|
||||
products: paginatedProducts,
|
||||
count: allProducts.length,
|
||||
page: pageNum,
|
||||
page_size: pageSizeNum,
|
||||
skip: (pageNum - 1) * pageSizeNum,
|
||||
fromCache: localResults.fromCache,
|
||||
fromAPI: fromAPI,
|
||||
cacheStats: {
|
||||
localProducts: localResults.products.length,
|
||||
apiProducts: apiProducts.length,
|
||||
newProducts: newApiProducts.length,
|
||||
totalReturned: paginatedProducts.length,
|
||||
},
|
||||
};
|
||||
|
||||
console.log(
|
||||
`Busca finalizada: ${paginatedProducts.length} produtos (${localResults.products.length} do cache JSON, ${newApiProducts.length} novos da API)`
|
||||
);
|
||||
|
||||
return NextResponse.json(responseData);
|
||||
return NextResponse.json(buildSearchResponse(query, localResults, apiProducts, page, pageSize));
|
||||
} catch (error) {
|
||||
console.error("[API] Erro ao buscar produtos:", error);
|
||||
|
||||
// Retornar resposta de erro estruturada em vez de quebrar
|
||||
return NextResponse.json(
|
||||
{
|
||||
products: [],
|
||||
count: 0,
|
||||
page: pageNum,
|
||||
page_size: pageSizeNum,
|
||||
skip: (pageNum - 1) * pageSizeNum,
|
||||
fromCache: false,
|
||||
fromAPI: false,
|
||||
error: "Erro interno do servidor",
|
||||
cacheStats: {
|
||||
localProducts: 0,
|
||||
apiProducts: 0,
|
||||
newProducts: 0,
|
||||
totalReturned: 0,
|
||||
},
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
return errorResponse(page, pageSize);
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
'use client'
|
||||
import { Button } from "@/components/ui/button";
|
||||
import {
|
||||
AlertDialog,
|
||||
AlertDialogAction,
|
||||
AlertDialogCancel,
|
||||
AlertDialogContent,
|
||||
AlertDialogDescription,
|
||||
AlertDialogFooter,
|
||||
AlertDialogHeader,
|
||||
AlertDialogTitle,
|
||||
AlertDialogTrigger,
|
||||
} from "@/components/ui/alert-dialog";
|
||||
import { deletarProduto } from "../actions";
|
||||
import { useState } from "react";
|
||||
import { Trash2 } from "lucide-react";
|
||||
import { useRouter } from "next/navigation";
|
||||
|
||||
interface DeleteButtonProps {
|
||||
produtoId: number;
|
||||
produtoNome: string;
|
||||
listaId: string;
|
||||
}
|
||||
|
||||
export function DeleteButton({ produtoId, produtoNome, listaId }: DeleteButtonProps) {
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
const router = useRouter();
|
||||
|
||||
async function handleDelete() {
|
||||
try {
|
||||
setIsDeleting(true);
|
||||
await deletarProduto(produtoId, listaId);
|
||||
router.refresh();
|
||||
} finally {
|
||||
setIsDeleting(false);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<AlertDialog>
|
||||
<AlertDialogTrigger asChild>
|
||||
<Button
|
||||
variant="destructive"
|
||||
size="icon"
|
||||
>
|
||||
<Trash2 className="h-4 w-4" />
|
||||
</Button>
|
||||
</AlertDialogTrigger>
|
||||
<AlertDialogContent>
|
||||
<AlertDialogHeader>
|
||||
<AlertDialogTitle>Confirmar exclusão</AlertDialogTitle>
|
||||
<AlertDialogDescription>
|
||||
Tem certeza que deseja excluir o produto "{produtoNome}"?
|
||||
Esta ação não pode ser desfeita.
|
||||
</AlertDialogDescription>
|
||||
</AlertDialogHeader>
|
||||
<AlertDialogFooter>
|
||||
<AlertDialogCancel>Cancelar</AlertDialogCancel>
|
||||
<AlertDialogAction
|
||||
onClick={handleDelete}
|
||||
className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
|
||||
disabled={isDeleting}
|
||||
>
|
||||
{isDeleting ? 'Excluindo...' : 'Excluir'}
|
||||
</AlertDialogAction>
|
||||
</AlertDialogFooter>
|
||||
</AlertDialogContent>
|
||||
</AlertDialog>
|
||||
);
|
||||
}
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
BarChart3,
|
||||
} from "lucide-react";
|
||||
import * as LucideIcons from "lucide-react";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Checkbox } from "@/components/ui/checkbox";
|
||||
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
|
||||
@@ -29,7 +28,6 @@ import {
|
||||
AccordionTrigger,
|
||||
} from "@/components/ui/accordion";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import { SortDropdown } from "@/app/components/SortDropdown";
|
||||
import { FilterBadges } from "@/app/components/FilterBadge";
|
||||
import {
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
'use client'
|
||||
import { useState } from 'react'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { verificarLista } from '../actions'
|
||||
|
||||
export function IdInput() {
|
||||
const [id, setId] = useState('')
|
||||
const [error, setError] = useState('')
|
||||
const [loading, setLoading] = useState(false)
|
||||
const router = useRouter()
|
||||
|
||||
const handleSubmit = async (e: React.FormEvent) => {
|
||||
e.preventDefault()
|
||||
setLoading(true)
|
||||
setError('')
|
||||
|
||||
if (!id.trim()) {
|
||||
setError('Digite um ID válido')
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await verificarLista(id.trim(), true) // Forçar criação se não existir
|
||||
if (result.success) {
|
||||
localStorage.setItem('listaId', id.trim())
|
||||
router.push(`/lista/${id.trim()}`)
|
||||
} else {
|
||||
setError('Erro ao acessar/criar lista')
|
||||
}
|
||||
} catch {
|
||||
setError('Erro ao processar solicitação')
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className="min-h-screen flex items-center justify-center"
|
||||
style={{ background: 'var(--bg-base)' }}
|
||||
>
|
||||
<div
|
||||
className="max-w-md w-full space-y-8 p-8 rounded-xl"
|
||||
style={{
|
||||
background: 'var(--bg-elevated)',
|
||||
border: '1px solid var(--border-subtle)',
|
||||
boxShadow: '0 8px 32px -8px rgba(30,24,16,0.10)',
|
||||
}}
|
||||
>
|
||||
<div>
|
||||
<h2
|
||||
className="mt-6 text-center text-3xl font-display"
|
||||
style={{ color: 'var(--fg-primary)' }}
|
||||
>
|
||||
Acesse sua lista
|
||||
</h2>
|
||||
<p
|
||||
className="mt-2 text-center text-sm"
|
||||
style={{ color: 'var(--fg-muted)' }}
|
||||
>
|
||||
Digite um ID para acessar ou criar uma nova lista
|
||||
</p>
|
||||
</div>
|
||||
<form className="mt-8 space-y-6" onSubmit={handleSubmit}>
|
||||
<div>
|
||||
<Input
|
||||
type="text"
|
||||
required
|
||||
placeholder="Digite o ID da lista"
|
||||
value={id}
|
||||
onChange={(e) => setId(e.target.value)}
|
||||
className="appearance-none rounded-lg relative block w-full px-3 py-2"
|
||||
style={{ borderColor: 'var(--border-strong)', background: 'var(--bg-surface)' }}
|
||||
/>
|
||||
</div>
|
||||
{error && (
|
||||
<p className="text-sm text-center" style={{ color: 'var(--nutri-e)' }}>{error}</p>
|
||||
)}
|
||||
<button
|
||||
type="submit"
|
||||
disabled={loading}
|
||||
className="btn-accent w-full justify-center"
|
||||
>
|
||||
{loading ? 'Carregando...' : 'Acessar/Criar Lista'}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
SelectTrigger,
|
||||
SelectValue,
|
||||
} from "@/components/ui/select";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { criarItens } from "../actions";
|
||||
import { useTransition, useState } from 'react';
|
||||
import { useRouter } from "next/navigation";
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
"use client";
|
||||
import { useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
interface NutriScoreBadgeProps {
|
||||
grade: string;
|
||||
className?: string;
|
||||
size?: "sm" | "md" | "lg";
|
||||
showTooltip?: boolean;
|
||||
}
|
||||
|
||||
const GRADE_INFO: Record<string, { desc: string; explanation: string }> = {
|
||||
a: { desc: "Muito bom", explanation: "Excelente qualidade nutricional" },
|
||||
b: { desc: "Bom", explanation: "Boa qualidade nutricional" },
|
||||
c: { desc: "Regular", explanation: "Qualidade nutricional moderada" },
|
||||
d: { desc: "Ruim", explanation: "Qualidade nutricional baixa" },
|
||||
e: { desc: "Muito ruim", explanation: "Qualidade nutricional muito baixa" },
|
||||
};
|
||||
|
||||
const GRADE_CLASS: Record<string, string> = {
|
||||
a: "grade-a", b: "grade-b", c: "grade-c", d: "grade-d", e: "grade-e",
|
||||
};
|
||||
|
||||
const SIZE_CLASS = {
|
||||
sm: "w-8 h-8 text-sm",
|
||||
md: "w-14 h-14 text-xl",
|
||||
lg: "w-20 h-20 text-2xl",
|
||||
};
|
||||
|
||||
export function NutriScoreBadge({
|
||||
grade,
|
||||
className,
|
||||
size = "md",
|
||||
showTooltip = true,
|
||||
}: NutriScoreBadgeProps) {
|
||||
const [hover, setHover] = useState(false);
|
||||
const key = grade?.toLowerCase();
|
||||
const info = GRADE_INFO[key];
|
||||
if (!info) return null;
|
||||
|
||||
return (
|
||||
<div className="relative inline-block">
|
||||
<div
|
||||
className={cn(
|
||||
"nutriscore-hero font-sans font-bold rounded-full flex items-center justify-center cursor-default",
|
||||
GRADE_CLASS[key],
|
||||
SIZE_CLASS[size],
|
||||
className
|
||||
)}
|
||||
onMouseEnter={() => setHover(true)}
|
||||
onMouseLeave={() => setHover(false)}
|
||||
>
|
||||
{key.toUpperCase()}
|
||||
</div>
|
||||
|
||||
{showTooltip && hover && (
|
||||
<div className="absolute bottom-full left-1/2 -translate-x-1/2 mb-2 z-50 whitespace-nowrap">
|
||||
<div className="bg-[var(--fg-primary)] text-[var(--bg-base)] text-xs rounded-lg px-3 py-2 shadow-xl">
|
||||
<p className="font-semibold">Nutri-Score {key.toUpperCase()}</p>
|
||||
<p className="opacity-70">{info.desc}</p>
|
||||
<p className="opacity-50 mt-0.5">{info.explanation}</p>
|
||||
<div className="absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-l-4 border-r-4 border-t-4 border-transparent border-t-[var(--fg-primary)]" />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
/* ── NOVA Badge ───────────────────────────────────────────────────────────── */
|
||||
interface NovaBadgeProps {
|
||||
group: number;
|
||||
className?: string;
|
||||
size?: "sm" | "md" | "lg";
|
||||
showTooltip?: boolean;
|
||||
}
|
||||
|
||||
const NOVA_INFO: Record<number, { desc: string; explanation: string; bg: string; fg: string }> = {
|
||||
1: { desc: "Não processado", explanation: "Alimentos não ou minimamente processados", bg: "#1a7a4a", fg: "#fff" },
|
||||
2: { desc: "Ingrediente", explanation: "Ingredientes culinários processados", bg: "#e8c110", fg: "#1e1810" },
|
||||
3: { desc: "Processado", explanation: "Alimentos processados", bg: "#e07820", fg: "#fff" },
|
||||
4: { desc: "Ultraprocessado",explanation: "Alimentos ultraprocessados", bg: "#c0201a", fg: "#fff" },
|
||||
};
|
||||
|
||||
export function NovaBadge({
|
||||
group,
|
||||
className,
|
||||
size = "md",
|
||||
showTooltip = true,
|
||||
}: NovaBadgeProps) {
|
||||
const [hover, setHover] = useState(false);
|
||||
const info = NOVA_INFO[group];
|
||||
if (!info) return null;
|
||||
|
||||
return (
|
||||
<div className="relative inline-block">
|
||||
<div
|
||||
className={cn(
|
||||
"nutriscore-hero font-sans font-bold rounded-full flex items-center justify-center cursor-default",
|
||||
SIZE_CLASS[size],
|
||||
className
|
||||
)}
|
||||
style={{ background: info.bg, color: info.fg, animation: "none" }}
|
||||
onMouseEnter={() => setHover(true)}
|
||||
onMouseLeave={() => setHover(false)}
|
||||
>
|
||||
{group}
|
||||
</div>
|
||||
|
||||
{showTooltip && hover && (
|
||||
<div className="absolute bottom-full left-1/2 -translate-x-1/2 mb-2 z-50 whitespace-nowrap">
|
||||
<div className="bg-[var(--fg-primary)] text-[var(--bg-base)] text-xs rounded-lg px-3 py-2 shadow-xl">
|
||||
<p className="font-semibold">NOVA {group}</p>
|
||||
<p className="opacity-70">{info.desc}</p>
|
||||
<p className="opacity-50 mt-0.5">{info.explanation}</p>
|
||||
<div className="absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-l-4 border-r-4 border-t-4 border-transparent border-t-[var(--fg-primary)]" />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
"use client";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
interface NutritionBarProps {
|
||||
label: string;
|
||||
value: string;
|
||||
unit?: string;
|
||||
percentage?: number;
|
||||
isHigh?: boolean;
|
||||
isLow?: boolean;
|
||||
recommended?: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function NutritionBar({
|
||||
label,
|
||||
value,
|
||||
unit = "",
|
||||
percentage = 0,
|
||||
isHigh = false,
|
||||
isLow = false,
|
||||
className,
|
||||
}: NutritionBarProps) {
|
||||
const barWidth = Math.min(Math.max(percentage, 2), 100);
|
||||
|
||||
const barColor = isHigh
|
||||
? "bg-[var(--score-e)]"
|
||||
: isLow
|
||||
? "bg-[var(--score-a)]"
|
||||
: percentage > 75
|
||||
? "bg-[var(--score-d)]"
|
||||
: percentage > 50
|
||||
? "bg-[var(--score-c)]"
|
||||
: "bg-[var(--accent)]";
|
||||
|
||||
const valueColor = isHigh
|
||||
? "text-[var(--score-e)]"
|
||||
: isLow
|
||||
? "text-[var(--score-a)]"
|
||||
: "text-[var(--fg-primary)]";
|
||||
|
||||
return (
|
||||
<div className={cn("space-y-2", className)}>
|
||||
<div className="flex items-baseline justify-between gap-3">
|
||||
<span className="label text-[var(--fg-muted)] truncate">{label}</span>
|
||||
<span className={cn("label shrink-0 font-medium", valueColor)}>
|
||||
{value} {unit}
|
||||
</span>
|
||||
</div>
|
||||
{/* Hairline track */}
|
||||
<div className="w-full h-px bg-[var(--border-subtle)] relative overflow-hidden rounded-full">
|
||||
<div
|
||||
className={cn("h-full rounded-full transition-all duration-700", barColor)}
|
||||
style={{ width: `${barWidth}%` }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
interface NutritionGridProps {
|
||||
nutritionData: {
|
||||
energy?: string;
|
||||
fat?: string;
|
||||
carbohydrates?: string;
|
||||
proteins?: string;
|
||||
sugars?: string;
|
||||
fiber?: string;
|
||||
sodium?: string;
|
||||
};
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const REFERENCE = {
|
||||
energy: 2000, fat: 65, carbohydrates: 300,
|
||||
proteins: 50, sugars: 50, fiber: 25, sodium: 2.3,
|
||||
};
|
||||
|
||||
function extractNumber(val?: string): number {
|
||||
if (!val) return 0;
|
||||
const m = val.match(/(\d+(?:\.\d+)?)/);
|
||||
return m ? parseFloat(m[1]) : 0;
|
||||
}
|
||||
|
||||
function pct(val: string | undefined, ref: number): number {
|
||||
return (extractNumber(val) / ref) * 100;
|
||||
}
|
||||
|
||||
export function NutritionGrid({ nutritionData, className }: NutritionGridProps) {
|
||||
const items = [
|
||||
{ label: "Energia", value: nutritionData.energy, unit: "kcal", ref: REFERENCE.energy },
|
||||
{ label: "Gorduras", value: nutritionData.fat, unit: "g", ref: REFERENCE.fat },
|
||||
{ label: "Carboidratos", value: nutritionData.carbohydrates, unit: "g", ref: REFERENCE.carbohydrates },
|
||||
{ label: "Proteínas", value: nutritionData.proteins, unit: "g", ref: REFERENCE.proteins },
|
||||
{ label: "Açúcares", value: nutritionData.sugars, unit: "g", ref: REFERENCE.sugars },
|
||||
{ label: "Fibras", value: nutritionData.fiber, unit: "g", ref: REFERENCE.fiber },
|
||||
{ label: "Sódio", value: nutritionData.sodium, unit: "g", ref: REFERENCE.sodium },
|
||||
];
|
||||
|
||||
return (
|
||||
<div className={cn("space-y-5", className)}>
|
||||
{items.map((item) => {
|
||||
const p = pct(item.value, item.ref);
|
||||
return (
|
||||
<NutritionBar
|
||||
key={item.label}
|
||||
label={item.label}
|
||||
value={item.value || "—"}
|
||||
unit={item.unit}
|
||||
percentage={p}
|
||||
isHigh={p > 80}
|
||||
isLow={p < 20 && p > 0}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
|
||||
{/* Legend */}
|
||||
<div className="pt-4 border-t border-[var(--border-subtle)] flex flex-wrap gap-x-6 gap-y-2">
|
||||
{[
|
||||
{ color: "bg-[var(--score-a)]", label: "Baixo" },
|
||||
{ color: "bg-[var(--accent)]", label: "Moderado" },
|
||||
{ color: "bg-[var(--score-e)]", label: "Alto" },
|
||||
].map(({ color, label }) => (
|
||||
<div key={label} className="flex items-center gap-2">
|
||||
<div className={cn("w-2 h-2 rounded-full", color)} />
|
||||
<span className="label text-[var(--fg-muted)]">{label}</span>
|
||||
</div>
|
||||
))}
|
||||
<span className="label text-[var(--fg-faint)] ml-auto">% do VDR</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,299 +0,0 @@
|
||||
"use client";
|
||||
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
|
||||
interface NutritionData {
|
||||
energy?: number;
|
||||
fat?: number;
|
||||
carbohydrates?: number;
|
||||
proteins?: number;
|
||||
sugars?: number;
|
||||
fiber?: number;
|
||||
sodium?: number;
|
||||
}
|
||||
|
||||
interface NutritionChartProps {
|
||||
data: NutritionData;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function NutritionChart({ data, className = "" }: NutritionChartProps) {
|
||||
const nutritionItems = [
|
||||
{
|
||||
key: "energy",
|
||||
label: "Energia",
|
||||
value: data.energy,
|
||||
unit: "kcal",
|
||||
color: "bg-orange-500",
|
||||
maxValue: 500,
|
||||
},
|
||||
{
|
||||
key: "fat",
|
||||
label: "Gorduras",
|
||||
value: data.fat,
|
||||
unit: "g",
|
||||
color: "bg-red-500",
|
||||
maxValue: 30,
|
||||
},
|
||||
{
|
||||
key: "carbohydrates",
|
||||
label: "Carboidratos",
|
||||
value: data.carbohydrates,
|
||||
unit: "g",
|
||||
color: "bg-blue-500",
|
||||
maxValue: 60,
|
||||
},
|
||||
{
|
||||
key: "proteins",
|
||||
label: "Proteínas",
|
||||
value: data.proteins,
|
||||
unit: "g",
|
||||
color: "bg-green-500",
|
||||
maxValue: 25,
|
||||
},
|
||||
{
|
||||
key: "sugars",
|
||||
label: "Açúcares",
|
||||
value: data.sugars,
|
||||
unit: "g",
|
||||
color: "bg-pink-500",
|
||||
maxValue: 25,
|
||||
},
|
||||
{
|
||||
key: "fiber",
|
||||
label: "Fibras",
|
||||
value: data.fiber,
|
||||
unit: "g",
|
||||
color: "bg-purple-500",
|
||||
maxValue: 10,
|
||||
},
|
||||
{
|
||||
key: "sodium",
|
||||
label: "Sódio",
|
||||
value: data.sodium,
|
||||
unit: "mg",
|
||||
color: "bg-yellow-500",
|
||||
maxValue: 2,
|
||||
},
|
||||
];
|
||||
|
||||
const getBarWidth = (value: number, maxValue: number) => {
|
||||
const percentage = Math.min((value / maxValue) * 100, 100);
|
||||
return `${percentage}%`;
|
||||
};
|
||||
|
||||
const getBarColor = (value: number, maxValue: number, color: string) => {
|
||||
const percentage = (value / maxValue) * 100;
|
||||
if (percentage > 80) return "bg-red-500";
|
||||
if (percentage > 60) return "bg-orange-500";
|
||||
if (percentage > 40) return "bg-yellow-500";
|
||||
return color;
|
||||
};
|
||||
|
||||
return (
|
||||
<Card className={className}>
|
||||
<CardHeader>
|
||||
<CardTitle className="text-lg font-semibold">
|
||||
Informação Nutricional
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent className="space-y-4">
|
||||
{nutritionItems.map((item) => {
|
||||
if (item.value === undefined || item.value === null) {
|
||||
return (
|
||||
<div key={item.key} className="flex items-center justify-between">
|
||||
<span className="text-sm font-medium text-muted-foreground">
|
||||
{item.label}
|
||||
</span>
|
||||
<Badge variant="outline" className="text-xs">
|
||||
N/A
|
||||
</Badge>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const barWidth = getBarWidth(item.value, item.maxValue);
|
||||
const barColor = getBarColor(item.value, item.maxValue, item.color);
|
||||
|
||||
return (
|
||||
<div key={item.key} className="space-y-2">
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-sm font-medium">{item.label}</span>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-sm font-semibold">
|
||||
{item.value.toFixed(1)}
|
||||
{item.unit}
|
||||
</span>
|
||||
<Badge
|
||||
variant="outline"
|
||||
className={`text-xs ${
|
||||
item.value / item.maxValue > 0.8
|
||||
? "border-red-200 text-red-700"
|
||||
: item.value / item.maxValue > 0.6
|
||||
? "border-orange-200 text-orange-700"
|
||||
: "border-green-200 text-green-700"
|
||||
}`}
|
||||
>
|
||||
{((item.value / item.maxValue) * 100).toFixed(0)}%
|
||||
</Badge>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="relative h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden">
|
||||
<div
|
||||
className={`h-full transition-all duration-500 ${barColor}`}
|
||||
style={{ width: barWidth }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between text-xs text-muted-foreground">
|
||||
<span>0{item.unit}</span>
|
||||
<span>
|
||||
{item.maxValue}
|
||||
{item.unit}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
interface NutritionSummaryProps {
|
||||
data: NutritionData;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function NutritionSummary({
|
||||
data,
|
||||
className = "",
|
||||
}: NutritionSummaryProps) {
|
||||
const getNutritionScore = () => {
|
||||
if (!data.energy || !data.fat || !data.sugars || !data.sodium) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Cálculo simplificado do Nutri-Score
|
||||
let score = 0;
|
||||
|
||||
// Pontos negativos
|
||||
if (data.energy > 335) score += 1;
|
||||
if (data.energy > 670) score += 2;
|
||||
if (data.energy > 1005) score += 3;
|
||||
if (data.energy > 1340) score += 4;
|
||||
if (data.energy > 1675) score += 5;
|
||||
if (data.energy > 2010) score += 6;
|
||||
if (data.energy > 2345) score += 7;
|
||||
if (data.energy > 2680) score += 8;
|
||||
if (data.energy > 3015) score += 9;
|
||||
if (data.energy > 3350) score += 10;
|
||||
|
||||
if (data.sugars > 4.5) score += 1;
|
||||
if (data.sugars > 9) score += 2;
|
||||
if (data.sugars > 13.5) score += 3;
|
||||
if (data.sugars > 18) score += 4;
|
||||
if (data.sugars > 22.5) score += 5;
|
||||
if (data.sugars > 27) score += 6;
|
||||
if (data.sugars > 31) score += 7;
|
||||
if (data.sugars > 36) score += 8;
|
||||
if (data.sugars > 40) score += 9;
|
||||
if (data.sugars > 45) score += 10;
|
||||
|
||||
if (data.fat > 1) score += 1;
|
||||
if (data.fat > 2) score += 2;
|
||||
if (data.fat > 3) score += 3;
|
||||
if (data.fat > 4) score += 4;
|
||||
if (data.fat > 5) score += 5;
|
||||
if (data.fat > 6) score += 6;
|
||||
if (data.fat > 7) score += 7;
|
||||
if (data.fat > 8) score += 8;
|
||||
if (data.fat > 9) score += 9;
|
||||
if (data.fat > 10) score += 10;
|
||||
|
||||
if (data.sodium > 0.3) score += 1;
|
||||
if (data.sodium > 0.6) score += 2;
|
||||
if (data.sodium > 0.9) score += 3;
|
||||
if (data.sodium > 1.2) score += 4;
|
||||
if (data.sodium > 1.5) score += 5;
|
||||
if (data.sodium > 1.8) score += 6;
|
||||
if (data.sodium > 2.1) score += 7;
|
||||
if (data.sodium > 2.4) score += 8;
|
||||
if (data.sodium > 2.7) score += 9;
|
||||
if (data.sodium > 3) score += 10;
|
||||
|
||||
// Pontos positivos
|
||||
if (data.fiber && data.fiber > 0.9) score -= 1;
|
||||
if (data.fiber && data.fiber > 1.9) score -= 2;
|
||||
if (data.fiber && data.fiber > 2.8) score -= 3;
|
||||
if (data.fiber && data.fiber > 3.7) score -= 4;
|
||||
if (data.fiber && data.fiber > 4.7) score -= 5;
|
||||
|
||||
if (data.proteins && data.proteins > 1.6) score -= 1;
|
||||
if (data.proteins && data.proteins > 3.2) score -= 2;
|
||||
if (data.proteins && data.proteins > 4.8) score -= 3;
|
||||
if (data.proteins && data.proteins > 6.4) score -= 4;
|
||||
if (data.proteins && data.proteins > 8) score -= 5;
|
||||
|
||||
// Converter para letra
|
||||
if (score <= -1) return "A";
|
||||
if (score <= 2) return "B";
|
||||
if (score <= 10) return "C";
|
||||
if (score <= 18) return "D";
|
||||
return "E";
|
||||
};
|
||||
|
||||
const nutritionScore = getNutritionScore();
|
||||
|
||||
return (
|
||||
<div className={`space-y-3 ${className}`}>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-sm font-medium">Nutri-Score Estimado</span>
|
||||
{nutritionScore && (
|
||||
<Badge
|
||||
className={`${
|
||||
nutritionScore === "A"
|
||||
? "bg-green-500 text-white"
|
||||
: nutritionScore === "B"
|
||||
? "bg-green-400 text-white"
|
||||
: nutritionScore === "C"
|
||||
? "bg-yellow-500 text-white"
|
||||
: nutritionScore === "D"
|
||||
? "bg-orange-500 text-white"
|
||||
: "bg-red-500 text-white"
|
||||
}`}
|
||||
>
|
||||
{nutritionScore}
|
||||
</Badge>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-2 gap-2 text-xs">
|
||||
<div className="flex justify-between">
|
||||
<span>Energia:</span>
|
||||
<span className="font-medium">
|
||||
{data.energy?.toFixed(0) || "N/A"} kcal
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<span>Gorduras:</span>
|
||||
<span className="font-medium">{data.fat?.toFixed(1) || "N/A"}g</span>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<span>Carboidratos:</span>
|
||||
<span className="font-medium">
|
||||
{data.carbohydrates?.toFixed(1) || "N/A"}g
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<span>Proteínas:</span>
|
||||
<span className="font-medium">
|
||||
{data.proteins?.toFixed(1) || "N/A"}g
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
'use client'
|
||||
|
||||
import { motion } from 'framer-motion'
|
||||
export function PageTitle() {
|
||||
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: -20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.5 }}
|
||||
className="relative"
|
||||
>
|
||||
<h1 className="text-4xl md:text-5xl font-bold text-center">
|
||||
<span className="relative inline-block">
|
||||
<span className="bg-clip-text text-transparent bg-gradient-to-r from-primary to-secondary">
|
||||
Resenha Itapoá
|
||||
</span>
|
||||
<motion.span
|
||||
className="absolute -bottom-2 left-0 w-full h-1 bg-gradient-to-r from-primary to-secondary rounded-full"
|
||||
initial={{ scaleX: 0 }}
|
||||
animate={{ scaleX: 1 }}
|
||||
transition={{ delay: 0.5, duration: 0.5 }}
|
||||
/>
|
||||
</span>
|
||||
</h1>
|
||||
<p className="mt-4 text-center text-muted-foreground max-w-2xl mx-auto">
|
||||
Gerencie suas listas de compras de forma simples e eficiente
|
||||
</p>
|
||||
</motion.div>
|
||||
)
|
||||
}
|
||||
@@ -126,6 +126,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(currentPage - 1)}
|
||||
disabled={!canGoPrevious}
|
||||
aria-label="Página anterior"
|
||||
className="h-9 w-9 p-0 flex-shrink-0"
|
||||
>
|
||||
<ChevronLeft className="h-4 w-4" />
|
||||
@@ -141,6 +142,8 @@ export function Pagination({
|
||||
variant={currentPage === page ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => onPageChange(page as number)}
|
||||
aria-label={`Página ${page}`}
|
||||
aria-current={currentPage === page ? "page" : undefined}
|
||||
className="h-9 w-9 p-0"
|
||||
>
|
||||
{page}
|
||||
@@ -155,6 +158,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(currentPage + 1)}
|
||||
disabled={!canGoNext}
|
||||
aria-label="Próxima página"
|
||||
className="h-9 w-9 p-0 flex-shrink-0"
|
||||
>
|
||||
<ChevronRight className="h-4 w-4" />
|
||||
@@ -230,6 +234,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(1)}
|
||||
disabled={!canGoPrevious}
|
||||
aria-label="Primeira página"
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<ChevronsLeft className="h-4 w-4" />
|
||||
@@ -243,6 +248,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(currentPage - 1)}
|
||||
disabled={!canGoPrevious}
|
||||
aria-label="Página anterior"
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<ChevronLeft className="h-4 w-4" />
|
||||
@@ -259,6 +265,8 @@ export function Pagination({
|
||||
variant={currentPage === page ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => onPageChange(page as number)}
|
||||
aria-label={`Página ${page}`}
|
||||
aria-current={currentPage === page ? "page" : undefined}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
{page}
|
||||
@@ -274,6 +282,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(currentPage + 1)}
|
||||
disabled={!canGoNext}
|
||||
aria-label="Próxima página"
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<ChevronRight className="h-4 w-4" />
|
||||
@@ -287,6 +296,7 @@ export function Pagination({
|
||||
size="sm"
|
||||
onClick={() => onPageChange(totalPages)}
|
||||
disabled={!canGoNext}
|
||||
aria-label="Última página"
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<ChevronsRight className="h-4 w-4" />
|
||||
|
||||
@@ -61,6 +61,7 @@ export function SearchBar({
|
||||
<input
|
||||
type="text"
|
||||
placeholder={placeholder}
|
||||
aria-label="Buscar produto por nome ou código de barras"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
onKeyDown={handleKey}
|
||||
@@ -74,6 +75,7 @@ export function SearchBar({
|
||||
<button
|
||||
onClick={handleSearch}
|
||||
disabled={!query.trim()}
|
||||
aria-label="Buscar"
|
||||
className="btn-accent h-9 px-3 py-0 text-xs disabled:opacity-40"
|
||||
>
|
||||
<Search className="w-3.5 h-3.5" strokeWidth={1.5} />
|
||||
@@ -95,6 +97,7 @@ export function SearchBar({
|
||||
<input
|
||||
type="text"
|
||||
placeholder={placeholder}
|
||||
aria-label="Buscar produto por nome ou código de barras"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
onKeyDown={handleKey}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
interface CardProps {
|
||||
produto: {
|
||||
id: number;
|
||||
nome: string;
|
||||
qtd: number;
|
||||
tipoUN: string;
|
||||
comprado: boolean;
|
||||
listaId: string;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
}
|
||||
|
||||
export function Card({ produto }: CardProps) {
|
||||
return (
|
||||
<div className="card bg-white shadow-lg rounded-lg hover:shadow-xl transition-duration-300">
|
||||
<div className="card-body p-6">
|
||||
<h2 className="card-title text-xl font-bold mb-2">{produto.nome}</h2>
|
||||
<div className="space-y-2">
|
||||
<p className="text-gray-600">
|
||||
Quantidade: <span className="font-semibold">{produto.qtd}</span>
|
||||
</p>
|
||||
<p className="text-gray-600">
|
||||
Tipo: <span className="font-semibold">{produto.tipoUN}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export async function Items() {
|
||||
const produtos = await prisma.produtos.findMany({});
|
||||
console.log(produtos);
|
||||
}
|
||||
@@ -117,6 +117,7 @@ export function Hero() {
|
||||
<input
|
||||
type="text"
|
||||
placeholder={current.placeholder}
|
||||
aria-label="Buscar produto por nome ou código de barras"
|
||||
value={searchQuery}
|
||||
onChange={(e) => setSearchQuery(e.target.value)}
|
||||
autoComplete="off"
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { Search, ScanLine, Activity } from "lucide-react";
|
||||
import { useSearchLogic } from "@/hooks/use-search-logic";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
export function PersuasiveCTA() {
|
||||
const router = useRouter();
|
||||
const [query, setQuery] = useState("");
|
||||
const { searchType, isValid, loading, setLoading } = useSearchLogic(query);
|
||||
|
||||
const handleSearch = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
if (!query.trim()) return;
|
||||
setLoading(true);
|
||||
const target =
|
||||
searchType === "barcode" && isValid
|
||||
? `/produto/${query.trim()}`
|
||||
: `/resultados?q=${encodeURIComponent(query.trim())}`;
|
||||
router.push(target);
|
||||
};
|
||||
|
||||
const icon =
|
||||
searchType === "barcode" ? (
|
||||
<ScanLine className="w-4 h-4" />
|
||||
) : searchType === "name" ? (
|
||||
<Search className="w-4 h-4" />
|
||||
) : (
|
||||
<Activity className="w-4 h-4" />
|
||||
);
|
||||
|
||||
const label =
|
||||
searchType === "barcode"
|
||||
? "Código de barras detectado"
|
||||
: searchType === "name"
|
||||
? "Pesquisa por nome"
|
||||
: "Detecção automática";
|
||||
|
||||
return (
|
||||
<section className="bg-[var(--bg-surface)] section-py border-t border-[var(--border-subtle)]">
|
||||
<div className="container-editorial">
|
||||
|
||||
{/* ── Section header ───────────────────────────────────────────── */}
|
||||
<div className="mb-16">
|
||||
<span className="label text-[var(--accent)] block mb-4">
|
||||
Comece Agora
|
||||
</span>
|
||||
<hr className="hairline mb-10" />
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 items-end">
|
||||
<h2 className="font-display text-display-lg text-[var(--fg-primary)]">
|
||||
Pronto para descobrir a{" "}
|
||||
<em className="font-display-i text-[var(--accent)]">
|
||||
verdade sobre seus alimentos?
|
||||
</em>
|
||||
</h2>
|
||||
<p className="text-[var(--fg-secondary)] text-lg leading-relaxed max-w-md">
|
||||
Sem cadastro, sem anúncios, sem venda de dados. Resultados
|
||||
nutricionais completos em segundos.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* ── Search form ──────────────────────────────────────────────── */}
|
||||
<form onSubmit={handleSearch} className="max-w-2xl">
|
||||
<div className="search-editorial">
|
||||
<div className="text-[var(--fg-muted)] shrink-0">{icon}</div>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Nome do produto ou código de barras…"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
autoComplete="off"
|
||||
spellCheck={false}
|
||||
className="flex-1 bg-transparent border-none outline-none py-[1.125rem] text-[var(--fg-primary)] placeholder-[var(--fg-faint)] text-base font-sans"
|
||||
/>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
disabled={loading}
|
||||
className="btn-accent shrink-0 py-2.5 px-5 text-sm"
|
||||
>
|
||||
{loading ? (
|
||||
<span className="flex items-center gap-2">
|
||||
<span className="w-3.5 h-3.5 border-2 border-white/40 border-t-white rounded-full animate-spin" />
|
||||
Buscando…
|
||||
</span>
|
||||
) : (
|
||||
<span className="flex items-center gap-1.5">
|
||||
Buscar
|
||||
<ArrowRight />
|
||||
</span>
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* Detection status */}
|
||||
<p className="mt-3 label text-[var(--fg-muted)] flex items-center gap-1.5">
|
||||
<span
|
||||
className={cn(
|
||||
"w-1.5 h-1.5 rounded-full inline-block",
|
||||
searchType !== "auto"
|
||||
? "bg-[var(--accent)]"
|
||||
: "bg-[var(--fg-faint)]"
|
||||
)}
|
||||
/>
|
||||
{label}
|
||||
</p>
|
||||
</form>
|
||||
|
||||
{/* ── Trust indicators ─────────────────────────────────────────── */}
|
||||
<div className="mt-12 flex flex-wrap gap-x-10 gap-y-3">
|
||||
{["Sem cadastro necessário", "Resultados instantâneos", "100% gratuito e open source"].map(
|
||||
(item) => (
|
||||
<span
|
||||
key={item}
|
||||
className="label text-[var(--fg-muted)] flex items-center gap-2"
|
||||
>
|
||||
<span className="w-1 h-1 rounded-full bg-[var(--accent)]" />
|
||||
{item}
|
||||
</span>
|
||||
)
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function ArrowRight() {
|
||||
return (
|
||||
<svg
|
||||
width="14"
|
||||
height="14"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2.5"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
>
|
||||
<path d="M5 12h14m-7-7 7 7-7 7" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
"use client";
|
||||
import { useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { Search, ScanLine, AlertCircle } from "lucide-react";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
|
||||
interface SearchBarProps {
|
||||
variant?: "hero" | "compact" | "floating";
|
||||
placeholder?: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function SearchBar({
|
||||
variant = "hero",
|
||||
placeholder = "Digite o código de barras (ex: 7896004713588)",
|
||||
className = "",
|
||||
}: SearchBarProps) {
|
||||
const [barcode, setBarcode] = useState("");
|
||||
const [error, setError] = useState("");
|
||||
const [loading, setLoading] = useState(false);
|
||||
const router = useRouter();
|
||||
|
||||
const validateBarcode = (code: string) => {
|
||||
const cleanCode = code.replace(/\D/g, "");
|
||||
return cleanCode.length >= 8 && cleanCode.length <= 13;
|
||||
};
|
||||
|
||||
const handleSearch = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
setError("");
|
||||
|
||||
if (!barcode.trim()) {
|
||||
setError("Digite um código de barras válido");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!validateBarcode(barcode)) {
|
||||
setError("Código de barras deve ter entre 8 e 13 dígitos");
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
|
||||
// Simula busca (futuramente será integração com API)
|
||||
setTimeout(() => {
|
||||
router.push(`/produto/${barcode.trim()}`);
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
const getVariantStyles = () => {
|
||||
switch (variant) {
|
||||
case "compact":
|
||||
return {
|
||||
container: "max-w-md mx-auto",
|
||||
input: "text-base py-3",
|
||||
button: "px-6 py-3",
|
||||
};
|
||||
case "floating":
|
||||
return {
|
||||
container:
|
||||
"fixed bottom-6 left-1/2 transform -translate-x-1/2 z-50 max-w-sm w-full mx-4",
|
||||
input: "text-sm py-3",
|
||||
button: "px-4 py-3",
|
||||
};
|
||||
default: // hero
|
||||
return {
|
||||
container: "max-w-2xl mx-auto",
|
||||
input: "text-lg py-4",
|
||||
button: "px-8 py-4",
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const styles = getVariantStyles();
|
||||
|
||||
if (variant === "floating") {
|
||||
return (
|
||||
<div className={`${styles.container} ${className}`}>
|
||||
<form onSubmit={handleSearch} className="relative">
|
||||
<div className="flex items-center bg-white dark:bg-gray-800 rounded-2xl shadow-2xl border border-gray-200 dark:border-gray-700 overflow-hidden">
|
||||
<div className="flex-1 relative">
|
||||
<ScanLine className="absolute left-4 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5" />
|
||||
<Input
|
||||
type="text"
|
||||
placeholder={placeholder}
|
||||
value={barcode}
|
||||
onChange={(e) => setBarcode(e.target.value)}
|
||||
className={`pl-12 pr-4 ${styles.input} border-0 bg-transparent focus:ring-0 placeholder:text-gray-400`}
|
||||
/>
|
||||
</div>
|
||||
<Button
|
||||
type="submit"
|
||||
disabled={loading}
|
||||
className={`m-2 ${styles.button} bg-gradient-to-r from-blue-600 to-green-600 hover:from-blue-700 hover:to-green-700 text-white font-semibold rounded-xl transition-all duration-200 transform hover:scale-105 disabled:opacity-50`}
|
||||
>
|
||||
{loading ? (
|
||||
<div className="w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin" />
|
||||
) : (
|
||||
<Search className="w-5 h-5" />
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
{error && (
|
||||
<div className="absolute top-full left-0 right-0 mt-2 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl shadow-lg">
|
||||
<div className="flex items-center gap-2 text-red-600 dark:text-red-400 text-sm">
|
||||
<AlertCircle className="w-4 h-4 flex-shrink-0" />
|
||||
{error}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={`${styles.container} ${className}`}>
|
||||
<form onSubmit={handleSearch}>
|
||||
<div className="relative">
|
||||
<div className="flex items-center bg-white dark:bg-gray-800 rounded-2xl shadow-xl border border-gray-200 dark:border-gray-700 overflow-hidden">
|
||||
<div className="flex-1 relative">
|
||||
<ScanLine className="absolute left-4 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5" />
|
||||
<Input
|
||||
type="text"
|
||||
placeholder={placeholder}
|
||||
value={barcode}
|
||||
onChange={(e) => setBarcode(e.target.value)}
|
||||
className={`pl-12 pr-4 ${styles.input} border-0 bg-transparent focus:ring-0 placeholder:text-gray-400`}
|
||||
/>
|
||||
</div>
|
||||
<Button
|
||||
type="submit"
|
||||
disabled={loading}
|
||||
className={`m-2 ${styles.button} bg-gradient-to-r from-blue-600 to-green-600 hover:from-blue-700 hover:to-green-700 text-white font-semibold rounded-xl transition-all duration-200 transform hover:scale-105 disabled:opacity-50`}
|
||||
>
|
||||
{loading ? (
|
||||
<div className="flex items-center gap-2">
|
||||
<div className="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" />
|
||||
Buscando...
|
||||
</div>
|
||||
) : (
|
||||
<div className="flex items-center gap-2">
|
||||
<Search className="w-5 h-5" />
|
||||
Buscar
|
||||
</div>
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{error && (
|
||||
<div className="mt-3 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl">
|
||||
<div className="flex items-center gap-2 text-red-600 dark:text-red-400 text-sm">
|
||||
<AlertCircle className="w-4 h-4 flex-shrink-0" />
|
||||
{error}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -12,7 +12,8 @@ import {
|
||||
Share2,
|
||||
} from "lucide-react";
|
||||
import Image from "next/image";
|
||||
import { searchByBarcode, Product, formatNutritionData } from "@/lib/openFoodFactsApi";
|
||||
import { searchByBarcode, Product } from "@/lib/openFoodFactsApi";
|
||||
import { getEnergyKcal, getNutrientValue } from "@/lib/nutrition";
|
||||
import { ProductSkeleton } from "@/app/components/ProductSkeleton";
|
||||
|
||||
/* ── Nutri-Score letter circle ─────────────────────────────────────────── */
|
||||
@@ -305,7 +306,7 @@ export default function ProdutoPage() {
|
||||
|
||||
/* ── Nutrition bars — % of daily reference ─────────────────────────── */
|
||||
const dailyRef: Record<string, number> = {
|
||||
energy_100g: 2000,
|
||||
"energy-kcal_100g": 2000,
|
||||
fat_100g: 70,
|
||||
saturated_fat_100g: 20,
|
||||
sugars_100g: 90,
|
||||
@@ -315,11 +316,11 @@ export default function ProdutoPage() {
|
||||
};
|
||||
const nutriments = product.nutriments || {};
|
||||
const nutritionRows = [
|
||||
{ key: "energy_100g", label: "Energia", unit: "kcal" },
|
||||
{ key: "energy-kcal_100g", label: "Energia", unit: "kcal" },
|
||||
{ key: "fat_100g", label: "Gorduras totais", unit: "g" },
|
||||
{ key: "saturated_fat_100g",label: "Gorduras saturadas", unit: "g" },
|
||||
{ key: "sugars_100g", label: "Açúcares", unit: "g" },
|
||||
{ key: "salt_100g", label: "Sódio", unit: "g" },
|
||||
{ key: "salt_100g", label: "Sal", unit: "g" },
|
||||
{ key: "fiber_100g", label: "Fibras", unit: "g" },
|
||||
{ key: "proteins_100g", label: "Proteínas", unit: "g" },
|
||||
];
|
||||
@@ -701,7 +702,7 @@ export default function ProdutoPage() {
|
||||
>
|
||||
{nutritionRows.map((row) => {
|
||||
const raw = nutriments[row.key as keyof typeof nutriments];
|
||||
const v = raw != null ? Number(raw) : null;
|
||||
const v = row.key === "energy-kcal_100g" ? getEnergyKcal(nutriments) : getNutrientValue(raw);
|
||||
if (v == null) return null;
|
||||
const ref = dailyRef[row.key] || 100;
|
||||
const pct = Math.min(100, Math.round((v / ref) * 100));
|
||||
|
||||
@@ -346,7 +346,7 @@ function ResultadosContent() {
|
||||
}}
|
||||
>
|
||||
<div style={{ display: "flex", alignItems: "center", gap: 8 }}>
|
||||
<Link href="/" style={{ display: "flex", padding: 8, color: "var(--fg-secondary)" }}>
|
||||
<Link href="/" aria-label="Voltar ao início" style={{ display: "flex", padding: 8, color: "var(--fg-secondary)" }}>
|
||||
<ArrowLeft style={{ width: 18, height: 18 }} strokeWidth={1.75} />
|
||||
</Link>
|
||||
<div style={{ flex: 1 }}>
|
||||
@@ -488,6 +488,8 @@ function ResultadosContent() {
|
||||
return (
|
||||
<button
|
||||
key={g}
|
||||
aria-label={`Nutri-Score ${g.toUpperCase()}`}
|
||||
aria-pressed={active}
|
||||
onClick={() => {
|
||||
setGradeFilter((prev) => (prev === g ? null : g));
|
||||
setCurrentPage(1);
|
||||
@@ -516,6 +518,7 @@ function ResultadosContent() {
|
||||
|
||||
{/* Allergen-free chip */}
|
||||
<button
|
||||
aria-pressed={allergenFree}
|
||||
onClick={() => {
|
||||
setAllergenFree((prev) => !prev);
|
||||
setCurrentPage(1);
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
not found
|
||||
@@ -1,529 +0,0 @@
|
||||
{
|
||||
"communities": {
|
||||
"0": [
|
||||
"app_components_cacheonlyswitch_tsx",
|
||||
"app_components_donatecard_tsx",
|
||||
"app_components_header_tsx",
|
||||
"app_components_landing_features_tsx",
|
||||
"app_components_nutriscorebadge_tsx",
|
||||
"app_components_nutritionbar_tsx",
|
||||
"app_components_productcard_tsx",
|
||||
"app_components_productskeleton_tsx",
|
||||
"barcode_page_nutriletter",
|
||||
"components_donatecard_donatecardprops",
|
||||
"components_header_header",
|
||||
"components_header_nav_links",
|
||||
"components_nutriscorebadge_grade_class",
|
||||
"components_nutriscorebadge_grade_info",
|
||||
"components_nutriscorebadge_nova_info",
|
||||
"components_nutriscorebadge_novabadge",
|
||||
"components_nutriscorebadge_novabadgeprops",
|
||||
"components_nutriscorebadge_nutriscorebadgeprops",
|
||||
"components_nutriscorebadge_size_class",
|
||||
"components_nutritionbar_extractnumber",
|
||||
"components_nutritionbar_nutritionbar",
|
||||
"components_nutritionbar_nutritiongrid",
|
||||
"components_nutritionbar_nutritiongridprops",
|
||||
"components_nutritionbar_pct",
|
||||
"components_nutritionbar_reference",
|
||||
"components_optimizedimage_tsx",
|
||||
"components_productcard_defaultcard",
|
||||
"components_productcard_getimageurl",
|
||||
"components_productcard_getverdict",
|
||||
"components_productcard_mobilecard",
|
||||
"components_productcard_nutri_grade_class",
|
||||
"components_productcard_productcardprops",
|
||||
"components_productcard_verdictdot",
|
||||
"components_productskeleton_badgeskeleton",
|
||||
"components_productskeleton_nutritionbarskeleton",
|
||||
"components_productskeleton_skeletonprops",
|
||||
"components_ui_label_tsx",
|
||||
"components_ui_switch_tsx",
|
||||
"landing_features_feature",
|
||||
"landing_features_featurerow",
|
||||
"landing_hero_arrowright",
|
||||
"landing_howitworks_howitworks",
|
||||
"landing_howitworks_step",
|
||||
"landing_howitworks_stepcard",
|
||||
"landing_persuasivecta_persuasivecta",
|
||||
"lib_openfoodfactsapi_formatnutritiondata",
|
||||
"lib_utils_cn",
|
||||
"lib_utils_measureperformance",
|
||||
"lib_utils_memoize",
|
||||
"lib_utils_perfcache",
|
||||
"lib_utils_ts",
|
||||
"ui_checkbox_checkbox",
|
||||
"ui_label_label",
|
||||
"ui_label_labelvariants",
|
||||
"ui_switch_switch"
|
||||
],
|
||||
"1": [
|
||||
"app_components_footer_tsx",
|
||||
"app_page_home",
|
||||
"app_page_tsx",
|
||||
"app_sobre_components_herosection_tsx",
|
||||
"app_sobre_components_howitworkssection_tsx",
|
||||
"app_sobre_components_impactsection_tsx",
|
||||
"app_sobre_components_missionsection_tsx",
|
||||
"app_sobre_components_problemsection_tsx",
|
||||
"app_sobre_components_storysection_tsx",
|
||||
"app_sobre_components_targetaudiencesection_tsx",
|
||||
"app_sobre_components_valuessection_tsx",
|
||||
"barcode_page_grade_desc",
|
||||
"barcode_page_nova_bg",
|
||||
"barcode_page_nova_desc",
|
||||
"barcode_page_nova_ink",
|
||||
"barcode_page_novapill",
|
||||
"barcode_page_nutri_bg",
|
||||
"barcode_page_nutri_ink",
|
||||
"barcode_page_nutriscale",
|
||||
"barcode_page_produtopage",
|
||||
"components_ctasection_ctasection",
|
||||
"components_footer_footer",
|
||||
"components_footer_footer_links",
|
||||
"components_herosection_herosection",
|
||||
"components_main_main",
|
||||
"components_missionsection_mission_values",
|
||||
"components_problemsection_problemsection",
|
||||
"components_storysection_story_data",
|
||||
"components_storysection_storysection",
|
||||
"components_storysection_storystep",
|
||||
"components_targetaudiencesection_personas",
|
||||
"components_ui_sheet_tsx",
|
||||
"components_valuessection_protocols",
|
||||
"id_page_listapageprops",
|
||||
"landing_donationsection_donationsection",
|
||||
"landing_howitworks_steps",
|
||||
"landing_trustbadges_stats",
|
||||
"landing_trustbadges_trustbadges",
|
||||
"resultados_page_convertfilterstorecord",
|
||||
"resultados_page_grade_colors",
|
||||
"resultados_page_resultadospage",
|
||||
"sobre_page_sobrepage",
|
||||
"ui_sheet_sheetcontent",
|
||||
"ui_sheet_sheetcontentprops",
|
||||
"ui_sheet_sheetdescription",
|
||||
"ui_sheet_sheetfooter",
|
||||
"ui_sheet_sheetheader",
|
||||
"ui_sheet_sheetoverlay",
|
||||
"ui_sheet_sheettitle",
|
||||
"ui_sheet_sheetvariants"
|
||||
],
|
||||
"2": [
|
||||
"app_actions_criaritens",
|
||||
"app_actions_deletarproduto",
|
||||
"app_actions_togglecomprado",
|
||||
"app_actions_ts",
|
||||
"app_actions_verificarlista",
|
||||
"app_components_deletebutton_tsx",
|
||||
"app_components_listheader_tsx",
|
||||
"app_components_main_tsx",
|
||||
"app_components_pagination_tsx",
|
||||
"components_idinput_idinput",
|
||||
"components_listheader_listheader",
|
||||
"components_listheader_listheaderprops",
|
||||
"components_main_mainprops",
|
||||
"components_ui_alert_dialog_tsx",
|
||||
"components_ui_button_tsx",
|
||||
"components_ui_dialog_tsx",
|
||||
"components_ui_input_tsx",
|
||||
"components_ui_select_tsx",
|
||||
"id_page_listapage",
|
||||
"ui_alert_dialog_alertdialogaction",
|
||||
"ui_alert_dialog_alertdialogcancel",
|
||||
"ui_alert_dialog_alertdialogcontent",
|
||||
"ui_alert_dialog_alertdialogdescription",
|
||||
"ui_alert_dialog_alertdialogfooter",
|
||||
"ui_alert_dialog_alertdialogheader",
|
||||
"ui_alert_dialog_alertdialogoverlay",
|
||||
"ui_alert_dialog_alertdialogtitle",
|
||||
"ui_button_button",
|
||||
"ui_button_buttonprops",
|
||||
"ui_button_buttonvariants",
|
||||
"ui_dialog_dialogcontent",
|
||||
"ui_dialog_dialogdescription",
|
||||
"ui_dialog_dialogfooter",
|
||||
"ui_dialog_dialogheader",
|
||||
"ui_dialog_dialogoverlay",
|
||||
"ui_dialog_dialogtitle",
|
||||
"ui_input_input",
|
||||
"ui_select_selectcontent",
|
||||
"ui_select_selectitem",
|
||||
"ui_select_selectlabel",
|
||||
"ui_select_selectscrolldownbutton",
|
||||
"ui_select_selectscrollupbutton",
|
||||
"ui_select_selectseparator",
|
||||
"ui_select_selecttrigger"
|
||||
],
|
||||
"3": [
|
||||
"app_components_filtersidebar_tsx",
|
||||
"components_filtersidebar_filtersidebar",
|
||||
"components_ui_accordion_tsx",
|
||||
"components_ui_radio_group_tsx",
|
||||
"components_ui_separator_tsx",
|
||||
"components_ui_slider_tsx",
|
||||
"hooks_usecacheonlymode_ts",
|
||||
"hooks_useproductfilters_loadfiltersfromstorage",
|
||||
"hooks_useproductfilters_parsefiltersfromurl",
|
||||
"hooks_useproductfilters_savefilterstostorage",
|
||||
"hooks_useproductfilters_ts",
|
||||
"hooks_useproductfilters_useproductfiltersoptions",
|
||||
"hooks_usestoragemonitor_ts",
|
||||
"hooks_usestoragemonitor_usestoragemonitorreturn",
|
||||
"lib_types_cachefile",
|
||||
"lib_types_cacheprogress",
|
||||
"lib_types_cachesearchresult",
|
||||
"lib_types_common_additives",
|
||||
"lib_types_common_allergens",
|
||||
"lib_types_filteroption",
|
||||
"lib_types_filtersidebarprops",
|
||||
"lib_types_filterstate",
|
||||
"lib_types_imageloadingstate",
|
||||
"lib_types_imageloadtask",
|
||||
"lib_types_novagroup",
|
||||
"lib_types_nutritiongrade",
|
||||
"lib_types_paginationconfig",
|
||||
"lib_types_paginationprops",
|
||||
"lib_types_paginationstate",
|
||||
"lib_types_popular_categories",
|
||||
"lib_types_popular_categories_with_icons",
|
||||
"lib_types_productfilters",
|
||||
"lib_types_searchcacheconfig",
|
||||
"lib_types_storagestats",
|
||||
"lib_types_ts",
|
||||
"lib_types_useoptimizedimageloadingoptions",
|
||||
"lib_utils_debounce",
|
||||
"resultados_page_resultadoscontent",
|
||||
"ui_accordion_accordioncontent",
|
||||
"ui_accordion_accordionitem",
|
||||
"ui_accordion_accordiontrigger",
|
||||
"ui_radio_group_radiogroup",
|
||||
"ui_separator_separator",
|
||||
"ui_slider_slider"
|
||||
],
|
||||
"4": [
|
||||
"app_actions_listarprodutos",
|
||||
"app_components_cardlist_tsx",
|
||||
"app_components_filterbadge_tsx",
|
||||
"app_components_listaproductcard_tsx",
|
||||
"app_components_nutritionchart_tsx",
|
||||
"app_components_productcardskeleton_tsx",
|
||||
"components_card_cardprops",
|
||||
"components_cardlist_cardlist",
|
||||
"components_cardlist_cardlistprops",
|
||||
"components_cardlist_produto",
|
||||
"components_filterbadge_filterbadgeprops",
|
||||
"components_filterbadge_filterbadgesprops",
|
||||
"components_filterbadge_getfiltercolor",
|
||||
"components_filterbadge_getfilterlabel",
|
||||
"components_listaproductcard_listaproductcardprops",
|
||||
"components_nutritionchart_nutritiondata",
|
||||
"components_nutritionchart_nutritionsummary",
|
||||
"components_ui_badge_tsx",
|
||||
"components_ui_card_tsx",
|
||||
"ui_badge_badge",
|
||||
"ui_badge_badgeprops",
|
||||
"ui_badge_badgevariants",
|
||||
"ui_card_card",
|
||||
"ui_card_cardcontent",
|
||||
"ui_card_carddescription",
|
||||
"ui_card_cardfooter",
|
||||
"ui_card_cardheader",
|
||||
"ui_card_cardtitle",
|
||||
"ui_skeleton_skeleton"
|
||||
],
|
||||
"5": [
|
||||
"hooks_usesearchcache_searchcachestate",
|
||||
"hooks_usesearchcache_ts",
|
||||
"hooks_usesearchcache_usesearchcachereturn",
|
||||
"lib_cachemanager_cacheconfig",
|
||||
"lib_cachemanager_cachedsearch",
|
||||
"lib_cachemanager_cachemanager_cleanupoldcaches",
|
||||
"lib_cachemanager_cachemanager_clearallcaches",
|
||||
"lib_cachemanager_cachemanager_generatecachekey",
|
||||
"lib_cachemanager_cachemanager_generatesearchid",
|
||||
"lib_cachemanager_cachemanager_getcacheindex",
|
||||
"lib_cachemanager_cachemanager_getcachestats",
|
||||
"lib_cachemanager_cachemanager_getobjectsize",
|
||||
"lib_cachemanager_cachemanager_getsearch",
|
||||
"lib_cachemanager_cachemanager_hasspacefordata",
|
||||
"lib_cachemanager_cachemanager_removesearch",
|
||||
"lib_cachemanager_cachemanager_savesearch",
|
||||
"lib_cachemanager_cachemanager_updatecacheindex",
|
||||
"lib_cachemanager_default_config",
|
||||
"lib_cachemanager_filterrecord",
|
||||
"lib_cachemanager_filtervalue",
|
||||
"lib_cachemanager_ts",
|
||||
"lib_cachemanager_usecachemanager"
|
||||
],
|
||||
"6": [
|
||||
"app_api_search_route_ts",
|
||||
"lib_jsoncachemanager_jsoncachedata",
|
||||
"lib_jsoncachemanager_jsoncachemanager_clearcache",
|
||||
"lib_jsoncachemanager_jsoncachemanager_converttoapiproduct",
|
||||
"lib_jsoncachemanager_jsoncachemanager_converttocachedproduct",
|
||||
"lib_jsoncachemanager_jsoncachemanager_getinstance",
|
||||
"lib_jsoncachemanager_jsoncachemanager_getproductbycode",
|
||||
"lib_jsoncachemanager_jsoncachemanager_getstoragestats",
|
||||
"lib_jsoncachemanager_jsoncachemanager_isinitialized",
|
||||
"lib_jsoncachemanager_jsoncachemanager_loadcache",
|
||||
"lib_jsoncachemanager_jsoncachemanager_mergeproductdata",
|
||||
"lib_jsoncachemanager_jsoncachemanager_savecache",
|
||||
"lib_jsoncachemanager_jsoncachemanager_saveproduct",
|
||||
"lib_jsoncachemanager_jsoncachemanager_searchproducts",
|
||||
"lib_jsoncachemanager_ts",
|
||||
"lib_openfoodfactsapi_product",
|
||||
"lib_searchutils_calculaterelevancescore",
|
||||
"lib_searchutils_sortbyrelevance",
|
||||
"lib_searchutils_ts",
|
||||
"lib_types_cachedproduct",
|
||||
"search_route_get",
|
||||
"sync_route_post"
|
||||
],
|
||||
"7": [
|
||||
"app_components_searchbar_tsx",
|
||||
"hooks_use_search_logic_searchtype",
|
||||
"hooks_use_search_logic_ts",
|
||||
"landing_searchbar_searchbar",
|
||||
"lib_openfoodfactsapi_calculatecompletenessscore",
|
||||
"lib_openfoodfactsapi_config",
|
||||
"lib_openfoodfactsapi_detectsearchtype",
|
||||
"lib_openfoodfactsapi_fetchallresults",
|
||||
"lib_openfoodfactsapi_getgradevalue",
|
||||
"lib_openfoodfactsapi_isvalidbarcode",
|
||||
"lib_openfoodfactsapi_makeapirequest",
|
||||
"lib_openfoodfactsapi_searchbybarcode",
|
||||
"lib_openfoodfactsapi_searchbyname",
|
||||
"lib_openfoodfactsapi_searchresult",
|
||||
"lib_openfoodfactsapi_sortproducts",
|
||||
"lib_openfoodfactsapi_ts",
|
||||
"postcss_config_mjs",
|
||||
"tailwind_config_ts"
|
||||
],
|
||||
"8": [
|
||||
"app_components_errorboundary_tsx",
|
||||
"app_components_errortracking_tsx",
|
||||
"app_layout_inter",
|
||||
"app_layout_metadata",
|
||||
"app_layout_rootlayout",
|
||||
"app_layout_tsx",
|
||||
"app_providers_providersprops",
|
||||
"app_providers_themeprovider",
|
||||
"app_providers_tsx",
|
||||
"components_errorboundary_errorboundary",
|
||||
"components_errorboundary_errorboundary_componentdidcatch",
|
||||
"components_errorboundary_errorboundary_getderivedstatefromerror",
|
||||
"components_errorboundary_errorboundary_render",
|
||||
"components_errorboundary_props",
|
||||
"components_errorboundary_state",
|
||||
"lib_cachemanager_cachemanager_constructor",
|
||||
"lib_openfoodfactsapi_nutriscanerror"
|
||||
],
|
||||
"9": [
|
||||
"app_components_landing_hero_tsx",
|
||||
"hooks_use_geolocation_setscannedcountry",
|
||||
"hooks_use_geolocation_ts",
|
||||
"landing_hero_hero",
|
||||
"lib_geolocation_clearcountrycache",
|
||||
"lib_geolocation_countryinfo",
|
||||
"lib_geolocation_detectusercountry",
|
||||
"lib_geolocation_getcachedcountry",
|
||||
"lib_geolocation_getcountrycodeforapi",
|
||||
"lib_geolocation_getcurrentcountry",
|
||||
"lib_geolocation_isbrazil",
|
||||
"lib_geolocation_iscachevalid",
|
||||
"lib_geolocation_savetocache",
|
||||
"lib_geolocation_ts"
|
||||
],
|
||||
"10": [
|
||||
"app_components_sortdropdown_tsx",
|
||||
"components_sortdropdown_sort_icons",
|
||||
"components_sortdropdown_sorttoggle",
|
||||
"components_theme_toggle_tsx",
|
||||
"components_ui_dropdown_menu_tsx",
|
||||
"lib_types_sortoption",
|
||||
"ui_dropdown_menu_dropdownmenucontent",
|
||||
"ui_dropdown_menu_dropdownmenuitem",
|
||||
"ui_dropdown_menu_dropdownmenulabel",
|
||||
"ui_dropdown_menu_dropdownmenuseparator",
|
||||
"ui_dropdown_menu_dropdownmenusubcontent",
|
||||
"ui_dropdown_menu_dropdownmenusubtrigger"
|
||||
],
|
||||
"11": [
|
||||
"docs_resedesign_extract_js",
|
||||
"resedesign_extract_decoded",
|
||||
"resedesign_extract_end",
|
||||
"resedesign_extract_fs",
|
||||
"resedesign_extract_html",
|
||||
"resedesign_extract_path",
|
||||
"resedesign_extract_raw",
|
||||
"resedesign_extract_start"
|
||||
],
|
||||
"12": [
|
||||
"app_components_items_tsx",
|
||||
"components_items_items",
|
||||
"lib_prisma_prisma",
|
||||
"lib_prisma_ts"
|
||||
],
|
||||
"13": [
|
||||
"lib_types_rybbit_d_ts",
|
||||
"types_rybbit_d_rybbit",
|
||||
"types_rybbit_d_rybbittrackevent",
|
||||
"types_rybbit_d_window"
|
||||
],
|
||||
"14": [
|
||||
"app_robots_robots",
|
||||
"app_robots_ts"
|
||||
],
|
||||
"15": [
|
||||
"next_env_d_ts"
|
||||
],
|
||||
"16": [
|
||||
"next_config_mjs"
|
||||
],
|
||||
"17": [
|
||||
"sw_js"
|
||||
],
|
||||
"18": [
|
||||
"app_sitemap_ts"
|
||||
],
|
||||
"19": [
|
||||
"app_components_pagetitle_tsx"
|
||||
]
|
||||
},
|
||||
"cohesion": {
|
||||
"0": 0.06,
|
||||
"1": 0.05,
|
||||
"2": 0.09,
|
||||
"3": 0.06,
|
||||
"4": 0.11,
|
||||
"5": 0.17,
|
||||
"6": 0.16,
|
||||
"7": 0.15,
|
||||
"8": 0.13,
|
||||
"9": 0.24,
|
||||
"10": 0.23,
|
||||
"11": 0.25,
|
||||
"12": 0.5,
|
||||
"13": 0.5,
|
||||
"14": 1.0,
|
||||
"15": 1.0,
|
||||
"16": 1.0,
|
||||
"17": 1.0,
|
||||
"18": 1.0,
|
||||
"19": 1.0
|
||||
},
|
||||
"gods": [
|
||||
{
|
||||
"id": "lib_utils_cn",
|
||||
"label": "cn()",
|
||||
"degree": 51
|
||||
},
|
||||
{
|
||||
"id": "ui_button_button",
|
||||
"label": "Button",
|
||||
"degree": 13
|
||||
},
|
||||
{
|
||||
"id": "lib_openfoodfactsapi_product",
|
||||
"label": "Product",
|
||||
"degree": 8
|
||||
},
|
||||
{
|
||||
"id": "ui_badge_badge",
|
||||
"label": "Badge()",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "components_errorboundary_errorboundary",
|
||||
"label": "ErrorBoundary",
|
||||
"degree": 6
|
||||
},
|
||||
{
|
||||
"id": "landing_howitworks_howitworks",
|
||||
"label": "HowItWorks()",
|
||||
"degree": 6
|
||||
},
|
||||
{
|
||||
"id": "lib_geolocation_iscachevalid",
|
||||
"label": "isCacheValid()",
|
||||
"degree": 6
|
||||
},
|
||||
{
|
||||
"id": "lib_geolocation_detectusercountry",
|
||||
"label": "detectUserCountry()",
|
||||
"degree": 6
|
||||
},
|
||||
{
|
||||
"id": "app_actions_verificarlista",
|
||||
"label": "verificarLista()",
|
||||
"degree": 5
|
||||
},
|
||||
{
|
||||
"id": "landing_hero_hero",
|
||||
"label": "Hero()",
|
||||
"degree": 5
|
||||
}
|
||||
],
|
||||
"surprises": [
|
||||
{
|
||||
"source": "SheetFooter()",
|
||||
"target": "cn()",
|
||||
"source_files": [
|
||||
"components/ui/sheet.tsx",
|
||||
"lib/utils.ts"
|
||||
],
|
||||
"confidence": "EXTRACTED",
|
||||
"relation": "calls",
|
||||
"why": "connects across different repos/directories; bridges separate communities; peripheral node `SheetFooter()` unexpectedly reaches hub `cn()`"
|
||||
},
|
||||
{
|
||||
"source": "NovaBadge()",
|
||||
"target": "cn()",
|
||||
"source_files": [
|
||||
"app/components/NutriScoreBadge.tsx",
|
||||
"lib/utils.ts"
|
||||
],
|
||||
"confidence": "EXTRACTED",
|
||||
"relation": "calls",
|
||||
"why": "connects across different repos/directories; peripheral node `NovaBadge()` unexpectedly reaches hub `cn()`"
|
||||
},
|
||||
{
|
||||
"source": "NutritionBar()",
|
||||
"target": "cn()",
|
||||
"source_files": [
|
||||
"app/components/NutritionBar.tsx",
|
||||
"lib/utils.ts"
|
||||
],
|
||||
"confidence": "EXTRACTED",
|
||||
"relation": "calls",
|
||||
"why": "connects across different repos/directories; peripheral node `NutritionBar()` unexpectedly reaches hub `cn()`"
|
||||
},
|
||||
{
|
||||
"source": "NutritionGrid()",
|
||||
"target": "cn()",
|
||||
"source_files": [
|
||||
"app/components/NutritionBar.tsx",
|
||||
"lib/utils.ts"
|
||||
],
|
||||
"confidence": "EXTRACTED",
|
||||
"relation": "calls",
|
||||
"why": "connects across different repos/directories; peripheral node `NutritionGrid()` unexpectedly reaches hub `cn()`"
|
||||
},
|
||||
{
|
||||
"source": "NutritionBarSkeleton()",
|
||||
"target": "cn()",
|
||||
"source_files": [
|
||||
"app/components/ProductSkeleton.tsx",
|
||||
"lib/utils.ts"
|
||||
],
|
||||
"confidence": "EXTRACTED",
|
||||
"relation": "calls",
|
||||
"why": "connects across different repos/directories; peripheral node `NutritionBarSkeleton()` unexpectedly reaches hub `cn()`"
|
||||
}
|
||||
],
|
||||
"tokens": {
|
||||
"input": 0,
|
||||
"output": 0
|
||||
}
|
||||
}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_errortracking_tsx", "label": "ErrorTracking.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorTracking.tsx", "source_location": "L1"}, {"id": "components_errortracking_errortracking", "label": "ErrorTracking()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorTracking.tsx", "source_location": "L9"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_errortracking_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorTracking.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_errortracking_tsx", "target": "components_errortracking_errortracking", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorTracking.tsx", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_errortracking_errortracking", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorTracking.tsx", "source_location": "L10"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_header_tsx", "label": "header.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L1"}, {"id": "components_header_nav_links", "label": "NAV_LINKS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L10"}, {"id": "components_header_header", "label": "Header()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L16"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "link", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "next_themes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "image", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "components_header_nav_links", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L10", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_header_tsx", "target": "components_header_header", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L16", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_header_header", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L17"}, {"caller_nid": "components_header_header", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L18"}, {"caller_nid": "components_header_header", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L19"}, {"caller_nid": "components_header_header", "callee": "useTheme", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L20"}, {"caller_nid": "components_header_header", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L22"}, {"caller_nid": "components_header_header", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L33"}, {"caller_nid": "components_header_header", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L65"}, {"caller_nid": "components_header_header", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L111"}, {"caller_nid": "components_header_header", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\header.tsx", "source_location": "L117"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "label": "HowItWorks.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L1"}, {"id": "landing_howitworks_step", "label": "Step", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L7"}, {"id": "landing_howitworks_steps", "label": "steps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L14"}, {"id": "landing_howitworks_howitworks", "label": "HowItWorks()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L45"}, {"id": "landing_howitworks_stepcard", "label": "StepCard()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L129"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "landing_howitworks_step", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "landing_howitworks_steps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L14", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "landing_howitworks_howitworks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L45", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "target": "landing_howitworks_stepcard", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L129", "weight": 1.0}], "raw_calls": [{"caller_nid": "landing_howitworks_howitworks", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L72"}, {"caller_nid": "landing_howitworks_howitworks", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L84"}, {"caller_nid": "landing_howitworks_howitworks", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L106"}, {"caller_nid": "landing_howitworks_stepcard", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\HowItWorks.tsx", "source_location": "L133"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_lista_id_page_tsx", "label": "page.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L1"}, {"id": "id_page_listapageprops", "label": "ListaPageProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L10"}, {"id": "id_page_listapage", "label": "ListaPage()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L16"}], "edges": [{"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_app_components_main_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "components_main_main", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_app_components_cardlist_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "components_cardlist_cardlist", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_components_theme_toggle_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "components_theme_toggle_themetoggle", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_app_components_listheader_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "components_listheader_listheader", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_app_components_footer_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "components_footer_footer", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "app_actions_verificarlista", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "navigation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\lista\\[id]\\page.tsx", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_lista_id_page_tsx", "target": "id_page_Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_optimizedimage_tsx", "label": "OptimizedImage.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L1"}, {"id": "components_optimizedimage_optimizedimageprops", "label": "OptimizedImageProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L8"}, {"id": "components_optimizedimage_optimizedimage", "label": "OptimizedImage()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L34"}], "edges": [{"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "image", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "components_optimizedimage_optimizedimageprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_optimizedimage_tsx", "target": "components_optimizedimage_optimizedimage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L34", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L53"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L54"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "includes", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L58"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "debug", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L62"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useRef", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L63"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useRef", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L64"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useRef", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L65"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L68"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L73"}, {"caller_nid": "components_optimizedimage_optimizedimage", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\OptimizedImage.tsx", "source_location": "L81"}, {"caller_nid": "components_optimizedLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_select_tsx", "label": "select.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L1"}, {"id": "ui_select_selecttrigger", "label": "SelectTrigger", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L15"}, {"id": "ui_select_selectscrollupbutton", "label": "SelectScrollUpButton", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L35"}, {"id": "ui_select_selectscrolldownbutton", "label": "SelectScrollDownButton", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L52"}, {"id": "ui_select_selectcontent", "label": "SelectContent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L70"}, {"id": "ui_select_selectlabel", "label": "SelectLabel", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L102"}, {"id": "ui_select_selectitem", "label": "SelectItem", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L114"}, {"id": "ui_select_selectseparator", "label": "SelectSeparator", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L136"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "react_select", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selecttrigger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L15", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectscrollupbutton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L35", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectscrolldownbutton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L52", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L70", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectlabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L102", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L114", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_select_tsx", "target": "ui_select_selectseparator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\select.tsx", "source_location": "L136", "weight": 1.0}], "raLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "label": "dropdown-menu.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L1"}, {"id": "ui_dropdown_menu_dropdownmenusubtrigger", "label": "DropdownMenuSubTrigger", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L21"}, {"id": "ui_dropdown_menu_dropdownmenusubcontent", "label": "DropdownMenuSubContent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L43"}, {"id": "ui_dropdown_menu_dropdownmenucontent", "label": "DropdownMenuContent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L59"}, {"id": "ui_dropdown_menu_dropdownmenuitem", "label": "DropdownMenuItem", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L77"}, {"id": "ui_dropdown_menu_dropdownmenulabel", "label": "DropdownMenuLabel", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L95"}, {"id": "ui_dropdown_menu_dropdownmenuseparator", "label": "DropdownMenuSeparator", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L113"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "react_dropdown_menu", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenusubtrigger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L21", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenusubcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L43", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenucontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L59", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenuitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L77", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenulabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L95", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "target": "ui_dropdown_menu_dropdownmenuseparator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dropdown-menu.tsx", "source_location": "L113", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "label": "ListaProductCard.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L1"}, {"id": "components_listaproductcard_produto", "label": "Produto", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L9"}, {"id": "components_listaproductcard_listaproductcardprops", "label": "ListaProductCardProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L20"}, {"id": "components_listaproductcard_listaproductcard", "label": "ListaProductCard()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L25"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "d_documents_github_nutriscan_components_ui_badge_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "ui_badge_badge", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "d_documents_github_nutriscan_components_ui_card_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "ui_card_card", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "ui_card_cardcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "app_actions_togglecomprado", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "components_listaproductcard_produto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "components_listaproductcard_listaproductcardprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ListaProductCard.tsx", "source_location": "L20", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "target": "components_listaproductcard_listaproductcard", "relation": "contains", "conLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_landing_donationsection_tsx", "label": "DonationSection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L1"}, {"id": "landing_donationsection_donationsection", "label": "DonationSection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L6"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_landing_donationsection_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_donationsection_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_donationsection_tsx", "target": "landing_donationsection_donationsection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "landing_donationsection_donationsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\DonationSection.tsx", "source_location": "L33"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_landing_features_tsx", "label": "Features.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L1"}, {"id": "landing_features_feature", "label": "Feature", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L6"}, {"id": "landing_features_features", "label": "features", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L13"}, {"id": "landing_features_featurerow", "label": "FeatureRow()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L79"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "landing_features_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "landing_features_features", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L13", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "landing_features_features", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L44", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_features_tsx", "target": "landing_features_featurerow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L79", "weight": 1.0}], "raw_calls": [{"caller_nid": "landing_features_features", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L67"}, {"caller_nid": "landing_features_featurerow", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\Features.tsx", "source_location": "L88"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "label": "radio-group.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L1"}, {"id": "ui_radio_group_radiogroup", "label": "RadioGroup", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L9"}, {"id": "ui_radio_group_radiogroupitem", "label": "RadioGroupItem", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L23"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "react_radio_group", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "ui_radio_group_radiogroup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "target": "ui_radio_group_radiogroupitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\radio-group.tsx", "source_location": "L23", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_api_products_barcode_route_ts", "label": "route.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L1"}, {"id": "barcode_route_get", "label": "GET()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L6"}], "edges": [{"source": "d_documents_github_nutriscan_app_api_products_barcode_route_ts", "target": "server", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_products_barcode_route_ts", "target": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_products_barcode_route_ts", "target": "lib_jsoncachemanager_jsoncachemanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_products_barcode_route_ts", "target": "barcode_route_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "barcode_route_get", "callee": "replace", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L15"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L17"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L24"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L27"}, {"caller_nid": "barcode_route_get", "callee": "getProductByCode", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L28"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L31"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L32"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L41"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L44"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L51"}, {"caller_nid": "barcode_route_get", "callee": "fetch", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L54"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L65"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L71"}, {"caller_nid": "barcode_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L74"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L82"}, {"caller_nid": "barcode_route_get", "callee": "saveProduct", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\products\\[barcode]\\route.ts", "source_location": "L83"}, {"caller_nid": "barcode_route_get", "callee": "log", "is_member_call": true, "source_file": Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_layout_tsx", "label": "layout.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L1"}, {"id": "app_layout_inter", "label": "inter", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L9"}, {"id": "app_layout_metadata", "label": "metadata", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L15"}, {"id": "app_layout_rootlayout", "label": "RootLayout()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L73"}], "edges": [{"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "d_documents_github_nutriscan_app_globals_css", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "next", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "google", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "script", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "d_documents_github_nutriscan_app_providers_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "app_providers_themeprovider", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "components_errorboundary_errorboundary", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "d_documents_github_nutriscan_app_components_errortracking_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "components_errortracking_errortracking", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "app_layout_inter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "app_layout_metadata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L15", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_layout_tsx", "target": "app_layout_rootlayout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\layout.tsx", "source_location": "L73", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_postcss_config_mjs", "label": "postcss.config.mjs", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\postcss.config.mjs", "source_location": "L1"}, {"id": "nutriscan_postcss_config_config", "label": "config", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\postcss.config.mjs", "source_location": "L2"}], "edges": [{"source": "d_documents_github_nutriscan_postcss_config_mjs", "target": "nutriscan_postcss_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\postcss.config.mjs", "source_location": "L2", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_providers_tsx", "label": "providers.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L1"}, {"id": "app_providers_providersprops", "label": "ProvidersProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L5"}, {"id": "app_providers_themeprovider", "label": "ThemeProvider()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L9"}], "edges": [{"source": "d_documents_github_nutriscan_app_providers_tsx", "target": "next_themes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_providers_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_providers_tsx", "target": "app_providers_providersprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_providers_tsx", "target": "app_providers_themeprovider", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\providers.tsx", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_utils_ts", "label": "utils.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L1"}, {"id": "lib_utils_cn", "label": "cn()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L4"}, {"id": "lib_utils_perfcache", "label": "perfCache", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L9"}, {"id": "lib_utils_debounce", "label": "debounce()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L12"}, {"id": "lib_utils_memoize", "label": "memoize()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L25"}, {"id": "lib_utils_measureperformance", "label": "measurePerformance()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L46"}], "edges": [{"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "clsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "tailwind_merge", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "lib_utils_cn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "lib_utils_perfcache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "lib_utils_debounce", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L12", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "lib_utils_memoize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L25", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_utils_ts", "target": "lib_utils_measureperformance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L46", "weight": 1.0}], "raw_calls": [{"caller_nid": "lib_utils_cn", "callee": "twMerge", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L5"}, {"caller_nid": "lib_utils_cn", "callee": "clsx", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L5"}, {"caller_nid": "lib_utils_measureperformance", "callee": "now", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L47"}, {"caller_nid": "lib_utils_measureperformance", "callee": "callback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L48"}, {"caller_nid": "lib_utils_measureperformance", "callee": "now", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L49"}, {"caller_nid": "lib_utils_measureperformance", "callee": "set", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\utils.ts", "source_location": "L50"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_landing_trustbadges_tsx", "label": "TrustBadges.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L1"}, {"id": "landing_trustbadges_stats", "label": "stats", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L3"}, {"id": "landing_trustbadges_trustbadges", "label": "TrustBadges()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L26"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_landing_trustbadges_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_trustbadges_tsx", "target": "landing_trustbadges_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_trustbadges_tsx", "target": "landing_trustbadges_trustbadges", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L26", "weight": 1.0}], "raw_calls": [{"caller_nid": "landing_trustbadges_trustbadges", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\TrustBadges.tsx", "source_location": "L31"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "label": "NutritionBar.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L1"}, {"id": "components_nutritionbar_nutritionbarprops", "label": "NutritionBarProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L4"}, {"id": "components_nutritionbar_nutritionbar", "label": "NutritionBar()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L15"}, {"id": "components_nutritionbar_nutritiongridprops", "label": "NutritionGridProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L61"}, {"id": "components_nutritionbar_reference", "label": "REFERENCE", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L74"}, {"id": "components_nutritionbar_extractnumber", "label": "extractNumber()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L79"}, {"id": "components_nutritionbar_pct", "label": "pct()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L85"}, {"id": "components_nutritionbar_nutritiongrid", "label": "NutritionGrid()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L89"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_nutritionbarprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_nutritionbar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L15", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_nutritiongridprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L61", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_reference", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L74", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_extractnumber", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L79", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_pct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L85", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionbar_tsx", "target": "components_nutritionbar_nutritiongrid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L89", "weight": 1.0}, {"source": "components_nutritionbar_pct", "target": "components_nutritionbar_extractnumber", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L86", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_nutritionbar_nutritionbar", "callee": "min", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionBar.tsx", "source_location": "L24"}, {"caller_nid": "compoLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_api_location_route_ts", "label": "route.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L1"}, {"id": "location_route_get", "label": "GET()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L6"}], "edges": [{"source": "d_documents_github_nutriscan_app_api_location_route_ts", "target": "server", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_location_route_ts", "target": "location_route_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "location_route_get", "callee": "trim", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L15"}, {"caller_nid": "location_route_get", "callee": "split", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L15"}, {"caller_nid": "location_route_get", "callee": "startsWith", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L25"}, {"caller_nid": "location_route_get", "callee": "startsWith", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L26"}, {"caller_nid": "location_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L28"}, {"caller_nid": "location_route_get", "callee": "fetch", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L33"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L40"}, {"caller_nid": "location_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L42"}, {"caller_nid": "location_route_get", "callee": "warn", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L45"}, {"caller_nid": "location_route_get", "callee": "warn", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L51"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L52"}, {"caller_nid": "location_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L58"}, {"caller_nid": "location_route_get", "callee": "fetch", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L61"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L74"}, {"caller_nid": "location_route_get", "callee": "warn", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L78"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L79"}, {"caller_nid": "location_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L85"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L87"}, {"caller_nid": "location_route_get", "callee": "toLowerCase", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L89"}, {"caller_nid": "location_route_get", "callee": "error", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L92"}, {"caller_nid": "location_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\location\\route.ts", "source_location": "L95"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_pagination_tsx", "label": "Pagination.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L1"}, {"id": "components_pagination_default_config", "label": "DEFAULT_CONFIG", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L20"}, {"id": "components_pagination_pagination", "label": "Pagination()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L27"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L10", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L10", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "d_documents_github_nutriscan_components_ui_select_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_select_select", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_select_selectcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_select_selectitem", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_select_selecttrigger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "ui_select_selectvalue", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L11", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "d_documents_github_nutriscan_lib_types_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L18", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "lib_types_paginationprops", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L18", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "lib_types_paginationconfig", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L18", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagination_tsx", "target": "components_pagination_default_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Pagination.tsx", "source_location": "L20", "weight": 1Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_main_tsx", "label": "Main.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L1"}, {"id": "components_main_mainprops", "label": "MainProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L17"}, {"id": "components_main_main", "label": "Main()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L21"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "d_documents_github_nutriscan_components_ui_input_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_input_input", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "d_documents_github_nutriscan_components_ui_select_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_select", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selectcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selectgroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selectitem", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selectlabel", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selecttrigger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_select_selectvalue", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L12", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L12", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L13", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "app_actions_criaritens", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\Main.tsx", "source_location": "L13", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_main_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_api_storage_stats_route_ts", "label": "route.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L1"}, {"id": "storage_stats_route_get", "label": "GET()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L4"}], "edges": [{"source": "d_documents_github_nutriscan_app_api_storage_stats_route_ts", "target": "server", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_storage_stats_route_ts", "target": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_storage_stats_route_ts", "target": "lib_jsoncachemanager_jsoncachemanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_storage_stats_route_ts", "target": "storage_stats_route_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L4", "weight": 1.0}], "raw_calls": [{"caller_nid": "storage_stats_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L6"}, {"caller_nid": "storage_stats_route_get", "callee": "isInitialized", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L9"}, {"caller_nid": "storage_stats_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L11"}, {"caller_nid": "storage_stats_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L12"}, {"caller_nid": "storage_stats_route_get", "callee": "now", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L20"}, {"caller_nid": "storage_stats_route_get", "callee": "getStorageStats", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L25"}, {"caller_nid": "storage_stats_route_get", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L26"}, {"caller_nid": "storage_stats_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L28"}, {"caller_nid": "storage_stats_route_get", "callee": "now", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L31"}, {"caller_nid": "storage_stats_route_get", "callee": "error", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L34"}, {"caller_nid": "storage_stats_route_get", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L37"}, {"caller_nid": "storage_stats_route_get", "callee": "now", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\storage-stats\\route.ts", "source_location": "L45"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_targetaudiencesection_tsx", "label": "TargetAudienceSection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L1"}, {"id": "components_targetaudiencesection_personas", "label": "PERSONAS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L3"}, {"id": "components_targetaudiencesection_targetaudiencesection", "label": "TargetAudienceSection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L38"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_targetaudiencesection_tsx", "target": "components_targetaudiencesection_personas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_targetaudiencesection_tsx", "target": "components_targetaudiencesection_targetaudiencesection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L38", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_targetaudiencesection_targetaudiencesection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L56"}, {"caller_nid": "components_targetaudiencesection_targetaudiencesection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\TargetAudienceSection.tsx", "source_location": "L94"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "label": "useStorageMonitor.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L1"}, {"id": "hooks_usestoragemonitor_usestoragemonitorreturn", "label": "UseStorageMonitorReturn", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L9"}, {"id": "hooks_usestoragemonitor_usestoragemonitor", "label": "useStorageMonitor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L19"}], "edges": [{"source": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "target": "d_documents_github_nutriscan_lib_types_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "target": "lib_types_storagestats", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "target": "hooks_usestoragemonitor_usestoragemonitorreturn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usestoragemonitor_ts", "target": "hooks_usestoragemonitor_usestoragemonitor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L20"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L21"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L22"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L27"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L42"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L80"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L85"}, {"caller_nid": "hooks_usestoragemonitor_usestoragemonitor", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useStorageMonitor.ts", "source_location": "L90"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "label": "ProductCardSkeleton.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L1"}, {"id": "components_productcardskeleton_productcardskeleton", "label": "ProductCardSkeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L4"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "d_documents_github_nutriscan_components_ui_card_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "ui_card_card", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "ui_card_cardcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "d_documents_github_nutriscan_components_ui_skeleton_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "ui_skeleton_skeleton", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcardskeleton_tsx", "target": "components_productcardskeleton_productcardskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCardSkeleton.tsx", "source_location": "L4", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_dialog_tsx", "label": "dialog.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L1"}, {"id": "ui_dialog_dialogoverlay", "label": "DialogOverlay", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L17"}, {"id": "ui_dialog_dialogcontent", "label": "DialogContent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L32"}, {"id": "ui_dialog_dialogheader", "label": "DialogHeader()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L56"}, {"id": "ui_dialog_dialogfooter", "label": "DialogFooter()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L70"}, {"id": "ui_dialog_dialogtitle", "label": "DialogTitle", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L84"}, {"id": "ui_dialog_dialogdescription", "label": "DialogDescription", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L99"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "react_dialog", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogoverlay", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L17", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L32", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogheader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L56", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogfooter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L70", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogtitle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L84", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_dialog_tsx", "target": "ui_dialog_dialogdescription", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L99", "weight": 1.0}], "raw_calls": [{"caller_nid": "ui_dialog_dialogheader", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L61"}, {"caller_nid": "ui_dialog_dialogfooter", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\dialog.tsx", "source_location": "L75"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_tailwind_config_ts", "label": "tailwind.config.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\tailwind.config.ts", "source_location": "L1"}, {"id": "nutriscan_tailwind_config_config", "label": "config", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\tailwind.config.ts", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_tailwind_config_ts", "target": "tailwindcss", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\tailwind.config.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_tailwind_config_ts", "target": "nutriscan_tailwind_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\tailwind.config.ts", "source_location": "L3", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "label": "useProductFilters.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L1"}, {"id": "hooks_useproductfilters_useproductfiltersoptions", "label": "UseProductFiltersOptions", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L7"}, {"id": "hooks_useproductfilters_useproductfilters", "label": "useProductFilters()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L13"}, {"id": "hooks_useproductfilters_parsefiltersfromurl", "label": "parseFiltersFromURL()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L167"}, {"id": "hooks_useproductfilters_loadfiltersfromstorage", "label": "loadFiltersFromStorage()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L236"}, {"id": "hooks_useproductfilters_savefilterstostorage", "label": "saveFiltersToStorage()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L245"}, {"id": "hooks_useproductfilters_debounce", "label": "debounce()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L253"}], "edges": [{"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "navigation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "d_documents_github_nutriscan_lib_types_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "lib_types_productfilters", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "lib_types_filterstate", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_useproductfiltersoptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_useproductfilters", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L13", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_parsefiltersfromurl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L167", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_loadfiltersfromstorage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L236", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_savefilterstostorage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L245", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_useproductfilters_ts", "target": "hooks_useproductfilters_debounce", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useProductFilters.ts", "source_location": "L253", "weight": 1.0}, {"source": "hooks_useproductfilters_useproductfilters", "target": "hooks_useproductfilters_debounce", "relation": "calls", "context": "call", "confidence": "EXTRACTED"Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_button_tsx", "label": "button.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L1"}, {"id": "ui_button_buttonvariants", "label": "buttonVariants", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L7"}, {"id": "ui_button_buttonprops", "label": "ButtonProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L37"}, {"id": "ui_button_button", "label": "Button", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L43"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "react_slot", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "class_variance_authority", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "ui_button_buttonvariants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "ui_button_buttonprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L37", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_button_tsx", "target": "ui_button_button", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\button.tsx", "source_location": "L43", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_next_config_mjs", "label": "next.config.mjs", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\next.config.mjs", "source_location": "L1"}, {"id": "nutriscan_next_config_nextconfig", "label": "nextConfig", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\next.config.mjs", "source_location": "L2"}], "edges": [{"source": "d_documents_github_nutriscan_next_config_mjs", "target": "nutriscan_next_config_nextconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\next.config.mjs", "source_location": "L2", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "label": "useSearchCache.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L1"}, {"id": "hooks_usesearchcache_searchcachestate", "label": "SearchCacheState", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L7"}, {"id": "hooks_usesearchcache_usesearchcachereturn", "label": "UseSearchCacheReturn", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L20"}, {"id": "hooks_usesearchcache_usesearchcache", "label": "useSearchCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L51"}], "edges": [{"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "lib_openfoodfactsapi_product", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "d_documents_github_nutriscan_lib_cachemanager_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "lib_cachemanager_cachemanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "lib_cachemanager_cachedsearch", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "lib_cachemanager_filterrecord", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "hooks_usesearchcache_searchcachestate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "hooks_usesearchcache_usesearchcachereturn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L20", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_usesearchcache_ts", "target": "hooks_usesearchcache_usesearchcache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L51", "weight": 1.0}], "raw_calls": [{"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L52"}, {"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L60"}, {"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L87"}, {"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L122"}, {"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useCallback", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\useSearchCache.ts", "source_location": "L151"}, {"caller_nid": "hooks_usesearchcache_usesearchcache", "callee": "useCallback", "is_member_call": false, "Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_storysection_tsx", "label": "StorySection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L1"}, {"id": "components_storysection_storystep", "label": "StoryStep", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L3"}, {"id": "components_storysection_story_data", "label": "STORY_DATA", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L9"}, {"id": "components_storysection_storysection", "label": "StorySection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L36"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_storysection_tsx", "target": "components_storysection_storystep", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_storysection_tsx", "target": "components_storysection_story_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_storysection_tsx", "target": "components_storysection_storysection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L36", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_storysection_storysection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\StorySection.tsx", "source_location": "L55"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_card_tsx", "label": "card.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\card.tsx", "source_location": "L1"}, {"id": "components_card_cardprops", "label": "CardProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\card.tsx", "source_location": "L1"}, {"id": "components_card_card", "label": "Card()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\card.tsx", "source_location": "L14"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_card_tsx", "target": "components_card_cardprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\card.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_card_tsx", "target": "components_card_card", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\card.tsx", "source_location": "L14", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_impactsection_tsx", "label": "ImpactSection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L1"}, {"id": "components_impactsection_impactsection", "label": "ImpactSection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_impactsection_tsx", "target": "components_impactsection_impactsection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L3", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_impactsection_impactsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L21"}, {"caller_nid": "components_impactsection_impactsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L43"}, {"caller_nid": "components_impactsection_impactsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\ImpactSection.tsx", "source_location": "L72"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "label": "DeleteButton.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L1"}, {"id": "components_deletebutton_deletebuttonprops", "label": "DeleteButtonProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L19"}, {"id": "components_deletebutton_deletebutton", "label": "DeleteButton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L25"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialog", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogaction", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogcancel", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogdescription", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogfooter", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogheader", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogtitle", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "ui_alert_dialog_alertdialogtrigger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\DeleteButton.tsx", "source_location": "L14", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_deletebutton_tsx", "target": "app_actions_deletarLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_pagetitle_tsx", "label": "PageTitle.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\PageTitle.tsx", "source_location": "L1"}, {"id": "components_pagetitle_pagetitle", "label": "PageTitle()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\PageTitle.tsx", "source_location": "L4"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_pagetitle_tsx", "target": "framer_motion", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\PageTitle.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_pagetitle_tsx", "target": "components_pagetitle_pagetitle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\PageTitle.tsx", "source_location": "L4", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_skeleton_tsx", "label": "skeleton.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L1"}, {"id": "ui_skeleton_skeleton", "label": "Skeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_skeleton_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_skeleton_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_skeleton_tsx", "target": "ui_skeleton_skeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L3", "weight": 1.0}], "raw_calls": [{"caller_nid": "ui_skeleton_skeleton", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\skeleton.tsx", "source_location": "L9"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "label": "openFoodFactsApi.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L1"}, {"id": "lib_openfoodfactsapi_product", "label": "Product", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L6"}, {"id": "lib_openfoodfactsapi_searchresult", "label": "SearchResult", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L34"}, {"id": "lib_openfoodfactsapi_config", "label": "CONFIG", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L43"}, {"id": "lib_openfoodfactsapi_nutriscanerror", "label": "NutriScanError", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L54"}, {"id": "lib_openfoodfactsapi_nutriscanerror_constructor", "label": ".constructor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L55"}, {"id": "lib_openfoodfactsapi_makeapirequest", "label": "makeApiRequest()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L64"}, {"id": "lib_openfoodfactsapi_searchbybarcode", "label": "searchByBarcode()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L99"}, {"id": "lib_openfoodfactsapi_searchbyname", "label": "searchByName()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L118"}, {"id": "lib_openfoodfactsapi_fetchallresults", "label": "fetchAllResults()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L138"}, {"id": "lib_openfoodfactsapi_sortproducts", "label": "sortProducts()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L175"}, {"id": "lib_openfoodfactsapi_calculatecompletenessscore", "label": "calculateCompletenessScore()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L218"}, {"id": "lib_openfoodfactsapi_getgradevalue", "label": "getGradeValue()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L231"}, {"id": "lib_openfoodfactsapi_formatnutritiondata", "label": "formatNutritionData()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L239"}, {"id": "lib_openfoodfactsapi_detectsearchtype", "label": "detectSearchType()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L264"}, {"id": "lib_openfoodfactsapi_isvalidbarcode", "label": "isValidBarcode()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L269"}], "edges": [{"source": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "target": "lib_openfoodfactsapi_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "target": "lib_openfoodfactsapi_searchresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L34", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "target": "lib_openfoodfactsapi_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L43", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "target": "lib_openfoodfactsapi_nutriscanerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L54", "weight": 1.0}, {"source": "lib_openfoodfactsapi_nutriscanerror", "target": "lib_openfoodfactsapi_nutriscanerror_constructor", "relation": "method", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L55", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "target": "lib_openfoodfactsapi_makeapirequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\openFoodFactsApi.ts", "source_location": "L64", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_openfoodfactsapLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_cachemanager_ts", "label": "cacheManager.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L1"}, {"id": "lib_cachemanager_filtervalue", "label": "FilterValue", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L9"}, {"id": "lib_cachemanager_filterrecord", "label": "FilterRecord", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L17"}, {"id": "lib_cachemanager_cachedsearch", "label": "CachedSearch", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L19"}, {"id": "lib_cachemanager_cacheconfig", "label": "CacheConfig", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L29"}, {"id": "lib_cachemanager_default_config", "label": "DEFAULT_CONFIG", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L35"}, {"id": "lib_cachemanager_cachemanager", "label": "CacheManager", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L41"}, {"id": "lib_cachemanager_cachemanager_constructor", "label": ".constructor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L46"}, {"id": "lib_cachemanager_cachemanager_generatecachekey", "label": ".generateCacheKey()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L53"}, {"id": "lib_cachemanager_cachemanager_generatesearchid", "label": ".generateSearchId()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L66"}, {"id": "lib_cachemanager_cachemanager_iscachevalid", "label": ".isCacheValid()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L73"}, {"id": "lib_cachemanager_cachemanager_getcacheindex", "label": ".getCacheIndex()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L80"}, {"id": "lib_cachemanager_cachemanager_updatecacheindex", "label": ".updateCacheIndex()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L92"}, {"id": "lib_cachemanager_cachemanager_getobjectsize", "label": ".getObjectSize()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L103"}, {"id": "lib_cachemanager_cachemanager_cleanupoldcaches", "label": ".cleanupOldCaches()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L110"}, {"id": "lib_cachemanager_cachemanager_savesearch", "label": ".saveSearch()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L158"}, {"id": "lib_cachemanager_cachemanager_getsearch", "label": ".getSearch()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L210"}, {"id": "lib_cachemanager_cachemanager_removesearch", "label": ".removeSearch()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L238"}, {"id": "lib_cachemanager_cachemanager_clearallcaches", "label": ".clearAllCaches()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L261"}, {"id": "lib_cachemanager_cachemanager_getcachestats", "label": ".getCacheStats()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L274"}, {"id": "lib_cachemanager_cachemanager_hasspacefordata", "label": ".hasSpaceForData()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L324"}, {"id": "lib_cachemanager_usecachemanager", "label": "useCacheManager()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L338"}], "edges": [{"source": "d_documents_github_nutriscan_lib_cachemanager_ts", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_cachemanager_ts", "target": "lib_openfoodfactsapi_product", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\cacheManager.ts", "source_location": "Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "label": "FilterBadge.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L1"}, {"id": "components_filterbadge_filterbadgeprops", "label": "FilterBadgeProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L7"}, {"id": "components_filterbadge_filterbadge", "label": "FilterBadge()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L14"}, {"id": "components_filterbadge_filterbadgesprops", "label": "FilterBadgesProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L40"}, {"id": "components_filterbadge_filterbadges", "label": "FilterBadges()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L46"}, {"id": "components_filterbadge_getfilterlabel", "label": "getFilterLabel()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L127"}, {"id": "components_filterbadge_getfiltercolor", "label": "getFilterColor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L146"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "d_documents_github_nutriscan_components_ui_badge_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "ui_badge_badge", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_filterbadgeprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_filterbadge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L14", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_filterbadgesprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L40", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_filterbadges", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L46", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_getfilterlabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L127", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filterbadge_tsx", "target": "components_filterbadge_getfiltercolor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterBadge.tsx", "source_location": "L146", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_filterbadge_filterbadges", "callee": "filtLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_ctasection_tsx", "label": "CTASection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L1"}, {"id": "components_ctasection_ctasection", "label": "CTASection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L6"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_ctasection_tsx", "target": "link", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_ctasection_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_ctasection_tsx", "target": "components_ctasection_ctasection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_ctasection_ctasection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\CTASection.tsx", "source_location": "L60"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "label": "PersuasiveCTA.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L1"}, {"id": "landing_persuasivecta_persuasivecta", "label": "PersuasiveCTA()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L9"}, {"id": "landing_persuasivecta_arrowright", "label": "ArrowRight()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L132"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "navigation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "hooks_use_search_logic_usesearchlogic", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "landing_persuasivecta_persuasivecta", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_landing_persuasivecta_tsx", "target": "landing_persuasivecta_arrowright", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L132", "weight": 1.0}], "raw_calls": [{"caller_nid": "landing_persuasivecta_persuasivecta", "callee": "useRouter", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L10"}, {"caller_nid": "landing_persuasivecta_persuasivecta", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L11"}, {"caller_nid": "landing_persuasivecta_persuasivecta", "callee": "useSearchLogic", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L12"}, {"caller_nid": "landing_persuasivecta_persuasivecta", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L102"}, {"caller_nid": "landing_persuasivecta_persuasivecta", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\landing\\PersuasiveCTA.tsx", "source_location": "L115"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_cardlist_tsx", "label": "CardList.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L1"}, {"id": "components_cardlist_produto", "label": "Produto", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L4"}, {"id": "components_cardlist_cardlistprops", "label": "CardListProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L15"}, {"id": "components_cardlist_cardlist", "label": "CardList()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L19"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "app_actions_listarprodutos", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "d_documents_github_nutriscan_app_components_listaproductcard_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "components_listaproductcard_listaproductcard", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "components_cardlist_produto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "components_cardlist_cardlistprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L15", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cardlist_tsx", "target": "components_cardlist_cardlist", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_cardlist_cardlist", "callee": "listarProdutos", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L20"}, {"caller_nid": "components_cardlist_cardlist", "callee": "filter", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L30"}, {"caller_nid": "components_cardlist_cardlist", "callee": "filter", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L31"}, {"caller_nid": "components_cardlist_cardlist", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L38"}, {"caller_nid": "components_cardlist_cardlist", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CardList.tsx", "source_location": "L54"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_geolocation_ts", "label": "geolocation.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L1"}, {"id": "lib_geolocation_countryinfo", "label": "CountryInfo", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L6"}, {"id": "lib_geolocation_iscachevalid", "label": "isCacheValid()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L18"}, {"id": "lib_geolocation_getcachedcountry", "label": "getCachedCountry()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L35"}, {"id": "lib_geolocation_savetocache", "label": "saveToCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L52"}, {"id": "lib_geolocation_detectusercountry", "label": "detectUserCountry()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L74"}, {"id": "lib_geolocation_clearcountrycache", "label": "clearCountryCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L115"}, {"id": "lib_geolocation_getcurrentcountry", "label": "getCurrentCountry()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L124"}, {"id": "lib_geolocation_isbrazil", "label": "isBrazil()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L134"}, {"id": "lib_geolocation_getcountrycodeforapi", "label": "getCountryCodeForAPI()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L142"}], "edges": [{"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_countryinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_iscachevalid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L18", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_getcachedcountry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L35", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_savetocache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L52", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_detectusercountry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L74", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_clearcountrycache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L115", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_getcurrentcountry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L124", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_isbrazil", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L134", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_geolocation_ts", "target": "lib_geolocation_getcountrycodeforapi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L142", "weight": 1.0}, {"source": "lib_geolocation_detectusercountry", "target": "lib_geolocation_iscachevalid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L78", "weight": 1.0}, {"source": "lib_geolocation_detectusercountry", "target": "lib_geolocation_getcachedcountry", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\geolocation.ts", "source_location": "L79", "weight": 1.0}, {"source": "lib_geolocation_detectusercountry", "target": "lib_geLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_productcard_tsx", "label": "ProductCard.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L1"}, {"id": "components_productcard_productcardprops", "label": "ProductCardProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L10"}, {"id": "components_productcard_nutri_grade_class", "label": "NUTRI_GRADE_CLASS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L18"}, {"id": "components_productcard_getverdict", "label": "getVerdict()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L22"}, {"id": "components_productcard_getverdictdotbg", "label": "getVerdictDotBg()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L28"}, {"id": "components_productcard_getimageurl", "label": "getImageUrl()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L34"}, {"id": "components_productcard_nutriletter", "label": "NutriLetter()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L45"}, {"id": "components_productcard_verdictdot", "label": "VerdictDot()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L60"}, {"id": "components_productcard_mobilecard", "label": "MobileCard()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L75"}, {"id": "components_productcard_defaultcard", "label": "DefaultCard()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L152"}, {"id": "components_productcard_productcard", "label": "ProductCard()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L289"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "link", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "d_documents_github_nutriscan_components_optimizedimage_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "components_optimizedimage_optimizedimage", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "lib_openfoodfactsapi_product", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "lib_openfoodfactsapi_formatnutritiondata", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductCard.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productcard_tsx", "target": "d_documenLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "label": "use-search-logic.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L1"}, {"id": "hooks_use_search_logic_searchtype", "label": "SearchType", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L7"}, {"id": "hooks_use_search_logic_usesearchlogic", "label": "useSearchLogic()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L9"}], "edges": [{"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "lib_openfoodfactsapi_detectsearchtype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "lib_openfoodfactsapi_isvalidbarcode", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "hooks_use_search_logic_searchtype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_search_logic_ts", "target": "hooks_use_search_logic_usesearchlogic", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "hooks_use_search_logic_usesearchlogic", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L10"}, {"caller_nid": "hooks_use_search_logic_usesearchlogic", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L11"}, {"caller_nid": "hooks_use_search_logic_usesearchlogic", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L13"}, {"caller_nid": "hooks_use_search_logic_usesearchlogic", "callee": "isValidBarcode", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-search-logic.ts", "source_location": "L22"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "label": "alert-dialog.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L1"}, {"id": "ui_alert_dialog_alertdialogoverlay", "label": "AlertDialogOverlay", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L15"}, {"id": "ui_alert_dialog_alertdialogcontent", "label": "AlertDialogContent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L30"}, {"id": "ui_alert_dialog_alertdialogheader", "label": "AlertDialogHeader()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L48"}, {"id": "ui_alert_dialog_alertdialogfooter", "label": "AlertDialogFooter()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L62"}, {"id": "ui_alert_dialog_alertdialogtitle", "label": "AlertDialogTitle", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L76"}, {"id": "ui_alert_dialog_alertdialogdescription", "label": "AlertDialogDescription", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L88"}, {"id": "ui_alert_dialog_alertdialogaction", "label": "AlertDialogAction", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L101"}, {"id": "ui_alert_dialog_alertdialogcancel", "label": "AlertDialogCancel", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L113"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "react_alert_dialog", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "ui_button_buttonvariants", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "ui_alert_dialog_alertdialogoverlay", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L15", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "ui_alert_dialog_alertdialogcontent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L30", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "ui_alert_dialog_alertdialogheader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L48", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_alert_dialog_tsx", "target": "ui_alert_dialog_alertdialogfooter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\alert-dialog.tsx", "source_location": "L62", "weightLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "label": "NutritionChart.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L1"}, {"id": "components_nutritionchart_nutritiondata", "label": "NutritionData", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L6"}, {"id": "components_nutritionchart_nutritionchartprops", "label": "NutritionChartProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L16"}, {"id": "components_nutritionchart_nutritionchart", "label": "NutritionChart()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L21"}, {"id": "components_nutritionchart_nutritionsummaryprops", "label": "NutritionSummaryProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L165"}, {"id": "components_nutritionchart_nutritionsummary", "label": "NutritionSummary()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L170"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "d_documents_github_nutriscan_components_ui_card_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "ui_card_card", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "ui_card_cardcontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "ui_card_cardheader", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "ui_card_cardtitle", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "d_documents_github_nutriscan_components_ui_badge_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "ui_badge_badge", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "components_nutritionchart_nutritiondata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "components_nutritionchart_nutritionchartprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L16", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "components_nutritionchart_nutritionchart", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L21", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "components_nutritionchart_nutritionsummaryprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutritionChart.tsx", "source_location": "L165", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutritionchart_tsx", "target": "components_nutritionchart_nutritionsummary", "relation": "coLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_slider_tsx", "label": "slider.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L1"}, {"id": "ui_slider_slider", "label": "Slider", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L8"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_slider_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_slider_tsx", "target": "react_slider", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_slider_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_slider_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_slider_tsx", "target": "ui_slider_slider", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\slider.tsx", "source_location": "L8", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sitemap_ts", "label": "sitemap.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sitemap.ts", "source_location": "L1"}, {"id": "app_sitemap_sitemap", "label": "sitemap()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sitemap.ts", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_app_sitemap_ts", "target": "next", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sitemap.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sitemap_ts", "target": "app_sitemap_sitemap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sitemap.ts", "source_location": "L3", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_label_tsx", "label": "label.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L1"}, {"id": "ui_label_labelvariants", "label": "labelVariants", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L9"}, {"id": "ui_label_label", "label": "Label", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L13"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "react_label", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "class_variance_authority", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "ui_label_labelvariants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_label_tsx", "target": "ui_label_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\label.tsx", "source_location": "L13", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_page_tsx", "label": "page.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L1"}, {"id": "app_page_home", "label": "Home()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L9"}], "edges": [{"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_header_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "components_header_header", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_footer_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "components_footer_footer", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_landing_hero_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "landing_hero_hero", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_landing_features_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "landing_features_features", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_landing_howitworks_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "landing_howitworks_howitworks", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_landing_donationsection_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "landing_donationsection_donationsection", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "d_documents_github_nutriscan_app_components_landing_trustbadges_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "landing_trustbadges_trustbadges", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_page_tsx", "target": "app_page_home", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\page.tsx", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "label": "ProductSkeleton.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L1"}, {"id": "components_productskeleton_skeletonprops", "label": "SkeletonProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L4"}, {"id": "components_productskeleton_skeleton", "label": "Skeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L6"}, {"id": "components_productskeleton_productskeleton", "label": "ProductSkeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L17"}, {"id": "components_productskeleton_productcardskeleton", "label": "ProductCardSkeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L83"}, {"id": "components_productskeleton_nutritionbarskeleton", "label": "NutritionBarSkeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L104"}, {"id": "components_productskeleton_badgeskeleton", "label": "BadgeSkeleton()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L116"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_skeletonprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_skeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_productskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L17", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_productcardskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L83", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_nutritionbarskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L104", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_productskeleton_tsx", "target": "components_productskeleton_badgeskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L116", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_productskeleton_skeleton", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L9"}, {"caller_nid": "components_productskeleton_productskeleton", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L19"}, {"caller_nid": "components_productskeleton_productskeleton", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L38"}, {"caller_nid": "components_productskeleton_productskeleton", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ProductSkeleton.tsx", "source_location": "L50"}, {"caLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "label": "FilterSidebar.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L1"}, {"id": "components_filtersidebar_filtersidebarprops", "label": "FilterSidebarProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L43"}, {"id": "components_filtersidebar_filtersidebar", "label": "FilterSidebar()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L60"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L18", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L19", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L19", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "d_documents_github_nutriscan_components_ui_input_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L20", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_input_input", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L20", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "d_documents_github_nutriscan_components_ui_checkbox_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L21", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_checkbox_checkbox", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L21", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "d_documents_github_nutriscan_components_ui_radio_group_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L22", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_radio_group_radiogroup", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L22", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_radio_group_radiogroupitem", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L22", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "d_documents_github_nutriscan_components_ui_switch_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\FilterSidebar.tsx", "source_location": "L23", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_filtersidebar_tsx", "target": "ui_switch_Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_items_tsx", "label": "items.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L1"}, {"id": "components_items_items", "label": "Items()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_items_tsx", "target": "d_documents_github_nutriscan_lib_prisma_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_items_tsx", "target": "components_items_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L3", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_items_items", "callee": "findMany", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L4"}, {"caller_nid": "components_items_items", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\items.tsx", "source_location": "L5"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_searchbar_tsx", "label": "SearchBar.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L1"}, {"id": "components_searchbar_searchbarprops", "label": "SearchBarProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L9"}, {"id": "components_searchbar_searchbar", "label": "SearchBar()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L16"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "navigation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "lib_openfoodfactsapi_detectsearchtype", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "lib_openfoodfactsapi_isvalidbarcode", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "components_searchbar_searchbarprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L9", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_searchbar_tsx", "target": "components_searchbar_searchbar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L16", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_searchbar_searchbar", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L22"}, {"caller_nid": "components_searchbar_searchbar", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L23"}, {"caller_nid": "components_searchbar_searchbar", "callee": "useRouter", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L24"}, {"caller_nid": "components_searchbar_searchbar", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L26"}, {"caller_nid": "components_searchbar_searchbar", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L58"}, {"caller_nid": "components_searchbar_searchbar", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\SearchBar.tsx", "source_location": "L67"}, {"caller_nid": "components_searchbar_searchbar",Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_sw_js", "label": "sw.js", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\sw.js", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "label": "ErrorBoundary.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L1"}, {"id": "components_errorboundary_props", "label": "Props", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L5"}, {"id": "components_errorboundary_state", "label": "State", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L10"}, {"id": "components_errorboundary_errorboundary", "label": "ErrorBoundary", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L18"}, {"id": "components_errorboundary_errorboundary_constructor", "label": ".constructor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L19"}, {"id": "components_errorboundary_errorboundary_getderivedstatefromerror", "label": ".getDerivedStateFromError()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L24"}, {"id": "components_errorboundary_errorboundary_componentdidcatch", "label": ".componentDidCatch()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L28"}, {"id": "components_errorboundary_errorboundary_render", "label": ".render()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L47"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "target": "components_errorboundary_props", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "target": "components_errorboundary_state", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L10", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_errorboundary_tsx", "target": "components_errorboundary_errorboundary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L18", "weight": 1.0}, {"source": "components_errorboundary_errorboundary", "target": "components_errorboundary_errorboundary_constructor", "relation": "method", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L19", "weight": 1.0}, {"source": "components_errorboundary_errorboundary", "target": "components_errorboundary_errorboundary_getderivedstatefromerror", "relation": "method", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L24", "weight": 1.0}, {"source": "components_errorboundary_errorboundary", "target": "components_errorboundary_errorboundary_componentdidcatch", "relation": "method", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L28", "weight": 1.0}, {"source": "components_errorboundary_errorboundary", "target": "components_errorboundary_errorboundary_render", "relation": "method", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L47", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_errorboundary_errorboundary_constructor", "callee": "super", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L20"}, {"caller_nid": "components_errorboundary_errorboundary_componentdidcatch", "callee": "track", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L32"}, {"caller_nid": "components_errorboundary_errorboundary_componentdidcatch", "callee": "toISOString", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\ErrorBoundary.tsx", "source_location": "L37"}, {"caller_nid": "components_errorboundary_errorboundary_componentdidcatch", "callee": "error", "is_member_call": Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "label": "jsonCacheManager.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L1"}, {"id": "lib_jsoncachemanager_jsoncachedata", "label": "JsonCacheData", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L12"}, {"id": "lib_jsoncachemanager_jsoncachemanager", "label": "JsonCacheManager", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L18"}, {"id": "lib_jsoncachemanager_jsoncachemanager_constructor", "label": ".constructor()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L23"}, {"id": "lib_jsoncachemanager_jsoncachemanager_getinstance", "label": ".getInstance()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L46"}, {"id": "lib_jsoncachemanager_jsoncachemanager_loadcache", "label": ".loadCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L56"}, {"id": "lib_jsoncachemanager_jsoncachemanager_savecache", "label": ".saveCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L89"}, {"id": "lib_jsoncachemanager_jsoncachemanager_converttocachedproduct", "label": ".convertToCachedProduct()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L111"}, {"id": "lib_jsoncachemanager_jsoncachemanager_converttoapiproduct", "label": ".convertToAPIProduct()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L125"}, {"id": "lib_jsoncachemanager_jsoncachemanager_mergeproductdata", "label": ".mergeProductData()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L134"}, {"id": "lib_jsoncachemanager_jsoncachemanager_calculaterelevancescore", "label": ".calculateRelevanceScore()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L152"}, {"id": "lib_jsoncachemanager_jsoncachemanager_getproductbycode", "label": ".getProductByCode()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L188"}, {"id": "lib_jsoncachemanager_jsoncachemanager_searchproducts", "label": ".searchProducts()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L211"}, {"id": "lib_jsoncachemanager_jsoncachemanager_saveproduct", "label": ".saveProduct()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L289"}, {"id": "lib_jsoncachemanager_jsoncachemanager_saveproducts", "label": ".saveProducts()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L327"}, {"id": "lib_jsoncachemanager_jsoncachemanager_getstoragestats", "label": ".getStorageStats()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L384"}, {"id": "lib_jsoncachemanager_jsoncachemanager_clearcache", "label": ".clearCache()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L431"}, {"id": "lib_jsoncachemanager_jsoncachemanager_isinitialized", "label": ".isInitialized()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L450"}], "edges": [{"source": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "target": "fs", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "target": "fs", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "target": "path", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\jsonCacheManager.ts", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "target": "d_documents_github_nutriscan_lib_openfoodfactsapi_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\GithLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_theme_toggle_tsx", "label": "theme-toggle.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L1"}, {"id": "components_theme_toggle_themetoggle", "label": "ThemeToggle()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L13"}], "edges": [{"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "next_themes", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "d_documents_github_nutriscan_components_ui_dropdown_menu_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "ui_dropdown_menu_dropdownmenu", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "ui_dropdown_menu_dropdownmenucontent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "ui_dropdown_menu_dropdownmenuitem", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "ui_dropdown_menu_dropdownmenutrigger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_theme_toggle_tsx", "target": "components_theme_toggle_themetoggle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L13", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_theme_toggle_themetoggle", "callee": "useTheme", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\theme-toggle.tsx", "source_location": "L14"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_missionsection_tsx", "label": "MissionSection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L1"}, {"id": "components_missionsection_mission_values", "label": "MISSION_VALUES", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L5"}, {"id": "components_missionsection_missionsection", "label": "MissionSection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L26"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_missionsection_tsx", "target": "image", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_missionsection_tsx", "target": "components_missionsection_mission_values", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_missionsection_tsx", "target": "components_missionsection_missionsection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L26", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_missionsection_missionsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L44"}, {"caller_nid": "components_missionsection_missionsection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\MissionSection.tsx", "source_location": "L70"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "label": "use-geolocation.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L1"}, {"id": "hooks_use_geolocation_usegeolocation", "label": "useGeolocation()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L6"}, {"id": "hooks_use_geolocation_setscannedcountry", "label": "setScannedCountry()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L27"}], "edges": [{"source": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "target": "d_documents_github_nutriscan_lib_geolocation_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "target": "lib_geolocation_detectusercountry", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "target": "hooks_use_geolocation_usegeolocation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_hooks_use_geolocation_ts", "target": "hooks_use_geolocation_setscannedcountry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L27", "weight": 1.0}], "raw_calls": [{"caller_nid": "hooks_use_geolocation_usegeolocation", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L7"}, {"caller_nid": "hooks_use_geolocation_usegeolocation", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L8"}, {"caller_nid": "hooks_use_geolocation_usegeolocation", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\hooks\\use-geolocation.ts", "source_location": "L10"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_badge_tsx", "label": "badge.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L1"}, {"id": "ui_badge_badgevariants", "label": "badgeVariants", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L6"}, {"id": "ui_badge_badgeprops", "label": "BadgeProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L26"}, {"id": "ui_badge_badge", "label": "Badge()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L30"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "class_variance_authority", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "ui_badge_badgevariants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "ui_badge_badgeprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L26", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_badge_tsx", "target": "ui_badge_badge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L30", "weight": 1.0}, {"source": "ui_badge_badge", "target": "ui_badge_badgevariants", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L32", "weight": 1.0}], "raw_calls": [{"caller_nid": "ui_badge_badge", "callee": "cn", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\badge.tsx", "source_location": "L32"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_input_tsx", "label": "input.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L1"}, {"id": "ui_input_input", "label": "Input", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L5"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_input_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_input_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_input_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_input_tsx", "target": "ui_input_input", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\input.tsx", "source_location": "L5", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "label": "NutriScoreBadge.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L1"}, {"id": "components_nutriscorebadge_nutriscorebadgeprops", "label": "NutriScoreBadgeProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L5"}, {"id": "components_nutriscorebadge_grade_info", "label": "GRADE_INFO", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L12"}, {"id": "components_nutriscorebadge_grade_class", "label": "GRADE_CLASS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L20"}, {"id": "components_nutriscorebadge_size_class", "label": "SIZE_CLASS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L24"}, {"id": "components_nutriscorebadge_nutriscorebadge", "label": "NutriScoreBadge()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L30"}, {"id": "components_nutriscorebadge_novabadgeprops", "label": "NovaBadgeProps", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L71"}, {"id": "components_nutriscorebadge_nova_info", "label": "NOVA_INFO", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L78"}, {"id": "components_nutriscorebadge_novabadge", "label": "NovaBadge()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L85"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_nutriscorebadgeprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_grade_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L12", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_grade_class", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L20", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_size_class", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L24", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_nutriscorebadge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L30", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_novabadgeprops", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\NutriScoreBadge.tsx", "source_location": "L71", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_nutriscorebadge_tsx", "target": "components_nutriscorebadge_nova_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\DLine truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_prisma_ts", "label": "prisma.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\prisma.ts", "source_location": "L1"}, {"id": "lib_prisma_prisma", "label": "prisma", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\prisma.ts", "source_location": "L3"}], "edges": [{"source": "d_documents_github_nutriscan_lib_prisma_ts", "target": "client", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\prisma.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_prisma_ts", "target": "lib_prisma_prisma", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\prisma.ts", "source_location": "L3", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_sobre_components_howitworkssection_tsx", "label": "HowItWorksSection.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L1"}, {"id": "components_howitworkssection_steps", "label": "STEPS", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L3"}, {"id": "components_howitworkssection_howitworkssection", "label": "HowItWorksSection()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L27"}], "edges": [{"source": "d_documents_github_nutriscan_app_sobre_components_howitworkssection_tsx", "target": "components_howitworkssection_steps", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_sobre_components_howitworkssection_tsx", "target": "components_howitworkssection_howitworkssection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L27", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_howitworkssection_howitworkssection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L46"}, {"caller_nid": "components_howitworkssection_howitworkssection", "callee": "map", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\sobre\\components\\HowItWorksSection.tsx", "source_location": "L82"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "label": "CacheOnlySwitch.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L1"}, {"id": "components_cacheonlyswitch_cacheonlyswitch", "label": "CacheOnlySwitch()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L8"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "d_documents_github_nutriscan_components_ui_switch_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "ui_switch_switch", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "d_documents_github_nutriscan_components_ui_label_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "ui_label_label", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "lucide_react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_cacheonlyswitch_tsx", "target": "components_cacheonlyswitch_cacheonlyswitch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_cacheonlyswitch_cacheonlyswitch", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L9"}, {"caller_nid": "components_cacheonlyswitch_cacheonlyswitch", "callee": "useEffect", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\CacheOnlySwitch.tsx", "source_location": "L13"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_docs_resedesign_extract_js", "label": "extract.js", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L1"}, {"id": "resedesign_extract_fs", "label": "fs", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L1"}, {"id": "resedesign_extract_path", "label": "path", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L2"}, {"id": "resedesign_extract_html", "label": "html", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L3"}, {"id": "resedesign_extract_start", "label": "start", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L6"}, {"id": "resedesign_extract_end", "label": "end", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L7"}, {"id": "resedesign_extract_raw", "label": "raw", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L8"}, {"id": "resedesign_extract_decoded", "label": "decoded", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L11"}], "edges": [{"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "fs", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_fs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "path", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_html", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_start", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_end", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L7", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_raw", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L8", "weight": 1.0}, {"source": "d_documents_github_nutriscan_docs_resedesign_extract_js", "target": "resedesign_extract_decoded", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\docs\\resedesign\\extract.js", "source_location": "L11", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_lib_types_rybbit_d_ts", "label": "rybbit.d.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L1"}, {"id": "types_rybbit_d_rybbittrackevent", "label": "RybbitTrackEvent", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L6"}, {"id": "types_rybbit_d_rybbit", "label": "Rybbit", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L19"}, {"id": "types_rybbit_d_window", "label": "Window", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L24"}], "edges": [{"source": "d_documents_github_nutriscan_lib_types_rybbit_d_ts", "target": "types_rybbit_d_rybbittrackevent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_types_rybbit_d_ts", "target": "types_rybbit_d_rybbit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L19", "weight": 1.0}, {"source": "d_documents_github_nutriscan_lib_types_rybbit_d_ts", "target": "types_rybbit_d_window", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\lib\\types\\rybbit.d.ts", "source_location": "L24", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_components_ui_separator_tsx", "label": "separator.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L1"}, {"id": "ui_separator_separator", "label": "Separator", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L8"}], "edges": [{"source": "d_documents_github_nutriscan_components_ui_separator_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_separator_tsx", "target": "react_separator", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_separator_tsx", "target": "d_documents_github_nutriscan_lib_utils_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_separator_tsx", "target": "lib_utils_cn", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_components_ui_separator_tsx", "target": "ui_separator_separator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\components\\ui\\separator.tsx", "source_location": "L8", "weight": 1.0}], "raw_calls": []}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_components_idinput_tsx", "label": "IdInput.tsx", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L1"}, {"id": "components_idinput_idinput", "label": "IdInput()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L8"}], "edges": [{"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "react", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "navigation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L3", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "d_documents_github_nutriscan_components_ui_input_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "ui_input_input", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L4", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "d_documents_github_nutriscan_components_ui_button_tsx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "ui_button_button", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L5", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "d_documents_github_nutriscan_app_actions_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "app_actions_verificarlista", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L6", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_components_idinput_tsx", "target": "components_idinput_idinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "components_idinput_idinput", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L9"}, {"caller_nid": "components_idinput_idinput", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L10"}, {"caller_nid": "components_idinput_idinput", "callee": "useState", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L11"}, {"caller_nid": "components_idinput_idinput", "callee": "useRouter", "is_member_call": false, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\components\\IdInput.tsx", "source_location": "L12"}]}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
{"nodes": [{"id": "d_documents_github_nutriscan_app_api_cache_sync_route_ts", "label": "route.ts", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L1"}, {"id": "sync_route_post", "label": "POST()", "file_type": "code", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L4"}], "edges": [{"source": "d_documents_github_nutriscan_app_api_cache_sync_route_ts", "target": "server", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L1", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_cache_sync_route_ts", "target": "d_documents_github_nutriscan_lib_jsoncachemanager_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_cache_sync_route_ts", "target": "lib_jsoncachemanager_jsoncachemanager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L2", "weight": 1.0}, {"source": "d_documents_github_nutriscan_app_api_cache_sync_route_ts", "target": "sync_route_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L4", "weight": 1.0}], "raw_calls": [{"caller_nid": "sync_route_post", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L6"}, {"caller_nid": "sync_route_post", "callee": "isArray", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L8"}, {"caller_nid": "sync_route_post", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L9"}, {"caller_nid": "sync_route_post", "callee": "saveProducts", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L16"}, {"caller_nid": "sync_route_post", "callee": "log", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L18"}, {"caller_nid": "sync_route_post", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L20"}, {"caller_nid": "sync_route_post", "callee": "error", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L26"}, {"caller_nid": "sync_route_post", "callee": "json", "is_member_call": true, "source_file": "D:\\Documents\\Github\\nutriscan\\app\\api\\cache\\sync\\route.ts", "source_location": "L27"}]}
|
||||
Loaded 100 of 146 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user