{"version":3,"sources":["../src/cli.ts"],"names":["path","pathToFileURL","precompileAssemblyScript","preprocessShadoWrappers","packShadoModel","writeShadoModelManifest"],"mappings":"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","file":"cli.cjs","sourcesContent":["#!/usr/bin/env node\n\nimport path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { precompileAssemblyScript, type AscPrecompileConfig } from './asc/index.js';\nimport {\n  packShadoModel,\n  preprocessShadoWrappers,\n  writeShadoModelManifest,\n  type ShadoModelManifestConfig,\n  type ShadoModelPackConfig,\n  type WrapperPreprocessConfig,\n} from './preprocess/index.js';\n\ntype ShadoConfig = {\n  asc?: AscPrecompileConfig | AscPrecompileConfig[];\n  wrappers?: WrapperPreprocessConfig | WrapperPreprocessConfig[];\n  models?: ShadoModelPackConfig | ShadoModelPackConfig[];\n  modelManifest?: ShadoModelManifestConfig;\n};\n\nfunction usage(): never {\n  console.error(\n    [\n      'Usage:',\n      '  shado asc build --config ./shado.config.mjs',\n      '  shado wrappers build --config ./shado.config.mjs',\n      '  shado gpu build --config ./shado.config.mjs',\n      '  shado pack models --config ./shado.config.mjs',\n      '  shado manifest models --config ./shado.config.mjs',\n      '  shado-preprocess-asc --config ./shado.config.mjs',\n      '  shado-preprocess-wrappers --config ./shado.config.mjs',\n      '  shado-preprocess-gpu --config ./shado.config.mjs',\n      '  shado-pack-model --config ./shado.config.mjs',\n      '',\n      'Config shape:',\n      '  export default {',\n      '    asc: { inputPaths: [\"assembly/index.ts\"], outFile: \"dist/shado.wasm\" },',\n      '    wrappers: { outDir: \"dist/shado-wrappers\", schemas: [{ module: \"shado\", export: \"MyStruct\" }] },',\n      '    models: { name: \"actor\", outFile: \"dist/actor.shado-model.json\", import: { url: \"./actor.glb\" } }',\n      '  }',\n    ].join('\\n')\n  );\n  process.exit(1);\n}\n\nfunction readArg(flag: string): string | undefined {\n  const i = process.argv.indexOf(flag);\n  return i >= 0 ? process.argv[i + 1] : undefined;\n}\n\nasync function loadConfig(file: string): Promise<ShadoConfig> {\n  const abs = path.resolve(process.cwd(), file);\n  const mod = await import(pathToFileURL(abs).href);\n  return (mod.default ?? mod) as ShadoConfig;\n}\n\nasync function main() {\n  const invocation = normalizeInvocation();\n  const configPath = readArg('--config') ?? readArg('-c') ?? 'shado.config.mjs';\n  const config = await loadConfig(configPath);\n  const configDir = path.dirname(path.resolve(process.cwd(), configPath));\n\n  if (invocation.kind === 'asc') {\n    const entries = asArray(config.asc);\n    if (!entries.length) throw new Error(`No asc entries found in ${configPath}`);\n    for (const entry of entries) {\n      const result = await precompileAssemblyScript(entry);\n      console.log(`wrote ${result.outFile}`);\n      if (result.gzipFile) console.log(`wrote ${result.gzipFile}`);\n      if (result.base64File) console.log(`wrote ${result.base64File}`);\n      if (result.textFile) console.log(`wrote ${result.textFile}`);\n    }\n    return;\n  }\n\n  if (invocation.kind === 'wrappers' || invocation.kind === 'gpu') {\n    const entries = asArray(config.wrappers);\n    if (!entries.length) throw new Error(`No wrappers entries found in ${configPath}`);\n    for (const entry of entries) {\n      const result = await preprocessShadoWrappers(entry, {\n        configDir,\n        only: invocation.kind === 'gpu' ? 'gpu' : 'all',\n      });\n      console.log(`wrote ${result.files.length} wrapper files to ${result.outDir}`);\n    }\n    return;\n  }\n\n  if (invocation.kind === 'models') {\n    const entries = asArray(config.models);\n    if (!entries.length) throw new Error(`No models entries found in ${configPath}`);\n    for (const entry of entries) {\n      const result = await packShadoModel(entry);\n      console.log(\n        `wrote ${result.files.length} model artifact files for ${result.name} (${result.meshCount} meshes, VAT: ${result.vatVariants.join(', ') || 'none'})`\n      );\n    }\n    return;\n  }\n\n  if (invocation.kind === 'manifest') {\n    if (!config.modelManifest) throw new Error(`No modelManifest entry found in ${configPath}`);\n    const outFile = await writeShadoModelManifest(config.modelManifest);\n    console.log(`wrote ${outFile}`);\n    return;\n  }\n\n  usage();\n}\n\nmain().catch(error => {\n  console.error(error instanceof Error ? error.message : error);\n  process.exit(1);\n});\n\nfunction asArray<T>(value: T | T[] | undefined): T[] {\n  return Array.isArray(value) ? value : value ? [value] : [];\n}\n\nfunction normalizeInvocation():\n  | { kind: 'asc' }\n  | { kind: 'wrappers' }\n  | { kind: 'gpu' }\n  | { kind: 'models' }\n  | { kind: 'manifest' } {\n  const bin = path.basename(process.argv[1] ?? '');\n  if (bin === 'shado-preprocess-asc') return { kind: 'asc' };\n  if (bin === 'shado-preprocess-wrappers') return { kind: 'wrappers' };\n  if (bin === 'shado-preprocess-gpu') return { kind: 'gpu' };\n  if (bin === 'shado-pack-model') return { kind: 'models' };\n\n  const [, , group, command, subject] = process.argv;\n  if (group === 'asc' && command === 'build') return { kind: 'asc' };\n  if (group === 'wrappers' && command === 'build') return { kind: 'wrappers' };\n  if (group === 'gpu' && command === 'build') return { kind: 'gpu' };\n  if (group === 'pack' && (command === 'model' || command === 'models')) return { kind: 'models' };\n  if (group === 'manifest' && (command === 'model' || command === 'models' || subject === 'models')) {\n    return { kind: 'manifest' };\n  }\n  usage();\n}\n"]}