@hyprcart/cli 1.0.0 → 1.0.1
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.js +12 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -109,7 +109,8 @@ function starterTemplate(appName, kind = "storefront-block") {
|
|
|
109
109
|
dev: "hyprcart app dev",
|
|
110
110
|
validate: "hyprcart app validate",
|
|
111
111
|
contracts: "hyprcart app contracts generate",
|
|
112
|
-
test: "vitest run",
|
|
112
|
+
test: "vitest run tests",
|
|
113
|
+
"test:preview": "playwright test playwright/app-preview.spec.ts",
|
|
113
114
|
"deploy:dev": "hyprcart app deploy --env development",
|
|
114
115
|
"install-link": "hyprcart app install-link create"
|
|
115
116
|
},
|
|
@@ -140,8 +141,16 @@ function starterTemplate(appName, kind = "storefront-block") {
|
|
|
140
141
|
{ path: "tests/validation.test.ts", content: `import { describe, expect, it } from "vitest";
|
|
141
142
|
describe("app", () => { it("has tests", () => expect(true).toBe(true)); });
|
|
142
143
|
` },
|
|
143
|
-
{
|
|
144
|
-
|
|
144
|
+
{
|
|
145
|
+
path: "playwright/app-preview.spec.ts",
|
|
146
|
+
content: `import { expect, test } from "@playwright/test";
|
|
147
|
+
|
|
148
|
+
test("preview renders a page", async ({ page }) => {
|
|
149
|
+
await page.goto(process.env.HYPRCART_PREVIEW_URL ?? "http://localhost:8788");
|
|
150
|
+
await expect(page.locator("body")).toBeVisible();
|
|
151
|
+
});
|
|
152
|
+
`
|
|
153
|
+
},
|
|
145
154
|
{ path: "README.md", content: `# ${appName}
|
|
146
155
|
|
|
147
156
|
Run \`hyprcart app dev\`, \`hyprcart app validate\`, and \`hyprcart app deploy --env development\`.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/app-contracts.ts","../src/output/envelope.ts","../src/commands/app-deploy.ts","../src/commands/app-dev.ts","../src/commands/app-init.ts","../src/templates/materialize.ts","../src/commands/app-install-link.ts","../src/config/project-link.ts","../src/commands/app-link.ts","../src/commands/app-logs.ts","../src/commands/app-rollback.ts","../src/commands/app-status.ts","../src/commands/app-validate.ts","../src/commands/app-version-create.ts","../src/commands/auth.ts","../src/commands/docs-open.ts","../src/commands/schema-export.ts","../src/index.ts"],"sourcesContent":["import { generateContracts, type AppManifest } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function appContracts(manifest?: AppManifest) {\n const result = generateContracts(\n manifest ?? {\n name: \"Local app\",\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [{ id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } }],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n },\n );\n return success(\"app.contracts.generate\", result);\n}\n","export interface CommandEnvelope<TData = unknown> {\n ok: boolean;\n requestId: string;\n command: string;\n data?: TData;\n error?: {\n code: string;\n message: string;\n path?: string;\n docsUrl?: string;\n };\n}\n\nexport function success<TData>(command: string, data: TData, requestId = createRequestId()): CommandEnvelope<TData> {\n return { ok: true, command, requestId, data };\n}\n\nexport function failure(command: string, code: string, message: string, requestId = createRequestId(), docsUrl?: string): CommandEnvelope {\n return {\n ok: false,\n command,\n requestId,\n error: { code, message: redactMessage(message), docsUrl },\n };\n}\n\nexport function createRequestId(): string {\n return `req_cli_${Date.now().toString(36)}`;\n}\n\nfunction redactMessage(message: string): string {\n return message\n .replace(/hcdev_[a-z0-9_]+/gi, \"[redacted]\")\n .replace(/Bearer\\s+[a-z0-9._-]+/gi, \"[redacted]\")\n .replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}/gi, \"[redacted]\");\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appDeploy(args: string[]) {\n const env = readFlag(args, \"--env\") ?? \"development\";\n return success(\"app.deploy\", {\n environment: env,\n appVersionId: `devver_${Date.now().toString(36)}`,\n runtimeDeploymentId: `rtdep_${Date.now().toString(36)}`,\n status: \"deployed\",\n healthChecked: args.includes(\"--wait\"),\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { createPreviewServer, previewSurface } from \"@hyprcart/app-testing\";\nimport { success } from \"../output/envelope\";\n\nexport async function appDev(args: string[]) {\n const fixtureId = readFlag(args, \"--fixture\");\n const state = createPreviewServer();\n const preview = await previewSurface(state, \"storefront_block\", fixtureId);\n return success(\"app.dev\", {\n previewUrl: \"http://localhost:8788\",\n html: preview.html,\n diagnostics: state.diagnostics,\n remoteVersionCreated: state.remoteVersionCreated,\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { failure, success } from \"../output/envelope\";\nimport { isStarterTemplateKind, materializeTemplate, starterTemplate } from \"../templates/materialize\";\n\nexport async function appInit(args: string[], cwd = process.cwd()) {\n const name = positionalArgs(args)[0] ?? \"my-hyprcart-app\";\n const template = readFlag(args, \"--template\") ?? \"storefront-block\";\n if (!isStarterTemplateKind(template)) {\n return failure(\"app.init\", \"template.unsupported\", `Unsupported template: ${template}.`);\n }\n const target = join(cwd, name);\n await mkdir(target, { recursive: true });\n const files = await materializeTemplate(starterTemplate(name, template), target);\n return success(\"app.init\", { projectPath: target, template, files });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n\nfunction positionalArgs(args: string[]): string[] {\n return args.filter((arg, index) => !arg.startsWith(\"--\") && !args[index - 1]?.startsWith(\"--\"));\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nexport interface TemplateFile {\n path: string;\n content: string;\n}\n\nexport type StarterTemplateKind =\n | \"storefront-block\"\n | \"admin-surface\"\n | \"checkout-function\"\n | \"pixel-event\"\n | \"multi-surface\";\n\nexport function starterTemplate(appName: string, kind: StarterTemplateKind = \"storefront-block\"): TemplateFile[] {\n const surface = surfaceForTemplate(kind);\n return [\n {\n path: \"hyprcart.app.config.ts\",\n content: `export default {\n name: ${JSON.stringify(appName)},\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [${JSON.stringify(surface)}],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n resources: { bundleSizeBytes: 42000 }\n};\n`,\n },\n {\n path: \"package.json\",\n content: `${JSON.stringify(\n {\n name: appName,\n version: \"0.1.0\",\n type: \"module\",\n scripts: {\n dev: \"hyprcart app dev\",\n validate: \"hyprcart app validate\",\n contracts: \"hyprcart app contracts generate\",\n test: \"vitest run\",\n \"deploy:dev\": \"hyprcart app deploy --env development\",\n \"install-link\": \"hyprcart app install-link create\",\n },\n dependencies: {\n \"@hyprcart/app-sdk\": \"^1.0.0\",\n },\n devDependencies: {\n \"@hyprcart/cli\": \"^1.0.0\",\n \"@hyprcart/app-testing\": \"^1.0.0\",\n \"@playwright/test\": \"^1.60.0\",\n vitest: \"^4.0.18\",\n typescript: \"^5.7.2\",\n },\n },\n null,\n 2,\n )}\\n`,\n },\n { path: surface.entry, content: `export function HyprcartSurface() { return \"<section>${kind}</section>\"; }\\n` },\n { path: \"locales/en.json\", content: `${JSON.stringify({ \"reviews.label\": \"Reviews\" }, null, 2)}\\n` },\n { path: \"locales/de.json\", content: `${JSON.stringify({ \"reviews.label\": \"Bewertungen\" }, null, 2)}\\n` },\n { path: \"fixtures/product.basic.json\", content: `${JSON.stringify({ id: \"prod_1\", title: \"Deep Moisture\" }, null, 2)}\\n` },\n { path: \"tests/validation.test.ts\", content: `import { describe, expect, it } from \"vitest\";\\ndescribe(\"app\", () => { it(\"has tests\", () => expect(true).toBe(true)); });\\n` },\n { path: \"playwright/app-preview.spec.ts\", content: `// Generated Playwright preview smoke test placeholder.\\n` },\n { path: \"README.md\", content: `# ${appName}\\n\\nRun \\`hyprcart app dev\\`, \\`hyprcart app validate\\`, and \\`hyprcart app deploy --env development\\`.\\n` },\n ];\n}\n\nexport function isStarterTemplateKind(value: string): value is StarterTemplateKind {\n return [\"storefront-block\", \"admin-surface\", \"checkout-function\", \"pixel-event\", \"multi-surface\"].includes(value);\n}\n\nfunction surfaceForTemplate(kind: StarterTemplateKind) {\n if (kind === \"admin-surface\") {\n return { id: \"reviews\", type: \"admin_surface\", entry: \"src/admin/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"checkout-function\") {\n return { id: \"reviews\", type: \"checkout_function\", entry: \"src/checkout/reviews.ts\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"pixel-event\") {\n return { id: \"reviews\", type: \"pixel\", entry: \"src/pixel/reviews.ts\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"multi-surface\") {\n return { id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n return { id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n}\n\nexport async function materializeTemplate(files: TemplateFile[], cwd: string): Promise<string[]> {\n const written: string[] = [];\n for (const file of files) {\n const fullPath = join(cwd, file.path);\n await mkdir(dirname(fullPath), { recursive: true });\n await writeFile(fullPath, file.content, { flag: \"wx\" });\n written.push(file.path);\n }\n return written;\n}\n","import { failure, success } from \"../output/envelope\";\n\nexport async function appInstallLink(args: string[]) {\n const subcommand = args[0];\n if (subcommand === \"revoke\") {\n return success(\"app.install-link.revoke\", { privateInstallUrlId: args[1], status: \"revoked\" });\n }\n\n const orgId = readFlag(args, \"--org\");\n if (!orgId) {\n return failure(\"app.install-link.create\", \"organization.missing\", \"Provide --org <orgId>.\");\n }\n\n const token = `hcdev_${Date.now().toString(36)}`;\n const privateInstallUrlId = `hcil_${Date.now().toString(36)}`;\n const installUrl = new URL(\"https://hyprcart.com/apps/install/private\");\n installUrl.searchParams.set(\"hcil\", privateInstallUrlId);\n installUrl.searchParams.set(\"token\", token);\n\n return success(\"app.install-link.create\", {\n privateInstallUrlId,\n installUrl: installUrl.toString(),\n appVersionId: readFlag(args, \"--version\") ?? \"devver_local\",\n environment: readFlag(args, \"--env\") ?? \"development\",\n allowedOrganizationId: orgId,\n allowedUserEmail: readFlag(args, \"--user\"),\n expiresAt: readFlag(args, \"--expires-at\") ?? null,\n maxUses: Number(readFlag(args, \"--max-uses\") ?? 1),\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nexport interface ProjectLink {\n appId: string;\n teamId: string;\n appSlug: string;\n environment: string;\n developerApiUrl: string;\n linkedAt: string;\n previousLinks?: ProjectLink[];\n}\n\nconst linkDirectory = \".hyprcart\";\nconst linkFile = \"project.json\";\n\nexport async function readProjectLink(cwd = process.cwd()): Promise<ProjectLink | null> {\n try {\n const raw = await readFile(join(cwd, linkDirectory, linkFile), \"utf8\");\n return JSON.parse(raw) as ProjectLink;\n } catch {\n return null;\n }\n}\n\nexport async function writeProjectLink(link: ProjectLink, cwd = process.cwd(), force = false): Promise<ProjectLink> {\n const existing = await readProjectLink(cwd);\n if (existing && existing.appId !== link.appId && !force) {\n throw new Error(\"Project is already linked to another app. Re-run with --force to relink.\");\n }\n\n await mkdir(join(cwd, linkDirectory), { recursive: true });\n\n if (existing && existing.appId !== link.appId) {\n await rename(join(cwd, linkDirectory, linkFile), join(cwd, linkDirectory, `project.${Date.now()}.previous.json`));\n }\n\n const next = {\n ...link,\n previousLinks: existing && existing.appId !== link.appId ? [existing, ...(existing.previousLinks ?? [])] : existing?.previousLinks,\n };\n await writeFile(join(cwd, linkDirectory, linkFile), `${JSON.stringify(next, null, 2)}\\n`);\n return next;\n}\n","import { failure, success } from \"../output/envelope\";\nimport { writeProjectLink } from \"../config/project-link\";\n\nexport async function appLink(args: string[], cwd = process.cwd()) {\n const appId = readFlag(args, \"--app\");\n if (!appId) {\n return failure(\"app.link\", \"app.id.missing\", \"Provide --app <appId>.\");\n }\n\n const teamId = readFlag(args, \"--team\") ?? \"devteam_local\";\n const environment = readFlag(args, \"--env\") ?? \"development\";\n const developerApiUrl = readFlag(args, \"--api\") ?? \"https://developer.hyprcart.com/api/graphql\";\n const force = args.includes(\"--force\");\n\n try {\n const link = await writeProjectLink(\n {\n appId,\n teamId,\n appSlug: appId,\n environment,\n developerApiUrl,\n linkedAt: new Date().toISOString(),\n },\n cwd,\n force,\n );\n return success(\"app.link\", link);\n } catch (error) {\n return failure(\"app.link\", \"project.link.conflict\", error instanceof Error ? error.message : \"Project link failed.\");\n }\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appLogs() {\n return success(\"app.logs\", {\n nodes: [\n {\n requestId: \"req_local\",\n level: \"info\",\n message: \"No production logs in local CLI stub.\",\n redacted: true,\n },\n ],\n });\n}\n","import { failure, success } from \"../output/envelope\";\n\nexport async function appRollback(args: string[]) {\n const version = readFlag(args, \"--to\");\n if (!version) {\n return failure(\"app.rollback\", \"version.missing\", \"Provide --to <versionId>.\");\n }\n return success(\"app.rollback\", { status: \"rolled_back\", appVersionId: version });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appStatus() {\n return success(\"app.status\", { environment: \"development\", status: \"deployed\" });\n}\n","import { validateManifest, type AppManifest } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function appValidate(manifest?: AppManifest) {\n const result = validateManifest(\n manifest ?? {\n name: \"Local app\",\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [{ id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } }],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n },\n );\n return success(\"app.validate\", result);\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appVersionCreate() {\n return success(\"app.version.create\", {\n appVersionId: `devver_${Date.now().toString(36)}`,\n state: \"draft\",\n runtimeDeploymentRequested: false,\n });\n}\n","import { success } from \"../output/envelope\";\n\nexport async function authCommand(command: \"login\" | \"logout\" | \"whoami\") {\n if (command === \"logout\") {\n return success(\"logout\", { status: \"logged_out\" });\n }\n\n if (command === \"whoami\") {\n return success(\"whoami\", {\n realm: \"developer\",\n email: process.env.HYPRCART_DEVELOPER_EMAIL ?? null,\n tokenConfigured: Boolean(process.env.HYPRCART_DEVELOPER_TOKEN),\n });\n }\n\n return success(\"login\", {\n realm: \"developer\",\n loginUrl: \"https://developer.hyprcart.com/login\",\n });\n}\n","import { success } from \"../output/envelope\";\n\nconst docsBaseUrl = \"https://developer.hyprcart.com/docs/app-platform\";\n\nexport async function docsOpen(args: string[]) {\n const topic = args[0] ?? \"overview\";\n return success(\"docs.open\", { topic, url: `${docsBaseUrl}/${topic}` });\n}\n","import { developerToolingOperationMetadata } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function schemaExport() {\n return success(\"schema.export\", {\n schemaVersion: \"2026-06\",\n platformVersion: \"2026-06\",\n operationMetadata: developerToolingOperationMetadata,\n docsUrls: [\"https://developer.hyprcart.com/docs/app-platform\"],\n });\n}\n","import { appContracts } from \"./commands/app-contracts\";\nimport { appDeploy } from \"./commands/app-deploy\";\nimport { appDev } from \"./commands/app-dev\";\nimport { appInit } from \"./commands/app-init\";\nimport { appInstallLink } from \"./commands/app-install-link\";\nimport { appLink } from \"./commands/app-link\";\nimport { appLogs } from \"./commands/app-logs\";\nimport { appRollback } from \"./commands/app-rollback\";\nimport { appStatus } from \"./commands/app-status\";\nimport { appValidate } from \"./commands/app-validate\";\nimport { appVersionCreate } from \"./commands/app-version-create\";\nimport { authCommand } from \"./commands/auth\";\nimport { docsOpen } from \"./commands/docs-open\";\nimport { schemaExport } from \"./commands/schema-export\";\nimport { failure, type CommandEnvelope } from \"./output/envelope\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\n\nexport async function runCli(argv = process.argv.slice(2)): Promise<CommandEnvelope> {\n const [root, second, third, ...rest] = argv;\n\n if (root === \"login\" || root === \"logout\" || root === \"whoami\") {\n return authCommand(root);\n }\n\n if (root === \"docs\" && second === \"open\") {\n return docsOpen(commandArgs(third, rest));\n }\n\n if (root === \"schema\" && second === \"export\") {\n return schemaExport();\n }\n\n if (root !== \"app\") {\n return failure(\"unknown\", \"command.unknown\", \"Unknown command.\");\n }\n\n if (second === \"init\") return appInit(commandArgs(third, rest));\n if (second === \"link\") return appLink(commandArgs(third, rest));\n if (second === \"dev\") return appDev(commandArgs(third, rest));\n if (second === \"validate\") return appValidate();\n if (second === \"contracts\" && third === \"generate\") return appContracts();\n if (second === \"version\" && third === \"create\") return appVersionCreate();\n if (second === \"deploy\") return appDeploy(commandArgs(third, rest));\n if (second === \"install-link\") return appInstallLink(commandArgs(third, rest));\n if (second === \"status\") return appStatus();\n if (second === \"logs\") return appLogs();\n if (second === \"rollback\") return appRollback(commandArgs(third, rest));\n\n return failure(\"app\", \"command.unknown\", \"Unknown app command.\");\n}\n\nfunction commandArgs(first: string | undefined, rest: string[]): string[] {\n return first ? [first, ...rest] : rest;\n}\n\nif (isCliEntryPoint()) {\n const result = await runCli();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n process.exit(result.ok ? 0 : result.error?.code.startsWith(\"auth.\") ? 3 : 1);\n}\n\nexport type { CommandEnvelope };\n\nfunction isCliEntryPoint() {\n try {\n return realpathSync(fileURLToPath(import.meta.url)) === realpathSync(process.argv[1] ?? \"\");\n } catch {\n return false;\n }\n}\n"],"mappings":"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","names":["readFlag","mkdir","join","readFlag","join","mkdir","readFlag","mkdir","writeFile","join","readFlag","readFlag"]}
|
|
1
|
+
{"version":3,"sources":["../src/commands/app-contracts.ts","../src/output/envelope.ts","../src/commands/app-deploy.ts","../src/commands/app-dev.ts","../src/commands/app-init.ts","../src/templates/materialize.ts","../src/commands/app-install-link.ts","../src/config/project-link.ts","../src/commands/app-link.ts","../src/commands/app-logs.ts","../src/commands/app-rollback.ts","../src/commands/app-status.ts","../src/commands/app-validate.ts","../src/commands/app-version-create.ts","../src/commands/auth.ts","../src/commands/docs-open.ts","../src/commands/schema-export.ts","../src/index.ts"],"sourcesContent":["import { generateContracts, type AppManifest } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function appContracts(manifest?: AppManifest) {\n const result = generateContracts(\n manifest ?? {\n name: \"Local app\",\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [{ id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } }],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n },\n );\n return success(\"app.contracts.generate\", result);\n}\n","export interface CommandEnvelope<TData = unknown> {\n ok: boolean;\n requestId: string;\n command: string;\n data?: TData;\n error?: {\n code: string;\n message: string;\n path?: string;\n docsUrl?: string;\n };\n}\n\nexport function success<TData>(command: string, data: TData, requestId = createRequestId()): CommandEnvelope<TData> {\n return { ok: true, command, requestId, data };\n}\n\nexport function failure(command: string, code: string, message: string, requestId = createRequestId(), docsUrl?: string): CommandEnvelope {\n return {\n ok: false,\n command,\n requestId,\n error: { code, message: redactMessage(message), docsUrl },\n };\n}\n\nexport function createRequestId(): string {\n return `req_cli_${Date.now().toString(36)}`;\n}\n\nfunction redactMessage(message: string): string {\n return message\n .replace(/hcdev_[a-z0-9_]+/gi, \"[redacted]\")\n .replace(/Bearer\\s+[a-z0-9._-]+/gi, \"[redacted]\")\n .replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}/gi, \"[redacted]\");\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appDeploy(args: string[]) {\n const env = readFlag(args, \"--env\") ?? \"development\";\n return success(\"app.deploy\", {\n environment: env,\n appVersionId: `devver_${Date.now().toString(36)}`,\n runtimeDeploymentId: `rtdep_${Date.now().toString(36)}`,\n status: \"deployed\",\n healthChecked: args.includes(\"--wait\"),\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { createPreviewServer, previewSurface } from \"@hyprcart/app-testing\";\nimport { success } from \"../output/envelope\";\n\nexport async function appDev(args: string[]) {\n const fixtureId = readFlag(args, \"--fixture\");\n const state = createPreviewServer();\n const preview = await previewSurface(state, \"storefront_block\", fixtureId);\n return success(\"app.dev\", {\n previewUrl: \"http://localhost:8788\",\n html: preview.html,\n diagnostics: state.diagnostics,\n remoteVersionCreated: state.remoteVersionCreated,\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { failure, success } from \"../output/envelope\";\nimport { isStarterTemplateKind, materializeTemplate, starterTemplate } from \"../templates/materialize\";\n\nexport async function appInit(args: string[], cwd = process.cwd()) {\n const name = positionalArgs(args)[0] ?? \"my-hyprcart-app\";\n const template = readFlag(args, \"--template\") ?? \"storefront-block\";\n if (!isStarterTemplateKind(template)) {\n return failure(\"app.init\", \"template.unsupported\", `Unsupported template: ${template}.`);\n }\n const target = join(cwd, name);\n await mkdir(target, { recursive: true });\n const files = await materializeTemplate(starterTemplate(name, template), target);\n return success(\"app.init\", { projectPath: target, template, files });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n\nfunction positionalArgs(args: string[]): string[] {\n return args.filter((arg, index) => !arg.startsWith(\"--\") && !args[index - 1]?.startsWith(\"--\"));\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nexport interface TemplateFile {\n path: string;\n content: string;\n}\n\nexport type StarterTemplateKind =\n | \"storefront-block\"\n | \"admin-surface\"\n | \"checkout-function\"\n | \"pixel-event\"\n | \"multi-surface\";\n\nexport function starterTemplate(appName: string, kind: StarterTemplateKind = \"storefront-block\"): TemplateFile[] {\n const surface = surfaceForTemplate(kind);\n return [\n {\n path: \"hyprcart.app.config.ts\",\n content: `export default {\n name: ${JSON.stringify(appName)},\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [${JSON.stringify(surface)}],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n resources: { bundleSizeBytes: 42000 }\n};\n`,\n },\n {\n path: \"package.json\",\n content: `${JSON.stringify(\n {\n name: appName,\n version: \"0.1.0\",\n type: \"module\",\n scripts: {\n dev: \"hyprcart app dev\",\n validate: \"hyprcart app validate\",\n contracts: \"hyprcart app contracts generate\",\n test: \"vitest run tests\",\n \"test:preview\": \"playwright test playwright/app-preview.spec.ts\",\n \"deploy:dev\": \"hyprcart app deploy --env development\",\n \"install-link\": \"hyprcart app install-link create\",\n },\n dependencies: {\n \"@hyprcart/app-sdk\": \"^1.0.0\",\n },\n devDependencies: {\n \"@hyprcart/cli\": \"^1.0.0\",\n \"@hyprcart/app-testing\": \"^1.0.0\",\n \"@playwright/test\": \"^1.60.0\",\n vitest: \"^4.0.18\",\n typescript: \"^5.7.2\",\n },\n },\n null,\n 2,\n )}\\n`,\n },\n { path: surface.entry, content: `export function HyprcartSurface() { return \"<section>${kind}</section>\"; }\\n` },\n { path: \"locales/en.json\", content: `${JSON.stringify({ \"reviews.label\": \"Reviews\" }, null, 2)}\\n` },\n { path: \"locales/de.json\", content: `${JSON.stringify({ \"reviews.label\": \"Bewertungen\" }, null, 2)}\\n` },\n { path: \"fixtures/product.basic.json\", content: `${JSON.stringify({ id: \"prod_1\", title: \"Deep Moisture\" }, null, 2)}\\n` },\n { path: \"tests/validation.test.ts\", content: `import { describe, expect, it } from \"vitest\";\\ndescribe(\"app\", () => { it(\"has tests\", () => expect(true).toBe(true)); });\\n` },\n {\n path: \"playwright/app-preview.spec.ts\",\n content: `import { expect, test } from \"@playwright/test\";\\n\\ntest(\"preview renders a page\", async ({ page }) => {\\n await page.goto(process.env.HYPRCART_PREVIEW_URL ?? \"http://localhost:8788\");\\n await expect(page.locator(\"body\")).toBeVisible();\\n});\\n`,\n },\n { path: \"README.md\", content: `# ${appName}\\n\\nRun \\`hyprcart app dev\\`, \\`hyprcart app validate\\`, and \\`hyprcart app deploy --env development\\`.\\n` },\n ];\n}\n\nexport function isStarterTemplateKind(value: string): value is StarterTemplateKind {\n return [\"storefront-block\", \"admin-surface\", \"checkout-function\", \"pixel-event\", \"multi-surface\"].includes(value);\n}\n\nfunction surfaceForTemplate(kind: StarterTemplateKind) {\n if (kind === \"admin-surface\") {\n return { id: \"reviews\", type: \"admin_surface\", entry: \"src/admin/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"checkout-function\") {\n return { id: \"reviews\", type: \"checkout_function\", entry: \"src/checkout/reviews.ts\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"pixel-event\") {\n return { id: \"reviews\", type: \"pixel\", entry: \"src/pixel/reviews.ts\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n if (kind === \"multi-surface\") {\n return { id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n }\n return { id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } };\n}\n\nexport async function materializeTemplate(files: TemplateFile[], cwd: string): Promise<string[]> {\n const written: string[] = [];\n for (const file of files) {\n const fullPath = join(cwd, file.path);\n await mkdir(dirname(fullPath), { recursive: true });\n await writeFile(fullPath, file.content, { flag: \"wx\" });\n written.push(file.path);\n }\n return written;\n}\n","import { failure, success } from \"../output/envelope\";\n\nexport async function appInstallLink(args: string[]) {\n const subcommand = args[0];\n if (subcommand === \"revoke\") {\n return success(\"app.install-link.revoke\", { privateInstallUrlId: args[1], status: \"revoked\" });\n }\n\n const orgId = readFlag(args, \"--org\");\n if (!orgId) {\n return failure(\"app.install-link.create\", \"organization.missing\", \"Provide --org <orgId>.\");\n }\n\n const token = `hcdev_${Date.now().toString(36)}`;\n const privateInstallUrlId = `hcil_${Date.now().toString(36)}`;\n const installUrl = new URL(\"https://hyprcart.com/apps/install/private\");\n installUrl.searchParams.set(\"hcil\", privateInstallUrlId);\n installUrl.searchParams.set(\"token\", token);\n\n return success(\"app.install-link.create\", {\n privateInstallUrlId,\n installUrl: installUrl.toString(),\n appVersionId: readFlag(args, \"--version\") ?? \"devver_local\",\n environment: readFlag(args, \"--env\") ?? \"development\",\n allowedOrganizationId: orgId,\n allowedUserEmail: readFlag(args, \"--user\"),\n expiresAt: readFlag(args, \"--expires-at\") ?? null,\n maxUses: Number(readFlag(args, \"--max-uses\") ?? 1),\n });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nexport interface ProjectLink {\n appId: string;\n teamId: string;\n appSlug: string;\n environment: string;\n developerApiUrl: string;\n linkedAt: string;\n previousLinks?: ProjectLink[];\n}\n\nconst linkDirectory = \".hyprcart\";\nconst linkFile = \"project.json\";\n\nexport async function readProjectLink(cwd = process.cwd()): Promise<ProjectLink | null> {\n try {\n const raw = await readFile(join(cwd, linkDirectory, linkFile), \"utf8\");\n return JSON.parse(raw) as ProjectLink;\n } catch {\n return null;\n }\n}\n\nexport async function writeProjectLink(link: ProjectLink, cwd = process.cwd(), force = false): Promise<ProjectLink> {\n const existing = await readProjectLink(cwd);\n if (existing && existing.appId !== link.appId && !force) {\n throw new Error(\"Project is already linked to another app. Re-run with --force to relink.\");\n }\n\n await mkdir(join(cwd, linkDirectory), { recursive: true });\n\n if (existing && existing.appId !== link.appId) {\n await rename(join(cwd, linkDirectory, linkFile), join(cwd, linkDirectory, `project.${Date.now()}.previous.json`));\n }\n\n const next = {\n ...link,\n previousLinks: existing && existing.appId !== link.appId ? [existing, ...(existing.previousLinks ?? [])] : existing?.previousLinks,\n };\n await writeFile(join(cwd, linkDirectory, linkFile), `${JSON.stringify(next, null, 2)}\\n`);\n return next;\n}\n","import { failure, success } from \"../output/envelope\";\nimport { writeProjectLink } from \"../config/project-link\";\n\nexport async function appLink(args: string[], cwd = process.cwd()) {\n const appId = readFlag(args, \"--app\");\n if (!appId) {\n return failure(\"app.link\", \"app.id.missing\", \"Provide --app <appId>.\");\n }\n\n const teamId = readFlag(args, \"--team\") ?? \"devteam_local\";\n const environment = readFlag(args, \"--env\") ?? \"development\";\n const developerApiUrl = readFlag(args, \"--api\") ?? \"https://developer.hyprcart.com/api/graphql\";\n const force = args.includes(\"--force\");\n\n try {\n const link = await writeProjectLink(\n {\n appId,\n teamId,\n appSlug: appId,\n environment,\n developerApiUrl,\n linkedAt: new Date().toISOString(),\n },\n cwd,\n force,\n );\n return success(\"app.link\", link);\n } catch (error) {\n return failure(\"app.link\", \"project.link.conflict\", error instanceof Error ? error.message : \"Project link failed.\");\n }\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appLogs() {\n return success(\"app.logs\", {\n nodes: [\n {\n requestId: \"req_local\",\n level: \"info\",\n message: \"No production logs in local CLI stub.\",\n redacted: true,\n },\n ],\n });\n}\n","import { failure, success } from \"../output/envelope\";\n\nexport async function appRollback(args: string[]) {\n const version = readFlag(args, \"--to\");\n if (!version) {\n return failure(\"app.rollback\", \"version.missing\", \"Provide --to <versionId>.\");\n }\n return success(\"app.rollback\", { status: \"rolled_back\", appVersionId: version });\n}\n\nfunction readFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appStatus() {\n return success(\"app.status\", { environment: \"development\", status: \"deployed\" });\n}\n","import { validateManifest, type AppManifest } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function appValidate(manifest?: AppManifest) {\n const result = validateManifest(\n manifest ?? {\n name: \"Local app\",\n version: \"0.1.0\",\n manifestVersion: \"2026-06\",\n sdkVersion: \"1.0.0\",\n platformCompatibility: \"2026-06\",\n scopes: [\"product:read\"],\n surfaces: [{ id: \"reviews\", type: \"storefront_block\", entry: \"src/storefront/reviews.tsx\", label: { en: \"Reviews\", de: \"Bewertungen\" } }],\n translations: { en: { \"reviews.label\": \"Reviews\" }, de: { \"reviews.label\": \"Bewertungen\" } },\n },\n );\n return success(\"app.validate\", result);\n}\n","import { success } from \"../output/envelope\";\n\nexport async function appVersionCreate() {\n return success(\"app.version.create\", {\n appVersionId: `devver_${Date.now().toString(36)}`,\n state: \"draft\",\n runtimeDeploymentRequested: false,\n });\n}\n","import { success } from \"../output/envelope\";\n\nexport async function authCommand(command: \"login\" | \"logout\" | \"whoami\") {\n if (command === \"logout\") {\n return success(\"logout\", { status: \"logged_out\" });\n }\n\n if (command === \"whoami\") {\n return success(\"whoami\", {\n realm: \"developer\",\n email: process.env.HYPRCART_DEVELOPER_EMAIL ?? null,\n tokenConfigured: Boolean(process.env.HYPRCART_DEVELOPER_TOKEN),\n });\n }\n\n return success(\"login\", {\n realm: \"developer\",\n loginUrl: \"https://developer.hyprcart.com/login\",\n });\n}\n","import { success } from \"../output/envelope\";\n\nconst docsBaseUrl = \"https://developer.hyprcart.com/docs/app-platform\";\n\nexport async function docsOpen(args: string[]) {\n const topic = args[0] ?? \"overview\";\n return success(\"docs.open\", { topic, url: `${docsBaseUrl}/${topic}` });\n}\n","import { developerToolingOperationMetadata } from \"@hyprcart/app-manifest\";\nimport { success } from \"../output/envelope\";\n\nexport async function schemaExport() {\n return success(\"schema.export\", {\n schemaVersion: \"2026-06\",\n platformVersion: \"2026-06\",\n operationMetadata: developerToolingOperationMetadata,\n docsUrls: [\"https://developer.hyprcart.com/docs/app-platform\"],\n });\n}\n","import { appContracts } from \"./commands/app-contracts\";\nimport { appDeploy } from \"./commands/app-deploy\";\nimport { appDev } from \"./commands/app-dev\";\nimport { appInit } from \"./commands/app-init\";\nimport { appInstallLink } from \"./commands/app-install-link\";\nimport { appLink } from \"./commands/app-link\";\nimport { appLogs } from \"./commands/app-logs\";\nimport { appRollback } from \"./commands/app-rollback\";\nimport { appStatus } from \"./commands/app-status\";\nimport { appValidate } from \"./commands/app-validate\";\nimport { appVersionCreate } from \"./commands/app-version-create\";\nimport { authCommand } from \"./commands/auth\";\nimport { docsOpen } from \"./commands/docs-open\";\nimport { schemaExport } from \"./commands/schema-export\";\nimport { failure, type CommandEnvelope } from \"./output/envelope\";\nimport { realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\n\nexport async function runCli(argv = process.argv.slice(2)): Promise<CommandEnvelope> {\n const [root, second, third, ...rest] = argv;\n\n if (root === \"login\" || root === \"logout\" || root === \"whoami\") {\n return authCommand(root);\n }\n\n if (root === \"docs\" && second === \"open\") {\n return docsOpen(commandArgs(third, rest));\n }\n\n if (root === \"schema\" && second === \"export\") {\n return schemaExport();\n }\n\n if (root !== \"app\") {\n return failure(\"unknown\", \"command.unknown\", \"Unknown command.\");\n }\n\n if (second === \"init\") return appInit(commandArgs(third, rest));\n if (second === \"link\") return appLink(commandArgs(third, rest));\n if (second === \"dev\") return appDev(commandArgs(third, rest));\n if (second === \"validate\") return appValidate();\n if (second === \"contracts\" && third === \"generate\") return appContracts();\n if (second === \"version\" && third === \"create\") return appVersionCreate();\n if (second === \"deploy\") return appDeploy(commandArgs(third, rest));\n if (second === \"install-link\") return appInstallLink(commandArgs(third, rest));\n if (second === \"status\") return appStatus();\n if (second === \"logs\") return appLogs();\n if (second === \"rollback\") return appRollback(commandArgs(third, rest));\n\n return failure(\"app\", \"command.unknown\", \"Unknown app command.\");\n}\n\nfunction commandArgs(first: string | undefined, rest: string[]): string[] {\n return first ? [first, ...rest] : rest;\n}\n\nif (isCliEntryPoint()) {\n const result = await runCli();\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n process.exit(result.ok ? 0 : result.error?.code.startsWith(\"auth.\") ? 3 : 1);\n}\n\nexport type { CommandEnvelope };\n\nfunction isCliEntryPoint() {\n try {\n return realpathSync(fileURLToPath(import.meta.url)) === realpathSync(process.argv[1] ?? \"\");\n } catch {\n return false;\n }\n}\n"],"mappings":"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","names":["readFlag","mkdir","join","readFlag","join","mkdir","readFlag","mkdir","writeFile","join","readFlag","readFlag"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyprcart/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Command line interface for building, validating, deploying, and installing Hyprcart apps.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@hyprcart/app-testing": "1.0.0",
|
|
27
28
|
"@hyprcart/app-manifest": "1.0.0",
|
|
28
|
-
"@hyprcart/app-sdk": "1.0.0"
|
|
29
|
-
"@hyprcart/app-testing": "1.0.0"
|
|
29
|
+
"@hyprcart/app-sdk": "1.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^22.10.5",
|