Skip to content

Commit caeaebd

Browse files
committed
fix ci
1 parent 7f4ec8e commit caeaebd

File tree

3 files changed

+33
-26
lines changed

3 files changed

+33
-26
lines changed

app/components/Package/DeprecatePackageModal.vue

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script setup lang="ts">
22
import type { NewOperation } from '~/composables/useConnector'
3-
import { PackageDeprecateParamsSchema, safeParse } from '~~/cli/src/schemas'
3+
import * as v from 'valibot'
4+
import { PackageDeprecateParamsSchema } from '#shared/schemas/package'
45
56
const DEPRECATE_MESSAGE_MAX_LENGTH = 500
67
@@ -54,31 +55,34 @@ async function handleDeprecate() {
5455
params.version = deprecateVersion.value.trim()
5556
}
5657
57-
const parsed = safeParse(PackageDeprecateParamsSchema, params)
58+
const parsed = v.safeParse(PackageDeprecateParamsSchema, params)
5859
if (!parsed.success) {
59-
deprecateError.value = parsed.error
60+
const firstIssue = parsed.issues[0]
61+
const path = firstIssue?.path?.map(p => p.key).join('.') || ''
62+
const message = firstIssue?.message || 'Validation failed'
63+
deprecateError.value = path ? `${path}: ${message}` : message
6064
return
6165
}
6266
6367
isDeprecating.value = true
6468
deprecateError.value = null
6569
6670
try {
67-
const escapedMessage = parsed.data.message.replace(/"/g, '\\"')
68-
const command = parsed.data.version
69-
? `npm deprecate ${parsed.data.pkg}@${parsed.data.version} "${escapedMessage}"`
70-
: `npm deprecate ${parsed.data.pkg} "${escapedMessage}"`
71+
const escapedMessage = parsed.output.message.replace(/"/g, '\\"')
72+
const command = parsed.output.version
73+
? `npm deprecate ${parsed.output.pkg}@${parsed.output.version} "${escapedMessage}"`
74+
: `npm deprecate ${parsed.output.pkg} "${escapedMessage}"`
7175
7276
const operation = await addOperation({
7377
type: 'package:deprecate',
7478
params: {
75-
pkg: parsed.data.pkg,
76-
message: parsed.data.message,
77-
...(parsed.data.version && { version: parsed.data.version }),
79+
pkg: parsed.output.pkg,
80+
message: parsed.output.message,
81+
...(parsed.output.version && { version: parsed.output.version }),
7882
},
79-
description: parsed.data.version
80-
? `Deprecate ${parsed.data.pkg}@${parsed.data.version}`
81-
: `Deprecate ${parsed.data.pkg}`,
83+
description: parsed.output.version
84+
? `Deprecate ${parsed.output.pkg}@${parsed.output.version}`
85+
: `Deprecate ${parsed.output.pkg}`,
8286
command,
8387
} as NewOperation)
8488

cli/src/schemas.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as v from 'valibot'
22
import validateNpmPackageName from 'validate-npm-package-name'
3+
import { PackageDeprecateParamsSchema } from '../../shared/schemas/package.ts'
34

45
// Validation pattern for npm usernames/org names
56
// These follow similar rules: lowercase alphanumeric with hyphens, can't start/end with hyphen
@@ -247,19 +248,6 @@ export const PackageInitParamsSchema = v.object({
247248
author: v.optional(UsernameSchema),
248249
})
249250

250-
/** Schema for package:deprecate operation params. Exported for client-side validation. */
251-
export const PackageDeprecateParamsSchema = v.object({
252-
pkg: PackageNameSchema,
253-
message: v.pipe(
254-
v.string(),
255-
v.nonEmpty('Deprecation message is required'),
256-
v.maxLength(500, 'Message is too long'),
257-
),
258-
version: v.optional(v.pipe(v.string(), v.nonEmpty())),
259-
dryRun: v.optional(v.picklist(['true', 'false'], 'dryRun must be "true" or "false"')),
260-
registry: v.optional(v.pipe(v.string(), v.minLength(1, 'Registry URL cannot be empty'))),
261-
})
262-
263251
// ============================================================================
264252
// Helper Functions
265253
// ============================================================================

shared/schemas/package.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,18 @@ export const PackageFileDiffQuerySchema = v.object({
9292
export type PackageCompareQuery = v.InferOutput<typeof PackageCompareQuerySchema>
9393
/** @public */
9494
export type PackageFileDiffQuery = v.InferOutput<typeof PackageFileDiffQuerySchema>
95+
96+
/**
97+
* Schema for connector package:deprecate operation params.
98+
*/
99+
export const PackageDeprecateParamsSchema = v.object({
100+
pkg: PackageNameSchema,
101+
message: v.pipe(
102+
v.string(),
103+
v.nonEmpty('Deprecation message is required'),
104+
v.maxLength(500, 'Message is too long'),
105+
),
106+
version: v.optional(v.pipe(v.string(), v.nonEmpty())),
107+
dryRun: v.optional(v.picklist(['true', 'false'], 'dryRun must be "true" or "false"')),
108+
registry: v.optional(v.pipe(v.string(), v.minLength(1, 'Registry URL cannot be empty'))),
109+
})

0 commit comments

Comments
 (0)