everything-dev 1.7.2 → 1.8.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.
Files changed (134) hide show
  1. package/dist/api.cjs +1 -1
  2. package/dist/api.mjs +1 -1
  3. package/dist/app.cjs +82 -51
  4. package/dist/app.cjs.map +1 -1
  5. package/dist/app.mjs +82 -51
  6. package/dist/app.mjs.map +1 -1
  7. package/dist/cli/upgrade.cjs.map +1 -1
  8. package/dist/cli/upgrade.mjs.map +1 -1
  9. package/dist/components/dev-view.cjs +6 -3
  10. package/dist/components/dev-view.cjs.map +1 -1
  11. package/dist/components/dev-view.mjs +6 -3
  12. package/dist/components/dev-view.mjs.map +1 -1
  13. package/dist/components/streaming-view.cjs +5 -2
  14. package/dist/components/streaming-view.cjs.map +1 -1
  15. package/dist/components/streaming-view.mjs +5 -2
  16. package/dist/components/streaming-view.mjs.map +1 -1
  17. package/dist/config.cjs +28 -5
  18. package/dist/config.cjs.map +1 -1
  19. package/dist/config.d.cts.map +1 -1
  20. package/dist/config.d.mts.map +1 -1
  21. package/dist/config.mjs +28 -5
  22. package/dist/config.mjs.map +1 -1
  23. package/dist/contract.cjs +1 -0
  24. package/dist/contract.cjs.map +1 -1
  25. package/dist/contract.d.cts +10 -2
  26. package/dist/contract.d.cts.map +1 -1
  27. package/dist/contract.d.mts +10 -2
  28. package/dist/contract.d.mts.map +1 -1
  29. package/dist/contract.mjs +1 -0
  30. package/dist/contract.mjs.map +1 -1
  31. package/dist/dev-logs.cjs +6 -2
  32. package/dist/dev-logs.cjs.map +1 -1
  33. package/dist/dev-logs.mjs +7 -2
  34. package/dist/dev-logs.mjs.map +1 -1
  35. package/dist/dev-session.cjs +27 -23
  36. package/dist/dev-session.cjs.map +1 -1
  37. package/dist/dev-session.mjs +27 -24
  38. package/dist/dev-session.mjs.map +1 -1
  39. package/dist/federation.server.cjs +1 -1
  40. package/dist/federation.server.mjs +1 -1
  41. package/dist/host.cjs +4 -3
  42. package/dist/host.cjs.map +1 -1
  43. package/dist/host.d.cts.map +1 -1
  44. package/dist/host.d.mts.map +1 -1
  45. package/dist/host.mjs +4 -3
  46. package/dist/host.mjs.map +1 -1
  47. package/dist/integrity.cjs +68 -2
  48. package/dist/integrity.cjs.map +1 -1
  49. package/dist/integrity.d.cts +14 -1
  50. package/dist/integrity.d.cts.map +1 -1
  51. package/dist/integrity.d.mts +14 -1
  52. package/dist/integrity.d.mts.map +1 -1
  53. package/dist/integrity.mjs +66 -3
  54. package/dist/integrity.mjs.map +1 -1
  55. package/dist/mf.cjs +32 -0
  56. package/dist/mf.cjs.map +1 -1
  57. package/dist/mf.d.cts +3 -1
  58. package/dist/mf.d.cts.map +1 -1
  59. package/dist/mf.d.mts +3 -1
  60. package/dist/mf.d.mts.map +1 -1
  61. package/dist/mf.mjs +32 -1
  62. package/dist/mf.mjs.map +1 -1
  63. package/dist/orchestrator.cjs +167 -317
  64. package/dist/orchestrator.cjs.map +1 -1
  65. package/dist/orchestrator.d.cts +24 -21
  66. package/dist/orchestrator.d.cts.map +1 -1
  67. package/dist/orchestrator.d.mts +24 -21
  68. package/dist/orchestrator.d.mts.map +1 -1
  69. package/dist/orchestrator.mjs +168 -316
  70. package/dist/orchestrator.mjs.map +1 -1
  71. package/dist/plugin.cjs +38 -107
  72. package/dist/plugin.cjs.map +1 -1
  73. package/dist/plugin.d.cts +16 -2
  74. package/dist/plugin.d.cts.map +1 -1
  75. package/dist/plugin.d.mts +16 -2
  76. package/dist/plugin.d.mts.map +1 -1
  77. package/dist/plugin.mjs +39 -108
  78. package/dist/plugin.mjs.map +1 -1
  79. package/dist/service-descriptor.cjs +188 -0
  80. package/dist/service-descriptor.cjs.map +1 -0
  81. package/dist/service-descriptor.d.cts +107 -0
  82. package/dist/service-descriptor.d.cts.map +1 -0
  83. package/dist/service-descriptor.d.mts +107 -0
  84. package/dist/service-descriptor.d.mts.map +1 -0
  85. package/dist/service-descriptor.mjs +182 -0
  86. package/dist/service-descriptor.mjs.map +1 -0
  87. package/dist/types.cjs +8 -1
  88. package/dist/types.cjs.map +1 -1
  89. package/dist/types.d.cts +16 -1
  90. package/dist/types.d.cts.map +1 -1
  91. package/dist/types.d.mts +16 -1
  92. package/dist/types.d.mts.map +1 -1
  93. package/dist/types.mjs +8 -1
  94. package/dist/types.mjs.map +1 -1
  95. package/dist/ui/index.cjs +1 -0
  96. package/dist/ui/index.d.cts +2 -2
  97. package/dist/ui/index.d.mts +2 -2
  98. package/dist/ui/index.mjs +2 -2
  99. package/dist/ui/runtime.cjs +4 -0
  100. package/dist/ui/runtime.cjs.map +1 -1
  101. package/dist/ui/runtime.d.cts +2 -1
  102. package/dist/ui/runtime.d.cts.map +1 -1
  103. package/dist/ui/runtime.d.mts +2 -1
  104. package/dist/ui/runtime.d.mts.map +1 -1
  105. package/dist/ui/runtime.mjs +4 -1
  106. package/dist/ui/runtime.mjs.map +1 -1
  107. package/package.json +12 -4
  108. package/skills/dev-workflow/SKILL.md +105 -0
  109. package/skills/publish-sync/SKILL.md +130 -0
  110. package/src/app.ts +98 -204
  111. package/src/cli/upgrade.ts +20 -4
  112. package/src/components/dev-view.tsx +8 -3
  113. package/src/components/streaming-view.ts +7 -2
  114. package/src/config.ts +40 -8
  115. package/src/contract.ts +1 -0
  116. package/src/dev-logs.ts +8 -1
  117. package/src/dev-session.ts +56 -79
  118. package/src/host.ts +4 -3
  119. package/src/integrity.ts +96 -10
  120. package/src/mf.ts +42 -0
  121. package/src/orchestrator.ts +232 -411
  122. package/src/plugin.ts +48 -136
  123. package/src/service-descriptor.ts +258 -0
  124. package/src/types.ts +8 -1
  125. package/src/ui/runtime.ts +5 -0
  126. package/dist/process-registry.cjs +0 -120
  127. package/dist/process-registry.cjs.map +0 -1
  128. package/dist/process-registry.d.cts +0 -25
  129. package/dist/process-registry.d.cts.map +0 -1
  130. package/dist/process-registry.d.mts +0 -25
  131. package/dist/process-registry.d.mts.map +0 -1
  132. package/dist/process-registry.mjs +0 -119
  133. package/dist/process-registry.mjs.map +0 -1
  134. package/src/process-registry.ts +0 -154
