package-radar 0.0.2
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/LICENSE +21 -0
- package/README.md +199 -0
- package/assets/hero.svg +72 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +927 -0
- package/dist/index.mjs +904 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adrian Carolli
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./assets/hero.svg" alt="Package Radar โ package news for your codebase" width="100%" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h3 align="center">
|
|
6
|
+
Package Radar
|
|
7
|
+
</h3>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
Weekly package news for <em>your</em> stack โ with source links.<br/>
|
|
11
|
+
Scan <code>package.json</code>, detect your frameworks, get major release headlines that matter.
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="https://www.npmjs.com/package/package-radar">
|
|
16
|
+
<img alt="npm version" src="https://badge.fury.io/js/package-radar.svg?icon=si%3Anpm"/>
|
|
17
|
+
</a>
|
|
18
|
+
<a title="License" href="https://github.com/watadarkstar/code-radar/blob/main/LICENSE">
|
|
19
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" />
|
|
20
|
+
</a>
|
|
21
|
+
<a href="https://nodejs.org/">
|
|
22
|
+
<img alt="node" src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" />
|
|
23
|
+
</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<p align="center">
|
|
27
|
+
<a href="https://x.com/icookandcode" target="_blank">
|
|
28
|
+
Need help building developer tools? Connect with Adrian on X
|
|
29
|
+
</a>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
๐ Scanning your project...
|
|
36
|
+
|
|
37
|
+
Detected:
|
|
38
|
+
|
|
39
|
+
โ React Native 0.82
|
|
40
|
+
โ Expo SDK 54
|
|
41
|
+
โ TypeScript 7
|
|
42
|
+
โ Drizzle ORM
|
|
43
|
+
|
|
44
|
+
โโโโโโโโโโโโโโ
|
|
45
|
+
|
|
46
|
+
๐ฅ 5 things happened this week
|
|
47
|
+
|
|
48
|
+
1. TypeScript 7
|
|
49
|
+
|
|
50
|
+
You should care because:
|
|
51
|
+
Your project has 1,342 TypeScript files.
|
|
52
|
+
This release improves incremental builds.
|
|
53
|
+
|
|
54
|
+
Sources:
|
|
55
|
+
โข Announcing TypeScript 7
|
|
56
|
+
https://devblogs.microsoft.com/typescript/...
|
|
57
|
+
|
|
58
|
+
Recommendation:
|
|
59
|
+
Worth testing.
|
|
60
|
+
|
|
61
|
+
โโโโโโโโโโโโโโ
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Features
|
|
65
|
+
|
|
66
|
+
- Detects your stack from `package.json` (TypeScript, Expo, React Native, Next.js, Drizzle, and more)
|
|
67
|
+
- Looks up latest versions on npm
|
|
68
|
+
- Uses OpenAI web search for **major** package/framework news
|
|
69
|
+
- Source links on every item (blogs, changelogs, GitHub Releases)
|
|
70
|
+
- Saves your OpenAI API key locally (`~/.package-radar/`) and protects project `.gitignore`
|
|
71
|
+
|
|
72
|
+
Package Radar focuses on major news โ not security audits or CVE noise.
|
|
73
|
+
|
|
74
|
+
## Requirements
|
|
75
|
+
|
|
76
|
+
- **Node.js** 20 or later
|
|
77
|
+
- An **OpenAI API key** with access to the Responses API + web search
|
|
78
|
+
|
|
79
|
+
## Installation
|
|
80
|
+
|
|
81
|
+
Using npm:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npm install -g package-radar
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Using yarn:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
yarn global add package-radar
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Or run once without installing:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx package-radar
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Usage
|
|
100
|
+
|
|
101
|
+
From any Node project directory:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
package-radar
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
First run prompts for your OpenAI API key (saved to `~/.package-radar/config.json`). You can also set `OPENAI_API_KEY` in the environment.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
package-radar config # save / update API key
|
|
111
|
+
package-radar config --show # check if a key is configured
|
|
112
|
+
package-radar config --clear # remove saved key
|
|
113
|
+
package-radar --help
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### What happens on each run
|
|
117
|
+
|
|
118
|
+
1. **Scan** โ nearest `package.json`, known frameworks, source file counts
|
|
119
|
+
2. **Registry** โ latest versions on npm for detected packages
|
|
120
|
+
3. **News** โ OpenAI web search for major announcements
|
|
121
|
+
4. **Report** โ why it matters, recommendation, and source URLs
|
|
122
|
+
5. **Safety** โ appends `.package-radar/` to the project `.gitignore` if missing
|
|
123
|
+
|
|
124
|
+
### Config & environment
|
|
125
|
+
|
|
126
|
+
| Variable / path | Required | Description |
|
|
127
|
+
| --- | --- | --- |
|
|
128
|
+
| `OPENAI_API_KEY` | Yes* | Overrides the saved key when set. [Get a key](https://platform.openai.com/api-keys). |
|
|
129
|
+
| `OPENAI_MODEL` | No | Model name (default: `gpt-4.1-mini`). |
|
|
130
|
+
| `~/.package-radar/config.json` | โ | Where the API key is stored after `package-radar config`. |
|
|
131
|
+
|
|
132
|
+
\*Required either as env var or via `package-radar config`.
|
|
133
|
+
|
|
134
|
+
## Local development
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
git clone https://github.com/watadarkstar/code-radar.git
|
|
138
|
+
cd code-radar
|
|
139
|
+
yarn install
|
|
140
|
+
yarn start # run via tsx
|
|
141
|
+
yarn build # emit dist/
|
|
142
|
+
yarn typecheck
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
| Script | Description |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| `yarn start` / `yarn radar` / `yarn dev` | Run the CLI from source |
|
|
148
|
+
| `yarn build` | Build with tsup โ `dist/` |
|
|
149
|
+
| `yarn typecheck` | `tsc --noEmit` |
|
|
150
|
+
| `yarn clean` | Remove `dist/` |
|
|
151
|
+
| `yarn release:dry` | Dry-run a release |
|
|
152
|
+
| `yarn release` | Version, tag, GitHub release, publish to npm |
|
|
153
|
+
|
|
154
|
+
## License
|
|
155
|
+
|
|
156
|
+
[MIT](LICENSE)
|
|
157
|
+
|
|
158
|
+
## Author
|
|
159
|
+
|
|
160
|
+
Feel free to ask me questions on Twitter [@icookandcode](https://www.twitter.com/icookandcode)!
|
|
161
|
+
|
|
162
|
+
## Contributors
|
|
163
|
+
|
|
164
|
+
Submit a PR to contribute :)
|
|
165
|
+
|
|
166
|
+
## Release
|
|
167
|
+
|
|
168
|
+
We use [`release-it`](https://github.com/release-it/release-it) to version, tag, create a GitHub release, and publish to npm.
|
|
169
|
+
|
|
170
|
+
Prerequisites:
|
|
171
|
+
|
|
172
|
+
1. Logged into npm: `npm login`
|
|
173
|
+
2. `GH_TOKEN` (or `GITHUB_TOKEN`) with repo access if you want GitHub releases
|
|
174
|
+
3. Clean git working tree on the default branch
|
|
175
|
+
|
|
176
|
+
Then:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
yarn run release:dry
|
|
180
|
+
yarn run release
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`release:dry` prints what would happen without publishing. `release` bumps the version, runs typecheck + build, commits/tags, creates a GitHub release, and publishes `package-radar` to the npm registry.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
<div align="center">
|
|
188
|
+
|
|
189
|
+
**Stay ahead of your stack.**
|
|
190
|
+
|
|
191
|
+
โญ **Star this repo** โข ๐ฌ **[Contact Adrian](https://x.com/icookandcode)**
|
|
192
|
+
|
|
193
|
+
_Built with โค๏ธ by [Adrian](https://x.com/icookandcode)_
|
|
194
|
+
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
**Keywords:** cli, package-radar, package news, dependencies, changelog, npm, openai, typescript, developer-tools
|
package/assets/hero.svg
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-label="Package Radar placeholder hero">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0b1220"/>
|
|
5
|
+
<stop offset="55%" stop-color="#111827"/>
|
|
6
|
+
<stop offset="100%" stop-color="#0f172a"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<linearGradient id="glow" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
9
|
+
<stop offset="0%" stop-color="#22d3ee" stop-opacity="0"/>
|
|
10
|
+
<stop offset="50%" stop-color="#38bdf8" stop-opacity="0.9"/>
|
|
11
|
+
<stop offset="100%" stop-color="#a78bfa" stop-opacity="0"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<radialGradient id="radarGlow" cx="50%" cy="50%" r="50%">
|
|
14
|
+
<stop offset="0%" stop-color="#22d3ee" stop-opacity="0.35"/>
|
|
15
|
+
<stop offset="70%" stop-color="#38bdf8" stop-opacity="0.08"/>
|
|
16
|
+
<stop offset="100%" stop-color="#38bdf8" stop-opacity="0"/>
|
|
17
|
+
</radialGradient>
|
|
18
|
+
<filter id="soft" x="-20%" y="-20%" width="140%" height="140%">
|
|
19
|
+
<feGaussianBlur stdDeviation="8"/>
|
|
20
|
+
</filter>
|
|
21
|
+
</defs>
|
|
22
|
+
|
|
23
|
+
<!-- Background -->
|
|
24
|
+
<rect width="1200" height="630" fill="url(#bg)"/>
|
|
25
|
+
|
|
26
|
+
<!-- Subtle grid -->
|
|
27
|
+
<g stroke="#1f2937" stroke-width="1" opacity="0.55">
|
|
28
|
+
<path d="M0 90 H1200 M0 180 H1200 M0 270 H1200 M0 360 H1200 M0 450 H1200 M0 540 H1200"/>
|
|
29
|
+
<path d="M120 0 V630 M240 0 V630 M360 0 V630 M480 0 V630 M600 0 V630 M720 0 V630 M840 0 V630 M960 0 V630 M1080 0 V630"/>
|
|
30
|
+
</g>
|
|
31
|
+
|
|
32
|
+
<!-- Accent bar -->
|
|
33
|
+
<rect x="0" y="0" width="1200" height="4" fill="url(#glow)"/>
|
|
34
|
+
|
|
35
|
+
<!-- Radar graphic -->
|
|
36
|
+
<g transform="translate(900 315)">
|
|
37
|
+
<circle r="170" fill="url(#radarGlow)"/>
|
|
38
|
+
<circle r="150" fill="none" stroke="#1e3a5f" stroke-width="2"/>
|
|
39
|
+
<circle r="110" fill="none" stroke="#1e3a5f" stroke-width="1.5"/>
|
|
40
|
+
<circle r="70" fill="none" stroke="#1e3a5f" stroke-width="1.5"/>
|
|
41
|
+
<circle r="30" fill="none" stroke="#334155" stroke-width="1.5"/>
|
|
42
|
+
<line x1="-150" y1="0" x2="150" y2="0" stroke="#1e3a5f" stroke-width="1"/>
|
|
43
|
+
<line x1="0" y1="-150" x2="0" y2="150" stroke="#1e3a5f" stroke-width="1"/>
|
|
44
|
+
|
|
45
|
+
<!-- Sweep wedge -->
|
|
46
|
+
<path d="M0 0 L130 -40 A150 150 0 0 1 40 145 Z" fill="#22d3ee" opacity="0.12"/>
|
|
47
|
+
<line x1="0" y1="0" x2="130" y2="-40" stroke="#22d3ee" stroke-width="3" stroke-linecap="round"/>
|
|
48
|
+
<circle r="6" fill="#22d3ee"/>
|
|
49
|
+
|
|
50
|
+
<!-- Blips -->
|
|
51
|
+
<circle cx="55" cy="-70" r="6" fill="#a78bfa">
|
|
52
|
+
<title>Package signal</title>
|
|
53
|
+
</circle>
|
|
54
|
+
<circle cx="55" cy="-70" r="14" fill="none" stroke="#a78bfa" stroke-opacity="0.45" stroke-width="2"/>
|
|
55
|
+
<circle cx="-80" cy="35" r="5" fill="#38bdf8"/>
|
|
56
|
+
<circle cx="40" cy="95" r="4" fill="#34d399"/>
|
|
57
|
+
</g>
|
|
58
|
+
|
|
59
|
+
<!-- Copy -->
|
|
60
|
+
<g fill="#e2e8f0" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif">
|
|
61
|
+
<text x="72" y="220" font-size="22" fill="#67e8f9" letter-spacing="4" font-weight="600">CLI ยท PACKAGE NEWS</text>
|
|
62
|
+
<text x="72" y="300" font-size="72" font-weight="700" fill="#f8fafc">Package Radar</text>
|
|
63
|
+
<text x="72" y="360" font-size="28" fill="#94a3b8">Major framework & library news for your stack</text>
|
|
64
|
+
<text x="72" y="420" font-size="20" fill="#64748b">Scan package.json ยท Web search ยท Source links</text>
|
|
65
|
+
</g>
|
|
66
|
+
|
|
67
|
+
<!-- Placeholder tag -->
|
|
68
|
+
<g transform="translate(72 500)">
|
|
69
|
+
<rect width="168" height="36" rx="18" fill="#0ea5e9" fill-opacity="0.15" stroke="#38bdf8" stroke-opacity="0.5"/>
|
|
70
|
+
<text x="84" y="24" text-anchor="middle" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" fill="#7dd3fc" font-weight="600">PLACEHOLDER HERO</text>
|
|
71
|
+
</g>
|
|
72
|
+
</svg>
|
package/dist/index.d.mts
ADDED
package/dist/index.d.ts
ADDED