@wix/web50-cli 0.1.2 → 0.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_commander","require","readline","_interopRequireWildcard","_child_process","_inquirer","_interopRequireDefault","_wixApi","_print","_project","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","copyToClipboard","text","cmd","process","platform","execSync","undefined","input","promptCopyToClipboard","rl","createInterface","stdin","output","stdout","Promise","resolve","question","close","console","log","promptForType","type","inquirer","prompt","name","message","choices","value","getOrCreateClientId","_createData$oAuthApp","queryData","wixRequest","path","method","body","apps","oAuthApps","existing","find","app","id","createData","oAuthApp","application_type","Error","embedCommand","exports","Command","description","option","action","opts","root","findProjectRoot","cwd","config","readConfig","clientId","writeConfig","embedScript","isJsonMode","JSON","stringify","embedCode","clipboard","isTTY","err","error","exit"],"sources":["../../../src/commands/embed.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as readline from 'readline';\nimport { execSync } from 'child_process';\nimport inquirer from 'inquirer';\nimport { wixRequest } from '../utils/wixApi';\nimport { isJsonMode } from '../utils/print';\nimport { findProjectRoot, readConfig, writeConfig } from '../utils/project';\n\nfunction copyToClipboard(text: string): void {\n const cmd =\n process.platform === 'win32'\n ? `echo ${text} | clip`\n : process.platform === 'darwin'\n ? 'pbcopy'\n : 'xclip -selection clipboard';\n\n execSync(\n process.platform === 'win32' ? `echo ${text} | clip` : cmd,\n process.platform === 'win32' ? undefined : { input: text },\n );\n}\n\nasync function promptCopyToClipboard(text: string): Promise<void> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) => {\n rl.question('\\nPress Enter to copy to clipboard...', () => {\n rl.close();\n copyToClipboard(text);\n console.log('Copied to clipboard.');\n resolve();\n });\n });\n}\n\ntype EmbedType = 'script' | 'react';\n\ninterface OAuthApp {\n id: string;\n name: string;\n}\n\ninterface QueryResponse {\n oAuthApps?: OAuthApp[];\n}\n\ninterface CreateResponse {\n oAuthApp?: OAuthApp;\n}\n\nasync function promptForType(): Promise<EmbedType> {\n const { type } = await inquirer.prompt<{ type: EmbedType }>([\n {\n type: 'list',\n name: 'type',\n message: 'Select embed type:',\n choices: [\n { name: 'Script tag', value: 'script' },\n { name: 'React component', value: 'react' },\n ],\n },\n ]);\n return type;\n}\n\nasync function getOrCreateClientId(): Promise<string> {\n console.log('Searching for client ID...');\n\n const queryData = await wixRequest<QueryResponse>({\n path: '/oauth-app/v1/oauth-apps/query',\n method: 'POST',\n body: {},\n });\n\n const apps = queryData.oAuthApps ?? [];\n const existing = apps.find((app) => app.name === 'web5');\n\n if (existing) {\n console.log(`Found client ID: ${existing.id}`);\n return existing.id;\n }\n\n console.log('Client ID not found, creating...');\n\n const createData = await wixRequest<CreateResponse>({\n path: '/oauth-app/v1/oauth-apps',\n method: 'POST',\n body: { oAuthApp: { name: 'web5', application_type: 'WEB_APP' } },\n });\n\n const id = createData.oAuthApp?.id;\n if (!id) {\n throw new Error('Failed to create OAuth app — no ID returned');\n }\n\n console.log(`Client ID created: ${id}`);\n return id;\n}\n\nexport const embedCommand = new Command('embed')\n .description('Generate embed code for a Web5 component')\n .option('--type <type>', 'Embed type: script or react')\n .option(\n '--client-id <id>',\n 'Use this client ID instead of fetching from the API',\n )\n .option('--no-clipboard', 'Print to stdout only skip the clipboard prompt')\n .action(\n async (opts: { type?: string; clientId?: string; clipboard: boolean }) => {\n try {\n const type: EmbedType =\n (opts.type as EmbedType) ?? (await promptForType());\n\n if (type === 'react') {\n console.log('no react for now');\n return;\n }\n\n const root = findProjectRoot(process.cwd());\n const config = root ? readConfig(root) : null;\n\n const clientId =\n opts.clientId ??\n (config?.clientId || undefined) ??\n (await getOrCreateClientId());\n\n if (root && config && config.clientId !== clientId) {\n writeConfig(root, { ...config, clientId });\n }\n\n const embedScript = `<script src=\"https://www.wix.com/embed/v1/component.js\" data-client-id=\"${clientId}\"></script>`;\n\n if (isJsonMode()) {\n console.log(\n JSON.stringify({ type, clientId, embedCode: embedScript }),\n );\n return;\n }\n\n console.log('\\nEmbed script:\\n');\n console.log(embedScript);\n\n if (opts.clipboard !== false && process.stdout.isTTY) {\n await promptCopyToClipboard(embedScript);\n }\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n },\n );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_commander","require","http","_interopRequireWildcard","_child_process","_wixApi","_print","_project","_embedDocs","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","openBrowser","url","cmd","process","platform","execSync","stdio","getOrCreateClientId","_createData$oAuthApp","console","log","queryData","wixRequest","path","method","body","apps","oAuthApps","existing","find","app","name","id","createData","oAuthApp","application_type","Error","embedCommand","exports","Command","description","option","action","opts","root","findProjectRoot","cwd","config","readConfig","clientId","undefined","writeConfig","isJsonMode","JSON","stringify","serve","html","generateEmbedDocs","server","createServer","_req","res","writeHead","end","listen","addr","address","port","success","info","on","close","exit","setTimeout","unref","err","error","message"],"sources":["../../../src/commands/embed.ts"],"sourcesContent":["import { Command } from 'commander';\nimport * as http from 'http';\nimport type { AddressInfo } from 'net';\nimport { execSync } from 'child_process';\nimport { wixRequest } from '../utils/wixApi';\nimport { isJsonMode, info, success } from '../utils/print';\nimport { findProjectRoot, readConfig, writeConfig } from '../utils/project';\nimport { generateEmbedDocs } from '../templates/embedDocs';\n\nfunction openBrowser(url: string): void {\n const cmd =\n process.platform === 'win32'\n ? `start \"\" \"${url}\"`\n : process.platform === 'darwin'\n ? `open \"${url}\"`\n : `xdg-open \"${url}\"`;\n try {\n execSync(cmd, { stdio: 'ignore' });\n } catch {\n // URL is printed to stdout regardless\n }\n}\n\n\ninterface OAuthApp {\n id: string;\n name: string;\n}\n\ninterface QueryResponse {\n oAuthApps?: OAuthApp[];\n}\n\ninterface CreateResponse {\n oAuthApp?: OAuthApp;\n}\n\nasync function getOrCreateClientId(): Promise<string> {\n console.log('Searching for client ID...');\n\n const queryData = await wixRequest<QueryResponse>({\n path: '/oauth-app/v1/oauth-apps/query',\n method: 'POST',\n body: {},\n });\n\n const apps = queryData.oAuthApps ?? [];\n const existing = apps.find((app) => app.name === 'web5');\n\n if (existing) {\n console.log(`Found client ID: ${existing.id}`);\n return existing.id;\n }\n\n console.log('Client ID not found, creating...');\n\n const createData = await wixRequest<CreateResponse>({\n path: '/oauth-app/v1/oauth-apps',\n method: 'POST',\n body: { oAuthApp: { name: 'web5', application_type: 'WEB_APP' } },\n });\n\n const id = createData.oAuthApp?.id;\n if (!id) {\n throw new Error('Failed to create OAuth app — no ID returned');\n }\n\n console.log(`Client ID created: ${id}`);\n return id;\n}\n\nexport const embedCommand = new Command('embed')\n .description('Generate embed code for a Web5 component')\n .option(\n '--client-id <id>',\n 'Use this client ID instead of fetching from the API',\n )\n .option('--no-serve', 'Print client ID to stdout instead of launching a browser')\n .action(\n async (opts: {\n clientId?: string;\n serve: boolean;\n }) => {\n try {\n const root = findProjectRoot(process.cwd());\n const config = root ? readConfig(root) : null;\n\n const clientId =\n opts.clientId ??\n (config?.clientId || undefined) ??\n (await getOrCreateClientId());\n\n if (root && config && config.clientId !== clientId) {\n writeConfig(root, { ...config, clientId });\n }\n\n // ── JSON mode: structured output, no server ──────────────────────────\n if (isJsonMode()) {\n console.log(JSON.stringify({ clientId }));\n return;\n }\n\n // ── --no-serve: print client ID only ────────────────────────────────\n if (!opts.serve) {\n console.log(clientId);\n return;\n }\n\n // ── Default: launch documentation server ─────────────────────────────\n const html = generateEmbedDocs(clientId);\n\n const server = http.createServer((_req, res) => {\n res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });\n res.end(html);\n });\n\n server.listen(0, '127.0.0.1', () => {\n const addr = server.address() as AddressInfo;\n const url = `http://localhost:${addr.port}`;\n\n success(`Embed documentation ready at ${url}`);\n info('Opening in your browser...');\n info('Press Ctrl+C to stop.');\n\n openBrowser(url);\n });\n\n process.on('SIGINT', () => {\n info('\\nShutting down...');\n server.close(() => process.exit(0));\n setTimeout(() => process.exit(0), 1000).unref();\n });\n } catch (err) {\n console.error('Error:', (err as Error).message);\n process.exit(1);\n }\n },\n );\n"],"mappings":"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","ignoreList":[]}
@@ -141,7 +141,7 @@ const initCommand = exports.initCommand = new _commander.Command('init').descrip
141
141
  };
142
142
 
143
143
  // ── Root config files ─────────────────────────────────────────────────
144
- await copyDefault('.web5.config.json', path.join(outDir, 'web5.config.json'), subs);
144
+ await copyDefault('web5.config.template.json', path.join(outDir, 'web5.config.json'), subs);
145
145
  await copyDefault('package.template.json', path.join(outDir, 'package.json'), subs);
146
146
  await copyDefault('tsconfig.json', path.join(outDir, 'tsconfig.json'));
147
147
 
@@ -1 +1 @@
1
- {"version":3,"names":["_commander","require","_inquirer","_interopRequireDefault","path","_interopRequireWildcard","fs","_promises","_chalk","_print","_fs2","_auth","_deviceFlow","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULTS_DIR","join","__dirname","printBanner","logo","console","log","line","chalk","cyan","dim","copyDefault","srcRelative","destAbsolute","substitutions","srcPath","content","readFile","token","value","entries","replaceAll","atomicWrite","copyDefaultTree","filter","cp","recursive","findExistingConfig","startDir","current","parent","dirname","candidate","existsSync","resolveString","flag","isTTY","question","opts","defaultValue","undefined","exitMsg","error","process","exit","answers","inquirer","prompt","initCommand","exports","Command","description","option","action","authed","isAuthenticated","existing","cwd","warn","Boolean","stdin","mode","name","type","message","validate","v","trim","length","stem","split","pop","displayName","replace","dir","msid","getToken","promptSiteSelection","platformType","choices","outDir","resolve","readdirSync","info","subs","NAME","DISPLAY_NAME","MSID","PLATFORM_TYPE","skill","folder","componentDir","ensureDir","success","err_","Error","String"],"sources":["../../../src/commands/init.ts"],"sourcesContent":["import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { readFile, cp } from 'fs/promises';\nimport chalk from 'chalk';\nimport { success, error, info, warn } from '../utils/print';\nimport { atomicWrite, ensureDir } from '../utils/fs';\nimport { isAuthenticated, getToken } from '../auth';\nimport { promptSiteSelection } from '../auth/deviceFlow';\n\nconst DEFAULTS_DIR = path.join(__dirname, '../../../defaults');\n\nfunction printBanner(): void {\n const logo = [\n '██╗ ██╗ ███████╗ ██████╗ ███████╗',\n '██║ ██║ ██╔════╝ ██╔══██╗ ██╔════╝',\n '██║ █╗ ██║ █████╗ ██████╔╝ ███████╗',\n '██║███╗██║ ██╔══╝ ██╔══██╗ ╚════██║',\n '╚███╔███╔╝ ███████╗ ██████╔╝ ███████║',\n ' ╚══╝╚══╝ ╚══════╝ ╚═════╝ ╚══════╝',\n ];\n console.log('');\n for (const line of logo) {\n console.log(chalk.cyan(line));\n }\n console.log('');\n console.log(\n chalk.dim(' Build AI-powered client components for the Wix platform.'),\n );\n console.log(chalk.dim(' Define sections, actions, and AI instructions —'));\n console.log(\n chalk.dim(\n ' the platform interprets user intent and delivers personalized experiences.',\n ),\n );\n console.log('');\n}\n\ntype Mode = 'defaults' | 'scratch';\n\ninterface InitOptions {\n mode?: Mode;\n name?: string;\n displayName?: string;\n dir?: string;\n msid?: string;\n}\n\nasync function copyDefault(\n srcRelative: string,\n destAbsolute: string,\n substitutions: Record<string, string> = {},\n): Promise<void> {\n const srcPath = path.join(DEFAULTS_DIR, srcRelative);\n let content = await readFile(srcPath, 'utf8');\n for (const [token, value] of Object.entries(substitutions)) {\n content = content.replaceAll(`{{${token}}}`, value);\n }\n await atomicWrite(destAbsolute, content);\n}\n\nasync function copyDefaultTree(\n srcRelative: string,\n destAbsolute: string,\n filter?: (src: string, dest: string) => boolean,\n): Promise<void> {\n const srcPath = path.join(DEFAULTS_DIR, srcRelative);\n await cp(srcPath, destAbsolute, { recursive: true, filter });\n}\n\nfunction findExistingConfig(startDir: string): string | null {\n let current = startDir;\n let parent = path.dirname(current);\n while (current !== parent) {\n const candidate = path.join(current, 'web5.config.json');\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n current = parent;\n parent = path.dirname(current);\n }\n const candidate = path.join(current, 'web5.config.json');\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n return null;\n}\n\nasync function resolveString(\n flag: string | undefined,\n isTTY: boolean,\n question: Parameters<typeof inquirer.prompt>[0],\n opts: { defaultValue?: string; exitMsg?: string } = {},\n): Promise<string> {\n if (flag) {\n return flag;\n }\n if (!isTTY) {\n if (opts.defaultValue !== undefined) {\n return opts.defaultValue;\n }\n if (opts.exitMsg) {\n error(opts.exitMsg);\n }\n process.exit(1);\n }\n const answers = await inquirer.prompt<{ value: string }>(question);\n return answers.value ?? opts.defaultValue ?? '';\n}\n\nexport const initCommand = new Command('init')\n .description('Scaffold a new Web5 client component library')\n .option('--mode <mode>', 'scaffold mode: defaults or scratch', 'defaults')\n .option('--name <name>', 'npm package name (e.g. @wix/my-components)')\n .option('--display-name <displayName>', 'human-readable display name')\n .option(\n '--dir <dir>',\n 'output directory (default: derived from package name)',\n )\n .option('--msid <msid>', 'Wix site ID to bind this project to')\n .action(async (opts: InitOptions) => {\n try {\n const authed = await isAuthenticated();\n if (!authed) {\n error('You must be logged in. Run `web5 login` first.');\n process.exit(1);\n }\n\n printBanner();\n\n const existing = findExistingConfig(process.cwd());\n if (existing) {\n warn(`web5.config.json already exists at ${existing}`);\n warn('Proceeding will create a nested project.');\n }\n\n const isTTY = Boolean(process.stdin.isTTY);\n const mode: Mode = opts.mode ?? 'defaults';\n\n // ── Collect: package name ─────────────────────────────────────────────\n const name = await resolveString(\n opts.name,\n isTTY,\n [\n {\n type: 'input',\n name: 'value',\n message: 'Package name (e.g. @wix/my-components):',\n validate: (v: string) =>\n v.trim().length > 0 ? true : 'Package name is required',\n },\n ],\n { exitMsg: '--name is required in non-interactive mode' },\n );\n\n // ── Derive: display name and output directory from package name ───────\n const stem = name.split('/').pop()!;\n const displayName = opts.displayName ?? stem.replace(/-/g, ' ');\n const dir = opts.dir ?? stem;\n\n let msid: string;\n if (opts.msid) {\n msid = opts.msid;\n } else if (isTTY) {\n const token = await getToken();\n msid = await promptSiteSelection(token!);\n } else {\n error('--msid is required in non-interactive mode');\n process.exit(1);\n }\n\n let platformType: string;\n if (isTTY) {\n const answers = await inquirer.prompt<{ value: string }>([\n {\n type: 'list',\n name: 'value',\n message: 'Platform type:',\n choices: ['Content', 'Ecommerce'],\n },\n ]);\n platformType = answers.value;\n } else {\n platformType = 'Content';\n }\n\n const outDir = path.resolve(process.cwd(), dir);\n\n if (fs.existsSync(outDir) && fs.readdirSync(outDir).length > 0) {\n warn(`Directory ${outDir} already exists and is not empty`);\n }\n\n info(`Scaffolding ${name} \\u2192 ${outDir}`);\n void mode;\n\n const subs = {\n NAME: name,\n DISPLAY_NAME: displayName,\n MSID: msid,\n PLATFORM_TYPE: platformType,\n };\n\n // ── Root config files ─────────────────────────────────────────────────\n await copyDefault(\n '.web5.config.json',\n path.join(outDir, 'web5.config.json'),\n subs,\n );\n await copyDefault(\n 'package.template.json',\n path.join(outDir, 'package.json'),\n subs,\n );\n await copyDefault('tsconfig.json', path.join(outDir, 'tsconfig.json'));\n\n // ── src/ ──────────────────────────────────────────────────────────────\n await copyDefault(\n 'src/index.ts',\n path.join(outDir, 'src', 'index.ts'),\n subs,\n );\n await copyDefault(\n 'src/createRegistry.ts',\n path.join(outDir, 'src', 'createRegistry.ts'),\n );\n await copyDefaultTree(\n 'src/components',\n path.join(outDir, 'src', 'components'),\n );\n await copyDefaultTree('.storybook', path.join(outDir, '.storybook'));\n await copyDefault(\n 'src/vite.cdn.config.ts',\n path.join(outDir, 'src', 'vite.cdn.config.ts'),\n );\n // ── src/configuration/ ────────────────────────────────────────────────\n await copyDefault(\n 'src/client.config.ts',\n path.join(outDir, 'src', 'client.config.ts'),\n );\n await copyDefault(\n 'src/configuration/ai/prompt-instructions.yaml',\n path.join(\n outDir,\n 'src',\n 'configuration',\n 'ai',\n 'prompt-instructions.yaml',\n ),\n );\n await copyDefault(\n 'src/configuration/cms/cms-mapping.yaml',\n path.join(outDir, 'src', 'configuration', 'cms', 'cms-mapping.yaml'),\n );\n await copyDefault(\n 'src/configuration/cms/cms-schema.yaml',\n path.join(outDir, 'src', 'configuration', 'cms', 'cms-schema.yaml'),\n );\n\n // ── src/actions/ ──────────────────────────────────────────────────────\n await copyDefault(\n 'src/actions/index.ts',\n path.join(outDir, 'src', 'actions', 'index.ts'),\n );\n await copyDefault(\n 'src/actions/bookDemoAction.ts',\n path.join(outDir, 'src', 'actions', 'bookDemoAction.ts'),\n );\n await copyDefault(\n 'src/actions/book-demo.yaml',\n path.join(outDir, 'src', 'actions', 'book-demo.yaml'),\n );\n await copyDefault(\n 'src/actions/contactAction.ts',\n path.join(outDir, 'src', 'actions', 'contactAction.ts'),\n );\n await copyDefault(\n 'src/actions/contact-action.yaml',\n path.join(outDir, 'src', 'actions', 'contact-action.yaml'),\n );\n\n // ── AGENTS.md ─────────────────────────────────────────────────────────\n await copyDefault('AGENTS.md', path.join(outDir, 'AGENTS.md'), subs);\n\n // ── docs/ ─────────────────────────────────────────────────────────────\n await copyDefault(\n 'docs/architecture.md',\n path.join(outDir, 'docs', 'architecture.md'),\n subs,\n );\n await copyDefault(\n 'docs/api-reference.md',\n path.join(outDir, 'docs', 'api-reference.md'),\n subs,\n );\n\n // ── skills/ ───────────────────────────────────────────────────────────\n for (const skill of [\n 'action-add',\n 'action-remove',\n 'action-update',\n 'section-add',\n 'section-remove',\n 'section-update',\n 'slot-add',\n ]) {\n await copyDefault(\n `skills/${skill}.md`,\n path.join(outDir, 'skills', `${skill}.md`),\n );\n }\n\n // ── Component subdirectories ──────────────────────────────────────────\n for (const folder of ['base', 'slots', 'sections']) {\n const componentDir = path.join(outDir, 'src', 'components', folder);\n await ensureDir(componentDir);\n await atomicWrite(path.join(componentDir, '.gitkeep'), '');\n }\n\n // ── Done ──────────────────────────────────────────────────────────────\n success(`Created ${name}`);\n console.log('');\n info('Next steps:');\n info(` cd ${dir}`);\n info(' npm install');\n } catch (err_) {\n error(err_ instanceof Error ? err_.message : String(err_));\n process.exit(1);\n }\n });\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_commander","require","_inquirer","_interopRequireDefault","path","_interopRequireWildcard","fs","_promises","_chalk","_print","_fs2","_auth","_deviceFlow","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULTS_DIR","join","__dirname","printBanner","logo","console","log","line","chalk","cyan","dim","copyDefault","srcRelative","destAbsolute","substitutions","srcPath","content","readFile","token","value","entries","replaceAll","atomicWrite","copyDefaultTree","filter","cp","recursive","findExistingConfig","startDir","current","parent","dirname","candidate","existsSync","resolveString","flag","isTTY","question","opts","defaultValue","undefined","exitMsg","error","process","exit","answers","inquirer","prompt","initCommand","exports","Command","description","option","action","authed","isAuthenticated","existing","cwd","warn","Boolean","stdin","mode","name","type","message","validate","v","trim","length","stem","split","pop","displayName","replace","dir","msid","getToken","promptSiteSelection","platformType","choices","outDir","resolve","readdirSync","info","subs","NAME","DISPLAY_NAME","MSID","PLATFORM_TYPE","skill","folder","componentDir","ensureDir","success","err_","Error","String"],"sources":["../../../src/commands/init.ts"],"sourcesContent":["import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { readFile, cp } from 'fs/promises';\nimport chalk from 'chalk';\nimport { success, error, info, warn } from '../utils/print';\nimport { atomicWrite, ensureDir } from '../utils/fs';\nimport { isAuthenticated, getToken } from '../auth';\nimport { promptSiteSelection } from '../auth/deviceFlow';\n\nconst DEFAULTS_DIR = path.join(__dirname, '../../../defaults');\n\nfunction printBanner(): void {\n const logo = [\n '██╗ ██╗ ███████╗ ██████╗ ███████╗',\n '██║ ██║ ██╔════╝ ██╔══██╗ ██╔════╝',\n '██║ █╗ ██║ █████╗ ██████╔╝ ███████╗',\n '██║███╗██║ ██╔══╝ ██╔══██╗ ╚════██║',\n '╚███╔███╔╝ ███████╗ ██████╔╝ ███████║',\n ' ╚══╝╚══╝ ╚══════╝ ╚═════╝ ╚══════╝',\n ];\n console.log('');\n for (const line of logo) {\n console.log(chalk.cyan(line));\n }\n console.log('');\n console.log(\n chalk.dim(' Build AI-powered client components for the Wix platform.'),\n );\n console.log(chalk.dim(' Define sections, actions, and AI instructions —'));\n console.log(\n chalk.dim(\n ' the platform interprets user intent and delivers personalized experiences.',\n ),\n );\n console.log('');\n}\n\ntype Mode = 'defaults' | 'scratch';\n\ninterface InitOptions {\n mode?: Mode;\n name?: string;\n displayName?: string;\n dir?: string;\n msid?: string;\n}\n\nasync function copyDefault(\n srcRelative: string,\n destAbsolute: string,\n substitutions: Record<string, string> = {},\n): Promise<void> {\n const srcPath = path.join(DEFAULTS_DIR, srcRelative);\n let content = await readFile(srcPath, 'utf8');\n for (const [token, value] of Object.entries(substitutions)) {\n content = content.replaceAll(`{{${token}}}`, value);\n }\n await atomicWrite(destAbsolute, content);\n}\n\nasync function copyDefaultTree(\n srcRelative: string,\n destAbsolute: string,\n filter?: (src: string, dest: string) => boolean,\n): Promise<void> {\n const srcPath = path.join(DEFAULTS_DIR, srcRelative);\n await cp(srcPath, destAbsolute, { recursive: true, filter });\n}\n\nfunction findExistingConfig(startDir: string): string | null {\n let current = startDir;\n let parent = path.dirname(current);\n while (current !== parent) {\n const candidate = path.join(current, 'web5.config.json');\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n current = parent;\n parent = path.dirname(current);\n }\n const candidate = path.join(current, 'web5.config.json');\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n return null;\n}\n\nasync function resolveString(\n flag: string | undefined,\n isTTY: boolean,\n question: Parameters<typeof inquirer.prompt>[0],\n opts: { defaultValue?: string; exitMsg?: string } = {},\n): Promise<string> {\n if (flag) {\n return flag;\n }\n if (!isTTY) {\n if (opts.defaultValue !== undefined) {\n return opts.defaultValue;\n }\n if (opts.exitMsg) {\n error(opts.exitMsg);\n }\n process.exit(1);\n }\n const answers = await inquirer.prompt<{ value: string }>(question);\n return answers.value ?? opts.defaultValue ?? '';\n}\n\nexport const initCommand = new Command('init')\n .description('Scaffold a new Web5 client component library')\n .option('--mode <mode>', 'scaffold mode: defaults or scratch', 'defaults')\n .option('--name <name>', 'npm package name (e.g. @wix/my-components)')\n .option('--display-name <displayName>', 'human-readable display name')\n .option(\n '--dir <dir>',\n 'output directory (default: derived from package name)',\n )\n .option('--msid <msid>', 'Wix site ID to bind this project to')\n .action(async (opts: InitOptions) => {\n try {\n const authed = await isAuthenticated();\n if (!authed) {\n error('You must be logged in. Run `web5 login` first.');\n process.exit(1);\n }\n\n printBanner();\n\n const existing = findExistingConfig(process.cwd());\n if (existing) {\n warn(`web5.config.json already exists at ${existing}`);\n warn('Proceeding will create a nested project.');\n }\n\n const isTTY = Boolean(process.stdin.isTTY);\n const mode: Mode = opts.mode ?? 'defaults';\n\n // ── Collect: package name ─────────────────────────────────────────────\n const name = await resolveString(\n opts.name,\n isTTY,\n [\n {\n type: 'input',\n name: 'value',\n message: 'Package name (e.g. @wix/my-components):',\n validate: (v: string) =>\n v.trim().length > 0 ? true : 'Package name is required',\n },\n ],\n { exitMsg: '--name is required in non-interactive mode' },\n );\n\n // ── Derive: display name and output directory from package name ───────\n const stem = name.split('/').pop()!;\n const displayName = opts.displayName ?? stem.replace(/-/g, ' ');\n const dir = opts.dir ?? stem;\n\n let msid: string;\n if (opts.msid) {\n msid = opts.msid;\n } else if (isTTY) {\n const token = await getToken();\n msid = await promptSiteSelection(token!);\n } else {\n error('--msid is required in non-interactive mode');\n process.exit(1);\n }\n\n let platformType: string;\n if (isTTY) {\n const answers = await inquirer.prompt<{ value: string }>([\n {\n type: 'list',\n name: 'value',\n message: 'Platform type:',\n choices: ['Content', 'Ecommerce'],\n },\n ]);\n platformType = answers.value;\n } else {\n platformType = 'Content';\n }\n\n const outDir = path.resolve(process.cwd(), dir);\n\n if (fs.existsSync(outDir) && fs.readdirSync(outDir).length > 0) {\n warn(`Directory ${outDir} already exists and is not empty`);\n }\n\n info(`Scaffolding ${name} \\u2192 ${outDir}`);\n void mode;\n\n const subs = {\n NAME: name,\n DISPLAY_NAME: displayName,\n MSID: msid,\n PLATFORM_TYPE: platformType,\n };\n\n // ── Root config files ─────────────────────────────────────────────────\n await copyDefault(\n 'web5.config.template.json',\n path.join(outDir, 'web5.config.json'),\n subs,\n );\n await copyDefault(\n 'package.template.json',\n path.join(outDir, 'package.json'),\n subs,\n );\n await copyDefault('tsconfig.json', path.join(outDir, 'tsconfig.json'));\n\n // ── src/ ──────────────────────────────────────────────────────────────\n await copyDefault(\n 'src/index.ts',\n path.join(outDir, 'src', 'index.ts'),\n subs,\n );\n await copyDefault(\n 'src/createRegistry.ts',\n path.join(outDir, 'src', 'createRegistry.ts'),\n );\n await copyDefaultTree(\n 'src/components',\n path.join(outDir, 'src', 'components'),\n );\n await copyDefaultTree('.storybook', path.join(outDir, '.storybook'));\n await copyDefault(\n 'src/vite.cdn.config.ts',\n path.join(outDir, 'src', 'vite.cdn.config.ts'),\n );\n // ── src/configuration/ ────────────────────────────────────────────────\n await copyDefault(\n 'src/client.config.ts',\n path.join(outDir, 'src', 'client.config.ts'),\n );\n await copyDefault(\n 'src/configuration/ai/prompt-instructions.yaml',\n path.join(\n outDir,\n 'src',\n 'configuration',\n 'ai',\n 'prompt-instructions.yaml',\n ),\n );\n await copyDefault(\n 'src/configuration/cms/cms-mapping.yaml',\n path.join(outDir, 'src', 'configuration', 'cms', 'cms-mapping.yaml'),\n );\n await copyDefault(\n 'src/configuration/cms/cms-schema.yaml',\n path.join(outDir, 'src', 'configuration', 'cms', 'cms-schema.yaml'),\n );\n\n // ── src/actions/ ──────────────────────────────────────────────────────\n await copyDefault(\n 'src/actions/index.ts',\n path.join(outDir, 'src', 'actions', 'index.ts'),\n );\n await copyDefault(\n 'src/actions/bookDemoAction.ts',\n path.join(outDir, 'src', 'actions', 'bookDemoAction.ts'),\n );\n await copyDefault(\n 'src/actions/book-demo.yaml',\n path.join(outDir, 'src', 'actions', 'book-demo.yaml'),\n );\n await copyDefault(\n 'src/actions/contactAction.ts',\n path.join(outDir, 'src', 'actions', 'contactAction.ts'),\n );\n await copyDefault(\n 'src/actions/contact-action.yaml',\n path.join(outDir, 'src', 'actions', 'contact-action.yaml'),\n );\n\n // ── AGENTS.md ─────────────────────────────────────────────────────────\n await copyDefault('AGENTS.md', path.join(outDir, 'AGENTS.md'), subs);\n\n // ── docs/ ─────────────────────────────────────────────────────────────\n await copyDefault(\n 'docs/architecture.md',\n path.join(outDir, 'docs', 'architecture.md'),\n subs,\n );\n await copyDefault(\n 'docs/api-reference.md',\n path.join(outDir, 'docs', 'api-reference.md'),\n subs,\n );\n\n // ── skills/ ───────────────────────────────────────────────────────────\n for (const skill of [\n 'action-add',\n 'action-remove',\n 'action-update',\n 'section-add',\n 'section-remove',\n 'section-update',\n 'slot-add',\n ]) {\n await copyDefault(\n `skills/${skill}.md`,\n path.join(outDir, 'skills', `${skill}.md`),\n );\n }\n\n // ── Component subdirectories ──────────────────────────────────────────\n for (const folder of ['base', 'slots', 'sections']) {\n const componentDir = path.join(outDir, 'src', 'components', folder);\n await ensureDir(componentDir);\n await atomicWrite(path.join(componentDir, '.gitkeep'), '');\n }\n\n // ── Done ──────────────────────────────────────────────────────────────\n success(`Created ${name}`);\n console.log('');\n info('Next steps:');\n info(` cd ${dir}`);\n info(' npm install');\n } catch (err_) {\n error(err_ instanceof Error ? err_.message : String(err_));\n process.exit(1);\n }\n });\n"],"mappings":"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","ignoreList":[]}