prpm 1.2.1 → 2.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.
Files changed (72) hide show
  1. package/README.md +90 -862
  2. package/dist/index.js +24163 -65
  3. package/dist/schemas/agents-md.schema.json +24 -0
  4. package/dist/schemas/aider.schema.json +24 -0
  5. package/dist/schemas/canonical.schema.json +435 -0
  6. package/dist/schemas/claude-agent.schema.json +62 -0
  7. package/dist/schemas/claude-hook.schema.json +70 -0
  8. package/dist/schemas/claude-plugin.schema.json +122 -0
  9. package/dist/schemas/claude-skill.schema.json +51 -0
  10. package/dist/schemas/claude-slash-command.schema.json +77 -0
  11. package/dist/schemas/claude.schema.json +52 -0
  12. package/dist/schemas/continue.schema.json +98 -0
  13. package/dist/schemas/copilot.schema.json +76 -0
  14. package/dist/schemas/cursor-command.schema.json +27 -0
  15. package/dist/schemas/cursor-hooks.schema.json +59 -0
  16. package/dist/schemas/cursor.schema.json +74 -0
  17. package/dist/schemas/droid-hook.schema.json +103 -0
  18. package/dist/schemas/droid-skill.schema.json +46 -0
  19. package/dist/schemas/droid-slash-command.schema.json +53 -0
  20. package/dist/schemas/droid.schema.json +46 -0
  21. package/dist/schemas/format-capabilities.schema.json +101 -0
  22. package/dist/schemas/format-registry.schema.json +99 -0
  23. package/dist/schemas/gemini-extension.schema.json +77 -0
  24. package/dist/schemas/gemini-md.schema.json +24 -0
  25. package/dist/schemas/gemini.schema.json +30 -0
  26. package/dist/schemas/kiro-agent.schema.json +146 -0
  27. package/dist/schemas/kiro-hook.schema.json +165 -0
  28. package/dist/schemas/kiro-steering.schema.json +74 -0
  29. package/dist/schemas/mcp-server.schema.json +130 -0
  30. package/dist/schemas/opencode-plugin.schema.json +391 -0
  31. package/dist/schemas/opencode-slash-command.schema.json +60 -0
  32. package/dist/schemas/opencode.schema.json +111 -0
  33. package/dist/schemas/prpm-manifest.schema.json +758 -0
  34. package/dist/schemas/replit.schema.json +21 -0
  35. package/dist/schemas/ruler.schema.json +22 -0
  36. package/dist/schemas/trae.schema.json +24 -0
  37. package/dist/schemas/windsurf.schema.json +22 -0
  38. package/dist/schemas/zed-extension.schema.json +238 -0
  39. package/dist/schemas/zed.schema.json +44 -0
  40. package/dist/schemas/zencoder.schema.json +51 -0
  41. package/package.json +20 -14
  42. package/schemas/prpm-manifest.schema.json +490 -39
  43. package/dist/__tests__/e2e/test-helpers.js +0 -150
  44. package/dist/commands/collections.js +0 -606
  45. package/dist/commands/index.js +0 -186
  46. package/dist/commands/info.js +0 -82
  47. package/dist/commands/install.js +0 -477
  48. package/dist/commands/list.js +0 -166
  49. package/dist/commands/login.js +0 -281
  50. package/dist/commands/outdated.js +0 -128
  51. package/dist/commands/popular.js +0 -27
  52. package/dist/commands/publish.js +0 -274
  53. package/dist/commands/schema.js +0 -37
  54. package/dist/commands/search.js +0 -404
  55. package/dist/commands/telemetry.js +0 -103
  56. package/dist/commands/trending.js +0 -76
  57. package/dist/commands/uninstall.js +0 -77
  58. package/dist/commands/update.js +0 -121
  59. package/dist/commands/upgrade.js +0 -121
  60. package/dist/commands/whoami.js +0 -75
  61. package/dist/core/claude-config.js +0 -91
  62. package/dist/core/cursor-config.js +0 -130
  63. package/dist/core/downloader.js +0 -64
  64. package/dist/core/filesystem.js +0 -124
  65. package/dist/core/lockfile.js +0 -239
  66. package/dist/core/marketplace-converter.js +0 -198
  67. package/dist/core/registry-client.js +0 -265
  68. package/dist/core/schema-validator.js +0 -74
  69. package/dist/core/telemetry.js +0 -175
  70. package/dist/core/user-config.js +0 -79
  71. package/dist/types/registry.js +0 -5
  72. package/dist/types.js +0 -5
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/replit.json",
4
+ "$comment": "https://docs.replit.com/replitai/replit-dot-md",
5
+ "title": "Replit.md Format",
6
+ "description": "JSON Schema for Replit replit.md format - plain markdown project configuration (NO frontmatter)",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain markdown content with project overview, technology preferences, coding standards, and communication style. No frontmatter allowed."
13
+ }
14
+ },
15
+ "additionalProperties": false,
16
+ "examples": [
17
+ {
18
+ "content": "# Project Name\n\n## Project Overview\n\nA web application for task management.\n\n## Technology Preferences\n\n- Frontend: React with TypeScript\n- Backend: Node.js with Express\n- Database: PostgreSQL\n\n## Coding Standards\n\n- Use ESLint and Prettier\n- Follow Airbnb style guide\n\n## Communication Style\n\n- Prefer detailed explanations\n- Include code examples"
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/ruler.json",
4
+ "$comment": "https://okigu.com/ruler",
5
+ "title": "Ruler Rules Format",
6
+ "description": "JSON Schema for Ruler .ruler/ format - plain markdown without frontmatter, used for AI coding assistant instructions",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain markdown content for AI coding rules and guidelines. No frontmatter required. Files are concatenated with source markers by Ruler.",
13
+ "minLength": 1
14
+ }
15
+ },
16
+ "examples": [
17
+ {
18
+ "content": "<!-- Package: react-best-practices -->\n<!-- Author: @username -->\n\n# React Best Practices\n\n## Core Principles\n\n- Use functional components\n- Keep components small and focused\n\n## Naming Conventions\n\n- Use PascalCase for component names\n- Use camelCase for function names"
19
+ }
20
+ ],
21
+ "additionalProperties": false
22
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/trae.json",
4
+ "$comment": "https://docs.trae.ai/ide/rules",
5
+ "title": "Trae Rules Format",
6
+ "description": "JSON Schema for Trae .trae/rules format - plain markdown user and project rules (NO frontmatter)",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain markdown content with coding rules, style preferences, conventions, etc. No frontmatter allowed."
13
+ }
14
+ },
15
+ "additionalProperties": false,
16
+ "examples": [
17
+ {
18
+ "content": "# Code Style\n\n- Use spaces for indentation (2 spaces)\n- Prefer functional components in React\n- Use TypeScript strict mode"
19
+ },
20
+ {
21
+ "content": "# Project Conventions\n\n## Naming\n\n- Components: PascalCase\n- Functions: camelCase\n- Constants: UPPER_SNAKE_CASE"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/windsurf.json",
4
+ "$comment": "https://docs.windsurf.com/windsurf/cascade/memories#rules",
5
+ "title": "Windsurf Rules Format",
6
+ "description": "JSON Schema for Windsurf .windsurf/rules format - plain markdown without frontmatter",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain markdown content. No frontmatter. Maximum 12,000 characters.",
13
+ "maxLength": 12000
14
+ }
15
+ },
16
+ "examples": [
17
+ {
18
+ "content": "# React Best Practices\n\n## Core Principles\n\n- Use functional components\n- Keep components small and focused"
19
+ }
20
+ ],
21
+ "additionalProperties": false
22
+ }
@@ -0,0 +1,238 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/zed/extension.json",
4
+ "$comment": "https://zed.dev/docs/extensions/developing-extensions",
5
+ "title": "Zed Extension Format",
6
+ "description": "JSON Schema for Zed extension.toml manifest files. Extensions are written in Rust, compiled to WebAssembly, and can provide languages, themes, slash commands, debuggers, and MCP servers. Extensions must implement the zed::Extension trait and can define slash commands via run_slash_command method. Slash commands receive SlashCommand struct, args Vec<String>, and optional Worktree, returning Result<SlashCommandOutput, String>.",
7
+ "type": "object",
8
+ "required": ["id", "name", "version", "authors", "repository"],
9
+ "$defs": {
10
+ "slashCommandAPI": {
11
+ "description": "Slash Command API Specification",
12
+ "methods": {
13
+ "run_slash_command": {
14
+ "description": "Execute a slash command",
15
+ "signature": "fn run_slash_command(&self, command: SlashCommand, args: Vec<String>, worktree: Option<&Worktree>) -> Result<SlashCommandOutput, String>",
16
+ "parameters": {
17
+ "command": {
18
+ "type": "SlashCommand",
19
+ "description": "The slash command being executed with name and other metadata"
20
+ },
21
+ "args": {
22
+ "type": "Vec<String>",
23
+ "description": "Command arguments provided by user"
24
+ },
25
+ "worktree": {
26
+ "type": "Option<&Worktree>",
27
+ "description": "Optional reference to the current worktree context"
28
+ }
29
+ },
30
+ "returns": {
31
+ "success": {
32
+ "type": "SlashCommandOutput",
33
+ "fields": {
34
+ "text": {
35
+ "type": "String",
36
+ "description": "Command output text to display"
37
+ },
38
+ "sections": {
39
+ "type": "Option<Vec<SlashCommandOutputSection>>",
40
+ "description": "Optional output sections with ranges and labels",
41
+ "fields": {
42
+ "range": {
43
+ "description": "Character range in output text"
44
+ },
45
+ "label": {
46
+ "type": "String",
47
+ "description": "Section label for UI display"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "error": {
54
+ "type": "String",
55
+ "description": "Error message if command execution fails"
56
+ }
57
+ }
58
+ },
59
+ "complete_slash_command_argument": {
60
+ "description": "Provide argument autocompletion (optional method)",
61
+ "signature": "fn complete_slash_command_argument(&self, command: SlashCommand, args: Vec<String>) -> Result<Vec<SlashCommandArgumentCompletion>, String>",
62
+ "parameters": {
63
+ "command": {
64
+ "type": "SlashCommand",
65
+ "description": "The command being completed"
66
+ },
67
+ "args": {
68
+ "type": "Vec<String>",
69
+ "description": "Current arguments for context"
70
+ }
71
+ },
72
+ "returns": {
73
+ "success": {
74
+ "type": "Vec<SlashCommandArgumentCompletion>",
75
+ "fields": {
76
+ "label": {
77
+ "type": "String",
78
+ "description": "Display text in completion menu"
79
+ },
80
+ "new_text": {
81
+ "type": "String",
82
+ "description": "Text to insert when selected"
83
+ },
84
+ "run_command": {
85
+ "type": "bool",
86
+ "description": "Whether to execute command immediately after selection"
87
+ }
88
+ }
89
+ },
90
+ "error": {
91
+ "type": "String",
92
+ "description": "Error message if completion fails"
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "properties": {
100
+ "id": {
101
+ "type": "string",
102
+ "description": "Unique extension identifier (lowercase, hyphens allowed)"
103
+ },
104
+ "name": {
105
+ "type": "string",
106
+ "description": "Human-readable extension name"
107
+ },
108
+ "description": {
109
+ "type": "string",
110
+ "description": "Brief description of the extension"
111
+ },
112
+ "version": {
113
+ "type": "string",
114
+ "description": "Semantic version (e.g., 0.1.0)",
115
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
116
+ },
117
+ "authors": {
118
+ "type": "array",
119
+ "description": "Extension authors",
120
+ "items": {
121
+ "type": "string"
122
+ },
123
+ "minItems": 1
124
+ },
125
+ "repository": {
126
+ "type": "string",
127
+ "description": "Git repository URL",
128
+ "format": "uri"
129
+ },
130
+ "license": {
131
+ "type": "string",
132
+ "description": "SPDX license identifier. Must be one of: MIT, Apache-2.0, BSD-3-Clause, GPL-3.0",
133
+ "enum": ["MIT", "Apache-2.0", "BSD-3-Clause", "GPL-3.0"]
134
+ },
135
+ "slash_commands": {
136
+ "type": "object",
137
+ "description": "Slash command definitions for the Assistant. Each command key maps to configuration. Extensions must implement run_slash_command method to handle execution. Commands are invoked from the Assistant panel by typing /command-name. See $defs.slashCommandAPI for complete API specification including SlashCommand, SlashCommandOutput, and SlashCommandOutputSection types.",
138
+ "additionalProperties": {
139
+ "type": "object",
140
+ "required": ["description"],
141
+ "properties": {
142
+ "description": {
143
+ "type": "string",
144
+ "description": "Description shown in slash command menu. Should briefly explain what the command does."
145
+ },
146
+ "requires_argument": {
147
+ "type": "boolean",
148
+ "description": "Whether the command requires an argument. If true, command will not execute without an argument. If false, command can be invoked without arguments.",
149
+ "default": false
150
+ }
151
+ }
152
+ }
153
+ },
154
+ "languages": {
155
+ "type": "array",
156
+ "description": "Programming languages provided by this extension. Extensions can register language support including syntax highlighting, LSP integration, and code intelligence features.",
157
+ "items": {
158
+ "type": "string"
159
+ }
160
+ },
161
+ "themes": {
162
+ "type": "object",
163
+ "description": "Color themes provided by this extension. Theme keys map to JSON file paths containing theme definitions.",
164
+ "additionalProperties": {
165
+ "type": "string",
166
+ "description": "Path to theme JSON file relative to extension root"
167
+ }
168
+ },
169
+ "grammars": {
170
+ "type": "object",
171
+ "description": "Tree-sitter grammars provided by this extension for syntax highlighting and parsing. Grammar keys identify the language.",
172
+ "additionalProperties": {
173
+ "type": "object",
174
+ "properties": {
175
+ "repository": {
176
+ "type": "string",
177
+ "description": "Git repository URL for the tree-sitter grammar source"
178
+ },
179
+ "commit": {
180
+ "type": "string",
181
+ "description": "Git commit hash to use from the grammar repository"
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "lib": {
187
+ "type": "object",
188
+ "description": "Rust library configuration for the extension WASM module",
189
+ "properties": {
190
+ "kind": {
191
+ "type": "array",
192
+ "items": {
193
+ "type": "string",
194
+ "enum": ["cdylib"]
195
+ },
196
+ "description": "Library type - must be cdylib for WASM compilation"
197
+ }
198
+ }
199
+ }
200
+ },
201
+ "examples": [
202
+ {
203
+ "id": "my-extension",
204
+ "name": "My Extension",
205
+ "description": "Custom slash commands for development",
206
+ "version": "0.1.0",
207
+ "authors": ["Developer Name"],
208
+ "repository": "https://github.com/username/my-extension",
209
+ "license": "MIT",
210
+ "slash_commands": {
211
+ "echo": {
212
+ "description": "echoes the provided input",
213
+ "requires_argument": true
214
+ },
215
+ "greet": {
216
+ "description": "greets the user",
217
+ "requires_argument": false
218
+ }
219
+ }
220
+ },
221
+ {
222
+ "id": "python-extension",
223
+ "name": "Python Language Support",
224
+ "description": "Python language features for Zed",
225
+ "version": "1.0.0",
226
+ "authors": ["Zed Team"],
227
+ "repository": "https://github.com/zed-industries/zed",
228
+ "license": "Apache-2.0",
229
+ "languages": ["Python"],
230
+ "grammars": {
231
+ "python": {
232
+ "repository": "https://github.com/tree-sitter/tree-sitter-python",
233
+ "commit": "abc123def456"
234
+ }
235
+ }
236
+ }
237
+ ]
238
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/zed.json",
4
+ "$comment": "https://zed.dev/docs/assistant/assistant-settings",
5
+ "title": "Zed Rules Format",
6
+ "description": "JSON Schema for Zed .rules format - plain markdown instructions for AI coding assistants",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain markdown content with AI coding instructions. Zed uses .rules files (no frontmatter required). Also reads .cursorrules, .windsurfrules, .clinerules, .github/copilot-instructions.md, AGENT.md, AGENTS.md, CLAUDE.md, and GEMINI.md in priority order."
13
+ },
14
+ "metadata": {
15
+ "type": "object",
16
+ "description": "Optional metadata for PRPM packaging (not used by Zed itself)",
17
+ "properties": {
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Package identifier"
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "description": "Human-readable description"
25
+ },
26
+ "tags": {
27
+ "type": "array",
28
+ "description": "Categorization tags",
29
+ "items": {
30
+ "type": "string"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ },
36
+ "examples": [
37
+ {
38
+ "content": "# Project Coding Guidelines\n\nYou are an expert TypeScript developer. Follow these rules:\n\n## Code Style\n\n- Use functional components with hooks\n- Prefer const over let\n- Always use TypeScript strict mode\n\n## Testing\n\n- Write unit tests for all business logic\n- Use Vitest for testing\n- Aim for >80% coverage"
39
+ },
40
+ {
41
+ "content": "# API Development Standards\n\nWhen working on API endpoints:\n\n1. Use REST conventions\n2. Always validate input\n3. Return proper HTTP status codes\n4. Include error messages in responses\n\n## Example\n\n```typescript\napp.get('/api/users/:id', async (req, res) => {\n const { id } = req.params;\n const user = await db.users.findOne({ id });\n if (!user) {\n return res.status(404).json({ error: 'User not found' });\n }\n res.json(user);\n});\n```"
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/zencoder.json",
4
+ "$comment": "https://docs.zencoder.ai/rules-context/zen-rules",
5
+ "title": "Zencoder Rules Format",
6
+ "description": "JSON Schema for Zencoder .zencoder/rules format with optional YAML frontmatter",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "description": "Optional YAML frontmatter enclosed in --- markers",
13
+ "properties": {
14
+ "description": {
15
+ "type": "string",
16
+ "description": "Brief description of what the rule covers"
17
+ },
18
+ "globs": {
19
+ "type": "array",
20
+ "description": "File patterns where the rule applies (e.g., ['*.md', '*.mdx'])",
21
+ "items": {
22
+ "type": "string"
23
+ }
24
+ },
25
+ "alwaysApply": {
26
+ "type": "boolean",
27
+ "description": "Set to true if rule should always be active",
28
+ "default": false
29
+ }
30
+ },
31
+ "additionalProperties": false
32
+ },
33
+ "content": {
34
+ "type": "string",
35
+ "description": "Markdown content following the frontmatter. Standard markdown with headings, lists, code blocks, etc."
36
+ }
37
+ },
38
+ "examples": [
39
+ {
40
+ "frontmatter": {
41
+ "description": "TypeScript coding standards",
42
+ "globs": ["*.ts", "*.tsx"],
43
+ "alwaysApply": false
44
+ },
45
+ "content": "# TypeScript Standards\n\n- Use strict mode\n- Prefer interfaces over types\n- Always define return types"
46
+ },
47
+ {
48
+ "content": "# General Coding Guidelines\n\nThese guidelines apply to all code.\n\n- Write clear, self-documenting code\n- Add comments for complex logic"
49
+ }
50
+ ]
51
+ }
package/package.json CHANGED
@@ -1,24 +1,28 @@
1
1
  {
2
2
  "name": "prpm",
3
- "version": "1.2.1",
3
+ "version": "2.1.0",
4
4
  "description": "Prompt Package Manager CLI - Install and manage prompt-based files",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "prpm": "dist/index.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "tsc",
11
- "build:watch": "tsc --watch --preserveWatchOutput",
10
+ "build": "tsup",
11
+ "build:watch": "tsup --watch",
12
12
  "dev": "tsx watch --clear-screen=false src/index.ts",
13
13
  "dev:with-build": "concurrently --kill-others --names \"BUILD,CLI\" \"tsc --watch --preserveWatchOutput\" \"nodemon --delay 1 --watch dist dist/index.js\"",
14
14
  "dev:build-only": "tsc --watch --preserveWatchOutput",
15
15
  "start": "node dist/index.js",
16
- "test": "jest",
17
- "test:watch": "jest --watch",
18
- "test:coverage": "jest --coverage",
19
- "test:ci": "jest --ci --coverage --watchAll=false",
16
+ "test": "vitest run",
17
+ "test:watch": "vitest",
18
+ "test:coverage": "vitest --coverage",
19
+ "test:ci": "vitest run --coverage",
20
20
  "build:binary": "echo 'Binary builds deprecated - use npm install -g prpm or Homebrew instead'",
21
21
  "typecheck": "tsc --noEmit",
22
+ "version:bump": "node scripts/bump-version.js",
23
+ "version:major": "node scripts/bump-version.js major",
24
+ "version:minor": "node scripts/bump-version.js minor",
25
+ "version:patch": "node scripts/bump-version.js patch",
22
26
  "prepublishOnly": "npm run build"
23
27
  },
24
28
  "keywords": [
@@ -41,24 +45,26 @@
41
45
  "license": "MIT",
42
46
  "dependencies": {
43
47
  "@octokit/rest": "^22.0.0",
44
- "@pr-pm/registry-client": "1.2.1",
45
- "@pr-pm/types": "^0.1.1",
48
+ "@pr-pm/converters": "^2.1.0",
49
+ "@pr-pm/registry-client": "^2.3.0",
50
+ "@pr-pm/types": "^2.1.0",
46
51
  "ajv": "^8.17.1",
47
52
  "ajv-formats": "^3.0.1",
48
53
  "commander": "^11.1.0",
54
+ "jsonwebtoken": "^9.0.2",
49
55
  "posthog-node": "^5.10.0",
56
+ "semver": "^7.7.3",
50
57
  "tar": "^6.2.1"
51
58
  },
52
59
  "devDependencies": {
53
- "@types/jest": "^29.5.8",
60
+ "@types/jsonwebtoken": "^9.0.10",
54
61
  "@types/node": "^20.10.0",
55
62
  "@types/tar": "^6.1.13",
56
- "jest": "^29.7.0",
57
63
  "nodemon": "^3.0.2",
58
- "ts-jest": "^29.1.1",
59
- "ts-node": "^10.9.1",
64
+ "tsup": "^8.5.1",
60
65
  "tsx": "^4.20.6",
61
- "typescript": "^5.3.2"
66
+ "typescript": "^5.3.2",
67
+ "vitest": "^3.2.4"
62
68
  },
63
69
  "engines": {
64
70
  "node": ">=16.0.0"