@lakindu_perera/toren 1.0.10 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +2 -0
- package/dist/cli/toren.js +2 -1
- package/dist/cli/toren.js.map +1 -1
- package/dist/detectors/technology-stack-detector.d.ts +105 -0
- package/dist/detectors/technology-stack-detector.js +1629 -0
- package/dist/detectors/technology-stack-detector.js.map +1 -0
- package/dist/focused-output.js +63 -2
- package/dist/focused-output.js.map +1 -1
- package/dist/renderers/console-renderer.js +51 -0
- package/dist/renderers/console-renderer.js.map +1 -1
- package/dist/renderers/html-renderer.js +78 -0
- package/dist/renderers/html-renderer.js.map +1 -1
- package/dist/scanner/scan.d.ts +19 -0
- package/dist/scanner/scan.js +64 -31
- package/dist/scanner/scan.js.map +1 -1
- package/dist/types/index.d.ts +64 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.1.0] - 2026-09-09
|
|
9
|
+
### Added
|
|
10
|
+
- Technology Stack detector for Testing, Build, Quality, Container, and Deployment tools.
|
|
11
|
+
- `--tech-stack` (and `--stack` alias) CLI flag for focused technology breakdown.
|
|
12
|
+
- Technology Stack section included in JSON, Console, Markdown, and HTML outputs.
|
|
13
|
+
- **Backend Framework Detection**: Detects Node.js (Express, Fastify, NestJS, Koa, Hapi), Python (Django, Flask, FastAPI), Java (Spring Boot), PHP (Laravel), and Ruby (Rails) backends using package dependency and structural file evidence only.
|
|
14
|
+
- **Database Detection**: Detects PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, and Redis from package dependencies and config/schema files. Never reads `.env` files or credentials.
|
|
15
|
+
- **ORM / Data-Access Detection**: Independently detects Prisma, Drizzle, TypeORM, Sequelize, Mongoose, Knex, SQLAlchemy, Hibernate, Django ORM, Eloquent, and Active Record. ORMs are never inferred from database type and vice-versa.
|
|
16
|
+
- **Safety Guarantees**: `.env`, `.env.*` secret files are never read or inspected. Database URLs and credentials are never used as evidence. All signals are structural (package names, file presence, config files).
|
|
17
|
+
- **128 new tests** covering all backend, database, ORM detectors plus false-positive guards, `.env` safety, category ordering, and `scan()` integration fixtures.
|
|
18
|
+
|
|
8
19
|
## [1.0.10] - 2026-09-06
|
|
9
20
|
### Added
|
|
10
21
|
- **Full Tree Output**: Added a new `--all` (or `-a`) flag to the CLI. This flag bypasses the default display limit and prints the complete directory tree without hiding any files or folders, making it easier to view, copy, or document the entire file structure.
|
package/README.md
CHANGED
|
@@ -74,6 +74,7 @@ toren --scripts
|
|
|
74
74
|
toren --summary
|
|
75
75
|
toren --important-files
|
|
76
76
|
toren --health
|
|
77
|
+
toren --stack
|
|
77
78
|
|
|
78
79
|
# Lifecycle & Help Commands
|
|
79
80
|
toren --help
|
|
@@ -96,6 +97,7 @@ toren --uninstall
|
|
|
96
97
|
| `--summary` | Show project summary only. |
|
|
97
98
|
| `--important-files` | Show important files only. |
|
|
98
99
|
| `--health` | Show project health observations only. |
|
|
100
|
+
| `--stack`, `--tech-stack` | Show detected technology stack only. |
|
|
99
101
|
| `--format <type>` | Output format: `console` (default), `json`, `markdown`, `html`. |
|
|
100
102
|
| `--include-hidden` | Include hidden files and dot-directories in the scan. |
|
|
101
103
|
| `--max-files <n>` | Override the default 50,000-file scan limit. |
|
package/dist/cli/toren.js
CHANGED
|
@@ -64,7 +64,8 @@ Fast Repository Discovery CLI
|
|
|
64
64
|
--scripts Show available package scripts only
|
|
65
65
|
--summary Show project summary only
|
|
66
66
|
--important-files Show important files only
|
|
67
|
-
--health Show project health observations
|
|
67
|
+
--health Show project health observations
|
|
68
|
+
--stack, --tech-stack Show detected technology stack only
|
|
68
69
|
--include-hidden Include hidden files and folders
|
|
69
70
|
--all, -a Show complete directory tree without limits
|
|
70
71
|
--max-files <n> Set scan file limit
|
package/dist/cli/toren.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toren.js","sourceRoot":"","sources":["../../src/cli/toren.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAe,oBAAoB,CAAC;AACnD,OAAO,SAAS,MAAc,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE9C,qDAAqD;AACrD,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,WAAoB,EAAE,WAAoB;IAC5F,OAAO,CAAC,KAAK,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IAC9B,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3C,MAAM,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC;uBACS,GAAG,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"toren.js","sourceRoot":"","sources":["../../src/cli/toren.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Toren — Technology Stack Detector (v1.1.0)
|
|
3
|
+
*
|
|
4
|
+
* Detects the technology stack of a project using pre-collected scan context.
|
|
5
|
+
* Does NOT re-scan the repository or re-read package.json.
|
|
6
|
+
*
|
|
7
|
+
* Design contract:
|
|
8
|
+
* - Consumes only the data already collected by scan() and passed in context.
|
|
9
|
+
* - Deterministic: same input always produces the same ordered output.
|
|
10
|
+
* - Confidence model:
|
|
11
|
+
* dependency / devDependency → +0.60 (strong)
|
|
12
|
+
* config file → +0.25 (strong supporting)
|
|
13
|
+
* file / directory evidence → +0.15 (supporting)
|
|
14
|
+
* script keyword → +0.15 (supporting)
|
|
15
|
+
* manifest → +0.15 (supporting)
|
|
16
|
+
* - Confidence is capped at 1.0.
|
|
17
|
+
* - Technologies below the CONFIDENCE_THRESHOLD (0.60) are suppressed.
|
|
18
|
+
* - When multiple rules match the same technology, evidence is merged and
|
|
19
|
+
* confidence is combined (capped), never producing duplicate entries.
|
|
20
|
+
* - Output is ordered by: category rank → confidence desc → name asc.
|
|
21
|
+
*
|
|
22
|
+
* Frontend technologies detected (Step 4):
|
|
23
|
+
* React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Astro, Remix
|
|
24
|
+
*
|
|
25
|
+
* Styling technologies detected (Step 4):
|
|
26
|
+
* Tailwind CSS, Sass, Less, Styled Components, Emotion, Bootstrap,
|
|
27
|
+
* Material UI, Chakra UI
|
|
28
|
+
*
|
|
29
|
+
* Backend technologies detected (Step 5):
|
|
30
|
+
* Node.js: Express, Fastify, NestJS, Koa, Hapi
|
|
31
|
+
* Python: Django, Flask, FastAPI
|
|
32
|
+
* Java: Spring Boot
|
|
33
|
+
* PHP: Laravel
|
|
34
|
+
* Ruby: Rails
|
|
35
|
+
*
|
|
36
|
+
* Database technologies detected (Step 5):
|
|
37
|
+
* PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, Redis
|
|
38
|
+
*
|
|
39
|
+
* ORM / data-access tools detected (Step 5):
|
|
40
|
+
* Prisma, Drizzle, TypeORM, Sequelize, Mongoose, Knex,
|
|
41
|
+
* SQLAlchemy, Hibernate, Django ORM, Eloquent, Active Record
|
|
42
|
+
*
|
|
43
|
+
* Testing frameworks detected (Step 6):
|
|
44
|
+
* Jest, Vitest, Mocha, Playwright, Cypress, Testing Library,
|
|
45
|
+
* Pytest, JUnit
|
|
46
|
+
*
|
|
47
|
+
* Build tools detected (Step 6):
|
|
48
|
+
* Vite, Webpack, Rollup, esbuild
|
|
49
|
+
*
|
|
50
|
+
* Quality tools detected (Step 6):
|
|
51
|
+
* ESLint, Prettier, Biome, Stylelint
|
|
52
|
+
*
|
|
53
|
+
* Container tools detected (Step 6):
|
|
54
|
+
* Docker, Docker Compose
|
|
55
|
+
*
|
|
56
|
+
* Deployment tools detected (Step 6):
|
|
57
|
+
* Vercel, Netlify, Fly.io, Railway, Render,
|
|
58
|
+
* Serverless Framework, AWS SAM
|
|
59
|
+
*
|
|
60
|
+
* False-positive / safety guards:
|
|
61
|
+
* - Directory names alone never trigger framework detection.
|
|
62
|
+
* - .env / secret files are NEVER read or scanned.
|
|
63
|
+
* - Database URLs / credentials are NEVER used as evidence.
|
|
64
|
+
* - ORM is never guessed from database type; each needs its own evidence.
|
|
65
|
+
* - Plain CSS files are never reported as a technology framework.
|
|
66
|
+
*
|
|
67
|
+
* @module detectors/technology-stack-detector
|
|
68
|
+
*/
|
|
69
|
+
import type { TechnologyStack, PackageManager, ScriptInfo } from '../types/index.js';
|
|
70
|
+
/**
|
|
71
|
+
* All information already collected by scan().
|
|
72
|
+
* The detector reuses this data — it never reads from disk again.
|
|
73
|
+
*/
|
|
74
|
+
export interface TechnologyDetectorContext {
|
|
75
|
+
/** Flat list of relative file paths (POSIX separators). */
|
|
76
|
+
flatFiles: string[];
|
|
77
|
+
/** Root-level config file names (already detected). */
|
|
78
|
+
configs: string[];
|
|
79
|
+
/** Enriched script entries. */
|
|
80
|
+
scripts: ScriptInfo[];
|
|
81
|
+
/** Detected package manager (or null). */
|
|
82
|
+
packageManager: PackageManager | null;
|
|
83
|
+
/** Detected project type string (e.g. "Next.js", "Node.js / TypeScript"). */
|
|
84
|
+
projectType: string;
|
|
85
|
+
/**
|
|
86
|
+
* Parsed package.json dependencies already available from a prior read.
|
|
87
|
+
* Keyed maps of name → version.
|
|
88
|
+
* Providing this avoids re-reading package.json.
|
|
89
|
+
*/
|
|
90
|
+
packageManifest?: {
|
|
91
|
+
dependencies?: Record<string, string>;
|
|
92
|
+
devDependencies?: Record<string, string>;
|
|
93
|
+
peerDependencies?: Record<string, string>;
|
|
94
|
+
} | null;
|
|
95
|
+
/** Frameworks already detected by project-info-detector. */
|
|
96
|
+
existingFrameworks?: string[];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect the technology stack from already-collected scan context.
|
|
100
|
+
*
|
|
101
|
+
* @param context - Pre-collected scan data. No disk I/O is performed.
|
|
102
|
+
* @returns TechnologyStack with deduplicated, ordered, threshold-filtered
|
|
103
|
+
* technologies.
|
|
104
|
+
*/
|
|
105
|
+
export declare function detectTechnologyStack(context: TechnologyDetectorContext): TechnologyStack;
|