@@ -1 +1 @@
1
- {"version":3,"file":"config.cjs","names":["BosConfigSchema","getNetworkIdForAccount","fetchBosConfigFromFastKv"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fetchBosConfigFromFastKv } from \"./fastkv\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport type { BosConfig, BosConfigInput, RuntimeConfig, RuntimePluginConfig } from \"./types\";\nimport { BosConfigSchema } from \"./types\";\n\nconst LOCAL_PREFIX = \"local:\";\nconst DEFAULT_HOST_PORT = 3000;\n\ninterface RuntimeTarget {\n source: \"local\" | \"remote\";\n url: string;\n localPath?: string;\n port?: number;\n}\n\nlet cachedConfig: BosConfig | null = null;\nlet projectRoot: string | null = null;\n\nexport function clearConfigCache(): void {\n cachedConfig = null;\n projectRoot = null;\n}\n\nexport function findConfigPath(cwd?: string): string | null {\n let dir = cwd ?? process.cwd();\n while (dir !== \"/\") {\n const configPath = join(dir, \"bos.config.json\");\n if (existsSync(configPath)) {\n return configPath;\n }\n dir = dirname(dir);\n }\n return null;\n}\n\nexport function getConfig(): BosConfig | null {\n return cachedConfig;\n}\n\nexport function getProjectRoot(): string {\n if (!projectRoot) {\n throw new Error(\"Config not loaded. Call loadConfig() first.\");\n }\n return projectRoot;\n}\n\nexport interface ConfigResult {\n config: BosConfig;\n runtime: RuntimeConfig;\n source: {\n path: string;\n extended?: string[];\n remote?: boolean;\n };\n}\n\nexport async function loadConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<ConfigResult | null> {\n const configPath = options?.path ?? findConfigPath(options?.cwd);\n if (!configPath) {\n projectRoot = options?.cwd ?? process.cwd();\n return null;\n }\n\n const baseDir = dirname(configPath);\n\n try {\n const extendedChain: string[] = [];\n const parsed = await resolveConfigWithExtends(configPath, baseDir, new Set(), extendedChain);\n const config = BosConfigSchema.parse(parsed);\n\n cachedConfig = config;\n projectRoot = baseDir;\n\n const pluginRuntime = await resolveRuntimePlugins(\n config.plugins ?? {},\n baseDir,\n options?.env ?? \"development\",\n );\n const runtime = buildRuntimeConfig(config, baseDir, options?.env ?? \"development\", {\n plugins: pluginRuntime,\n });\n\n return {\n config,\n runtime,\n source: {\n path: configPath,\n extended: extendedChain.length > 0 ? extendedChain : undefined,\n remote: extendedChain.some((entry) => entry.startsWith(\"bos://\")),\n },\n };\n } catch (error) {\n throw new Error(`Failed to load config from ${configPath}: ${error}`);\n }\n}\n\nexport async function loadBosConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<RuntimeConfig> {\n const result = await loadConfig(options);\n if (!result) {\n throw new Error(\"No bos.config.json found\");\n }\n\n return result.runtime;\n}\n\nexport async function buildRuntimePluginsForConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n): Promise<Record<string, RuntimePluginConfig> | undefined> {\n const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);\n return Object.keys(plugins).length > 0 ? plugins : undefined;\n}\n\nfunction buildRuntimeConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n options?: { plugins?: Record<string, RuntimePluginConfig> },\n): RuntimeConfig {\n const uiConfig = config.app.ui;\n const apiConfig = config.app.api;\n const authConfig = config.app.auth;\n const uiRuntime =\n env === \"development\"\n ? resolveRuntimeTarget(uiConfig.development, baseDir)\n : resolveRuntimeTarget(uiConfig.production, baseDir, \"remote\");\n const apiRuntime =\n env === \"development\"\n ? resolveRuntimeTarget(apiConfig.development, baseDir)\n : resolveRuntimeTarget(apiConfig.production, baseDir, \"remote\");\n const authRuntime = authConfig\n ? env === \"development\"\n ? resolveRuntimeTarget(authConfig.development, baseDir)\n : resolveRuntimeTarget(authConfig.production, baseDir, \"remote\")\n : undefined;\n\n return {\n env,\n account: config.account,\n domain: config.domain,\n networkId: getNetworkIdForAccount(config.account),\n repository: config.repository,\n hostUrl:\n env === \"development\"\n ? resolveDevelopmentHostUrl(config.app.host.development)\n : config.app.host.production,\n shared: config.shared,\n ui: {\n name: uiConfig.name,\n url: uiRuntime.url,\n entry: uiRuntime.url ? `${uiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: uiRuntime.localPath,\n port: uiRuntime.port,\n ssrUrl: uiConfig.ssr,\n ssrIntegrity: env === \"production\" ? uiConfig.ssrIntegrity : undefined,\n integrity: env === \"production\" ? uiConfig.integrity : undefined,\n source: uiRuntime.source,\n },\n api: {\n name: apiConfig.name,\n url: apiRuntime.url,\n entry: apiRuntime.url ? `${apiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: apiRuntime.localPath,\n port: apiRuntime.port,\n source: apiRuntime.source,\n proxy: apiConfig.proxy,\n variables: apiConfig.variables,\n secrets: apiConfig.secrets,\n integrity: env === \"production\" ? apiConfig.integrity : undefined,\n },\n auth: authConfig\n ? {\n name: resolvePluginRuntimeName(undefined, authRuntime!.localPath, authConfig.name),\n url: authRuntime!.url,\n entry: authRuntime!.url ? `${authRuntime!.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: authRuntime!.localPath,\n port: authRuntime!.port,\n source: authRuntime!.source,\n proxy: authConfig.proxy,\n variables: authConfig.variables,\n secrets: authConfig.secrets,\n integrity: env === \"production\" ? authConfig.integrity : undefined,\n }\n : undefined,\n plugins:\n options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : undefined,\n };\n}\n\nasync function loadConfigFile(configPath: string, baseDir: string): Promise<BosConfigInput> {\n if (configPath.startsWith(\"bos://\")) {\n return fetchBosConfigFromFastKv<BosConfigInput>(configPath);\n }\n\n const resolvedPath = isAbsolute(configPath) ? configPath : resolve(baseDir, configPath);\n return JSON.parse(readFileSync(resolvedPath, \"utf-8\")) as BosConfigInput;\n}\n\nasync function resolveConfigWithExtends(\n configPath: string,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<BosConfigInput> {\n if (visited.has(configPath)) {\n throw new Error(`Circular extends detected: ${[...visited, configPath].join(\" -> \")}`);\n }\n\n const config = await loadConfigFile(configPath, baseDir);\n if (configPath.startsWith(\"bos://\")) {\n chain.push(configPath);\n }\n\n if (!config.extends) {\n return config;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(configPath);\n const parentPath = config.extends;\n const parentBaseDir = parentPath.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(parentPath)\n ? dirname(parentPath)\n : baseDir;\n const parent = await resolveConfigWithExtends(parentPath, parentBaseDir, nextVisited, chain);\n\n return mergeConfigs(parent, config);\n}\n\nfunction mergeConfigs(parent: BosConfigInput, child: BosConfigInput): BosConfigInput {\n const result = mergeValues(parent, child) as BosConfigInput;\n if (child.plugins !== undefined) {\n result.plugins = child.plugins;\n }\n return result;\n}\n\nasync function resolveRuntimePlugins(\n plugins: Record<string, BosConfigInput>,\n baseDir: string,\n env: \"development\" | \"production\",\n prefix: string[] = [],\n): Promise<Record<string, RuntimePluginConfig>> {\n const out: Record<string, RuntimePluginConfig> = {};\n\n for (const [pluginId, pluginInput] of Object.entries(plugins)) {\n const runtimeKey = [...prefix, pluginId].join(\"/\");\n const { config: resolvedConfig, baseDir: pluginBaseDir } = await resolveBosConfigInput(\n pluginInput,\n baseDir,\n new Set(),\n [],\n );\n\n const pluginRuntime = buildRuntimePluginConfig(\n runtimeKey,\n resolvedConfig,\n pluginBaseDir,\n env,\n pluginInput,\n );\n if (\n pluginInput.name &&\n typeof pluginInput.name === \"string\" &&\n !pluginRuntime.name.includes(\"/\")\n ) {\n pluginRuntime.name = pluginInput.name;\n }\n\n const integrity = pluginInput.integrity;\n if (env === \"production\" && integrity) {\n pluginRuntime.integrity = integrity;\n }\n\n if (\n pluginRuntime.source === \"remote\" &&\n pluginRuntime.url &&\n !pluginRuntime.localPath &&\n typeof resolvedConfig.app?.api?.name !== \"string\" &&\n !pluginInput.name\n ) {\n pluginRuntime.name = await resolveRemotePluginRuntimeName(\n pluginRuntime.url,\n pluginRuntime.name,\n );\n }\n\n out[runtimeKey] = pluginRuntime;\n\n if (resolvedConfig.plugins && Object.keys(resolvedConfig.plugins).length > 0) {\n const nested = await resolveRuntimePlugins(resolvedConfig.plugins, pluginBaseDir, env, [\n ...prefix,\n pluginId,\n ]);\n Object.assign(out, nested);\n }\n }\n\n return out;\n}\n\nasync function resolveRemotePluginRuntimeName(baseUrl: string, fallback: string): Promise<string> {\n try {\n const response = await fetch(`${baseUrl.replace(/\\/$/, \"\")}/plugin.manifest.json`);\n if (!response.ok) {\n return fallback;\n }\n\n const manifest = (await response.json()) as {\n plugin?: { name?: unknown };\n };\n\n return typeof manifest.plugin?.name === \"string\" && manifest.plugin.name.length > 0\n ? manifest.plugin.name\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction buildRuntimePluginConfig(\n pluginId: string,\n config: BosConfigInput,\n baseDir: string,\n env: \"development\" | \"production\",\n source: BosConfigInput,\n): RuntimePluginConfig {\n const apiConfig = config.app?.api ?? {};\n const apiDevelopment =\n typeof apiConfig.development === \"string\" ? apiConfig.development : undefined;\n const apiProduction = typeof apiConfig.production === \"string\" ? apiConfig.production : undefined;\n const sourceDevelopment = typeof source.development === \"string\" ? source.development : undefined;\n const sourceProduction = typeof source.production === \"string\" ? source.production : undefined;\n const proxy = typeof apiConfig.proxy === \"string\" ? apiConfig.proxy : undefined;\n const runtimeTarget =\n env === \"development\"\n ? resolveRuntimeTarget(apiDevelopment ?? sourceDevelopment, baseDir)\n : resolveRuntimeTarget(apiProduction ?? sourceProduction, baseDir, \"remote\");\n const apiName = resolvePluginRuntimeName(\n typeof apiConfig.name === \"string\" ? apiConfig.name : undefined,\n runtimeTarget.localPath,\n pluginId,\n );\n\n return {\n name: apiName,\n url: runtimeTarget.url,\n entry: runtimeTarget.url\n ? `${runtimeTarget.url.replace(/\\/$/, \"\")}/mf-manifest.json`\n : \"/mf-manifest.json\",\n source: runtimeTarget.source,\n localPath: runtimeTarget.localPath,\n port: runtimeTarget.port,\n proxy: proxy ?? (typeof source.proxy === \"string\" ? source.proxy : undefined),\n variables: normalizeStringRecord(apiConfig.variables ?? source.variables),\n secrets: normalizeStringArray(apiConfig.secrets ?? source.secrets),\n };\n}\n\nexport function resolvePluginRuntimeName(\n explicitName: string | undefined,\n localPath: string | undefined,\n fallback: string,\n): string {\n if (explicitName) {\n return explicitName;\n }\n\n if (!localPath) {\n return fallback;\n }\n\n try {\n const packageJsonPath = join(localPath, \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: unknown };\n if (typeof packageJson.name === \"string\" && packageJson.name.length > 0) {\n return packageJson.name;\n }\n } catch {}\n\n return fallback;\n}\n\nasync function resolveBosConfigInput(\n input: BosConfigInput,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<{ config: BosConfigInput; baseDir: string }> {\n if (input.extends) {\n const parentBaseDir = input.extends.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(input.extends)\n ? dirname(input.extends)\n : baseDir;\n const config = await resolveConfigWithExtends(input.extends, parentBaseDir, visited, chain);\n return { config: mergeConfigs(config, input), baseDir: parentBaseDir };\n }\n\n return { config: input, baseDir };\n}\n\nfunction mergeValues(parent: unknown, child: unknown): unknown {\n if (Array.isArray(parent) && Array.isArray(child)) {\n return child;\n }\n\n if (isPlainObject(parent) && isPlainObject(child)) {\n const merged: Record<string, unknown> = { ...parent };\n for (const [key, value] of Object.entries(child)) {\n merged[key] = key in merged ? mergeValues(merged[key], value) : value;\n }\n return merged;\n }\n\n return child ?? parent;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeStringRecord(value: unknown): Record<string, string> | undefined {\n if (!isPlainObject(value)) return undefined;\n const out: Record<string, string> = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === \"string\") {\n out[key] = raw;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out = value.filter((item): item is string => typeof item === \"string\" && item.length > 0);\n return out.length > 0 ? out : undefined;\n}\n\nfunction resolveRuntimeTarget(\n value: string | undefined,\n baseDir: string,\n defaultSource: \"local\" | \"remote\" = \"remote\",\n): RuntimeTarget {\n if (!value) {\n return { source: defaultSource, url: \"\" };\n }\n\n if (value.startsWith(LOCAL_PREFIX)) {\n const localTarget = value.slice(LOCAL_PREFIX.length).trim();\n if (!localTarget) {\n throw new Error(`Invalid local development target: ${value}`);\n }\n\n return {\n source: \"local\",\n url: \"\",\n localPath: resolve(baseDir, localTarget),\n };\n }\n\n return {\n source: defaultSource,\n url: value.replace(/\\/$/, \"\"),\n port: parsePort(value),\n };\n}\n\nexport function isLocalDevelopmentTarget(value: string | undefined): boolean {\n return typeof value === \"string\" && value.startsWith(LOCAL_PREFIX);\n}\n\nexport function resolveLocalDevelopmentPath(\n value: string | undefined,\n baseDir: string,\n): string | null {\n if (!isLocalDevelopmentTarget(value)) {\n return null;\n }\n\n const localTarget = value!.slice(LOCAL_PREFIX.length).trim();\n return localTarget ? resolve(baseDir, localTarget) : null;\n}\n\nexport function resolveDevelopmentHostUrl(value: string | undefined): string {\n if (!value || isLocalDevelopmentTarget(value)) {\n return `http://localhost:${DEFAULT_HOST_PORT}`;\n }\n\n return value.replace(/\\/$/, \"\");\n}\n\nexport function getHostDevelopmentPort(value: string | undefined): number {\n return parsePort(resolveDevelopmentHostUrl(value));\n}\n\nexport function parsePort(url: string): number {\n try {\n const parsed = new URL(url);\n return parsed.port ? parseInt(parsed.port, 10) : parsed.protocol === \"https:\" ? 443 : 80;\n } catch {\n return 3000;\n }\n}\n\nexport type { BosConfig, RuntimeConfig } from \"./types\";\nexport { BosConfigSchema } from \"./types\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"config.cjs","names":["BosConfigSchema","getNetworkIdForAccount","fetchBosConfigFromFastKv"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fetchBosConfigFromFastKv } from \"./fastkv\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport type { BosConfig, BosConfigInput, RuntimeConfig, RuntimePluginConfig } from \"./types\";\nimport { BosConfigSchema } from \"./types\";\n\nconst LOCAL_PREFIX = \"local:\";\nconst DEFAULT_HOST_PORT = 3000;\n\ninterface RuntimeTarget {\n source: \"local\" | \"remote\";\n url: string;\n localPath?: string;\n port?: number;\n}\n\nlet cachedConfig: BosConfig | null = null;\nlet projectRoot: string | null = null;\n\nexport function clearConfigCache(): void {\n cachedConfig = null;\n projectRoot = null;\n}\n\nexport function findConfigPath(cwd?: string): string | null {\n let dir = cwd ?? process.cwd();\n while (dir !== \"/\") {\n const configPath = join(dir, \"bos.config.json\");\n if (existsSync(configPath)) {\n return configPath;\n }\n dir = dirname(dir);\n }\n return null;\n}\n\nexport function getConfig(): BosConfig | null {\n return cachedConfig;\n}\n\nexport function getProjectRoot(): string {\n if (!projectRoot) {\n throw new Error(\"Config not loaded. Call loadConfig() first.\");\n }\n return projectRoot;\n}\n\nexport interface ConfigResult {\n config: BosConfig;\n runtime: RuntimeConfig;\n source: {\n path: string;\n extended?: string[];\n remote?: boolean;\n };\n}\n\nexport async function loadConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<ConfigResult | null> {\n const configPath = options?.path ?? findConfigPath(options?.cwd);\n if (!configPath) {\n projectRoot = options?.cwd ?? process.cwd();\n return null;\n }\n\n const baseDir = dirname(configPath);\n\n try {\n const extendedChain: string[] = [];\n const parsed = await resolveConfigWithExtends(configPath, baseDir, new Set(), extendedChain);\n const config = BosConfigSchema.parse(parsed);\n\n cachedConfig = config;\n projectRoot = baseDir;\n\n const pluginRuntime = await resolveRuntimePlugins(\n config.plugins ?? {},\n baseDir,\n options?.env ?? \"development\",\n );\n const runtime = buildRuntimeConfig(config, baseDir, options?.env ?? \"development\", {\n plugins: pluginRuntime,\n });\n\n return {\n config,\n runtime,\n source: {\n path: configPath,\n extended: extendedChain.length > 0 ? extendedChain : undefined,\n remote: extendedChain.some((entry) => entry.startsWith(\"bos://\")),\n },\n };\n } catch (error) {\n throw new Error(`Failed to load config from ${configPath}: ${error}`);\n }\n}\n\nexport async function loadBosConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<RuntimeConfig> {\n const result = await loadConfig(options);\n if (!result) {\n throw new Error(\"No bos.config.json found\");\n }\n\n return result.runtime;\n}\n\nexport async function buildRuntimePluginsForConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n): Promise<Record<string, RuntimePluginConfig> | undefined> {\n const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);\n return Object.keys(plugins).length > 0 ? plugins : undefined;\n}\n\nfunction resolveDevelopmentTarget(\n development: string | undefined,\n production: string | undefined,\n baseDir: string,\n): RuntimeTarget {\n const devTarget = resolveRuntimeTarget(development, baseDir);\n if (devTarget.source === \"local\" && (!devTarget.localPath || !existsSync(devTarget.localPath))) {\n return resolveRuntimeTarget(production, baseDir, \"remote\");\n }\n return devTarget;\n}\n\nfunction buildRuntimeConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n options?: { plugins?: Record<string, RuntimePluginConfig> },\n): RuntimeConfig {\n const uiConfig = config.app.ui;\n const apiConfig = config.app.api;\n const authConfig = config.app.auth;\n const uiRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(uiConfig.development, uiConfig.production, baseDir)\n : resolveRuntimeTarget(uiConfig.production, baseDir, \"remote\");\n const apiRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(apiConfig.development, apiConfig.production, baseDir)\n : resolveRuntimeTarget(apiConfig.production, baseDir, \"remote\");\n const authRuntime = authConfig\n ? env === \"development\"\n ? resolveDevelopmentTarget(authConfig.development, authConfig.production, baseDir)\n : resolveRuntimeTarget(authConfig.production, baseDir, \"remote\")\n : undefined;\n\n const hostConfig = config.app.host;\n const hostRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(hostConfig.development, hostConfig.production, baseDir)\n : resolveRuntimeTarget(hostConfig.production, baseDir, \"remote\");\n\n const hostListeningUrl = resolveDevelopmentHostUrl(hostConfig.development);\n\n return {\n env,\n account: config.account,\n domain: config.domain,\n networkId: getNetworkIdForAccount(config.account),\n repository: config.repository,\n host: {\n name: \"host\",\n url: hostListeningUrl,\n entry: `${hostListeningUrl}/mf-manifest.json`,\n localPath: hostRuntime.localPath,\n port: hostRuntime.port ?? DEFAULT_HOST_PORT,\n secrets: hostConfig.secrets,\n integrity: env === \"production\" ? hostConfig.integrity : undefined,\n source: hostRuntime.source,\n remoteUrl: hostRuntime.source === \"remote\" ? hostRuntime.url : undefined,\n },\n shared: config.shared,\n ui: {\n name: uiConfig.name,\n url: uiRuntime.url,\n entry: uiRuntime.url ? `${uiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: uiRuntime.localPath,\n port: uiRuntime.port,\n ssrUrl: uiConfig.ssr,\n ssrIntegrity: env === \"production\" ? uiConfig.ssrIntegrity : undefined,\n integrity: env === \"production\" ? uiConfig.integrity : undefined,\n source: uiRuntime.source,\n },\n api: {\n name: apiConfig.name,\n url: apiRuntime.url,\n entry: apiRuntime.url ? `${apiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: apiRuntime.localPath,\n port: apiRuntime.port,\n source: apiRuntime.source,\n proxy: apiConfig.proxy,\n variables: apiConfig.variables,\n secrets: apiConfig.secrets,\n integrity: env === \"production\" ? apiConfig.integrity : undefined,\n },\n auth: authConfig\n ? {\n name: resolvePluginRuntimeName(undefined, authRuntime!.localPath, authConfig.name),\n url: authRuntime!.url,\n entry: authRuntime!.url ? `${authRuntime!.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: authRuntime!.localPath,\n port: authRuntime!.port,\n source: authRuntime!.source,\n proxy: authConfig.proxy,\n variables: authConfig.variables,\n secrets: authConfig.secrets,\n integrity: env === \"production\" ? authConfig.integrity : undefined,\n }\n : undefined,\n plugins:\n options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : undefined,\n };\n}\n\nasync function loadConfigFile(configPath: string, baseDir: string): Promise<BosConfigInput> {\n if (configPath.startsWith(\"bos://\")) {\n return fetchBosConfigFromFastKv<BosConfigInput>(configPath);\n }\n\n const resolvedPath = isAbsolute(configPath) ? configPath : resolve(baseDir, configPath);\n return JSON.parse(readFileSync(resolvedPath, \"utf-8\")) as BosConfigInput;\n}\n\nasync function resolveConfigWithExtends(\n configPath: string,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<BosConfigInput> {\n if (visited.has(configPath)) {\n throw new Error(`Circular extends detected: ${[...visited, configPath].join(\" -> \")}`);\n }\n\n const config = await loadConfigFile(configPath, baseDir);\n if (configPath.startsWith(\"bos://\")) {\n chain.push(configPath);\n }\n\n if (!config.extends) {\n return config;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(configPath);\n const parentPath = config.extends;\n const parentBaseDir = parentPath.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(parentPath)\n ? dirname(parentPath)\n : baseDir;\n const parent = await resolveConfigWithExtends(parentPath, parentBaseDir, nextVisited, chain);\n\n return mergeConfigs(parent, config);\n}\n\nfunction mergeConfigs(parent: BosConfigInput, child: BosConfigInput): BosConfigInput {\n const result = mergeValues(parent, child) as BosConfigInput;\n if (child.plugins !== undefined) {\n result.plugins = child.plugins;\n }\n return result;\n}\n\nasync function resolveRuntimePlugins(\n plugins: Record<string, BosConfigInput>,\n baseDir: string,\n env: \"development\" | \"production\",\n prefix: string[] = [],\n): Promise<Record<string, RuntimePluginConfig>> {\n const out: Record<string, RuntimePluginConfig> = {};\n\n for (const [pluginId, pluginInput] of Object.entries(plugins)) {\n const runtimeKey = [...prefix, pluginId].join(\"/\");\n const { config: resolvedConfig, baseDir: pluginBaseDir } = await resolveBosConfigInput(\n pluginInput,\n baseDir,\n new Set(),\n [],\n );\n\n const pluginRuntime = buildRuntimePluginConfig(\n runtimeKey,\n resolvedConfig,\n pluginBaseDir,\n env,\n pluginInput,\n );\n if (\n pluginInput.name &&\n typeof pluginInput.name === \"string\" &&\n !pluginRuntime.name.includes(\"/\")\n ) {\n pluginRuntime.name = pluginInput.name;\n }\n\n const integrity = pluginInput.integrity;\n if (env === \"production\" && integrity) {\n pluginRuntime.integrity = integrity;\n }\n\n if (\n pluginRuntime.source === \"remote\" &&\n pluginRuntime.url &&\n !pluginRuntime.localPath &&\n typeof resolvedConfig.app?.api?.name !== \"string\" &&\n !pluginInput.name\n ) {\n pluginRuntime.name = await resolveRemotePluginRuntimeName(\n pluginRuntime.url,\n pluginRuntime.name,\n );\n }\n\n out[runtimeKey] = pluginRuntime;\n\n if (resolvedConfig.plugins && Object.keys(resolvedConfig.plugins).length > 0) {\n const nested = await resolveRuntimePlugins(resolvedConfig.plugins, pluginBaseDir, env, [\n ...prefix,\n pluginId,\n ]);\n Object.assign(out, nested);\n }\n }\n\n return out;\n}\n\nasync function resolveRemotePluginRuntimeName(baseUrl: string, fallback: string): Promise<string> {\n try {\n const response = await fetch(`${baseUrl.replace(/\\/$/, \"\")}/plugin.manifest.json`);\n if (!response.ok) {\n return fallback;\n }\n\n const manifest = (await response.json()) as {\n plugin?: { name?: unknown };\n };\n\n return typeof manifest.plugin?.name === \"string\" && manifest.plugin.name.length > 0\n ? manifest.plugin.name\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction buildRuntimePluginConfig(\n pluginId: string,\n config: BosConfigInput,\n baseDir: string,\n env: \"development\" | \"production\",\n source: BosConfigInput,\n): RuntimePluginConfig {\n const apiConfig = config.app?.api ?? {};\n const apiDevelopment =\n typeof apiConfig.development === \"string\" ? apiConfig.development : undefined;\n const apiProduction = typeof apiConfig.production === \"string\" ? apiConfig.production : undefined;\n const sourceDevelopment = typeof source.development === \"string\" ? source.development : undefined;\n const sourceProduction = typeof source.production === \"string\" ? source.production : undefined;\n const proxy = typeof apiConfig.proxy === \"string\" ? apiConfig.proxy : undefined;\n const runtimeTarget =\n env === \"development\"\n ? resolveRuntimeTarget(apiDevelopment ?? sourceDevelopment, baseDir)\n : resolveRuntimeTarget(apiProduction ?? sourceProduction, baseDir, \"remote\");\n const apiName = resolvePluginRuntimeName(\n typeof apiConfig.name === \"string\" ? apiConfig.name : undefined,\n runtimeTarget.localPath,\n pluginId,\n );\n\n return {\n name: apiName,\n url: runtimeTarget.url,\n entry: runtimeTarget.url\n ? `${runtimeTarget.url.replace(/\\/$/, \"\")}/mf-manifest.json`\n : \"/mf-manifest.json\",\n source: runtimeTarget.source,\n localPath: runtimeTarget.localPath,\n port: runtimeTarget.port,\n proxy: proxy ?? (typeof source.proxy === \"string\" ? source.proxy : undefined),\n variables: normalizeStringRecord(apiConfig.variables ?? source.variables),\n secrets: normalizeStringArray(apiConfig.secrets ?? source.secrets),\n };\n}\n\nexport function resolvePluginRuntimeName(\n explicitName: string | undefined,\n localPath: string | undefined,\n fallback: string,\n): string {\n if (explicitName) {\n return explicitName;\n }\n\n if (!localPath) {\n return fallback;\n }\n\n try {\n const packageJsonPath = join(localPath, \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: unknown };\n if (typeof packageJson.name === \"string\" && packageJson.name.length > 0) {\n return packageJson.name;\n }\n } catch {}\n\n return fallback;\n}\n\nasync function resolveBosConfigInput(\n input: BosConfigInput,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<{ config: BosConfigInput; baseDir: string }> {\n if (input.extends) {\n const parentBaseDir = input.extends.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(input.extends)\n ? dirname(input.extends)\n : baseDir;\n const config = await resolveConfigWithExtends(input.extends, parentBaseDir, visited, chain);\n return { config: mergeConfigs(config, input), baseDir: parentBaseDir };\n }\n\n return { config: input, baseDir };\n}\n\nfunction mergeValues(parent: unknown, child: unknown): unknown {\n if (Array.isArray(parent) && Array.isArray(child)) {\n return child;\n }\n\n if (isPlainObject(parent) && isPlainObject(child)) {\n const merged: Record<string, unknown> = { ...parent };\n for (const [key, value] of Object.entries(child)) {\n merged[key] = key in merged ? mergeValues(merged[key], value) : value;\n }\n return merged;\n }\n\n return child ?? parent;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeStringRecord(value: unknown): Record<string, string> | undefined {\n if (!isPlainObject(value)) return undefined;\n const out: Record<string, string> = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === \"string\") {\n out[key] = raw;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out = value.filter((item): item is string => typeof item === \"string\" && item.length > 0);\n return out.length > 0 ? out : undefined;\n}\n\nfunction resolveRuntimeTarget(\n value: string | undefined,\n baseDir: string,\n defaultSource: \"local\" | \"remote\" = \"remote\",\n): RuntimeTarget {\n if (!value) {\n return { source: defaultSource, url: \"\" };\n }\n\n if (value.startsWith(LOCAL_PREFIX)) {\n const localTarget = value.slice(LOCAL_PREFIX.length).trim();\n if (!localTarget) {\n throw new Error(`Invalid local development target: ${value}`);\n }\n\n const localPath = resolve(baseDir, localTarget);\n if (!existsSync(localPath)) {\n return { source: defaultSource, url: \"\" };\n }\n\n return {\n source: \"local\",\n url: \"\",\n localPath,\n };\n }\n\n return {\n source: defaultSource,\n url: value.replace(/\\/$/, \"\"),\n port: parsePort(value),\n };\n}\n\nexport function isLocalDevelopmentTarget(value: string | undefined): boolean {\n return typeof value === \"string\" && value.startsWith(LOCAL_PREFIX);\n}\n\nexport function resolveLocalDevelopmentPath(\n value: string | undefined,\n baseDir: string,\n): string | null {\n if (!isLocalDevelopmentTarget(value)) {\n return null;\n }\n\n const localTarget = value!.slice(LOCAL_PREFIX.length).trim();\n return localTarget ? resolve(baseDir, localTarget) : null;\n}\n\nexport function resolveDevelopmentHostUrl(value: string | undefined): string {\n if (!value || isLocalDevelopmentTarget(value)) {\n return `http://localhost:${DEFAULT_HOST_PORT}`;\n }\n\n return value.replace(/\\/$/, \"\");\n}\n\nexport function getHostDevelopmentPort(value: string | undefined): number {\n return parsePort(resolveDevelopmentHostUrl(value));\n}\n\nexport function parsePort(url: string): number {\n try {\n const parsed = new URL(url);\n return parsed.port ? parseInt(parsed.port, 10) : parsed.protocol === \"https:\" ? 443 : 80;\n } catch {\n return 3000;\n }\n}\n\nexport type { BosConfig, RuntimeConfig } from \"./types\";\nexport { BosConfigSchema } from \"./types\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.cts","names":[],"sources":["../src/config.ts"],"mappings":";;;iBAoBgB,gBAAA,CAAA;AAAA,iBAKA,cAAA,CAAe,GAAA;AAAA,iBAYf,SAAA,CAAA,GAAa,SAAA;AAAA,iBAIb,cAAA,CAAA;AAAA,UAOC,YAAA;EACf,MAAA,EAAQ,SAAA;EACR,OAAA,EAAS,aAAA;EACT,MAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CAAW,OAAA;EAC/B,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,YAAA;AAAA,iBAwCU,aAAA,CAAc,OAAA;EAClC,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,aAAA;AAAA,iBASU,4BAAA,CACpB,MAAA,EAAQ,SAAA,EACR,OAAA,UACA,GAAA,iCACC,OAAA,CAAQ,MAAA,SAAe,mBAAA;AAAA,iBA4PV,wBAAA,CACd,YAAA,sBACA,SAAA,sBACA,QAAA;AAAA,iBA0Gc,wBAAA,CAAyB,KAAA;AAAA,iBAIzB,2BAAA,CACd,KAAA,sBACA,OAAA;AAAA,iBAUc,yBAAA,CAA0B,KAAA;AAAA,iBAQ1B,sBAAA,CAAuB,KAAA;AAAA,iBAIvB,SAAA,CAAU,GAAA"}
1
+ {"version":3,"file":"config.d.cts","names":[],"sources":["../src/config.ts"],"mappings":";;;iBAoBgB,gBAAA,CAAA;AAAA,iBAKA,cAAA,CAAe,GAAA;AAAA,iBAYf,SAAA,CAAA,GAAa,SAAA;AAAA,iBAIb,cAAA,CAAA;AAAA,UAOC,YAAA;EACf,MAAA,EAAQ,SAAA;EACR,OAAA,EAAS,aAAA;EACT,MAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CAAW,OAAA;EAC/B,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,YAAA;AAAA,iBAwCU,aAAA,CAAc,OAAA;EAClC,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,aAAA;AAAA,iBASU,4BAAA,CACpB,MAAA,EAAQ,SAAA,EACR,OAAA,UACA,GAAA,iCACC,OAAA,CAAQ,MAAA,SAAe,mBAAA;AAAA,iBAuRV,wBAAA,CACd,YAAA,sBACA,SAAA,sBACA,QAAA;AAAA,iBA+Gc,wBAAA,CAAyB,KAAA;AAAA,iBAIzB,2BAAA,CACd,KAAA,sBACA,OAAA;AAAA,iBAUc,yBAAA,CAA0B,KAAA;AAAA,iBAQ1B,sBAAA,CAAuB,KAAA;AAAA,iBAIvB,SAAA,CAAU,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.mts","names":[],"sources":["../src/config.ts"],"mappings":";;;iBAoBgB,gBAAA,CAAA;AAAA,iBAKA,cAAA,CAAe,GAAA;AAAA,iBAYf,SAAA,CAAA,GAAa,SAAA;AAAA,iBAIb,cAAA,CAAA;AAAA,UAOC,YAAA;EACf,MAAA,EAAQ,SAAA;EACR,OAAA,EAAS,aAAA;EACT,MAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CAAW,OAAA;EAC/B,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,YAAA;AAAA,iBAwCU,aAAA,CAAc,OAAA;EAClC,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,aAAA;AAAA,iBASU,4BAAA,CACpB,MAAA,EAAQ,SAAA,EACR,OAAA,UACA,GAAA,iCACC,OAAA,CAAQ,MAAA,SAAe,mBAAA;AAAA,iBA4PV,wBAAA,CACd,YAAA,sBACA,SAAA,sBACA,QAAA;AAAA,iBA0Gc,wBAAA,CAAyB,KAAA;AAAA,iBAIzB,2BAAA,CACd,KAAA,sBACA,OAAA;AAAA,iBAUc,yBAAA,CAA0B,KAAA;AAAA,iBAQ1B,sBAAA,CAAuB,KAAA;AAAA,iBAIvB,SAAA,CAAU,GAAA"}
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../src/config.ts"],"mappings":";;;iBAoBgB,gBAAA,CAAA;AAAA,iBAKA,cAAA,CAAe,GAAA;AAAA,iBAYf,SAAA,CAAA,GAAa,SAAA;AAAA,iBAIb,cAAA,CAAA;AAAA,UAOC,YAAA;EACf,MAAA,EAAQ,SAAA;EACR,OAAA,EAAS,aAAA;EACT,MAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CAAW,OAAA;EAC/B,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,YAAA;AAAA,iBAwCU,aAAA,CAAc,OAAA;EAClC,GAAA;EACA,IAAA;EACA,GAAA;AAAA,IACE,OAAA,CAAQ,aAAA;AAAA,iBASU,4BAAA,CACpB,MAAA,EAAQ,SAAA,EACR,OAAA,UACA,GAAA,iCACC,OAAA,CAAQ,MAAA,SAAe,mBAAA;AAAA,iBAuRV,wBAAA,CACd,YAAA,sBACA,SAAA,sBACA,QAAA;AAAA,iBA+Gc,wBAAA,CAAyB,KAAA;AAAA,iBAIzB,2BAAA,CACd,KAAA,sBACA,OAAA;AAAA,iBAUc,yBAAA,CAA0B,KAAA;AAAA,iBAQ1B,sBAAA,CAAuB,KAAA;AAAA,iBAIvB,SAAA,CAAU,GAAA"}
package/dist/config.mjs CHANGED
@@ -65,20 +65,38 @@ async function buildRuntimePluginsForConfig(config, baseDir, env) {
65
65
  const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);
