@zhuixin/shared 0.2.3 → 0.2.5
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/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type TargetPlatform = \"ios\" | \"windows\" | \"macos\" | \"android\" | \"linux\";\nexport type HostPlatform = \"darwin\" | \"win32\" | \"linux\";\nexport type SourceId =\n | \"app-store\"\n | \"local-file\"\n | \"direct-url\"\n | \"microsoft-store\"\n | \"winget\";\nexport type PackageFormat =\n | \"ipa\"\n | \"msix\"\n | \"appx\"\n | \"exe\"\n | \"msi\"\n | \"zip\"\n | \"dmg\"\n | \"apk\";\n\nexport interface TargetRef {\n platform: TargetPlatform;\n sourceId: SourceId;\n sourceRef: string;\n}\n\nexport interface ResolvedTarget {\n targetRef: TargetRef;\n name: string;\n publisher?: string;\n version?: string;\n bundleId?: string;\n packageId?: string;\n iconUrl?: string;\n storeUrl?: string;\n metadata: Record<string, unknown>;\n}\n\nexport interface TargetRecord extends ResolvedTarget {\n id: string;\n slug: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ArtifactRecord {\n id: string;\n targetId: string;\n platform: TargetPlatform;\n packageFormat: PackageFormat;\n architecture?: string;\n sha256: string;\n path: string;\n sizeBytes: number;\n version?: string;\n buildNumber?: string;\n signature?: Record<string, unknown>;\n inspection?: Record<string, unknown>;\n sourceUrl?: string;\n downloadedAt: string;\n isCurrent: boolean;\n}\n\nexport type FindingType =\n | \"technology\"\n | \"route\"\n | \"network_endpoint\"\n | \"module\"\n | \"asset\"\n | \"storage\"\n | \"native_procedure\"\n | \"native_string\"\n | \"risk\"\n | \"limitation\";\n\nexport type FindingConfidence =\n | \"exact\"\n | \"high\"\n | \"medium\"\n | \"low\"\n | \"unknown\";\n\nexport interface FindingRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n evidenceId: string;\n type: FindingType;\n value: string;\n group?: string;\n sourcePath?: string;\n start?: { line: number; column: number };\n end?: { line: number; column: number };\n confidence: FindingConfidence;\n metadata: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface EvidenceRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n kind: string;\n format: \"json\" | \"markdown\" | \"text\";\n path: string;\n sha256: string;\n summary: Record<string, unknown>;\n parentEvidenceId?: string;\n createdAt: string;\n}\n\nexport interface FindingSearchResult {\n items: FindingRecord[];\n total: number;\n limit: number;\n offset: number;\n}\n\nexport interface AnalysisRunRecord {\n id: string;\n targetId?: string;\n status: \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n startedAt: string;\n finishedAt?: string;\n result?: Record<string, unknown>;\n error?: { code: string; message: string; details?: unknown };\n updatedAt: string;\n}\n\nexport type JobStatus =\n | \"queued\"\n | \"resolving\"\n | \"awaiting_auth\"\n | \"awaiting_license\"\n | \"acquiring\"\n | \"inspecting\"\n | \"registering\"\n | \"ready\"\n | \"analyzing\"\n | \"analyzed\"\n | \"failed\"\n | \"cancelled\"\n | \"interrupted\";\n\nexport interface JobRecord {\n id: string;\n targetId?: string;\n sourceId?: SourceId;\n capabilityId: string;\n status: JobStatus;\n progress: number;\n params: Record<string, unknown>;\n result?: Record<string, unknown>;\n errorCode?: string;\n errorMessage?: string;\n createdAt: string;\n startedAt?: string;\n finishedAt?: string;\n}\n\nexport interface JobEvent {\n jobId: string;\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n payload?: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface SourceDescriptor {\n id: SourceId;\n platform: TargetPlatform;\n displayName: string;\n requiresAuth: boolean;\n status: \"ready\" | \"preview\" | \"evaluate\";\n description: string;\n}\n\nexport interface CapabilityDescriptor {\n id: string;\n label: string;\n description: string;\n targetPlatforms: TargetPlatform[];\n packageFormats?: PackageFormat[];\n hostPlatforms?: HostPlatform[];\n available: boolean;\n reason?: string;\n requiresArtifact?: boolean;\n requiresInput?: \"function\" | \"query\";\n}\n\nexport interface ResolveResult {\n resolutionId: string;\n target: ResolvedTarget;\n provider: SourceDescriptor;\n}\n\nexport interface TargetDetail {\n target: TargetRecord;\n artifacts: ArtifactRecord[];\n jobs: JobRecord[];\n}\n\nexport interface CoreError {\n code: string;\n message: string;\n details?: unknown;\n}\n\nexport interface HealthInfo {\n version: string;\n workspaceRoot: string;\n hostPlatform: HostPlatform;\n store: \"sqlite\" | \"json\";\n tools?: ToolInfo[];\n}\n\nexport interface ToolInfo {\n id: string;\n label: string;\n path: string;\n available: boolean;\n}\n\nexport interface AccountStatus {\n authenticated: boolean;\n errorCode?: \"TOOL_NOT_INSTALLED\" | \"AUTH_CHECK_FAILED\" | \"AUTH_CHECK_TIMEOUT\";\n email?: string;\n name?: string;\n keychain: \"unlocked\" | \"locked\" | \"unknown\";\n checkedAt: string;\n message?: string;\n}\n\nexport interface EntitlementRecord {\n appId?: string | number;\n bundleId?: string;\n name: string;\n version?: string;\n platform?: string;\n}\n\nexport interface AccountEntitlements {\n items: EntitlementRecord[];\n checkedAt: string;\n truncated: boolean;\n error?: string;\n}\n\nexport interface EntitlementCheck {\n status: \"owned\" | \"not_owned\" | \"unknown\";\n checkedAt: string;\n message?: string;\n entitlement?: EntitlementRecord;\n}\n\nexport interface CoreRequest<T = unknown> {\n id: string;\n channel: string;\n payload: T;\n}\n\nexport type CoreResponse<T = unknown> =\n | { id: string; ok: true; data: T }\n | { id: string; ok: false; error: CoreError };\n\nexport type CoreEvent =\n | { type: \"job.updated\"; payload: JobRecord }\n | { type: \"job.log\"; payload: JobEvent }\n | { type: \"target.updated\"; payload: TargetRecord }\n | { type: \"terminal.data\"; payload: { sessionId: string; data: string } }\n | {\n type: \"terminal.exit\";\n payload: { sessionId: string; code: number | null; signal?: string | null };\n };\n\nexport const CHANNELS = {\n health: \"health\",\n sourcesList: \"sources:list\",\n targetsResolve: \"targets:resolve\",\n targetsCreate: \"targets:create\",\n targetsList: \"targets:list\",\n targetsGet: \"targets:get\",\n jobsCreate: \"jobs:create\",\n jobsGet: \"jobs:get\",\n jobsCancel: \"jobs:cancel\",\n capabilitiesList: \"capabilities:list\",\n findingsSearch: \"findings:search\",\n evidenceList: \"evidence:list\",\n terminalStart: \"terminal:start\",\n terminalInput: \"terminal:input\",\n terminalStop: \"terminal:stop\",\n accountStatus: \"account:status\",\n accountEntitlements: \"account:entitlements\",\n accountCheckEntitlement: \"account:check-entitlement\"\n} as const;\n\nexport const resolveInputSchema = z.object({\n input: z.string().trim().min(1).max(4096)\n});\n\nexport const createTargetSchema = z.object({\n resolutionId: z.string().min(1).max(128)\n});\n\nexport const createJobSchema = z.object({\n targetId: z.string().uuid(),\n capabilityId: z.string().trim().min(1).max(128),\n artifactId: z.string().uuid().optional(),\n input: z\n .object({\n functionName: z\n .string()\n .trim()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z_$][A-Za-z0-9_$.@:-]{0,255}$/)\n .optional(),\n query: z.string().trim().min(1).max(512).optional(),\n kind: z.enum([\"procedures\", \"strings\"]).optional(),\n mode: z.enum([\"literal\", \"regex\"]).optional()\n })\n .strict()\n .optional()\n});\n\nexport const findingsSearchSchema = z.object({\n targetId: z.string().uuid(),\n query: z.string().trim().max(512).optional(),\n types: z\n .array(\n z.enum([\n \"technology\",\n \"route\",\n \"network_endpoint\",\n \"module\",\n \"asset\",\n \"storage\",\n \"native_procedure\",\n \"native_string\",\n \"risk\",\n \"limitation\"\n ])\n )\n .optional(),\n limit: z.number().int().min(1).max(1000).optional(),\n offset: z.number().int().min(0).optional()\n});\n\nexport const evidenceListSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const capabilitiesListSchema = z\n .object({\n targetId: z.string().uuid().optional()\n })\n .optional();\n\nexport const targetIdSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const jobIdSchema = z.object({\n jobId: z.string().uuid()\n});\n\nexport const terminalStartSchema = z.object({\n kind: z.literal(\"ipatool-auth\")\n});\n\nexport const terminalInputSchema = z.object({\n sessionId: z.string().uuid(),\n data: z.string().max(16_384)\n});\n\nexport const terminalStopSchema = z.object({\n sessionId: z.string().uuid()\n});\n\nexport const accountStatusSchema = z.object({\n force: z.boolean().optional()\n});\n\nexport const accountCheckSchema = z\n .object({\n appId: z.union([z.string(), z.number()]).optional(),\n bundleId: z.string().optional()\n })\n .refine((value) => value.appId !== undefined || value.bundleId !== undefined, {\n message: \"appId or bundleId is required\"\n });\n\nexport function parseAppStoreId(input: string): { appId: number; country: string } | null {\n const trimmed = input.trim();\n const numeric = trimmed.match(/^\\d+$/);\n if (numeric) {\n return { appId: Number(numeric[0]), country: \"cn\" };\n }\n\n const idMatch = trimmed.match(/(?:\\/id|\\bid=)(\\d+)/);\n if (!idMatch) return null;\n\n const countryMatch = trimmed.match(/apps\\.apple\\.com\\/([a-z]{2})\\//i);\n return {\n appId: Number(idMatch[1]),\n country: (countryMatch?.[1] ?? \"cn\").toLowerCase()\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type TargetPlatform = \"ios\" | \"windows\" | \"macos\" | \"android\" | \"linux\";\nexport type HostPlatform = \"darwin\" | \"win32\" | \"linux\";\nexport type SourceId =\n | \"app-store\"\n | \"local-file\"\n | \"direct-url\"\n | \"microsoft-store\"\n | \"winget\";\nexport type PackageFormat =\n | \"ipa\"\n | \"msix\"\n | \"appx\"\n | \"exe\"\n | \"msi\"\n | \"zip\"\n | \"dmg\"\n | \"app\"\n | \"apk\";\n\nexport interface TargetRef {\n platform: TargetPlatform;\n sourceId: SourceId;\n sourceRef: string;\n}\n\nexport interface ResolvedTarget {\n targetRef: TargetRef;\n name: string;\n publisher?: string;\n version?: string;\n bundleId?: string;\n packageId?: string;\n iconUrl?: string;\n storeUrl?: string;\n metadata: Record<string, unknown>;\n}\n\nexport interface TargetRecord extends ResolvedTarget {\n id: string;\n slug: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ArtifactRecord {\n id: string;\n targetId: string;\n platform: TargetPlatform;\n packageFormat: PackageFormat;\n architecture?: string;\n sha256: string;\n path: string;\n sizeBytes: number;\n version?: string;\n buildNumber?: string;\n signature?: Record<string, unknown>;\n inspection?: Record<string, unknown>;\n sourceUrl?: string;\n downloadedAt: string;\n isCurrent: boolean;\n}\n\nexport type FindingType =\n | \"technology\"\n | \"route\"\n | \"network_endpoint\"\n | \"module\"\n | \"asset\"\n | \"storage\"\n | \"native_procedure\"\n | \"native_string\"\n | \"risk\"\n | \"limitation\";\n\nexport type FindingConfidence =\n | \"exact\"\n | \"high\"\n | \"medium\"\n | \"low\"\n | \"unknown\";\n\nexport interface FindingRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n evidenceId: string;\n type: FindingType;\n value: string;\n group?: string;\n sourcePath?: string;\n start?: { line: number; column: number };\n end?: { line: number; column: number };\n confidence: FindingConfidence;\n metadata: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface EvidenceRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n kind: string;\n format: \"json\" | \"markdown\" | \"text\";\n path: string;\n sha256: string;\n summary: Record<string, unknown>;\n parentEvidenceId?: string;\n createdAt: string;\n}\n\nexport interface FindingSearchResult {\n items: FindingRecord[];\n total: number;\n limit: number;\n offset: number;\n}\n\nexport interface AnalysisRunRecord {\n id: string;\n targetId?: string;\n status: \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n startedAt: string;\n finishedAt?: string;\n result?: Record<string, unknown>;\n error?: { code: string; message: string; details?: unknown };\n updatedAt: string;\n}\n\nexport type JobStatus =\n | \"queued\"\n | \"resolving\"\n | \"awaiting_auth\"\n | \"awaiting_license\"\n | \"acquiring\"\n | \"inspecting\"\n | \"registering\"\n | \"ready\"\n | \"analyzing\"\n | \"analyzed\"\n | \"failed\"\n | \"cancelled\"\n | \"interrupted\";\n\nexport interface JobRecord {\n id: string;\n targetId?: string;\n sourceId?: SourceId;\n capabilityId: string;\n status: JobStatus;\n progress: number;\n params: Record<string, unknown>;\n result?: Record<string, unknown>;\n errorCode?: string;\n errorMessage?: string;\n createdAt: string;\n startedAt?: string;\n finishedAt?: string;\n}\n\nexport interface JobEvent {\n jobId: string;\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n payload?: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface SourceDescriptor {\n id: SourceId;\n platform: TargetPlatform;\n displayName: string;\n requiresAuth: boolean;\n status: \"ready\" | \"preview\" | \"evaluate\";\n description: string;\n}\n\nexport interface CapabilityDescriptor {\n id: string;\n label: string;\n description: string;\n targetPlatforms: TargetPlatform[];\n packageFormats?: PackageFormat[];\n hostPlatforms?: HostPlatform[];\n available: boolean;\n reason?: string;\n requiresArtifact?: boolean;\n requiresInput?: \"function\" | \"query\";\n}\n\nexport interface ResolveResult {\n resolutionId: string;\n target: ResolvedTarget;\n provider: SourceDescriptor;\n}\n\nexport interface TargetDetail {\n target: TargetRecord;\n artifacts: ArtifactRecord[];\n jobs: JobRecord[];\n}\n\nexport interface CoreError {\n code: string;\n message: string;\n details?: unknown;\n}\n\nexport interface HealthInfo {\n version: string;\n workspaceRoot: string;\n hostPlatform: HostPlatform;\n store: \"sqlite\" | \"json\";\n tools?: ToolInfo[];\n}\n\nexport interface ToolInfo {\n id: string;\n label: string;\n path: string;\n available: boolean;\n}\n\nexport interface AccountStatus {\n authenticated: boolean;\n errorCode?: \"TOOL_NOT_INSTALLED\" | \"AUTH_CHECK_FAILED\" | \"AUTH_CHECK_TIMEOUT\" | \"CREDENTIAL_ACCESS_FAILED\";\n email?: string;\n name?: string;\n keychain: \"unlocked\" | \"locked\" | \"unknown\";\n checkedAt: string;\n message?: string;\n}\n\nexport interface EntitlementRecord {\n appId?: string | number;\n bundleId?: string;\n name: string;\n version?: string;\n platform?: string;\n}\n\nexport interface AccountEntitlements {\n items: EntitlementRecord[];\n checkedAt: string;\n truncated: boolean;\n error?: string;\n}\n\nexport interface EntitlementCheck {\n status: \"owned\" | \"not_owned\" | \"unknown\";\n checkedAt: string;\n message?: string;\n entitlement?: EntitlementRecord;\n}\n\nexport interface CoreRequest<T = unknown> {\n id: string;\n channel: string;\n payload: T;\n}\n\nexport type CoreResponse<T = unknown> =\n | { id: string; ok: true; data: T }\n | { id: string; ok: false; error: CoreError };\n\nexport type CoreEvent =\n | { type: \"job.updated\"; payload: JobRecord }\n | { type: \"job.log\"; payload: JobEvent }\n | { type: \"target.updated\"; payload: TargetRecord }\n | { type: \"terminal.data\"; payload: { sessionId: string; data: string } }\n | {\n type: \"terminal.exit\";\n payload: { sessionId: string; code: number | null; signal?: string | null };\n };\n\nexport const CHANNELS = {\n health: \"health\",\n sourcesList: \"sources:list\",\n targetsResolve: \"targets:resolve\",\n targetsCreate: \"targets:create\",\n targetsList: \"targets:list\",\n targetsGet: \"targets:get\",\n jobsCreate: \"jobs:create\",\n jobsGet: \"jobs:get\",\n jobsCancel: \"jobs:cancel\",\n capabilitiesList: \"capabilities:list\",\n findingsSearch: \"findings:search\",\n evidenceList: \"evidence:list\",\n terminalStart: \"terminal:start\",\n terminalInput: \"terminal:input\",\n terminalStop: \"terminal:stop\",\n accountStatus: \"account:status\",\n accountEntitlements: \"account:entitlements\",\n accountCheckEntitlement: \"account:check-entitlement\"\n} as const;\n\nexport const resolveInputSchema = z.object({\n input: z.string().trim().min(1).max(4096)\n});\n\nexport const createTargetSchema = z.object({\n resolutionId: z.string().min(1).max(128)\n});\n\nexport const createJobSchema = z.object({\n targetId: z.string().uuid(),\n capabilityId: z.string().trim().min(1).max(128),\n artifactId: z.string().uuid().optional(),\n input: z\n .object({\n functionName: z\n .string()\n .trim()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z_$][A-Za-z0-9_$.@:-]{0,255}$/)\n .optional(),\n query: z.string().trim().min(1).max(512).optional(),\n kind: z.enum([\"procedures\", \"strings\"]).optional(),\n mode: z.enum([\"literal\", \"regex\"]).optional()\n })\n .strict()\n .optional()\n});\n\nexport const findingsSearchSchema = z.object({\n targetId: z.string().uuid(),\n query: z.string().trim().max(512).optional(),\n types: z\n .array(\n z.enum([\n \"technology\",\n \"route\",\n \"network_endpoint\",\n \"module\",\n \"asset\",\n \"storage\",\n \"native_procedure\",\n \"native_string\",\n \"risk\",\n \"limitation\"\n ])\n )\n .optional(),\n limit: z.number().int().min(1).max(1000).optional(),\n offset: z.number().int().min(0).optional()\n});\n\nexport const evidenceListSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const capabilitiesListSchema = z\n .object({\n targetId: z.string().uuid().optional()\n })\n .optional();\n\nexport const targetIdSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const jobIdSchema = z.object({\n jobId: z.string().uuid()\n});\n\nexport const terminalStartSchema = z.object({\n kind: z.literal(\"ipatool-auth\")\n});\n\nexport const terminalInputSchema = z.object({\n sessionId: z.string().uuid(),\n data: z.string().max(16_384)\n});\n\nexport const terminalStopSchema = z.object({\n sessionId: z.string().uuid()\n});\n\nexport const accountStatusSchema = z.object({\n force: z.boolean().optional()\n});\n\nexport const accountCheckSchema = z\n .object({\n appId: z.union([z.string(), z.number()]).optional(),\n bundleId: z.string().optional()\n })\n .refine((value) => value.appId !== undefined || value.bundleId !== undefined, {\n message: \"appId or bundleId is required\"\n });\n\nexport function parseAppStoreId(input: string): { appId: number; country: string } | null {\n const trimmed = input.trim();\n const numeric = trimmed.match(/^\\d+$/);\n if (numeric) {\n return { appId: Number(numeric[0]), country: \"cn\" };\n }\n\n const idMatch = trimmed.match(/(?:\\/id|\\bid=)(\\d+)/);\n if (!idMatch) return null;\n\n const countryMatch = trimmed.match(/apps\\.apple\\.com\\/([a-z]{2})\\//i);\n return {\n appId: Number(idMatch[1]),\n country: (countryMatch?.[1] ?? \"cn\").toLowerCase()\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,7 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
type TargetPlatform = "ios" | "windows" | "macos" | "android" | "linux";
|
|
4
4
|
type HostPlatform = "darwin" | "win32" | "linux";
|
|
5
5
|
type SourceId = "app-store" | "local-file" | "direct-url" | "microsoft-store" | "winget";
|
|
6
|
-
type PackageFormat = "ipa" | "msix" | "appx" | "exe" | "msi" | "zip" | "dmg" | "apk";
|
|
6
|
+
type PackageFormat = "ipa" | "msix" | "appx" | "exe" | "msi" | "zip" | "dmg" | "app" | "apk";
|
|
7
7
|
interface TargetRef {
|
|
8
8
|
platform: TargetPlatform;
|
|
9
9
|
sourceId: SourceId;
|
|
@@ -173,7 +173,7 @@ interface ToolInfo {
|
|
|
173
173
|
}
|
|
174
174
|
interface AccountStatus {
|
|
175
175
|
authenticated: boolean;
|
|
176
|
-
errorCode?: "TOOL_NOT_INSTALLED" | "AUTH_CHECK_FAILED" | "AUTH_CHECK_TIMEOUT";
|
|
176
|
+
errorCode?: "TOOL_NOT_INSTALLED" | "AUTH_CHECK_FAILED" | "AUTH_CHECK_TIMEOUT" | "CREDENTIAL_ACCESS_FAILED";
|
|
177
177
|
email?: string;
|
|
178
178
|
name?: string;
|
|
179
179
|
keychain: "unlocked" | "locked" | "unknown";
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
type TargetPlatform = "ios" | "windows" | "macos" | "android" | "linux";
|
|
4
4
|
type HostPlatform = "darwin" | "win32" | "linux";
|
|
5
5
|
type SourceId = "app-store" | "local-file" | "direct-url" | "microsoft-store" | "winget";
|
|
6
|
-
type PackageFormat = "ipa" | "msix" | "appx" | "exe" | "msi" | "zip" | "dmg" | "apk";
|
|
6
|
+
type PackageFormat = "ipa" | "msix" | "appx" | "exe" | "msi" | "zip" | "dmg" | "app" | "apk";
|
|
7
7
|
interface TargetRef {
|
|
8
8
|
platform: TargetPlatform;
|
|
9
9
|
sourceId: SourceId;
|
|
@@ -173,7 +173,7 @@ interface ToolInfo {
|
|
|
173
173
|
}
|
|
174
174
|
interface AccountStatus {
|
|
175
175
|
authenticated: boolean;
|
|
176
|
-
errorCode?: "TOOL_NOT_INSTALLED" | "AUTH_CHECK_FAILED" | "AUTH_CHECK_TIMEOUT";
|
|
176
|
+
errorCode?: "TOOL_NOT_INSTALLED" | "AUTH_CHECK_FAILED" | "AUTH_CHECK_TIMEOUT" | "CREDENTIAL_ACCESS_FAILED";
|
|
177
177
|
email?: string;
|
|
178
178
|
name?: string;
|
|
179
179
|
keychain: "unlocked" | "locked" | "unknown";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type TargetPlatform = \"ios\" | \"windows\" | \"macos\" | \"android\" | \"linux\";\nexport type HostPlatform = \"darwin\" | \"win32\" | \"linux\";\nexport type SourceId =\n | \"app-store\"\n | \"local-file\"\n | \"direct-url\"\n | \"microsoft-store\"\n | \"winget\";\nexport type PackageFormat =\n | \"ipa\"\n | \"msix\"\n | \"appx\"\n | \"exe\"\n | \"msi\"\n | \"zip\"\n | \"dmg\"\n | \"apk\";\n\nexport interface TargetRef {\n platform: TargetPlatform;\n sourceId: SourceId;\n sourceRef: string;\n}\n\nexport interface ResolvedTarget {\n targetRef: TargetRef;\n name: string;\n publisher?: string;\n version?: string;\n bundleId?: string;\n packageId?: string;\n iconUrl?: string;\n storeUrl?: string;\n metadata: Record<string, unknown>;\n}\n\nexport interface TargetRecord extends ResolvedTarget {\n id: string;\n slug: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ArtifactRecord {\n id: string;\n targetId: string;\n platform: TargetPlatform;\n packageFormat: PackageFormat;\n architecture?: string;\n sha256: string;\n path: string;\n sizeBytes: number;\n version?: string;\n buildNumber?: string;\n signature?: Record<string, unknown>;\n inspection?: Record<string, unknown>;\n sourceUrl?: string;\n downloadedAt: string;\n isCurrent: boolean;\n}\n\nexport type FindingType =\n | \"technology\"\n | \"route\"\n | \"network_endpoint\"\n | \"module\"\n | \"asset\"\n | \"storage\"\n | \"native_procedure\"\n | \"native_string\"\n | \"risk\"\n | \"limitation\";\n\nexport type FindingConfidence =\n | \"exact\"\n | \"high\"\n | \"medium\"\n | \"low\"\n | \"unknown\";\n\nexport interface FindingRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n evidenceId: string;\n type: FindingType;\n value: string;\n group?: string;\n sourcePath?: string;\n start?: { line: number; column: number };\n end?: { line: number; column: number };\n confidence: FindingConfidence;\n metadata: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface EvidenceRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n kind: string;\n format: \"json\" | \"markdown\" | \"text\";\n path: string;\n sha256: string;\n summary: Record<string, unknown>;\n parentEvidenceId?: string;\n createdAt: string;\n}\n\nexport interface FindingSearchResult {\n items: FindingRecord[];\n total: number;\n limit: number;\n offset: number;\n}\n\nexport interface AnalysisRunRecord {\n id: string;\n targetId?: string;\n status: \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n startedAt: string;\n finishedAt?: string;\n result?: Record<string, unknown>;\n error?: { code: string; message: string; details?: unknown };\n updatedAt: string;\n}\n\nexport type JobStatus =\n | \"queued\"\n | \"resolving\"\n | \"awaiting_auth\"\n | \"awaiting_license\"\n | \"acquiring\"\n | \"inspecting\"\n | \"registering\"\n | \"ready\"\n | \"analyzing\"\n | \"analyzed\"\n | \"failed\"\n | \"cancelled\"\n | \"interrupted\";\n\nexport interface JobRecord {\n id: string;\n targetId?: string;\n sourceId?: SourceId;\n capabilityId: string;\n status: JobStatus;\n progress: number;\n params: Record<string, unknown>;\n result?: Record<string, unknown>;\n errorCode?: string;\n errorMessage?: string;\n createdAt: string;\n startedAt?: string;\n finishedAt?: string;\n}\n\nexport interface JobEvent {\n jobId: string;\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n payload?: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface SourceDescriptor {\n id: SourceId;\n platform: TargetPlatform;\n displayName: string;\n requiresAuth: boolean;\n status: \"ready\" | \"preview\" | \"evaluate\";\n description: string;\n}\n\nexport interface CapabilityDescriptor {\n id: string;\n label: string;\n description: string;\n targetPlatforms: TargetPlatform[];\n packageFormats?: PackageFormat[];\n hostPlatforms?: HostPlatform[];\n available: boolean;\n reason?: string;\n requiresArtifact?: boolean;\n requiresInput?: \"function\" | \"query\";\n}\n\nexport interface ResolveResult {\n resolutionId: string;\n target: ResolvedTarget;\n provider: SourceDescriptor;\n}\n\nexport interface TargetDetail {\n target: TargetRecord;\n artifacts: ArtifactRecord[];\n jobs: JobRecord[];\n}\n\nexport interface CoreError {\n code: string;\n message: string;\n details?: unknown;\n}\n\nexport interface HealthInfo {\n version: string;\n workspaceRoot: string;\n hostPlatform: HostPlatform;\n store: \"sqlite\" | \"json\";\n tools?: ToolInfo[];\n}\n\nexport interface ToolInfo {\n id: string;\n label: string;\n path: string;\n available: boolean;\n}\n\nexport interface AccountStatus {\n authenticated: boolean;\n errorCode?: \"TOOL_NOT_INSTALLED\" | \"AUTH_CHECK_FAILED\" | \"AUTH_CHECK_TIMEOUT\";\n email?: string;\n name?: string;\n keychain: \"unlocked\" | \"locked\" | \"unknown\";\n checkedAt: string;\n message?: string;\n}\n\nexport interface EntitlementRecord {\n appId?: string | number;\n bundleId?: string;\n name: string;\n version?: string;\n platform?: string;\n}\n\nexport interface AccountEntitlements {\n items: EntitlementRecord[];\n checkedAt: string;\n truncated: boolean;\n error?: string;\n}\n\nexport interface EntitlementCheck {\n status: \"owned\" | \"not_owned\" | \"unknown\";\n checkedAt: string;\n message?: string;\n entitlement?: EntitlementRecord;\n}\n\nexport interface CoreRequest<T = unknown> {\n id: string;\n channel: string;\n payload: T;\n}\n\nexport type CoreResponse<T = unknown> =\n | { id: string; ok: true; data: T }\n | { id: string; ok: false; error: CoreError };\n\nexport type CoreEvent =\n | { type: \"job.updated\"; payload: JobRecord }\n | { type: \"job.log\"; payload: JobEvent }\n | { type: \"target.updated\"; payload: TargetRecord }\n | { type: \"terminal.data\"; payload: { sessionId: string; data: string } }\n | {\n type: \"terminal.exit\";\n payload: { sessionId: string; code: number | null; signal?: string | null };\n };\n\nexport const CHANNELS = {\n health: \"health\",\n sourcesList: \"sources:list\",\n targetsResolve: \"targets:resolve\",\n targetsCreate: \"targets:create\",\n targetsList: \"targets:list\",\n targetsGet: \"targets:get\",\n jobsCreate: \"jobs:create\",\n jobsGet: \"jobs:get\",\n jobsCancel: \"jobs:cancel\",\n capabilitiesList: \"capabilities:list\",\n findingsSearch: \"findings:search\",\n evidenceList: \"evidence:list\",\n terminalStart: \"terminal:start\",\n terminalInput: \"terminal:input\",\n terminalStop: \"terminal:stop\",\n accountStatus: \"account:status\",\n accountEntitlements: \"account:entitlements\",\n accountCheckEntitlement: \"account:check-entitlement\"\n} as const;\n\nexport const resolveInputSchema = z.object({\n input: z.string().trim().min(1).max(4096)\n});\n\nexport const createTargetSchema = z.object({\n resolutionId: z.string().min(1).max(128)\n});\n\nexport const createJobSchema = z.object({\n targetId: z.string().uuid(),\n capabilityId: z.string().trim().min(1).max(128),\n artifactId: z.string().uuid().optional(),\n input: z\n .object({\n functionName: z\n .string()\n .trim()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z_$][A-Za-z0-9_$.@:-]{0,255}$/)\n .optional(),\n query: z.string().trim().min(1).max(512).optional(),\n kind: z.enum([\"procedures\", \"strings\"]).optional(),\n mode: z.enum([\"literal\", \"regex\"]).optional()\n })\n .strict()\n .optional()\n});\n\nexport const findingsSearchSchema = z.object({\n targetId: z.string().uuid(),\n query: z.string().trim().max(512).optional(),\n types: z\n .array(\n z.enum([\n \"technology\",\n \"route\",\n \"network_endpoint\",\n \"module\",\n \"asset\",\n \"storage\",\n \"native_procedure\",\n \"native_string\",\n \"risk\",\n \"limitation\"\n ])\n )\n .optional(),\n limit: z.number().int().min(1).max(1000).optional(),\n offset: z.number().int().min(0).optional()\n});\n\nexport const evidenceListSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const capabilitiesListSchema = z\n .object({\n targetId: z.string().uuid().optional()\n })\n .optional();\n\nexport const targetIdSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const jobIdSchema = z.object({\n jobId: z.string().uuid()\n});\n\nexport const terminalStartSchema = z.object({\n kind: z.literal(\"ipatool-auth\")\n});\n\nexport const terminalInputSchema = z.object({\n sessionId: z.string().uuid(),\n data: z.string().max(16_384)\n});\n\nexport const terminalStopSchema = z.object({\n sessionId: z.string().uuid()\n});\n\nexport const accountStatusSchema = z.object({\n force: z.boolean().optional()\n});\n\nexport const accountCheckSchema = z\n .object({\n appId: z.union([z.string(), z.number()]).optional(),\n bundleId: z.string().optional()\n })\n .refine((value) => value.appId !== undefined || value.bundleId !== undefined, {\n message: \"appId or bundleId is required\"\n });\n\nexport function parseAppStoreId(input: string): { appId: number; country: string } | null {\n const trimmed = input.trim();\n const numeric = trimmed.match(/^\\d+$/);\n if (numeric) {\n return { appId: Number(numeric[0]), country: \"cn\" };\n }\n\n const idMatch = trimmed.match(/(?:\\/id|\\bid=)(\\d+)/);\n if (!idMatch) return null;\n\n const countryMatch = trimmed.match(/apps\\.apple\\.com\\/([a-z]{2})\\//i);\n return {\n appId: Number(idMatch[1]),\n country: (countryMatch?.[1] ?? \"cn\").toLowerCase()\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type TargetPlatform = \"ios\" | \"windows\" | \"macos\" | \"android\" | \"linux\";\nexport type HostPlatform = \"darwin\" | \"win32\" | \"linux\";\nexport type SourceId =\n | \"app-store\"\n | \"local-file\"\n | \"direct-url\"\n | \"microsoft-store\"\n | \"winget\";\nexport type PackageFormat =\n | \"ipa\"\n | \"msix\"\n | \"appx\"\n | \"exe\"\n | \"msi\"\n | \"zip\"\n | \"dmg\"\n | \"app\"\n | \"apk\";\n\nexport interface TargetRef {\n platform: TargetPlatform;\n sourceId: SourceId;\n sourceRef: string;\n}\n\nexport interface ResolvedTarget {\n targetRef: TargetRef;\n name: string;\n publisher?: string;\n version?: string;\n bundleId?: string;\n packageId?: string;\n iconUrl?: string;\n storeUrl?: string;\n metadata: Record<string, unknown>;\n}\n\nexport interface TargetRecord extends ResolvedTarget {\n id: string;\n slug: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ArtifactRecord {\n id: string;\n targetId: string;\n platform: TargetPlatform;\n packageFormat: PackageFormat;\n architecture?: string;\n sha256: string;\n path: string;\n sizeBytes: number;\n version?: string;\n buildNumber?: string;\n signature?: Record<string, unknown>;\n inspection?: Record<string, unknown>;\n sourceUrl?: string;\n downloadedAt: string;\n isCurrent: boolean;\n}\n\nexport type FindingType =\n | \"technology\"\n | \"route\"\n | \"network_endpoint\"\n | \"module\"\n | \"asset\"\n | \"storage\"\n | \"native_procedure\"\n | \"native_string\"\n | \"risk\"\n | \"limitation\";\n\nexport type FindingConfidence =\n | \"exact\"\n | \"high\"\n | \"medium\"\n | \"low\"\n | \"unknown\";\n\nexport interface FindingRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n evidenceId: string;\n type: FindingType;\n value: string;\n group?: string;\n sourcePath?: string;\n start?: { line: number; column: number };\n end?: { line: number; column: number };\n confidence: FindingConfidence;\n metadata: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface EvidenceRecord {\n id: string;\n targetId: string;\n artifactId?: string;\n jobId: string;\n kind: string;\n format: \"json\" | \"markdown\" | \"text\";\n path: string;\n sha256: string;\n summary: Record<string, unknown>;\n parentEvidenceId?: string;\n createdAt: string;\n}\n\nexport interface FindingSearchResult {\n items: FindingRecord[];\n total: number;\n limit: number;\n offset: number;\n}\n\nexport interface AnalysisRunRecord {\n id: string;\n targetId?: string;\n status: \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n startedAt: string;\n finishedAt?: string;\n result?: Record<string, unknown>;\n error?: { code: string; message: string; details?: unknown };\n updatedAt: string;\n}\n\nexport type JobStatus =\n | \"queued\"\n | \"resolving\"\n | \"awaiting_auth\"\n | \"awaiting_license\"\n | \"acquiring\"\n | \"inspecting\"\n | \"registering\"\n | \"ready\"\n | \"analyzing\"\n | \"analyzed\"\n | \"failed\"\n | \"cancelled\"\n | \"interrupted\";\n\nexport interface JobRecord {\n id: string;\n targetId?: string;\n sourceId?: SourceId;\n capabilityId: string;\n status: JobStatus;\n progress: number;\n params: Record<string, unknown>;\n result?: Record<string, unknown>;\n errorCode?: string;\n errorMessage?: string;\n createdAt: string;\n startedAt?: string;\n finishedAt?: string;\n}\n\nexport interface JobEvent {\n jobId: string;\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n payload?: Record<string, unknown>;\n createdAt: string;\n}\n\nexport interface SourceDescriptor {\n id: SourceId;\n platform: TargetPlatform;\n displayName: string;\n requiresAuth: boolean;\n status: \"ready\" | \"preview\" | \"evaluate\";\n description: string;\n}\n\nexport interface CapabilityDescriptor {\n id: string;\n label: string;\n description: string;\n targetPlatforms: TargetPlatform[];\n packageFormats?: PackageFormat[];\n hostPlatforms?: HostPlatform[];\n available: boolean;\n reason?: string;\n requiresArtifact?: boolean;\n requiresInput?: \"function\" | \"query\";\n}\n\nexport interface ResolveResult {\n resolutionId: string;\n target: ResolvedTarget;\n provider: SourceDescriptor;\n}\n\nexport interface TargetDetail {\n target: TargetRecord;\n artifacts: ArtifactRecord[];\n jobs: JobRecord[];\n}\n\nexport interface CoreError {\n code: string;\n message: string;\n details?: unknown;\n}\n\nexport interface HealthInfo {\n version: string;\n workspaceRoot: string;\n hostPlatform: HostPlatform;\n store: \"sqlite\" | \"json\";\n tools?: ToolInfo[];\n}\n\nexport interface ToolInfo {\n id: string;\n label: string;\n path: string;\n available: boolean;\n}\n\nexport interface AccountStatus {\n authenticated: boolean;\n errorCode?: \"TOOL_NOT_INSTALLED\" | \"AUTH_CHECK_FAILED\" | \"AUTH_CHECK_TIMEOUT\" | \"CREDENTIAL_ACCESS_FAILED\";\n email?: string;\n name?: string;\n keychain: \"unlocked\" | \"locked\" | \"unknown\";\n checkedAt: string;\n message?: string;\n}\n\nexport interface EntitlementRecord {\n appId?: string | number;\n bundleId?: string;\n name: string;\n version?: string;\n platform?: string;\n}\n\nexport interface AccountEntitlements {\n items: EntitlementRecord[];\n checkedAt: string;\n truncated: boolean;\n error?: string;\n}\n\nexport interface EntitlementCheck {\n status: \"owned\" | \"not_owned\" | \"unknown\";\n checkedAt: string;\n message?: string;\n entitlement?: EntitlementRecord;\n}\n\nexport interface CoreRequest<T = unknown> {\n id: string;\n channel: string;\n payload: T;\n}\n\nexport type CoreResponse<T = unknown> =\n | { id: string; ok: true; data: T }\n | { id: string; ok: false; error: CoreError };\n\nexport type CoreEvent =\n | { type: \"job.updated\"; payload: JobRecord }\n | { type: \"job.log\"; payload: JobEvent }\n | { type: \"target.updated\"; payload: TargetRecord }\n | { type: \"terminal.data\"; payload: { sessionId: string; data: string } }\n | {\n type: \"terminal.exit\";\n payload: { sessionId: string; code: number | null; signal?: string | null };\n };\n\nexport const CHANNELS = {\n health: \"health\",\n sourcesList: \"sources:list\",\n targetsResolve: \"targets:resolve\",\n targetsCreate: \"targets:create\",\n targetsList: \"targets:list\",\n targetsGet: \"targets:get\",\n jobsCreate: \"jobs:create\",\n jobsGet: \"jobs:get\",\n jobsCancel: \"jobs:cancel\",\n capabilitiesList: \"capabilities:list\",\n findingsSearch: \"findings:search\",\n evidenceList: \"evidence:list\",\n terminalStart: \"terminal:start\",\n terminalInput: \"terminal:input\",\n terminalStop: \"terminal:stop\",\n accountStatus: \"account:status\",\n accountEntitlements: \"account:entitlements\",\n accountCheckEntitlement: \"account:check-entitlement\"\n} as const;\n\nexport const resolveInputSchema = z.object({\n input: z.string().trim().min(1).max(4096)\n});\n\nexport const createTargetSchema = z.object({\n resolutionId: z.string().min(1).max(128)\n});\n\nexport const createJobSchema = z.object({\n targetId: z.string().uuid(),\n capabilityId: z.string().trim().min(1).max(128),\n artifactId: z.string().uuid().optional(),\n input: z\n .object({\n functionName: z\n .string()\n .trim()\n .min(1)\n .max(256)\n .regex(/^[A-Za-z_$][A-Za-z0-9_$.@:-]{0,255}$/)\n .optional(),\n query: z.string().trim().min(1).max(512).optional(),\n kind: z.enum([\"procedures\", \"strings\"]).optional(),\n mode: z.enum([\"literal\", \"regex\"]).optional()\n })\n .strict()\n .optional()\n});\n\nexport const findingsSearchSchema = z.object({\n targetId: z.string().uuid(),\n query: z.string().trim().max(512).optional(),\n types: z\n .array(\n z.enum([\n \"technology\",\n \"route\",\n \"network_endpoint\",\n \"module\",\n \"asset\",\n \"storage\",\n \"native_procedure\",\n \"native_string\",\n \"risk\",\n \"limitation\"\n ])\n )\n .optional(),\n limit: z.number().int().min(1).max(1000).optional(),\n offset: z.number().int().min(0).optional()\n});\n\nexport const evidenceListSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const capabilitiesListSchema = z\n .object({\n targetId: z.string().uuid().optional()\n })\n .optional();\n\nexport const targetIdSchema = z.object({\n targetId: z.string().uuid()\n});\n\nexport const jobIdSchema = z.object({\n jobId: z.string().uuid()\n});\n\nexport const terminalStartSchema = z.object({\n kind: z.literal(\"ipatool-auth\")\n});\n\nexport const terminalInputSchema = z.object({\n sessionId: z.string().uuid(),\n data: z.string().max(16_384)\n});\n\nexport const terminalStopSchema = z.object({\n sessionId: z.string().uuid()\n});\n\nexport const accountStatusSchema = z.object({\n force: z.boolean().optional()\n});\n\nexport const accountCheckSchema = z\n .object({\n appId: z.union([z.string(), z.number()]).optional(),\n bundleId: z.string().optional()\n })\n .refine((value) => value.appId !== undefined || value.bundleId !== undefined, {\n message: \"appId or bundleId is required\"\n });\n\nexport function parseAppStoreId(input: string): { appId: number; country: string } | null {\n const trimmed = input.trim();\n const numeric = trimmed.match(/^\\d+$/);\n if (numeric) {\n return { appId: Number(numeric[0]), country: \"cn\" };\n }\n\n const idMatch = trimmed.match(/(?:\\/id|\\bid=)(\\d+)/);\n if (!idMatch) return null;\n\n const countryMatch = trimmed.match(/apps\\.apple\\.com\\/([a-z]{2})\\//i);\n return {\n appId: Number(idMatch[1]),\n country: (countryMatch?.[1] ?? \"cn\").toLowerCase()\n };\n}\n"],"mappings":"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","names":[]}
|