stackscan 0.1.18 → 0.1.19
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/dist/chunk-2R4IRVBW.mjs +19 -0
- package/dist/chunk-3JWM3QKI.mjs +2013 -0
- package/dist/chunk-5XOMETBV.mjs +158 -0
- package/dist/chunk-75Z7C4SW.mjs +19 -0
- package/dist/chunk-AU42WGBI.mjs +158 -0
- package/dist/chunk-BPDLELPJ.mjs +235 -0
- package/dist/chunk-JFE6WNCW.mjs +235 -0
- package/dist/chunk-MEH6MW3S.mjs +235 -0
- package/dist/chunk-NWUJIUCE.mjs +2028 -0
- package/dist/chunk-QNTMPVPN.mjs +19 -0
- package/dist/chunk-RRAAD3VC.mjs +2075 -0
- package/dist/chunk-TEUMOU3M.mjs +158 -0
- package/dist/cli.js +129 -34
- package/dist/cli.mjs +3 -3
- package/dist/index.js +129 -34
- package/dist/index.mjs +6 -6
- package/dist/scan.js +129 -34
- package/dist/scan.mjs +3 -3
- package/dist/sync.js +129 -34
- package/dist/sync.mjs +3 -3
- package/dist/techDefinitions.js +129 -34
- package/dist/techDefinitions.mjs +1 -1
- package/dist/techMap.js +129 -34
- package/dist/techMap.mjs +2 -2
- package/package.json +1 -1
- package/public/assets/logos/backend/convex.svg +5 -0
- package/public/assets/logos/backend/springboot.svg +1 -0
- package/public/assets/logos/css/shadcn.svg +6 -0
- package/public/assets/logos/defaults/package.svg +18 -0
- package/public/assets/logos/language/css3.svg +6 -0
- package/public/assets/logos/language/html5.svg +6 -0
- package/public/assets/logos/language/typescript.svg +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import {
|
|
2
|
+
techMap
|
|
3
|
+
} from "./chunk-QNTMPVPN.mjs";
|
|
4
|
+
import {
|
|
5
|
+
copyAssets,
|
|
6
|
+
generateMarkdown
|
|
7
|
+
} from "./chunk-UJM3S22V.mjs";
|
|
8
|
+
import {
|
|
9
|
+
simple_icons_hex_default
|
|
10
|
+
} from "./chunk-EH2SEQZP.mjs";
|
|
11
|
+
|
|
12
|
+
// src/sync.ts
|
|
13
|
+
import fs from "fs";
|
|
14
|
+
import path from "path";
|
|
15
|
+
var BASE_DIR = path.join(process.cwd(), "public", "stackscan");
|
|
16
|
+
var SKIPPED_TECHS = [
|
|
17
|
+
"react-dom"
|
|
18
|
+
];
|
|
19
|
+
async function sync(options = {}) {
|
|
20
|
+
console.log("\u{1F680} Starting Sync...");
|
|
21
|
+
if (options.color) {
|
|
22
|
+
console.log(`\u{1F3A8} Color mode: ${options.color}`);
|
|
23
|
+
}
|
|
24
|
+
if (!fs.existsSync(BASE_DIR)) {
|
|
25
|
+
console.log(`Creating stackscan directory at: ${BASE_DIR}`);
|
|
26
|
+
fs.mkdirSync(BASE_DIR, { recursive: true });
|
|
27
|
+
console.log('Please place your project folders inside "public/stackscan/" and run this command again.');
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
const entries = fs.readdirSync(BASE_DIR, { withFileTypes: true });
|
|
31
|
+
const projectDirs = entries.filter((dirent) => dirent.isDirectory() && dirent.name !== "input" && dirent.name !== "output");
|
|
32
|
+
if (projectDirs.length === 0) {
|
|
33
|
+
console.log('\u26A0\uFE0F No project directories found in "public/stackscan/".');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log(`Found ${projectDirs.length} projects to process.
|
|
37
|
+
`);
|
|
38
|
+
const allProjects = [];
|
|
39
|
+
const allTechs = [];
|
|
40
|
+
for (const dir of projectDirs) {
|
|
41
|
+
const projectPath = path.join(BASE_DIR, dir.name);
|
|
42
|
+
const packageJsonPath = path.join(projectPath, "package.json");
|
|
43
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
44
|
+
try {
|
|
45
|
+
const content = fs.readFileSync(packageJsonPath, "utf-8");
|
|
46
|
+
const pkg = JSON.parse(content);
|
|
47
|
+
const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
48
|
+
const detectedTechs = [];
|
|
49
|
+
Object.keys(allDeps).forEach((dep) => {
|
|
50
|
+
if (SKIPPED_TECHS.includes(dep)) return;
|
|
51
|
+
if (techMap[dep]) {
|
|
52
|
+
const tech = techMap[dep];
|
|
53
|
+
let color = null;
|
|
54
|
+
if (options.color === "white") color = "#FFFFFF";
|
|
55
|
+
else if (options.color === "black") color = "#000000";
|
|
56
|
+
else if (options.color && options.color.startsWith("#")) color = options.color;
|
|
57
|
+
else {
|
|
58
|
+
const depSlug = dep.toLowerCase();
|
|
59
|
+
const nameSlug = tech.name.toLowerCase();
|
|
60
|
+
const nameSlugNoSpaces = tech.name.toLowerCase().replace(/\s+/g, "");
|
|
61
|
+
const hex = simple_icons_hex_default[depSlug] || simple_icons_hex_default[nameSlug] || simple_icons_hex_default[nameSlugNoSpaces];
|
|
62
|
+
if (hex) color = `#${hex}`;
|
|
63
|
+
}
|
|
64
|
+
detectedTechs.push({
|
|
65
|
+
name: tech.name,
|
|
66
|
+
slug: dep,
|
|
67
|
+
logo: tech.logo,
|
|
68
|
+
// Raw path for resolution
|
|
69
|
+
color
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
let uniqueTechs = Array.from(new Set(detectedTechs.map((t) => t.slug))).map((slug) => detectedTechs.find((t) => t.slug === slug));
|
|
74
|
+
const seenLogos = /* @__PURE__ */ new Set();
|
|
75
|
+
uniqueTechs = uniqueTechs.filter((t) => {
|
|
76
|
+
if (seenLogos.has(t.logo)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
seenLogos.add(t.logo);
|
|
80
|
+
return true;
|
|
81
|
+
});
|
|
82
|
+
const assetsDir = path.join(process.cwd(), "public", "assets", "logos");
|
|
83
|
+
if (options.copyAssets !== false) {
|
|
84
|
+
await copyAssets(uniqueTechs, assetsDir, { colorMode: options.color });
|
|
85
|
+
}
|
|
86
|
+
const techsWithUrls = uniqueTechs.map((t) => ({
|
|
87
|
+
...t,
|
|
88
|
+
logo: `https://raw.githubusercontent.com/benjamindotdev/stackscan/main/public/assets/logos/${t.logo}`,
|
|
89
|
+
relativePath: `./public/assets/logos/${t.logo}`
|
|
90
|
+
}));
|
|
91
|
+
allTechs.push(...techsWithUrls);
|
|
92
|
+
fs.writeFileSync(
|
|
93
|
+
path.join(projectPath, "stack.json"),
|
|
94
|
+
JSON.stringify(techsWithUrls, null, 2)
|
|
95
|
+
);
|
|
96
|
+
const mdContent = generateMarkdown(techsWithUrls);
|
|
97
|
+
fs.writeFileSync(path.join(projectPath, "stack.md"), mdContent);
|
|
98
|
+
allProjects.push({
|
|
99
|
+
name: dir.name,
|
|
100
|
+
techs: techsWithUrls
|
|
101
|
+
});
|
|
102
|
+
console.log(`\u2705 ${dir.name.padEnd(20)} -> stack.json (${uniqueTechs.length} techs)`);
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error(`\u274C Error processing ${dir.name}:`, err.message);
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
console.warn(`\u26A0\uFE0F Skipping "${dir.name}": No package.json found.`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (allProjects.length > 0) {
|
|
111
|
+
updateRootReadme(allProjects);
|
|
112
|
+
}
|
|
113
|
+
console.log("\n\u2728 Sync complete.");
|
|
114
|
+
}
|
|
115
|
+
function updateRootReadme(projects) {
|
|
116
|
+
const readmePath = path.join(process.cwd(), "README.md");
|
|
117
|
+
if (!fs.existsSync(readmePath)) {
|
|
118
|
+
console.log("\u26A0\uFE0F No root README.md found to update.");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
let readmeContent = fs.readFileSync(readmePath, "utf-8");
|
|
122
|
+
const startMarker = "<!-- STACKSYNC_START -->";
|
|
123
|
+
const endMarker = "<!-- STACKSYNC_END -->";
|
|
124
|
+
let newSection = `${startMarker}
|
|
125
|
+
## My Projects
|
|
126
|
+
|
|
127
|
+
`;
|
|
128
|
+
for (const p of projects) {
|
|
129
|
+
newSection += `### ${p.name}
|
|
130
|
+
`;
|
|
131
|
+
newSection += `<p>
|
|
132
|
+
`;
|
|
133
|
+
for (const t of p.techs) {
|
|
134
|
+
const src = t.relativePath || t.logo;
|
|
135
|
+
newSection += ` <img src="${src}" alt="${t.name}" height="25" style="margin-right: 10px;" />
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
newSection += `</p>
|
|
139
|
+
|
|
140
|
+
`;
|
|
141
|
+
}
|
|
142
|
+
newSection += `${endMarker}`;
|
|
143
|
+
if (readmeContent.includes(startMarker) && readmeContent.includes(endMarker)) {
|
|
144
|
+
const regex = new RegExp(`${startMarker}[\\s\\S]*?${endMarker}`);
|
|
145
|
+
readmeContent = readmeContent.replace(regex, newSection);
|
|
146
|
+
console.log(`\u{1F4DD} Updated root README.md with ${projects.length} projects.`);
|
|
147
|
+
} else {
|
|
148
|
+
readmeContent += `
|
|
149
|
+
|
|
150
|
+
${newSection}`;
|
|
151
|
+
console.log(`\u{1F4DD} Appended projects to root README.md.`);
|
|
152
|
+
}
|
|
153
|
+
fs.writeFileSync(readmePath, readmeContent);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export {
|
|
157
|
+
sync
|
|
158
|
+
};
|
package/dist/cli.js
CHANGED
|
@@ -160,7 +160,10 @@ var techDefinitions = [
|
|
|
160
160
|
"id": "remix",
|
|
161
161
|
"name": "Remix",
|
|
162
162
|
"aliases": [
|
|
163
|
-
"remix"
|
|
163
|
+
"remix",
|
|
164
|
+
"@remix-run/react",
|
|
165
|
+
"@remix-run/node",
|
|
166
|
+
"@remix-run/serve"
|
|
164
167
|
],
|
|
165
168
|
"category": "frontend",
|
|
166
169
|
"logo": "frontend/remix.svg",
|
|
@@ -240,7 +243,10 @@ var techDefinitions = [
|
|
|
240
243
|
"id": "angular",
|
|
241
244
|
"name": "Angular",
|
|
242
245
|
"aliases": [
|
|
243
|
-
"@angular/core"
|
|
246
|
+
"@angular/core",
|
|
247
|
+
"@angular/common",
|
|
248
|
+
"@angular/platform-browser",
|
|
249
|
+
"@angular/cli"
|
|
244
250
|
],
|
|
245
251
|
"category": "frontend",
|
|
246
252
|
"logo": "frontend/angular.svg",
|
|
@@ -250,7 +256,9 @@ var techDefinitions = [
|
|
|
250
256
|
"id": "lit",
|
|
251
257
|
"name": "Lit",
|
|
252
258
|
"aliases": [
|
|
253
|
-
"lit"
|
|
259
|
+
"lit",
|
|
260
|
+
"lit-element",
|
|
261
|
+
"lit-html"
|
|
254
262
|
],
|
|
255
263
|
"category": "frontend",
|
|
256
264
|
"logo": "frontend/lit.svg",
|
|
@@ -270,7 +278,8 @@ var techDefinitions = [
|
|
|
270
278
|
"id": "ember",
|
|
271
279
|
"name": "Ember",
|
|
272
280
|
"aliases": [
|
|
273
|
-
"ember-source"
|
|
281
|
+
"ember-source",
|
|
282
|
+
"ember-cli"
|
|
274
283
|
],
|
|
275
284
|
"category": "frontend",
|
|
276
285
|
"logo": "frontend/emberdotjs.svg",
|
|
@@ -370,22 +379,14 @@ var techDefinitions = [
|
|
|
370
379
|
"id": "mantine",
|
|
371
380
|
"name": "Mantine",
|
|
372
381
|
"aliases": [
|
|
373
|
-
"@mantine/core"
|
|
382
|
+
"@mantine/core",
|
|
383
|
+
"@mantine/hooks",
|
|
384
|
+
"@mantine/form"
|
|
374
385
|
],
|
|
375
386
|
"category": "css",
|
|
376
387
|
"logo": "fallback/mantine-logo.svg",
|
|
377
388
|
"frameworks": []
|
|
378
389
|
},
|
|
379
|
-
{
|
|
380
|
-
"id": "shadcnui",
|
|
381
|
-
"name": "shadcn/ui",
|
|
382
|
-
"aliases": [
|
|
383
|
-
"shadcn"
|
|
384
|
-
],
|
|
385
|
-
"category": "css",
|
|
386
|
-
"logo": "css/shadcnui.svg",
|
|
387
|
-
"frameworks": []
|
|
388
|
-
},
|
|
389
390
|
{
|
|
390
391
|
"id": "daisyui",
|
|
391
392
|
"name": "DaisyUI",
|
|
@@ -420,7 +421,8 @@ var techDefinitions = [
|
|
|
420
421
|
"id": "headlessui",
|
|
421
422
|
"name": "Headless UI",
|
|
422
423
|
"aliases": [
|
|
423
|
-
"@headlessui/react"
|
|
424
|
+
"@headlessui/react",
|
|
425
|
+
"@headlessui/vue"
|
|
424
426
|
],
|
|
425
427
|
"category": "css",
|
|
426
428
|
"logo": "css/headlessui.svg",
|
|
@@ -430,7 +432,9 @@ var techDefinitions = [
|
|
|
430
432
|
"id": "emotion",
|
|
431
433
|
"name": "Emotion",
|
|
432
434
|
"aliases": [
|
|
433
|
-
"@emotion/react"
|
|
435
|
+
"@emotion/react",
|
|
436
|
+
"@emotion/styled",
|
|
437
|
+
"@emotion/css"
|
|
434
438
|
],
|
|
435
439
|
"category": "css",
|
|
436
440
|
"logo": "css/emotion.svg",
|
|
@@ -490,7 +494,9 @@ var techDefinitions = [
|
|
|
490
494
|
"id": "redux",
|
|
491
495
|
"name": "Redux",
|
|
492
496
|
"aliases": [
|
|
493
|
-
"redux"
|
|
497
|
+
"redux",
|
|
498
|
+
"react-redux",
|
|
499
|
+
"@reduxjs/toolkit"
|
|
494
500
|
],
|
|
495
501
|
"category": "state",
|
|
496
502
|
"logo": "state/redux.svg",
|
|
@@ -500,7 +506,9 @@ var techDefinitions = [
|
|
|
500
506
|
"id": "mobx",
|
|
501
507
|
"name": "MobX",
|
|
502
508
|
"aliases": [
|
|
503
|
-
"mobx"
|
|
509
|
+
"mobx",
|
|
510
|
+
"mobx-react",
|
|
511
|
+
"mobx-react-lite"
|
|
504
512
|
],
|
|
505
513
|
"category": "state",
|
|
506
514
|
"logo": "state/mobx.svg",
|
|
@@ -540,7 +548,9 @@ var techDefinitions = [
|
|
|
540
548
|
"id": "xstate",
|
|
541
549
|
"name": "XState",
|
|
542
550
|
"aliases": [
|
|
543
|
-
"xstate"
|
|
551
|
+
"xstate",
|
|
552
|
+
"@xstate/react",
|
|
553
|
+
"@xstate/fsm"
|
|
544
554
|
],
|
|
545
555
|
"category": "state",
|
|
546
556
|
"logo": "state/xstate.svg",
|
|
@@ -550,7 +560,10 @@ var techDefinitions = [
|
|
|
550
560
|
"id": "tanstackquery",
|
|
551
561
|
"name": "TanStack Query",
|
|
552
562
|
"aliases": [
|
|
553
|
-
"@tanstack/react-query"
|
|
563
|
+
"@tanstack/react-query",
|
|
564
|
+
"@tanstack/vue-query",
|
|
565
|
+
"@tanstack/svelte-query",
|
|
566
|
+
"react-query"
|
|
554
567
|
],
|
|
555
568
|
"category": "state",
|
|
556
569
|
"logo": "fallback/reactquery.svg",
|
|
@@ -760,7 +773,11 @@ var techDefinitions = [
|
|
|
760
773
|
"id": "storybook",
|
|
761
774
|
"name": "Storybook",
|
|
762
775
|
"aliases": [
|
|
763
|
-
"
|
|
776
|
+
"storybook",
|
|
777
|
+
"@storybook/react",
|
|
778
|
+
"@storybook/vue",
|
|
779
|
+
"@storybook/angular",
|
|
780
|
+
"@storybook/addon-essentials"
|
|
764
781
|
],
|
|
765
782
|
"category": "testing",
|
|
766
783
|
"logo": "testing/storybook.svg",
|
|
@@ -940,7 +957,8 @@ var techDefinitions = [
|
|
|
940
957
|
"id": "prisma",
|
|
941
958
|
"name": "Prisma",
|
|
942
959
|
"aliases": [
|
|
943
|
-
"prisma"
|
|
960
|
+
"prisma",
|
|
961
|
+
"@prisma/client"
|
|
944
962
|
],
|
|
945
963
|
"category": "orm",
|
|
946
964
|
"logo": "orm/prisma.svg",
|
|
@@ -980,7 +998,9 @@ var techDefinitions = [
|
|
|
980
998
|
"id": "postgresql",
|
|
981
999
|
"name": "PostgreSQL",
|
|
982
1000
|
"aliases": [
|
|
983
|
-
"pg"
|
|
1001
|
+
"pg",
|
|
1002
|
+
"pg-promise",
|
|
1003
|
+
"node-postgres"
|
|
984
1004
|
],
|
|
985
1005
|
"category": "database",
|
|
986
1006
|
"logo": "database/postgresql.svg",
|
|
@@ -1011,7 +1031,8 @@ var techDefinitions = [
|
|
|
1011
1031
|
"id": "sqlite",
|
|
1012
1032
|
"name": "SQLite",
|
|
1013
1033
|
"aliases": [
|
|
1014
|
-
"sqlite3"
|
|
1034
|
+
"sqlite3",
|
|
1035
|
+
"better-sqlite3"
|
|
1015
1036
|
],
|
|
1016
1037
|
"category": "database",
|
|
1017
1038
|
"logo": "database/sqlite.svg",
|
|
@@ -1031,7 +1052,9 @@ var techDefinitions = [
|
|
|
1031
1052
|
"id": "redis",
|
|
1032
1053
|
"name": "Redis",
|
|
1033
1054
|
"aliases": [
|
|
1034
|
-
"redis"
|
|
1055
|
+
"redis",
|
|
1056
|
+
"ioredis",
|
|
1057
|
+
"@redis/client"
|
|
1035
1058
|
],
|
|
1036
1059
|
"category": "database",
|
|
1037
1060
|
"logo": "database/redis.svg",
|
|
@@ -1211,7 +1234,11 @@ var techDefinitions = [
|
|
|
1211
1234
|
"id": "auth0",
|
|
1212
1235
|
"name": "Auth0",
|
|
1213
1236
|
"aliases": [
|
|
1214
|
-
"auth0"
|
|
1237
|
+
"auth0",
|
|
1238
|
+
"auth0-js",
|
|
1239
|
+
"@auth0/auth0-react",
|
|
1240
|
+
"@auth0/auth0-vue",
|
|
1241
|
+
"@auth0/auth0-angular"
|
|
1215
1242
|
],
|
|
1216
1243
|
"category": "auth",
|
|
1217
1244
|
"logo": "auth/auth0.svg",
|
|
@@ -1221,7 +1248,9 @@ var techDefinitions = [
|
|
|
1221
1248
|
"id": "clerk",
|
|
1222
1249
|
"name": "Clerk",
|
|
1223
1250
|
"aliases": [
|
|
1224
|
-
"@clerk/nextjs"
|
|
1251
|
+
"@clerk/nextjs",
|
|
1252
|
+
"@clerk/clerk-react",
|
|
1253
|
+
"@clerk/clerk-sdk-node"
|
|
1225
1254
|
],
|
|
1226
1255
|
"category": "auth",
|
|
1227
1256
|
"logo": "auth/clerk.svg",
|
|
@@ -1231,7 +1260,9 @@ var techDefinitions = [
|
|
|
1231
1260
|
"id": "supabaseauth",
|
|
1232
1261
|
"name": "Supabase Auth",
|
|
1233
1262
|
"aliases": [
|
|
1234
|
-
"@supabase/auth-helpers-nextjs"
|
|
1263
|
+
"@supabase/auth-helpers-nextjs",
|
|
1264
|
+
"@supabase/auth-helpers-react",
|
|
1265
|
+
"@supabase/ssr"
|
|
1235
1266
|
],
|
|
1236
1267
|
"category": "auth",
|
|
1237
1268
|
"logo": "database/supabase.svg",
|
|
@@ -1241,7 +1272,10 @@ var techDefinitions = [
|
|
|
1241
1272
|
"id": "firebaseauth",
|
|
1242
1273
|
"name": "Firebase Auth",
|
|
1243
1274
|
"aliases": [
|
|
1244
|
-
"firebase"
|
|
1275
|
+
"firebase",
|
|
1276
|
+
"firebase-admin",
|
|
1277
|
+
"@firebase/app",
|
|
1278
|
+
"@firebase/auth"
|
|
1245
1279
|
],
|
|
1246
1280
|
"category": "auth",
|
|
1247
1281
|
"logo": "auth/firebase.svg",
|
|
@@ -1323,7 +1357,9 @@ var techDefinitions = [
|
|
|
1323
1357
|
"id": "langchain",
|
|
1324
1358
|
"name": "LangChain",
|
|
1325
1359
|
"aliases": [
|
|
1326
|
-
"langchain"
|
|
1360
|
+
"langchain",
|
|
1361
|
+
"@langchain/core",
|
|
1362
|
+
"@langchain/openai"
|
|
1327
1363
|
],
|
|
1328
1364
|
"category": "ai",
|
|
1329
1365
|
"logo": "ai/langchain.svg",
|
|
@@ -1503,7 +1539,10 @@ var techDefinitions = [
|
|
|
1503
1539
|
"id": "aws",
|
|
1504
1540
|
"name": "AWS",
|
|
1505
1541
|
"aliases": [
|
|
1506
|
-
"aws-sdk"
|
|
1542
|
+
"aws-sdk",
|
|
1543
|
+
"@aws-sdk/client-s3",
|
|
1544
|
+
"@aws-sdk/client-dynamodb",
|
|
1545
|
+
"@aws-sdk/client-lambda"
|
|
1507
1546
|
],
|
|
1508
1547
|
"category": "cloud",
|
|
1509
1548
|
"logo": "cloud/amazonwebservices.svg",
|
|
@@ -1723,7 +1762,8 @@ var techDefinitions = [
|
|
|
1723
1762
|
"id": "shopify",
|
|
1724
1763
|
"name": "Shopify",
|
|
1725
1764
|
"aliases": [
|
|
1726
|
-
"@shopify/shopify-api"
|
|
1765
|
+
"@shopify/shopify-api",
|
|
1766
|
+
"shopify"
|
|
1727
1767
|
],
|
|
1728
1768
|
"category": "cms",
|
|
1729
1769
|
"logo": "cms/shopify.svg",
|
|
@@ -1983,7 +2023,9 @@ var techDefinitions = [
|
|
|
1983
2023
|
"id": "stripe",
|
|
1984
2024
|
"name": "Stripe",
|
|
1985
2025
|
"aliases": [
|
|
1986
|
-
"stripe"
|
|
2026
|
+
"stripe",
|
|
2027
|
+
"@stripe/stripe-js",
|
|
2028
|
+
"@stripe/react-stripe-js"
|
|
1987
2029
|
],
|
|
1988
2030
|
"category": "payment",
|
|
1989
2031
|
"logo": "payment/stripe.svg",
|
|
@@ -2008,6 +2050,59 @@ var techDefinitions = [
|
|
|
2008
2050
|
"category": "payment",
|
|
2009
2051
|
"logo": "fallback/lemonsqueezy.svg",
|
|
2010
2052
|
"frameworks": []
|
|
2053
|
+
},
|
|
2054
|
+
{
|
|
2055
|
+
"id": "css",
|
|
2056
|
+
"name": "CSS",
|
|
2057
|
+
"aliases": [
|
|
2058
|
+
"css"
|
|
2059
|
+
],
|
|
2060
|
+
"category": "language",
|
|
2061
|
+
"logo": "language/css3.svg",
|
|
2062
|
+
"frameworks": []
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"id": "html",
|
|
2066
|
+
"name": "HTML",
|
|
2067
|
+
"aliases": [
|
|
2068
|
+
"html"
|
|
2069
|
+
],
|
|
2070
|
+
"category": "language",
|
|
2071
|
+
"logo": "language/html5.svg",
|
|
2072
|
+
"frameworks": []
|
|
2073
|
+
},
|
|
2074
|
+
{
|
|
2075
|
+
"id": "convex",
|
|
2076
|
+
"name": "Convex",
|
|
2077
|
+
"aliases": [
|
|
2078
|
+
"convex",
|
|
2079
|
+
"convex-dev"
|
|
2080
|
+
],
|
|
2081
|
+
"category": "backend",
|
|
2082
|
+
"logo": "backend/convex.svg",
|
|
2083
|
+
"frameworks": []
|
|
2084
|
+
},
|
|
2085
|
+
{
|
|
2086
|
+
"id": "shadcn",
|
|
2087
|
+
"name": "shadcn/ui",
|
|
2088
|
+
"aliases": [
|
|
2089
|
+
"shadcn",
|
|
2090
|
+
"shadcn-ui",
|
|
2091
|
+
"shadcn/ui"
|
|
2092
|
+
],
|
|
2093
|
+
"category": "css",
|
|
2094
|
+
"logo": "css/shadcn.svg",
|
|
2095
|
+
"frameworks": []
|
|
2096
|
+
},
|
|
2097
|
+
{
|
|
2098
|
+
"id": "springboot",
|
|
2099
|
+
"name": "Spring Boot",
|
|
2100
|
+
"aliases": [
|
|
2101
|
+
"spring-boot"
|
|
2102
|
+
],
|
|
2103
|
+
"category": "backend",
|
|
2104
|
+
"logo": "backend/springboot.svg",
|
|
2105
|
+
"frameworks": []
|
|
2011
2106
|
}
|
|
2012
2107
|
];
|
|
2013
2108
|
|
package/dist/cli.mjs
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
} from "./chunk-ACCTMJVS.mjs";
|
|
5
5
|
import {
|
|
6
6
|
scan
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-JFE6WNCW.mjs";
|
|
8
|
+
import "./chunk-2R4IRVBW.mjs";
|
|
9
|
+
import "./chunk-RRAAD3VC.mjs";
|
|
10
10
|
import "./chunk-UJM3S22V.mjs";
|
|
11
11
|
import "./chunk-NGEKE4DQ.mjs";
|
|
12
12
|
import "./chunk-EOKQCSHI.mjs";
|