66
66
  return Object.keys(plugins).length > 0 ? plugins : void 0;
67
67
  }
68
+ function resolveDevelopmentTarget(development, production, baseDir) {
69
+ const devTarget = resolveRuntimeTarget(development, baseDir);
70
+ if (devTarget.source === "local" && (!devTarget.localPath || !existsSync(devTarget.localPath))) return resolveRuntimeTarget(production, baseDir, "remote");
71
+ return devTarget;
72
+ }
68
73
  function buildRuntimeConfig(config, baseDir, env, options) {
69
74
  const uiConfig = config.app.ui;
70
75
  const apiConfig = config.app.api;
71
76
  const authConfig = config.app.auth;
72
- const uiRuntime = env === "development" ? resolveRuntimeTarget(uiConfig.development, baseDir) : resolveRuntimeTarget(uiConfig.production, baseDir, "remote");
73
- const apiRuntime = env === "development" ? resolveRuntimeTarget(apiConfig.development, baseDir) : resolveRuntimeTarget(apiConfig.production, baseDir, "remote");
74
- const authRuntime = authConfig ? env === "development" ? resolveRuntimeTarget(authConfig.development, baseDir) : resolveRuntimeTarget(authConfig.production, baseDir, "remote") : void 0;
77
+ const uiRuntime = env === "development" ? resolveDevelopmentTarget(uiConfig.development, uiConfig.production, baseDir) : resolveRuntimeTarget(uiConfig.production, baseDir, "remote");
78
+ const apiRuntime = env === "development" ? resolveDevelopmentTarget(apiConfig.development, apiConfig.production, baseDir) : resolveRuntimeTarget(apiConfig.production, baseDir, "remote");
79
+ const authRuntime = authConfig ? env === "development" ? resolveDevelopmentTarget(authConfig.development, authConfig.production, baseDir) : resolveRuntimeTarget(authConfig.production, baseDir, "remote") : void 0;
80
+ const hostConfig = config.app.host;
81
+ const hostRuntime = env === "development" ? resolveDevelopmentTarget(hostConfig.development, hostConfig.production, baseDir) : resolveRuntimeTarget(hostConfig.production, baseDir, "remote");
82
+ const hostListeningUrl = resolveDevelopmentHostUrl(hostConfig.development);
75
83
  return {
76
84
  env,
77
85
  account: config.account,
78
86
  domain: config.domain,
79
87
  networkId: getNetworkIdForAccount(config.account),
80
88
  repository: config.repository,
81
- hostUrl: env === "development" ? resolveDevelopmentHostUrl(config.app.host.development) : config.app.host.production,
89
+ host: {
90
+ name: "host",
91
+ url: hostListeningUrl,
92
+ entry: `${hostListeningUrl}/mf-manifest.json`,
93
+ localPath: hostRuntime.localPath,
94
+ port: hostRuntime.port ?? DEFAULT_HOST_PORT,
95
+ secrets: hostConfig.secrets,
96
+ integrity: env === "production" ? hostConfig.integrity : void 0,
97
+ source: hostRuntime.source,
98
+ remoteUrl: hostRuntime.source === "remote" ? hostRuntime.url : void 0
99
+ },
82
100
  shared: config.shared,
83
101
  ui: {
84
102
  name: uiConfig.name,
@@ -240,10 +258,15 @@ function resolveRuntimeTarget(value, baseDir, defaultSource = "remote") {
240
258
  if (value.startsWith(LOCAL_PREFIX)) {
241
259
  const localTarget = value.slice(6).trim();
242
260
  if (!localTarget) throw new Error(`Invalid local development target: ${value}`);
261
+ const localPath = resolve(baseDir, localTarget);
262
+ if (!existsSync(localPath)) return {
263
+ source: defaultSource,
264
+ url: ""
265
+ };
243
266
  return {
244
267
  source: "local",
245
268
  url: "",
246
- localPath: resolve(baseDir, localTarget)
269
+ localPath
247
270
  };
248
271
  }
249
272
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fetchBosConfigFromFastKv } from \"./fastkv\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport type { BosConfig, BosConfigInput, RuntimeConfig, RuntimePluginConfig } from \"./types\";\nimport { BosConfigSchema } from \"./types\";\n\nconst LOCAL_PREFIX = \"local:\";\nconst DEFAULT_HOST_PORT = 3000;\n\ninterface RuntimeTarget {\n source: \"local\" | \"remote\";\n url: string;\n localPath?: string;\n port?: number;\n}\n\nlet cachedConfig: BosConfig | null = null;\nlet projectRoot: string | null = null;\n\nexport function clearConfigCache(): void {\n cachedConfig = null;\n projectRoot = null;\n}\n\nexport function findConfigPath(cwd?: string): string | null {\n let dir = cwd ?? process.cwd();\n while (dir !== \"/\") {\n const configPath = join(dir, \"bos.config.json\");\n if (existsSync(configPath)) {\n return configPath;\n }\n dir = dirname(dir);\n }\n return null;\n}\n\nexport function getConfig(): BosConfig | null {\n return cachedConfig;\n}\n\nexport function getProjectRoot(): string {\n if (!projectRoot) {\n throw new Error(\"Config not loaded. Call loadConfig() first.\");\n }\n return projectRoot;\n}\n\nexport interface ConfigResult {\n config: BosConfig;\n runtime: RuntimeConfig;\n source: {\n path: string;\n extended?: string[];\n remote?: boolean;\n };\n}\n\nexport async function loadConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<ConfigResult | null> {\n const configPath = options?.path ?? findConfigPath(options?.cwd);\n if (!configPath) {\n projectRoot = options?.cwd ?? process.cwd();\n return null;\n }\n\n const baseDir = dirname(configPath);\n\n try {\n const extendedChain: string[] = [];\n const parsed = await resolveConfigWithExtends(configPath, baseDir, new Set(), extendedChain);\n const config = BosConfigSchema.parse(parsed);\n\n cachedConfig = config;\n projectRoot = baseDir;\n\n const pluginRuntime = await resolveRuntimePlugins(\n config.plugins ?? {},\n baseDir,\n options?.env ?? \"development\",\n );\n const runtime = buildRuntimeConfig(config, baseDir, options?.env ?? \"development\", {\n plugins: pluginRuntime,\n });\n\n return {\n config,\n runtime,\n source: {\n path: configPath,\n extended: extendedChain.length > 0 ? extendedChain : undefined,\n remote: extendedChain.some((entry) => entry.startsWith(\"bos://\")),\n },\n };\n } catch (error) {\n throw new Error(`Failed to load config from ${configPath}: ${error}`);\n }\n}\n\nexport async function loadBosConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<RuntimeConfig> {\n const result = await loadConfig(options);\n if (!result) {\n throw new Error(\"No bos.config.json found\");\n }\n\n return result.runtime;\n}\n\nexport async function buildRuntimePluginsForConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n): Promise<Record<string, RuntimePluginConfig> | undefined> {\n const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);\n return Object.keys(plugins).length > 0 ? plugins : undefined;\n}\n\nfunction buildRuntimeConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n options?: { plugins?: Record<string, RuntimePluginConfig> },\n): RuntimeConfig {\n const uiConfig = config.app.ui;\n const apiConfig = config.app.api;\n const authConfig = config.app.auth;\n const uiRuntime =\n env === \"development\"\n ? resolveRuntimeTarget(uiConfig.development, baseDir)\n : resolveRuntimeTarget(uiConfig.production, baseDir, \"remote\");\n const apiRuntime =\n env === \"development\"\n ? resolveRuntimeTarget(apiConfig.development, baseDir)\n : resolveRuntimeTarget(apiConfig.production, baseDir, \"remote\");\n const authRuntime = authConfig\n ? env === \"development\"\n ? resolveRuntimeTarget(authConfig.development, baseDir)\n : resolveRuntimeTarget(authConfig.production, baseDir, \"remote\")\n : undefined;\n\n return {\n env,\n account: config.account,\n domain: config.domain,\n networkId: getNetworkIdForAccount(config.account),\n repository: config.repository,\n hostUrl:\n env === \"development\"\n ? resolveDevelopmentHostUrl(config.app.host.development)\n : config.app.host.production,\n shared: config.shared,\n ui: {\n name: uiConfig.name,\n url: uiRuntime.url,\n entry: uiRuntime.url ? `${uiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: uiRuntime.localPath,\n port: uiRuntime.port,\n ssrUrl: uiConfig.ssr,\n ssrIntegrity: env === \"production\" ? uiConfig.ssrIntegrity : undefined,\n integrity: env === \"production\" ? uiConfig.integrity : undefined,\n source: uiRuntime.source,\n },\n api: {\n name: apiConfig.name,\n url: apiRuntime.url,\n entry: apiRuntime.url ? `${apiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: apiRuntime.localPath,\n port: apiRuntime.port,\n source: apiRuntime.source,\n proxy: apiConfig.proxy,\n variables: apiConfig.variables,\n secrets: apiConfig.secrets,\n integrity: env === \"production\" ? apiConfig.integrity : undefined,\n },\n auth: authConfig\n ? {\n name: resolvePluginRuntimeName(undefined, authRuntime!.localPath, authConfig.name),\n url: authRuntime!.url,\n entry: authRuntime!.url ? `${authRuntime!.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: authRuntime!.localPath,\n port: authRuntime!.port,\n source: authRuntime!.source,\n proxy: authConfig.proxy,\n variables: authConfig.variables,\n secrets: authConfig.secrets,\n integrity: env === \"production\" ? authConfig.integrity : undefined,\n }\n : undefined,\n plugins:\n options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : undefined,\n };\n}\n\nasync function loadConfigFile(configPath: string, baseDir: string): Promise<BosConfigInput> {\n if (configPath.startsWith(\"bos://\")) {\n return fetchBosConfigFromFastKv<BosConfigInput>(configPath);\n }\n\n const resolvedPath = isAbsolute(configPath) ? configPath : resolve(baseDir, configPath);\n return JSON.parse(readFileSync(resolvedPath, \"utf-8\")) as BosConfigInput;\n}\n\nasync function resolveConfigWithExtends(\n configPath: string,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<BosConfigInput> {\n if (visited.has(configPath)) {\n throw new Error(`Circular extends detected: ${[...visited, configPath].join(\" -> \")}`);\n }\n\n const config = await loadConfigFile(configPath, baseDir);\n if (configPath.startsWith(\"bos://\")) {\n chain.push(configPath);\n }\n\n if (!config.extends) {\n return config;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(configPath);\n const parentPath = config.extends;\n const parentBaseDir = parentPath.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(parentPath)\n ? dirname(parentPath)\n : baseDir;\n const parent = await resolveConfigWithExtends(parentPath, parentBaseDir, nextVisited, chain);\n\n return mergeConfigs(parent, config);\n}\n\nfunction mergeConfigs(parent: BosConfigInput, child: BosConfigInput): BosConfigInput {\n const result = mergeValues(parent, child) as BosConfigInput;\n if (child.plugins !== undefined) {\n result.plugins = child.plugins;\n }\n return result;\n}\n\nasync function resolveRuntimePlugins(\n plugins: Record<string, BosConfigInput>,\n baseDir: string,\n env: \"development\" | \"production\",\n prefix: string[] = [],\n): Promise<Record<string, RuntimePluginConfig>> {\n const out: Record<string, RuntimePluginConfig> = {};\n\n for (const [pluginId, pluginInput] of Object.entries(plugins)) {\n const runtimeKey = [...prefix, pluginId].join(\"/\");\n const { config: resolvedConfig, baseDir: pluginBaseDir } = await resolveBosConfigInput(\n pluginInput,\n baseDir,\n new Set(),\n [],\n );\n\n const pluginRuntime = buildRuntimePluginConfig(\n runtimeKey,\n resolvedConfig,\n pluginBaseDir,\n env,\n pluginInput,\n );\n if (\n pluginInput.name &&\n typeof pluginInput.name === \"string\" &&\n !pluginRuntime.name.includes(\"/\")\n ) {\n pluginRuntime.name = pluginInput.name;\n }\n\n const integrity = pluginInput.integrity;\n if (env === \"production\" && integrity) {\n pluginRuntime.integrity = integrity;\n }\n\n if (\n pluginRuntime.source === \"remote\" &&\n pluginRuntime.url &&\n !pluginRuntime.localPath &&\n typeof resolvedConfig.app?.api?.name !== \"string\" &&\n !pluginInput.name\n ) {\n pluginRuntime.name = await resolveRemotePluginRuntimeName(\n pluginRuntime.url,\n pluginRuntime.name,\n );\n }\n\n out[runtimeKey] = pluginRuntime;\n\n if (resolvedConfig.plugins && Object.keys(resolvedConfig.plugins).length > 0) {\n const nested = await resolveRuntimePlugins(resolvedConfig.plugins, pluginBaseDir, env, [\n ...prefix,\n pluginId,\n ]);\n Object.assign(out, nested);\n }\n }\n\n return out;\n}\n\nasync function resolveRemotePluginRuntimeName(baseUrl: string, fallback: string): Promise<string> {\n try {\n const response = await fetch(`${baseUrl.replace(/\\/$/, \"\")}/plugin.manifest.json`);\n if (!response.ok) {\n return fallback;\n }\n\n const manifest = (await response.json()) as {\n plugin?: { name?: unknown };\n };\n\n return typeof manifest.plugin?.name === \"string\" && manifest.plugin.name.length > 0\n ? manifest.plugin.name\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction buildRuntimePluginConfig(\n pluginId: string,\n config: BosConfigInput,\n baseDir: string,\n env: \"development\" | \"production\",\n source: BosConfigInput,\n): RuntimePluginConfig {\n const apiConfig = config.app?.api ?? {};\n const apiDevelopment =\n typeof apiConfig.development === \"string\" ? apiConfig.development : undefined;\n const apiProduction = typeof apiConfig.production === \"string\" ? apiConfig.production : undefined;\n const sourceDevelopment = typeof source.development === \"string\" ? source.development : undefined;\n const sourceProduction = typeof source.production === \"string\" ? source.production : undefined;\n const proxy = typeof apiConfig.proxy === \"string\" ? apiConfig.proxy : undefined;\n const runtimeTarget =\n env === \"development\"\n ? resolveRuntimeTarget(apiDevelopment ?? sourceDevelopment, baseDir)\n : resolveRuntimeTarget(apiProduction ?? sourceProduction, baseDir, \"remote\");\n const apiName = resolvePluginRuntimeName(\n typeof apiConfig.name === \"string\" ? apiConfig.name : undefined,\n runtimeTarget.localPath,\n pluginId,\n );\n\n return {\n name: apiName,\n url: runtimeTarget.url,\n entry: runtimeTarget.url\n ? `${runtimeTarget.url.replace(/\\/$/, \"\")}/mf-manifest.json`\n : \"/mf-manifest.json\",\n source: runtimeTarget.source,\n localPath: runtimeTarget.localPath,\n port: runtimeTarget.port,\n proxy: proxy ?? (typeof source.proxy === \"string\" ? source.proxy : undefined),\n variables: normalizeStringRecord(apiConfig.variables ?? source.variables),\n secrets: normalizeStringArray(apiConfig.secrets ?? source.secrets),\n };\n}\n\nexport function resolvePluginRuntimeName(\n explicitName: string | undefined,\n localPath: string | undefined,\n fallback: string,\n): string {\n if (explicitName) {\n return explicitName;\n }\n\n if (!localPath) {\n return fallback;\n }\n\n try {\n const packageJsonPath = join(localPath, \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: unknown };\n if (typeof packageJson.name === \"string\" && packageJson.name.length > 0) {\n return packageJson.name;\n }\n } catch {}\n\n return fallback;\n}\n\nasync function resolveBosConfigInput(\n input: BosConfigInput,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<{ config: BosConfigInput; baseDir: string }> {\n if (input.extends) {\n const parentBaseDir = input.extends.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(input.extends)\n ? dirname(input.extends)\n : baseDir;\n const config = await resolveConfigWithExtends(input.extends, parentBaseDir, visited, chain);\n return { config: mergeConfigs(config, input), baseDir: parentBaseDir };\n }\n\n return { config: input, baseDir };\n}\n\nfunction mergeValues(parent: unknown, child: unknown): unknown {\n if (Array.isArray(parent) && Array.isArray(child)) {\n return child;\n }\n\n if (isPlainObject(parent) && isPlainObject(child)) {\n const merged: Record<string, unknown> = { ...parent };\n for (const [key, value] of Object.entries(child)) {\n merged[key] = key in merged ? mergeValues(merged[key], value) : value;\n }\n return merged;\n }\n\n return child ?? parent;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeStringRecord(value: unknown): Record<string, string> | undefined {\n if (!isPlainObject(value)) return undefined;\n const out: Record<string, string> = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === \"string\") {\n out[key] = raw;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out = value.filter((item): item is string => typeof item === \"string\" && item.length > 0);\n return out.length > 0 ? out : undefined;\n}\n\nfunction resolveRuntimeTarget(\n value: string | undefined,\n baseDir: string,\n defaultSource: \"local\" | \"remote\" = \"remote\",\n): RuntimeTarget {\n if (!value) {\n return { source: defaultSource, url: \"\" };\n }\n\n if (value.startsWith(LOCAL_PREFIX)) {\n const localTarget = value.slice(LOCAL_PREFIX.length).trim();\n if (!localTarget) {\n throw new Error(`Invalid local development target: ${value}`);\n }\n\n return {\n source: \"local\",\n url: \"\",\n localPath: resolve(baseDir, localTarget),\n };\n }\n\n return {\n source: defaultSource,\n url: value.replace(/\\/$/, \"\"),\n port: parsePort(value),\n };\n}\n\nexport function isLocalDevelopmentTarget(value: string | undefined): boolean {\n return typeof value === \"string\" && value.startsWith(LOCAL_PREFIX);\n}\n\nexport function resolveLocalDevelopmentPath(\n value: string | undefined,\n baseDir: string,\n): string | null {\n if (!isLocalDevelopmentTarget(value)) {\n return null;\n }\n\n const localTarget = value!.slice(LOCAL_PREFIX.length).trim();\n return localTarget ? resolve(baseDir, localTarget) : null;\n}\n\nexport function resolveDevelopmentHostUrl(value: string | undefined): string {\n if (!value || isLocalDevelopmentTarget(value)) {\n return `http://localhost:${DEFAULT_HOST_PORT}`;\n }\n\n return value.replace(/\\/$/, \"\");\n}\n\nexport function getHostDevelopmentPort(value: string | undefined): number {\n return parsePort(resolveDevelopmentHostUrl(value));\n}\n\nexport function parsePort(url: string): number {\n try {\n const parsed = new URL(url);\n return parsed.port ? parseInt(parsed.port, 10) : parsed.protocol === \"https:\" ? 443 : 80;\n } catch {\n return 3000;\n }\n}\n\nexport type { BosConfig, RuntimeConfig } from \"./types\";\nexport { BosConfigSchema } from \"./types\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fetchBosConfigFromFastKv } from \"./fastkv\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport type { BosConfig, BosConfigInput, RuntimeConfig, RuntimePluginConfig } from \"./types\";\nimport { BosConfigSchema } from \"./types\";\n\nconst LOCAL_PREFIX = \"local:\";\nconst DEFAULT_HOST_PORT = 3000;\n\ninterface RuntimeTarget {\n source: \"local\" | \"remote\";\n url: string;\n localPath?: string;\n port?: number;\n}\n\nlet cachedConfig: BosConfig | null = null;\nlet projectRoot: string | null = null;\n\nexport function clearConfigCache(): void {\n cachedConfig = null;\n projectRoot = null;\n}\n\nexport function findConfigPath(cwd?: string): string | null {\n let dir = cwd ?? process.cwd();\n while (dir !== \"/\") {\n const configPath = join(dir, \"bos.config.json\");\n if (existsSync(configPath)) {\n return configPath;\n }\n dir = dirname(dir);\n }\n return null;\n}\n\nexport function getConfig(): BosConfig | null {\n return cachedConfig;\n}\n\nexport function getProjectRoot(): string {\n if (!projectRoot) {\n throw new Error(\"Config not loaded. Call loadConfig() first.\");\n }\n return projectRoot;\n}\n\nexport interface ConfigResult {\n config: BosConfig;\n runtime: RuntimeConfig;\n source: {\n path: string;\n extended?: string[];\n remote?: boolean;\n };\n}\n\nexport async function loadConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<ConfigResult | null> {\n const configPath = options?.path ?? findConfigPath(options?.cwd);\n if (!configPath) {\n projectRoot = options?.cwd ?? process.cwd();\n return null;\n }\n\n const baseDir = dirname(configPath);\n\n try {\n const extendedChain: string[] = [];\n const parsed = await resolveConfigWithExtends(configPath, baseDir, new Set(), extendedChain);\n const config = BosConfigSchema.parse(parsed);\n\n cachedConfig = config;\n projectRoot = baseDir;\n\n const pluginRuntime = await resolveRuntimePlugins(\n config.plugins ?? {},\n baseDir,\n options?.env ?? \"development\",\n );\n const runtime = buildRuntimeConfig(config, baseDir, options?.env ?? \"development\", {\n plugins: pluginRuntime,\n });\n\n return {\n config,\n runtime,\n source: {\n path: configPath,\n extended: extendedChain.length > 0 ? extendedChain : undefined,\n remote: extendedChain.some((entry) => entry.startsWith(\"bos://\")),\n },\n };\n } catch (error) {\n throw new Error(`Failed to load config from ${configPath}: ${error}`);\n }\n}\n\nexport async function loadBosConfig(options?: {\n cwd?: string;\n path?: string;\n env?: \"development\" | \"production\";\n}): Promise<RuntimeConfig> {\n const result = await loadConfig(options);\n if (!result) {\n throw new Error(\"No bos.config.json found\");\n }\n\n return result.runtime;\n}\n\nexport async function buildRuntimePluginsForConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n): Promise<Record<string, RuntimePluginConfig> | undefined> {\n const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);\n return Object.keys(plugins).length > 0 ? plugins : undefined;\n}\n\nfunction resolveDevelopmentTarget(\n development: string | undefined,\n production: string | undefined,\n baseDir: string,\n): RuntimeTarget {\n const devTarget = resolveRuntimeTarget(development, baseDir);\n if (devTarget.source === \"local\" && (!devTarget.localPath || !existsSync(devTarget.localPath))) {\n return resolveRuntimeTarget(production, baseDir, \"remote\");\n }\n return devTarget;\n}\n\nfunction buildRuntimeConfig(\n config: BosConfig,\n baseDir: string,\n env: \"development\" | \"production\",\n options?: { plugins?: Record<string, RuntimePluginConfig> },\n): RuntimeConfig {\n const uiConfig = config.app.ui;\n const apiConfig = config.app.api;\n const authConfig = config.app.auth;\n const uiRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(uiConfig.development, uiConfig.production, baseDir)\n : resolveRuntimeTarget(uiConfig.production, baseDir, \"remote\");\n const apiRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(apiConfig.development, apiConfig.production, baseDir)\n : resolveRuntimeTarget(apiConfig.production, baseDir, \"remote\");\n const authRuntime = authConfig\n ? env === \"development\"\n ? resolveDevelopmentTarget(authConfig.development, authConfig.production, baseDir)\n : resolveRuntimeTarget(authConfig.production, baseDir, \"remote\")\n : undefined;\n\n const hostConfig = config.app.host;\n const hostRuntime =\n env === \"development\"\n ? resolveDevelopmentTarget(hostConfig.development, hostConfig.production, baseDir)\n : resolveRuntimeTarget(hostConfig.production, baseDir, \"remote\");\n\n const hostListeningUrl = resolveDevelopmentHostUrl(hostConfig.development);\n\n return {\n env,\n account: config.account,\n domain: config.domain,\n networkId: getNetworkIdForAccount(config.account),\n repository: config.repository,\n host: {\n name: \"host\",\n url: hostListeningUrl,\n entry: `${hostListeningUrl}/mf-manifest.json`,\n localPath: hostRuntime.localPath,\n port: hostRuntime.port ?? DEFAULT_HOST_PORT,\n secrets: hostConfig.secrets,\n integrity: env === \"production\" ? hostConfig.integrity : undefined,\n source: hostRuntime.source,\n remoteUrl: hostRuntime.source === \"remote\" ? hostRuntime.url : undefined,\n },\n shared: config.shared,\n ui: {\n name: uiConfig.name,\n url: uiRuntime.url,\n entry: uiRuntime.url ? `${uiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: uiRuntime.localPath,\n port: uiRuntime.port,\n ssrUrl: uiConfig.ssr,\n ssrIntegrity: env === \"production\" ? uiConfig.ssrIntegrity : undefined,\n integrity: env === \"production\" ? uiConfig.integrity : undefined,\n source: uiRuntime.source,\n },\n api: {\n name: apiConfig.name,\n url: apiRuntime.url,\n entry: apiRuntime.url ? `${apiRuntime.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: apiRuntime.localPath,\n port: apiRuntime.port,\n source: apiRuntime.source,\n proxy: apiConfig.proxy,\n variables: apiConfig.variables,\n secrets: apiConfig.secrets,\n integrity: env === \"production\" ? apiConfig.integrity : undefined,\n },\n auth: authConfig\n ? {\n name: resolvePluginRuntimeName(undefined, authRuntime!.localPath, authConfig.name),\n url: authRuntime!.url,\n entry: authRuntime!.url ? `${authRuntime!.url}/mf-manifest.json` : \"/mf-manifest.json\",\n localPath: authRuntime!.localPath,\n port: authRuntime!.port,\n source: authRuntime!.source,\n proxy: authConfig.proxy,\n variables: authConfig.variables,\n secrets: authConfig.secrets,\n integrity: env === \"production\" ? authConfig.integrity : undefined,\n }\n : undefined,\n plugins:\n options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : undefined,\n };\n}\n\nasync function loadConfigFile(configPath: string, baseDir: string): Promise<BosConfigInput> {\n if (configPath.startsWith(\"bos://\")) {\n return fetchBosConfigFromFastKv<BosConfigInput>(configPath);\n }\n\n const resolvedPath = isAbsolute(configPath) ? configPath : resolve(baseDir, configPath);\n return JSON.parse(readFileSync(resolvedPath, \"utf-8\")) as BosConfigInput;\n}\n\nasync function resolveConfigWithExtends(\n configPath: string,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<BosConfigInput> {\n if (visited.has(configPath)) {\n throw new Error(`Circular extends detected: ${[...visited, configPath].join(\" -> \")}`);\n }\n\n const config = await loadConfigFile(configPath, baseDir);\n if (configPath.startsWith(\"bos://\")) {\n chain.push(configPath);\n }\n\n if (!config.extends) {\n return config;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(configPath);\n const parentPath = config.extends;\n const parentBaseDir = parentPath.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(parentPath)\n ? dirname(parentPath)\n : baseDir;\n const parent = await resolveConfigWithExtends(parentPath, parentBaseDir, nextVisited, chain);\n\n return mergeConfigs(parent, config);\n}\n\nfunction mergeConfigs(parent: BosConfigInput, child: BosConfigInput): BosConfigInput {\n const result = mergeValues(parent, child) as BosConfigInput;\n if (child.plugins !== undefined) {\n result.plugins = child.plugins;\n }\n return result;\n}\n\nasync function resolveRuntimePlugins(\n plugins: Record<string, BosConfigInput>,\n baseDir: string,\n env: \"development\" | \"production\",\n prefix: string[] = [],\n): Promise<Record<string, RuntimePluginConfig>> {\n const out: Record<string, RuntimePluginConfig> = {};\n\n for (const [pluginId, pluginInput] of Object.entries(plugins)) {\n const runtimeKey = [...prefix, pluginId].join(\"/\");\n const { config: resolvedConfig, baseDir: pluginBaseDir } = await resolveBosConfigInput(\n pluginInput,\n baseDir,\n new Set(),\n [],\n );\n\n const pluginRuntime = buildRuntimePluginConfig(\n runtimeKey,\n resolvedConfig,\n pluginBaseDir,\n env,\n pluginInput,\n );\n if (\n pluginInput.name &&\n typeof pluginInput.name === \"string\" &&\n !pluginRuntime.name.includes(\"/\")\n ) {\n pluginRuntime.name = pluginInput.name;\n }\n\n const integrity = pluginInput.integrity;\n if (env === \"production\" && integrity) {\n pluginRuntime.integrity = integrity;\n }\n\n if (\n pluginRuntime.source === \"remote\" &&\n pluginRuntime.url &&\n !pluginRuntime.localPath &&\n typeof resolvedConfig.app?.api?.name !== \"string\" &&\n !pluginInput.name\n ) {\n pluginRuntime.name = await resolveRemotePluginRuntimeName(\n pluginRuntime.url,\n pluginRuntime.name,\n );\n }\n\n out[runtimeKey] = pluginRuntime;\n\n if (resolvedConfig.plugins && Object.keys(resolvedConfig.plugins).length > 0) {\n const nested = await resolveRuntimePlugins(resolvedConfig.plugins, pluginBaseDir, env, [\n ...prefix,\n pluginId,\n ]);\n Object.assign(out, nested);\n }\n }\n\n return out;\n}\n\nasync function resolveRemotePluginRuntimeName(baseUrl: string, fallback: string): Promise<string> {\n try {\n const response = await fetch(`${baseUrl.replace(/\\/$/, \"\")}/plugin.manifest.json`);\n if (!response.ok) {\n return fallback;\n }\n\n const manifest = (await response.json()) as {\n plugin?: { name?: unknown };\n };\n\n return typeof manifest.plugin?.name === \"string\" && manifest.plugin.name.length > 0\n ? manifest.plugin.name\n : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction buildRuntimePluginConfig(\n pluginId: string,\n config: BosConfigInput,\n baseDir: string,\n env: \"development\" | \"production\",\n source: BosConfigInput,\n): RuntimePluginConfig {\n const apiConfig = config.app?.api ?? {};\n const apiDevelopment =\n typeof apiConfig.development === \"string\" ? apiConfig.development : undefined;\n const apiProduction = typeof apiConfig.production === \"string\" ? apiConfig.production : undefined;\n const sourceDevelopment = typeof source.development === \"string\" ? source.development : undefined;\n const sourceProduction = typeof source.production === \"string\" ? source.production : undefined;\n const proxy = typeof apiConfig.proxy === \"string\" ? apiConfig.proxy : undefined;\n const runtimeTarget =\n env === \"development\"\n ? resolveRuntimeTarget(apiDevelopment ?? sourceDevelopment, baseDir)\n : resolveRuntimeTarget(apiProduction ?? sourceProduction, baseDir, \"remote\");\n const apiName = resolvePluginRuntimeName(\n typeof apiConfig.name === \"string\" ? apiConfig.name : undefined,\n runtimeTarget.localPath,\n pluginId,\n );\n\n return {\n name: apiName,\n url: runtimeTarget.url,\n entry: runtimeTarget.url\n ? `${runtimeTarget.url.replace(/\\/$/, \"\")}/mf-manifest.json`\n : \"/mf-manifest.json\",\n source: runtimeTarget.source,\n localPath: runtimeTarget.localPath,\n port: runtimeTarget.port,\n proxy: proxy ?? (typeof source.proxy === \"string\" ? source.proxy : undefined),\n variables: normalizeStringRecord(apiConfig.variables ?? source.variables),\n secrets: normalizeStringArray(apiConfig.secrets ?? source.secrets),\n };\n}\n\nexport function resolvePluginRuntimeName(\n explicitName: string | undefined,\n localPath: string | undefined,\n fallback: string,\n): string {\n if (explicitName) {\n return explicitName;\n }\n\n if (!localPath) {\n return fallback;\n }\n\n try {\n const packageJsonPath = join(localPath, \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { name?: unknown };\n if (typeof packageJson.name === \"string\" && packageJson.name.length > 0) {\n return packageJson.name;\n }\n } catch {}\n\n return fallback;\n}\n\nasync function resolveBosConfigInput(\n input: BosConfigInput,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n): Promise<{ config: BosConfigInput; baseDir: string }> {\n if (input.extends) {\n const parentBaseDir = input.extends.startsWith(\"bos://\")\n ? baseDir\n : isAbsolute(input.extends)\n ? dirname(input.extends)\n : baseDir;\n const config = await resolveConfigWithExtends(input.extends, parentBaseDir, visited, chain);\n return { config: mergeConfigs(config, input), baseDir: parentBaseDir };\n }\n\n return { config: input, baseDir };\n}\n\nfunction mergeValues(parent: unknown, child: unknown): unknown {\n if (Array.isArray(parent) && Array.isArray(child)) {\n return child;\n }\n\n if (isPlainObject(parent) && isPlainObject(child)) {\n const merged: Record<string, unknown> = { ...parent };\n for (const [key, value] of Object.entries(child)) {\n merged[key] = key in merged ? mergeValues(merged[key], value) : value;\n }\n return merged;\n }\n\n return child ?? parent;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeStringRecord(value: unknown): Record<string, string> | undefined {\n if (!isPlainObject(value)) return undefined;\n const out: Record<string, string> = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === \"string\") {\n out[key] = raw;\n }\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out = value.filter((item): item is string => typeof item === \"string\" && item.length > 0);\n return out.length > 0 ? out : undefined;\n}\n\nfunction resolveRuntimeTarget(\n value: string | undefined,\n baseDir: string,\n defaultSource: \"local\" | \"remote\" = \"remote\",\n): RuntimeTarget {\n if (!value) {\n return { source: defaultSource, url: \"\" };\n }\n\n if (value.startsWith(LOCAL_PREFIX)) {\n const localTarget = value.slice(LOCAL_PREFIX.length).trim();\n if (!localTarget) {\n throw new Error(`Invalid local development target: ${value}`);\n }\n\n const localPath = resolve(baseDir, localTarget);\n if (!existsSync(localPath)) {\n return { source: defaultSource, url: \"\" };\n }\n\n return {\n source: \"local\",\n url: \"\",\n localPath,\n };\n }\n\n return {\n source: defaultSource,\n url: value.replace(/\\/$/, \"\"),\n port: parsePort(value),\n };\n}\n\nexport function isLocalDevelopmentTarget(value: string | undefined): boolean {\n return typeof value === \"string\" && value.startsWith(LOCAL_PREFIX);\n}\n\nexport function resolveLocalDevelopmentPath(\n value: string | undefined,\n baseDir: string,\n): string | null {\n if (!isLocalDevelopmentTarget(value)) {\n return null;\n }\n\n const localTarget = value!.slice(LOCAL_PREFIX.length).trim();\n return localTarget ? resolve(baseDir, localTarget) : null;\n}\n\nexport function resolveDevelopmentHostUrl(value: string | undefined): string {\n if (!value || isLocalDevelopmentTarget(value)) {\n return `http://localhost:${DEFAULT_HOST_PORT}`;\n }\n\n return value.replace(/\\/$/, \"\");\n}\n\nexport function getHostDevelopmentPort(value: string | undefined): number {\n return parsePort(resolveDevelopmentHostUrl(value));\n}\n\nexport function parsePort(url: string): number {\n try {\n const parsed = new URL(url);\n return parsed.port ? parseInt(parsed.port, 10) : parsed.protocol === \"https:\" ? 443 : 80;\n } catch {\n return 3000;\n }\n}\n\nexport type { BosConfig, RuntimeConfig } from \"./types\";\nexport { BosConfigSchema } from \"./types\";\n"],"mappings":"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"}
package/dist/contract.cjs CHANGED
@@ -9,6 +9,7 @@ const DevOptionsSchema = every_plugin_zod.z.object({
9
9
  host: require_types.SourceModeSchema.default("local"),
10
10
  ui: require_types.SourceModeSchema.default("local"),
11
11
  api: require_types.SourceModeSchema.default("local"),
12
+ auth: require_types.SourceModeSchema.default("local"),
12
13
  proxy: every_plugin_zod.z.boolean().default(false),
13
14
  ssr: every_plugin_zod.z.boolean().default(false),
14
15
  port: every_plugin_zod.z.number().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"contract.cjs","names":["z","SourceModeSchema","BosConfigSchema","oc"],"sources":["../src/contract.ts"],"sourcesContent":["import { oc, z } from \"./sdk\";\nimport { BosConfigSchema, SourceModeSchema } from \"./types\";\n\nexport const DevOptionsSchema = z.object({\n host: SourceModeSchema.default(\"local\"),\n ui: SourceModeSchema.default(\"local\"),\n api: SourceModeSchema.default(\"local\"),\n proxy: z.boolean().default(false),\n ssr: z.boolean().default(false),\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n});\n\nexport const DevResultSchema = z.object({\n status: z.enum([\"started\", \"error\"]),\n description: z.string(),\n processes: z.array(z.string()),\n});\n\nexport const StartOptionsSchema = z.object({\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n});\n\nexport const StartResultSchema = z.object({\n status: z.enum([\"running\", \"error\"]),\n url: z.string(),\n});\n\nexport const BuildOptionsSchema = z.object({\n packages: z.string().default(\"all\"),\n force: z.boolean().default(false),\n deploy: z.boolean().default(false),\n});\n\nexport const BuildResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n built: z.array(z.string()),\n skipped: z.array(z.string()).optional(),\n deployed: z.boolean().optional(),\n});\n\nexport const ConfigResultSchema = z.object({\n config: BosConfigSchema.nullable(),\n packages: z.array(z.string()),\n remotes: z.array(z.string()),\n});\n\nexport const PluginAddOptionsSchema = z.object({\n source: z.string(),\n as: z.string().optional(),\n production: z.string().optional(),\n});\n\nexport const PluginAddResultSchema = z.object({\n status: z.enum([\"added\", \"error\"]),\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PluginRemoveOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginRemoveResultSchema = z.object({\n status: z.enum([\"removed\", \"error\"]),\n key: z.string(),\n error: z.string().optional(),\n});\n\nexport const PluginListResultSchema = z.object({\n status: z.enum([\"listed\", \"error\"]),\n plugins: z.array(\n z.object({\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n localPath: z.string().optional(),\n source: z.enum([\"local\", \"remote\"]),\n integrity: z.string().optional(),\n version: z.string().optional(),\n name: z.string().optional(),\n }),\n ),\n error: z.string().optional(),\n});\n\nexport const PluginPublishOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n key: z.string(),\n path: z.string().optional(),\n script: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PublishOptionsSchema = z.object({\n deploy: z.boolean().default(false),\n dryRun: z.boolean().default(false),\n packages: z.string().default(\"all\"),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n});\n\nexport const PublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\", \"dry-run\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n error: z.string().optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n});\n\nexport const KeyPublishOptionsSchema = z.object({\n allowance: z.string().default(\"0.25NEAR\"),\n});\n\nexport const KeyPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n account: z.string(),\n network: z.enum([\"mainnet\", \"testnet\"]),\n contract: z.string(),\n allowance: z.string(),\n functionNames: z.array(z.string()),\n publicKey: z.string().optional(),\n privateKey: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const InitOptionsSchema = z.object({\n extends: z.string().optional(),\n extendsAccount: z.string().optional(),\n extendsGateway: z.string().optional(),\n directory: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n source: z.string().optional(),\n plugins: z.array(z.string()).optional(),\n withHost: z.boolean().default(false),\n noInteractive: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const InitResultSchema = z.object({\n status: z.enum([\"initialized\", \"error\"]),\n directory: z.string(),\n extendsAccount: z.string(),\n extendsGateway: z.string(),\n account: z.string().optional(),\n domain: z.string().optional(),\n extends: z.string(),\n plugins: z.array(z.string()).optional(),\n filesCopied: z.number(),\n error: z.string().optional(),\n});\n\nexport const SyncOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n force: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const SyncResultSchema = z.object({\n status: z.enum([\"synced\", \"dry-run\", \"error\"]),\n updated: z.array(z.string()),\n skipped: z.array(z.string()),\n added: z.array(z.string()),\n error: z.string().optional(),\n});\n\nexport const UpgradeOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n force: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n noSync: z.boolean().default(false),\n});\n\nexport const UpgradeResultSchema = z.object({\n status: z.enum([\"upgraded\", \"dry-run\", \"error\"]),\n packages: z.array(\n z.object({\n name: z.string(),\n from: z.string().optional(),\n to: z.string(),\n }),\n ),\n sync: SyncResultSchema.optional(),\n changelogUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const StatusResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n extends: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n packages: z.array(\n z.object({\n name: z.string(),\n installed: z.string().optional(),\n latest: z.string().optional(),\n }),\n ),\n lastSync: z.string().optional(),\n envFile: z.enum([\"found\", \"missing\", \"example-only\"]),\n parentReachable: z.boolean().optional(),\n error: z.string().optional(),\n});\n\nexport const bosContract = oc.router({\n dev: oc.route({ method: \"POST\", path: \"/dev\" }).input(DevOptionsSchema).output(DevResultSchema),\n start: oc\n .route({ method: \"POST\", path: \"/start\" })\n .input(StartOptionsSchema)\n .output(StartResultSchema),\n build: oc\n .route({ method: \"POST\", path: \"/build\" })\n .input(BuildOptionsSchema)\n .output(BuildResultSchema),\n config: oc.route({ method: \"GET\", path: \"/config\" }).output(ConfigResultSchema),\n pluginAdd: oc\n .route({ method: \"POST\", path: \"/plugin/add\" })\n .input(PluginAddOptionsSchema)\n .output(PluginAddResultSchema),\n pluginRemove: oc\n .route({ method: \"POST\", path: \"/plugin/remove\" })\n .input(PluginRemoveOptionsSchema)\n .output(PluginRemoveResultSchema),\n pluginList: oc.route({ method: \"GET\", path: \"/plugin/list\" }).output(PluginListResultSchema),\n pluginPublish: oc\n .route({ method: \"POST\", path: \"/plugin/publish\" })\n .input(PluginPublishOptionsSchema)\n .output(PluginPublishResultSchema),\n publish: oc\n .route({ method: \"POST\", path: \"/publish\" })\n .input(PublishOptionsSchema)\n .output(PublishResultSchema),\n keyPublish: oc\n .route({ method: \"POST\", path: \"/key/publish\" })\n .input(KeyPublishOptionsSchema)\n .output(KeyPublishResultSchema),\n init: oc\n .route({ method: \"POST\", path: \"/init\" })\n .input(InitOptionsSchema)\n .output(InitResultSchema),\n sync: oc\n .route({ method: \"POST\", path: \"/sync\" })\n .input(SyncOptionsSchema)\n .output(SyncResultSchema),\n upgrade: oc\n .route({ method: \"POST\", path: \"/upgrade\" })\n .input(UpgradeOptionsSchema)\n .output(UpgradeResultSchema),\n status: oc.route({ method: \"GET\", path: \"/status\" }).output(StatusResultSchema),\n});\n\nexport type DevOptions = z.infer<typeof DevOptionsSchema>;\nexport type StartOptions = z.infer<typeof StartOptionsSchema>;\nexport type BuildOptions = z.infer<typeof BuildOptionsSchema>;\nexport type BosConfigResult = z.infer<typeof ConfigResultSchema>;\nexport type PluginAddOptions = z.infer<typeof PluginAddOptionsSchema>;\nexport type PluginAddResult = z.infer<typeof PluginAddResultSchema>;\nexport type PluginRemoveOptions = z.infer<typeof PluginRemoveOptionsSchema>;\nexport type PluginRemoveResult = z.infer<typeof PluginRemoveResultSchema>;\nexport type PluginListResult = z.infer<typeof PluginListResultSchema>;\nexport type PluginPublishOptions = z.infer<typeof PluginPublishOptionsSchema>;\nexport type PluginPublishResult = z.infer<typeof PluginPublishResultSchema>;\nexport type PublishOptions = z.infer<typeof PublishOptionsSchema>;\nexport type KeyPublishOptions = z.infer<typeof KeyPublishOptionsSchema>;\nexport type KeyPublishResult = z.infer<typeof KeyPublishResultSchema>;\nexport type InitOptions = z.infer<typeof InitOptionsSchema>;\nexport type InitResult = z.infer<typeof InitResultSchema>;\nexport type SyncOptions = z.infer<typeof SyncOptionsSchema>;\nexport type SyncResult = z.infer<typeof SyncResultSchema>;\nexport type UpgradeOptions = z.infer<typeof UpgradeOptionsSchema>;\nexport type UpgradeResult = z.infer<typeof UpgradeResultSchema>;\nexport type StatusResult = z.infer<typeof StatusResultSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"contract.cjs","names":["z","SourceModeSchema","BosConfigSchema","oc"],"sources":["../src/contract.ts"],"sourcesContent":["import { oc, z } from \"./sdk\";\nimport { BosConfigSchema, SourceModeSchema } from \"./types\";\n\nexport const DevOptionsSchema = z.object({\n host: SourceModeSchema.default(\"local\"),\n ui: SourceModeSchema.default(\"local\"),\n api: SourceModeSchema.default(\"local\"),\n auth: SourceModeSchema.default(\"local\"),\n proxy: z.boolean().default(false),\n ssr: z.boolean().default(false),\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n});\n\nexport const DevResultSchema = z.object({\n status: z.enum([\"started\", \"error\"]),\n description: z.string(),\n processes: z.array(z.string()),\n});\n\nexport const StartOptionsSchema = z.object({\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n});\n\nexport const StartResultSchema = z.object({\n status: z.enum([\"running\", \"error\"]),\n url: z.string(),\n});\n\nexport const BuildOptionsSchema = z.object({\n packages: z.string().default(\"all\"),\n force: z.boolean().default(false),\n deploy: z.boolean().default(false),\n});\n\nexport const BuildResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n built: z.array(z.string()),\n skipped: z.array(z.string()).optional(),\n deployed: z.boolean().optional(),\n});\n\nexport const ConfigResultSchema = z.object({\n config: BosConfigSchema.nullable(),\n packages: z.array(z.string()),\n remotes: z.array(z.string()),\n});\n\nexport const PluginAddOptionsSchema = z.object({\n source: z.string(),\n as: z.string().optional(),\n production: z.string().optional(),\n});\n\nexport const PluginAddResultSchema = z.object({\n status: z.enum([\"added\", \"error\"]),\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PluginRemoveOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginRemoveResultSchema = z.object({\n status: z.enum([\"removed\", \"error\"]),\n key: z.string(),\n error: z.string().optional(),\n});\n\nexport const PluginListResultSchema = z.object({\n status: z.enum([\"listed\", \"error\"]),\n plugins: z.array(\n z.object({\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n localPath: z.string().optional(),\n source: z.enum([\"local\", \"remote\"]),\n integrity: z.string().optional(),\n version: z.string().optional(),\n name: z.string().optional(),\n }),\n ),\n error: z.string().optional(),\n});\n\nexport const PluginPublishOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n key: z.string(),\n path: z.string().optional(),\n script: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PublishOptionsSchema = z.object({\n deploy: z.boolean().default(false),\n dryRun: z.boolean().default(false),\n packages: z.string().default(\"all\"),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n});\n\nexport const PublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\", \"dry-run\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n error: z.string().optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n});\n\nexport const KeyPublishOptionsSchema = z.object({\n allowance: z.string().default(\"0.25NEAR\"),\n});\n\nexport const KeyPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n account: z.string(),\n network: z.enum([\"mainnet\", \"testnet\"]),\n contract: z.string(),\n allowance: z.string(),\n functionNames: z.array(z.string()),\n publicKey: z.string().optional(),\n privateKey: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const InitOptionsSchema = z.object({\n extends: z.string().optional(),\n extendsAccount: z.string().optional(),\n extendsGateway: z.string().optional(),\n directory: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n source: z.string().optional(),\n plugins: z.array(z.string()).optional(),\n withHost: z.boolean().default(false),\n noInteractive: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const InitResultSchema = z.object({\n status: z.enum([\"initialized\", \"error\"]),\n directory: z.string(),\n extendsAccount: z.string(),\n extendsGateway: z.string(),\n account: z.string().optional(),\n domain: z.string().optional(),\n extends: z.string(),\n plugins: z.array(z.string()).optional(),\n filesCopied: z.number(),\n error: z.string().optional(),\n});\n\nexport const SyncOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n force: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const SyncResultSchema = z.object({\n status: z.enum([\"synced\", \"dry-run\", \"error\"]),\n updated: z.array(z.string()),\n skipped: z.array(z.string()),\n added: z.array(z.string()),\n error: z.string().optional(),\n});\n\nexport const UpgradeOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n force: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n noSync: z.boolean().default(false),\n});\n\nexport const UpgradeResultSchema = z.object({\n status: z.enum([\"upgraded\", \"dry-run\", \"error\"]),\n packages: z.array(\n z.object({\n name: z.string(),\n from: z.string().optional(),\n to: z.string(),\n }),\n ),\n sync: SyncResultSchema.optional(),\n changelogUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const StatusResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n extends: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n packages: z.array(\n z.object({\n name: z.string(),\n installed: z.string().optional(),\n latest: z.string().optional(),\n }),\n ),\n lastSync: z.string().optional(),\n envFile: z.enum([\"found\", \"missing\", \"example-only\"]),\n parentReachable: z.boolean().optional(),\n error: z.string().optional(),\n});\n\nexport const bosContract = oc.router({\n dev: oc.route({ method: \"POST\", path: \"/dev\" }).input(DevOptionsSchema).output(DevResultSchema),\n start: oc\n .route({ method: \"POST\", path: \"/start\" })\n .input(StartOptionsSchema)\n .output(StartResultSchema),\n build: oc\n .route({ method: \"POST\", path: \"/build\" })\n .input(BuildOptionsSchema)\n .output(BuildResultSchema),\n config: oc.route({ method: \"GET\", path: \"/config\" }).output(ConfigResultSchema),\n pluginAdd: oc\n .route({ method: \"POST\", path: \"/plugin/add\" })\n .input(PluginAddOptionsSchema)\n .output(PluginAddResultSchema),\n pluginRemove: oc\n .route({ method: \"POST\", path: \"/plugin/remove\" })\n .input(PluginRemoveOptionsSchema)\n .output(PluginRemoveResultSchema),\n pluginList: oc.route({ method: \"GET\", path: \"/plugin/list\" }).output(PluginListResultSchema),\n pluginPublish: oc\n .route({ method: \"POST\", path: \"/plugin/publish\" })\n .input(PluginPublishOptionsSchema)\n .output(PluginPublishResultSchema),\n publish: oc\n .route({ method: \"POST\", path: \"/publish\" })\n .input(PublishOptionsSchema)\n .output(PublishResultSchema),\n keyPublish: oc\n .route({ method: \"POST\", path: \"/key/publish\" })\n .input(KeyPublishOptionsSchema)\n .output(KeyPublishResultSchema),\n init: oc\n .route({ method: \"POST\", path: \"/init\" })\n .input(InitOptionsSchema)\n .output(InitResultSchema),\n sync: oc\n .route({ method: \"POST\", path: \"/sync\" })\n .input(SyncOptionsSchema)\n .output(SyncResultSchema),\n upgrade: oc\n .route({ method: \"POST\", path: \"/upgrade\" })\n .input(UpgradeOptionsSchema)\n .output(UpgradeResultSchema),\n status: oc.route({ method: \"GET\", path: \"/status\" }).output(StatusResultSchema),\n});\n\nexport type DevOptions = z.infer<typeof DevOptionsSchema>;\nexport type StartOptions = z.infer<typeof StartOptionsSchema>;\nexport type BuildOptions = z.infer<typeof BuildOptionsSchema>;\nexport type BosConfigResult = z.infer<typeof ConfigResultSchema>;\nexport type PluginAddOptions = z.infer<typeof PluginAddOptionsSchema>;\nexport type PluginAddResult = z.infer<typeof PluginAddResultSchema>;\nexport type PluginRemoveOptions = z.infer<typeof PluginRemoveOptionsSchema>;\nexport type PluginRemoveResult = z.infer<typeof PluginRemoveResultSchema>;\nexport type PluginListResult = z.infer<typeof PluginListResultSchema>;\nexport type PluginPublishOptions = z.infer<typeof PluginPublishOptionsSchema>;\nexport type PluginPublishResult = z.infer<typeof PluginPublishResultSchema>;\nexport type PublishOptions = z.infer<typeof PublishOptionsSchema>;\nexport type KeyPublishOptions = z.infer<typeof KeyPublishOptionsSchema>;\nexport type KeyPublishResult = z.infer<typeof KeyPublishResultSchema>;\nexport type InitOptions = z.infer<typeof InitOptionsSchema>;\nexport type InitResult = z.infer<typeof InitResultSchema>;\nexport type SyncOptions = z.infer<typeof SyncOptionsSchema>;\nexport type SyncResult = z.infer<typeof SyncResultSchema>;\nexport type UpgradeOptions = z.infer<typeof UpgradeOptionsSchema>;\nexport type UpgradeResult = z.infer<typeof UpgradeResultSchema>;\nexport type StatusResult = z.infer<typeof StatusResultSchema>;\n"],"mappings":"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"}
@@ -15,6 +15,10 @@ declare const DevOptionsSchema: z.ZodObject<{
15
15
  local: "local";
16
16
  remote: "remote";
17
17
  }>>;
18
+ auth: z.ZodDefault<z.ZodEnum<{
19
+ local: "local";
20
+ remote: "remote";
21
+ }>>;
18
22
  proxy: z.ZodDefault<z.ZodBoolean>;
19
23
  ssr: z.ZodDefault<z.ZodBoolean>;
20
24
  port: z.ZodOptional<z.ZodNumber>;
@@ -22,8 +26,8 @@ declare const DevOptionsSchema: z.ZodObject<{
22
26
  }, z.core.$strip>;
23
27
  declare const DevResultSchema: z.ZodObject<{
24
28
  status: z.ZodEnum<{
25
- started: "started";
26
29
  error: "error";
30
+ started: "started";
27
31
  }>;
28
32
  description: z.ZodString;
29
33
  processes: z.ZodArray<z.ZodString>;
@@ -344,14 +348,18 @@ declare const bosContract: {
344
348
  local: "local";
345
349
  remote: "remote";
346
350
  }>>;
351
+ auth: z.ZodDefault<z.ZodEnum<{
352
+ local: "local";
353
+ remote: "remote";
354
+ }>>;
347
355
  proxy: z.ZodDefault<z.ZodBoolean>;
348
356
  ssr: z.ZodDefault<z.ZodBoolean>;
349
357
  port: z.ZodOptional<z.ZodNumber>;
350
358
  interactive: z.ZodOptional<z.ZodBoolean>;
351
359
  }, z.core.$strip>, z.ZodObject<{
352
360
  status: z.ZodEnum<{
353
- started: "started";
354
361
  error: "error";
362
+ started: "started";
355
363
  }>;
356
364
  description: z.ZodString;
357
365
  processes: z.ZodArray<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.cts","names":[],"sources":["../src/contract.ts"],"mappings":";;;;cAGa,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;cAUhB,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;cAMf,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;cAQlB,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;cAKjB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;cAMlB,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;;;cAOjB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAMlB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;;cAMtB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;;;;;cAUrB,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;cAIzB,wBAAA,EAAwB,CAAA,CAAA,SAAA;;;;;;;;cAMxB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;cAiBtB,0BAAA,EAA0B,CAAA,CAAA,SAAA;;;cAI1B,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAWzB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;cAQpB,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;;cASnB,uBAAA,EAAuB,CAAA,CAAA,SAAA;;;cAIvB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAYtB,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAcjB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAahB,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;;;cAMjB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;cAQhB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;cAOpB,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;cAcnB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;cAkBlB,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CD,UAAA,GAAa,CAAA,CAAE,KAAA,QAAa,gBAAA;AAAA,KAC5B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KACjC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,mBAAA,GAAsB,CAAA,CAAE,KAAA,QAAa,yBAAA;AAAA,KACrC,kBAAA,GAAqB,CAAA,CAAE,KAAA,QAAa,wBAAA;AAAA,KACpC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,oBAAA,GAAuB,CAAA,CAAE,KAAA,QAAa,0BAAA;AAAA,KACtC,mBAAA,GAAsB,CAAA,CAAE,KAAA,QAAa,yBAAA;AAAA,KACrC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,iBAAA,GAAoB,CAAA,CAAE,KAAA,QAAa,uBAAA;AAAA,KACnC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,UAAA,GAAa,CAAA,CAAE,KAAA,QAAa,gBAAA;AAAA,KAC5B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,UAAA,GAAa,CAAA,CAAE,KAAA,QAAa,gBAAA;AAAA,KAC5B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA"}
1
+ {"version":3,"file":"contract.d.cts","names":[],"sources":["../src/contract.ts"],"mappings":"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"}
@@ -15,6 +15,10 @@ declare const DevOptionsSchema: z.ZodObject<{
15
15
  local: "local";
16
16
  remote: "remote";
17
17
  }>>;
18
+ auth: z.ZodDefault<z.ZodEnum<{
19
+ local: "local";
20
+ remote: "remote";
21
+ }>>;
18
22
  proxy: z.ZodDefault<z.ZodBoolean>;
19
23
  ssr: z.ZodDefault<z.ZodBoolean>;
20
24
  port: z.ZodOptional<z.ZodNumber>;
@@ -22,8 +26,8 @@ declare const DevOptionsSchema: z.ZodObject<{
22
26
  }, z.core.$strip>;
23
27
  declare const DevResultSchema: z.ZodObject<{
24
28
  status: z.ZodEnum<{
25
- started: "started";
26
29
  error: "error";
30
+ started: "started";
27
31
  }>;
28
32
  description: z.ZodString;
29
33
  processes: z.ZodArray<z.ZodString>;
@@ -344,14 +348,18 @@ declare const bosContract: {
344
348
  local: "local";
345
349
  remote: "remote";
346
350
  }>>;
351
+ auth: z.ZodDefault<z.ZodEnum<{
352
+ local: "local";
353
+ remote: "remote";
354
+ }>>;
347
355
  proxy: z.ZodDefault<z.ZodBoolean>;
348
356
  ssr: z.ZodDefault<z.ZodBoolean>;
349
357
  port: z.ZodOptional<z.ZodNumber>;
350
358
  interactive: z.ZodOptional<z.ZodBoolean>;
351
359
  }, z.core.$strip>, z.ZodObject<{
352
360
  status: z.ZodEnum<{
353
- started: "started";
354
361
  error: "error";
362
+ started: "started";
355
363
  }>;
356
364
  description: z.ZodString;
357
365
  processes: z.ZodArray<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.mts","names":[],"sources":["../src/contract.ts"],"mappings":"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"}
1
+ {"version":3,"file":"contract.d.mts","names":[],"sources":["../src/contract.ts"],"mappings":"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"}
package/dist/contract.mjs CHANGED
@@ -6,6 +6,7 @@ const DevOptionsSchema = z.object({
6
6
  host: SourceModeSchema.default("local"),
7
7
  ui: SourceModeSchema.default("local"),
8
8
  api: SourceModeSchema.default("local"),
9
+ auth: SourceModeSchema.default("local"),
9
10
  proxy: z.boolean().default(false),
10
11
  ssr: z.boolean().default(false),
11
12
  port: z.number().optional(),