everything-dev 1.16.3 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/init.cjs +167 -87
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.d.cts +14 -2
- package/dist/cli/init.d.cts.map +1 -1
- package/dist/cli/init.d.mts +14 -2
- package/dist/cli/init.d.mts.map +1 -1
- package/dist/cli/init.mjs +166 -88
- package/dist/cli/init.mjs.map +1 -1
- package/dist/cli/prompts.cjs +12 -14
- package/dist/cli/prompts.cjs.map +1 -1
- package/dist/cli/prompts.mjs +12 -14
- package/dist/cli/prompts.mjs.map +1 -1
- package/dist/cli/sync.cjs +3 -5
- package/dist/cli/sync.cjs.map +1 -1
- package/dist/cli/sync.mjs +3 -5
- package/dist/cli/sync.mjs.map +1 -1
- package/dist/cli/upgrade.cjs +214 -2
- package/dist/cli/upgrade.cjs.map +1 -1
- package/dist/cli/upgrade.mjs +214 -2
- package/dist/cli/upgrade.mjs.map +1 -1
- package/dist/config.cjs +125 -74
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +9 -2
- package/dist/config.d.cts.map +1 -1
- package/dist/config.d.mts +9 -2
- package/dist/config.d.mts.map +1 -1
- package/dist/config.mjs +126 -76
- package/dist/config.mjs.map +1 -1
- package/dist/contract.cjs +1 -4
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +40 -22
- package/dist/contract.d.cts.map +1 -1
- package/dist/contract.d.mts +40 -22
- package/dist/contract.d.mts.map +1 -1
- package/dist/contract.meta.cjs +5 -5
- package/dist/contract.meta.cjs.map +1 -1
- package/dist/contract.meta.d.cts +9 -9
- package/dist/contract.meta.d.mts +9 -9
- package/dist/contract.meta.mjs +5 -5
- package/dist/contract.meta.mjs.map +1 -1
- package/dist/contract.mjs +1 -4
- package/dist/contract.mjs.map +1 -1
- package/dist/index.cjs +2 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +3 -3
- package/dist/merge.cjs +1 -0
- package/dist/merge.mjs +1 -1
- package/dist/plugin.cjs +70 -114
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +38 -17
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts +38 -17
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +71 -115
- package/dist/plugin.mjs.map +1 -1
- package/dist/sidebar.cjs +6 -14
- package/dist/sidebar.cjs.map +1 -1
- package/dist/sidebar.d.cts +3 -3
- package/dist/sidebar.d.cts.map +1 -1
- package/dist/sidebar.d.mts +3 -3
- package/dist/sidebar.d.mts.map +1 -1
- package/dist/sidebar.mjs +6 -14
- package/dist/sidebar.mjs.map +1 -1
- package/dist/types.cjs +10 -16
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +56 -12
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +56 -12
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +10 -17
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
- package/src/cli/init.ts +225 -131
- package/src/cli/prompts.ts +17 -22
- package/src/cli/sync.ts +5 -8
- package/src/cli/upgrade.ts +326 -2
- package/src/config.ts +250 -107
- package/src/contract.meta.ts +6 -8
- package/src/contract.ts +1 -4
- package/src/plugin.ts +120 -183
- package/src/sidebar.ts +9 -31
- package/src/types.ts +10 -15
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"./sdk\";\n\nexport const ExtendsSchema = z.union([\n z.string(),\n z.object({\n development: z.string().optional(),\n production: z.string().optional(),\n staging: z.string().optional(),\n }),\n]);\nexport type Extends = z.infer<typeof ExtendsSchema>;\nexport type ExtendsConfig = Extract<Extends, Record<string, string | undefined>>;\n\nexport const SourceModeSchema = z.enum([\"local\", \"remote\"]);\nexport type SourceMode = z.infer<typeof SourceModeSchema>;\n\nexport const SharedConfigSchema = z.object({\n version: z.string(),\n requiredVersion: z.string().optional(),\n singleton: z.boolean().optional(),\n eager: z.boolean().optional(),\n strictVersion: z.boolean().optional(),\n shareScope: z.string().optional(),\n});\nexport type SharedConfig = z.infer<typeof SharedConfigSchema>;\nexport type SharedDepConfig = SharedConfig;\nexport const SharedDepConfigSchema = SharedConfigSchema;\n\nexport const FederationEntrySchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n integrity: z.string().optional(),\n});\nexport type FederationEntry = z.infer<typeof FederationEntrySchema>;\n\nexport const SidebarRoleSchema = z.enum([\"anon\", \"member\", \"admin\"]);\nexport type SidebarRole = z.infer<typeof SidebarRoleSchema>;\n\nexport const SidebarItemSchema = z.object({\n icon: z.string(),\n label: z.string(),\n to: z.string().optional(),\n roleRequired: SidebarRoleSchema.optional(),\n});\nexport type SidebarItem = z.infer<typeof SidebarItemSchema>;\n\nexport const ApiPluginConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n});\nexport type ApiPluginConfig = z.infer<typeof ApiPluginConfigSchema>;\n\nexport const PluginUiConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n});\nexport type PluginUiConfig = z.infer<typeof PluginUiConfigSchema>;\n\nexport const BosPluginRefSchema = z.object({\n extends: ExtendsSchema.optional(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n name: z.string().optional(),\n version: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n routes: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n app: z.record(z.string(), z.unknown()).optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n});\nexport type BosPluginRef = z.infer<typeof BosPluginRefSchema>;\nexport type PluginEntryValue = string | BosPluginRef;\nexport type PluginEntries = Record<string, PluginEntryValue>;\n\nconst PluginRuntimeUiSchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n localPath: z.string().optional(),\n port: z.number().optional(),\n integrity: z.string().optional(),\n});\nexport type PluginRuntimeUi = z.infer<typeof PluginRuntimeUiSchema>;\n\nexport const RuntimePluginConfigSchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n integrity: z.string().optional(),\n ui: PluginRuntimeUiSchema.optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n routes: z.array(z.string()).optional(),\n});\nexport type RuntimePluginConfig = z.infer<typeof RuntimePluginConfigSchema>;\n\nexport const UiConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n ssr: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n});\nexport type UiConfig = z.infer<typeof UiConfigSchema>;\n\nexport const HostConfigSchema = z.object({\n development: z.string(),\n production: z.string(),\n integrity: z.string().optional(),\n secrets: z.array(z.string()).optional(),\n});\nexport type HostConfig = z.infer<typeof HostConfigSchema>;\n\nexport const ClientRuntimeInfoSchema = z.object({\n accountId: z.string(),\n gatewayId: z.string(),\n runtimeBasePath: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n hostUrl: z.string().nullable(),\n});\nexport type ClientRuntimeInfo = z.infer<typeof ClientRuntimeInfoSchema>;\n\nexport const BosStagingSchema = z.object({\n domain: z.string(),\n});\nexport type BosStaging = z.infer<typeof BosStagingSchema>;\n\nconst BosConfigInputAppEntrySchema = z.record(z.string(), z.unknown());\nexport type BosConfigInputAppEntry = z.infer<typeof BosConfigInputAppEntrySchema>;\n\nexport const BosConfigInputSchema: z.ZodType<BosConfigInput> = z.lazy(() =>\n z.object({\n extends: ExtendsSchema.optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n testnet: z.string().optional(),\n template: z.string().optional(),\n gateway: z\n .object({\n development: z.string().optional(),\n production: z.string().optional(),\n account: z.string().optional(),\n })\n .optional(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n name: z.string().optional(),\n version: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n routes: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n app: z.record(z.string(), BosConfigInputAppEntrySchema).optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.union([z.string(), BosConfigInputSchema])).optional(),\n }),\n);\n\nexport interface BosConfigInput {\n extends?: string | ExtendsConfig;\n account?: string;\n domain?: string;\n title?: string;\n description?: string;\n testnet?: string;\n template?: string;\n gateway?: {\n development?: string;\n production?: string;\n account?: string;\n };\n development?: string;\n production?: string;\n integrity?: string;\n name?: string;\n version?: string;\n proxy?: string;\n variables?: Record<string, string>;\n secrets?: string[];\n routes?: string[];\n sidebar?: SidebarItem[];\n app?: Record<string, BosConfigInputAppEntry>;\n shared?: Record<string, Record<string, SharedDepConfig>>;\n plugins?: Record<string, string | BosConfigInput>;\n}\n\nexport const BosConfigSchema = z.object({\n account: z.string(),\n extends: ExtendsSchema.optional(),\n domain: z.string().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n testnet: z.string().optional(),\n staging: BosStagingSchema.optional(),\n repository: z.string().optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.union([z.string(), BosPluginRefSchema])).optional(),\n app: z.object({\n host: HostConfigSchema,\n ui: UiConfigSchema,\n api: ApiPluginConfigSchema,\n auth: ApiPluginConfigSchema.optional(),\n }),\n});\nexport type BosConfig = z.infer<typeof BosConfigSchema>;\n\nexport const RuntimeConfigSchema = z.object({\n env: z.enum([\"development\", \"production\", \"staging\"]),\n account: z.string(),\n domain: z.string().optional(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n title: z.string().optional(),\n description: z.string().optional(),\n repository: z.string().optional(),\n host: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n secrets: z.array(z.string()).optional(),\n remoteUrl: z.string().optional(),\n }),\n shared: z\n .object({\n ui: z.record(z.string(), SharedConfigSchema).optional(),\n plugins: z.record(z.string(), SharedConfigSchema).optional(),\n })\n .optional(),\n ui: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n ssrUrl: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n }),\n api: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n }),\n auth: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n }).optional(),\n plugins: z.record(z.string(), RuntimePluginConfigSchema).optional(),\n});\nexport type RuntimeConfig = z.infer<typeof RuntimeConfigSchema>;\n\nexport const ClientRuntimeConfigSchema = z.object({\n cspNonce: z.string().optional(),\n env: z.enum([\"development\", \"production\", \"staging\"]),\n account: z.string(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n hostUrl: z.string().optional(),\n assetsUrl: z.string(),\n apiBase: z.string(),\n rpcBase: z.string(),\n repository: z.string().optional(),\n authAvailable: z.boolean().optional(),\n runtime: ClientRuntimeInfoSchema.optional(),\n ui: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n api: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n auth: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n })\n .optional(),\n plugins: z\n .record(\n z.string(),\n z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n ui: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n integrity: z.string().optional(),\n })\n .optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n }),\n )\n .optional(),\n});\nexport type ClientRuntimeConfig = z.infer<typeof ClientRuntimeConfigSchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"./sdk\";\n\nexport const ExtendsSchema = z.union([\n z.string(),\n z.object({\n development: z.string().optional(),\n production: z.string().optional(),\n staging: z.string().optional(),\n }),\n]);\nexport type Extends = z.infer<typeof ExtendsSchema>;\nexport type ExtendsConfig = Extract<Extends, Record<string, string | undefined>>;\n\nexport const SourceModeSchema = z.enum([\"local\", \"remote\"]);\nexport type SourceMode = z.infer<typeof SourceModeSchema>;\n\nexport const SharedConfigSchema = z.object({\n version: z.string(),\n requiredVersion: z.string().optional(),\n singleton: z.boolean().optional(),\n eager: z.boolean().optional(),\n strictVersion: z.boolean().optional(),\n shareScope: z.string().optional(),\n});\nexport type SharedConfig = z.infer<typeof SharedConfigSchema>;\nexport type SharedDepConfig = SharedConfig;\nexport const SharedDepConfigSchema = SharedConfigSchema;\n\nexport const FederationEntrySchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n integrity: z.string().optional(),\n});\nexport type FederationEntry = z.infer<typeof FederationEntrySchema>;\n\nexport const SidebarRoleSchema = z.enum([\"anon\", \"member\", \"admin\"]);\nexport type SidebarRole = z.infer<typeof SidebarRoleSchema>;\n\nexport const SidebarItemSchema = z.object({\n icon: z.string(),\n label: z.string(),\n to: z.string().optional(),\n roleRequired: SidebarRoleSchema.optional(),\n});\nexport type SidebarItem = z.infer<typeof SidebarItemSchema>;\n\nexport const ComposableAppEntrySchema = z.object({\n extends: ExtendsSchema.optional(),\n name: z.string().optional(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n routes: z.array(z.string()).optional(),\n});\nexport type ComposableAppEntry = z.infer<typeof ComposableAppEntrySchema>;\n\nexport const ApiPluginConfigSchema = ComposableAppEntrySchema;\nexport type ApiPluginConfig = z.infer<typeof ApiPluginConfigSchema>;\n\nexport const PluginUiConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n});\nexport type PluginUiConfig = z.infer<typeof PluginUiConfigSchema>;\n\nexport const BosPluginRefSchema = ComposableAppEntrySchema.extend({\n version: z.string().optional(),\n app: z.record(z.string(), z.unknown()).optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n});\nexport type BosPluginRef = z.infer<typeof BosPluginRefSchema>;\nexport type PluginEntryValue = string | BosPluginRef;\nexport type PluginEntries = Record<string, PluginEntryValue>;\n\nconst PluginRuntimeUiSchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n localPath: z.string().optional(),\n port: z.number().optional(),\n integrity: z.string().optional(),\n});\nexport type PluginRuntimeUi = z.infer<typeof PluginRuntimeUiSchema>;\n\nexport const RuntimePluginConfigSchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n integrity: z.string().optional(),\n ui: PluginRuntimeUiSchema.optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n routes: z.array(z.string()).optional(),\n});\nexport type RuntimePluginConfig = z.infer<typeof RuntimePluginConfigSchema>;\n\nexport const UiConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n ssr: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n});\nexport type UiConfig = z.infer<typeof UiConfigSchema>;\n\nexport const HostConfigSchema = z.object({\n development: z.string(),\n production: z.string(),\n integrity: z.string().optional(),\n secrets: z.array(z.string()).optional(),\n});\nexport type HostConfig = z.infer<typeof HostConfigSchema>;\n\nexport const ClientRuntimeInfoSchema = z.object({\n accountId: z.string(),\n gatewayId: z.string(),\n runtimeBasePath: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n hostUrl: z.string().nullable(),\n});\nexport type ClientRuntimeInfo = z.infer<typeof ClientRuntimeInfoSchema>;\n\nexport const BosStagingSchema = z.object({\n domain: z.string(),\n});\nexport type BosStaging = z.infer<typeof BosStagingSchema>;\n\nconst BosConfigInputAppEntrySchema = z.record(z.string(), z.unknown());\nexport type BosConfigInputAppEntry = z.infer<typeof BosConfigInputAppEntrySchema>;\n\nexport const BosConfigInputSchema: z.ZodType<BosConfigInput> = z.lazy(() =>\n z.object({\n extends: ExtendsSchema.optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n testnet: z.string().optional(),\n template: z.string().optional(),\n gateway: z\n .object({\n development: z.string().optional(),\n production: z.string().optional(),\n account: z.string().optional(),\n })\n .optional(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n name: z.string().optional(),\n version: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n routes: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n app: z.record(z.string(), BosConfigInputAppEntrySchema).optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.union([z.string(), BosConfigInputSchema])).optional(),\n }),\n);\n\nexport interface BosConfigInput {\n extends?: string | ExtendsConfig;\n account?: string;\n domain?: string;\n title?: string;\n description?: string;\n testnet?: string;\n template?: string;\n gateway?: {\n development?: string;\n production?: string;\n account?: string;\n };\n development?: string;\n production?: string;\n integrity?: string;\n name?: string;\n version?: string;\n proxy?: string;\n variables?: Record<string, string>;\n secrets?: string[];\n routes?: string[];\n sidebar?: SidebarItem[];\n app?: Record<string, BosConfigInputAppEntry>;\n shared?: Record<string, Record<string, SharedDepConfig>>;\n plugins?: Record<string, string | BosConfigInput>;\n}\n\nexport const BosConfigSchema = z.object({\n account: z.string(),\n extends: ExtendsSchema.optional(),\n domain: z.string().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n testnet: z.string().optional(),\n staging: BosStagingSchema.optional(),\n repository: z.string().optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), z.union([z.string(), BosPluginRefSchema])).optional(),\n app: z.object({\n host: HostConfigSchema,\n ui: UiConfigSchema,\n api: ComposableAppEntrySchema,\n auth: ComposableAppEntrySchema.optional(),\n }),\n});\nexport type BosConfig = z.infer<typeof BosConfigSchema>;\n\nexport const RuntimeConfigSchema = z.object({\n env: z.enum([\"development\", \"production\", \"staging\"]),\n account: z.string(),\n domain: z.string().optional(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n title: z.string().optional(),\n description: z.string().optional(),\n repository: z.string().optional(),\n host: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n secrets: z.array(z.string()).optional(),\n remoteUrl: z.string().optional(),\n }),\n shared: z\n .object({\n ui: z.record(z.string(), SharedConfigSchema).optional(),\n plugins: z.record(z.string(), SharedConfigSchema).optional(),\n })\n .optional(),\n ui: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n ssrUrl: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n }),\n api: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n }),\n auth: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n }).optional(),\n plugins: z.record(z.string(), RuntimePluginConfigSchema).optional(),\n});\nexport type RuntimeConfig = z.infer<typeof RuntimeConfigSchema>;\n\nexport const ClientRuntimeConfigSchema = z.object({\n cspNonce: z.string().optional(),\n env: z.enum([\"development\", \"production\", \"staging\"]),\n account: z.string(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n hostUrl: z.string().optional(),\n assetsUrl: z.string(),\n apiBase: z.string(),\n rpcBase: z.string(),\n repository: z.string().optional(),\n authAvailable: z.boolean().optional(),\n runtime: ClientRuntimeInfoSchema.optional(),\n ui: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n api: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n auth: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n })\n .optional(),\n plugins: z\n .record(\n z.string(),\n z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n ui: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n integrity: z.string().optional(),\n })\n .optional(),\n sidebar: z.array(SidebarItemSchema).optional(),\n }),\n )\n .optional(),\n});\nexport type ClientRuntimeConfig = z.infer<typeof ClientRuntimeConfigSchema>;\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/init.ts
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
loadManifestNormalizationSpec,
|
|
21
21
|
normalizePackageManifestsInTree,
|
|
22
22
|
} from "../internal/manifest-normalizer";
|
|
23
|
-
import type { BosConfig } from "../types";
|
|
23
|
+
import type { BosConfig, BosConfigInput } from "../types";
|
|
24
24
|
import { isPathExcluded } from "../utils/path-match";
|
|
25
25
|
import { saveBosConfig } from "../utils/save-config";
|
|
26
26
|
import { writeSnapshot } from "./snapshot";
|
|
@@ -51,12 +51,25 @@ export async function resolveSourceDir(opts: {
|
|
|
51
51
|
|
|
52
52
|
const parentConfig = await fetchParentConfig(opts.extendsAccount, opts.extendsGateway);
|
|
53
53
|
|
|
54
|
-
if (
|
|
55
|
-
|
|
54
|
+
if (parentConfig.repository) {
|
|
55
|
+
const { dir: sourceDir, cleanup } = await downloadTarball(parentConfig.repository);
|
|
56
|
+
return { sourceDir, parentConfig, cleanup };
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
const
|
|
59
|
-
|
|
59
|
+
const chainResult = await resolveRepositoryViaExtendsChain(
|
|
60
|
+
opts.extendsAccount,
|
|
61
|
+
opts.extendsGateway,
|
|
62
|
+
);
|
|
63
|
+
if (chainResult?.repository) {
|
|
64
|
+
const { dir: sourceDir, cleanup } = await downloadTarball(chainResult.repository);
|
|
65
|
+
return { sourceDir, parentConfig: chainResult.config, cleanup };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
sourceDir: "",
|
|
70
|
+
parentConfig,
|
|
71
|
+
cleanup: async () => {},
|
|
72
|
+
};
|
|
60
73
|
}
|
|
61
74
|
|
|
62
75
|
export async function readTemplatekeep(sourceDir: string): Promise<string[]> {
|
|
@@ -80,6 +93,37 @@ export async function fetchParentConfig(
|
|
|
80
93
|
return fetchBosConfigFromFastKv<BosConfig>(bosUrl);
|
|
81
94
|
}
|
|
82
95
|
|
|
96
|
+
export async function resolveRepositoryViaExtendsChain(
|
|
97
|
+
extendsAccount: string,
|
|
98
|
+
extendsGateway: string,
|
|
99
|
+
visited = new Set<string>(),
|
|
100
|
+
): Promise<{ repository: string; config: BosConfig } | null> {
|
|
101
|
+
const key = `bos://${extendsAccount}/${extendsGateway}`;
|
|
102
|
+
if (visited.has(key)) return null;
|
|
103
|
+
visited.add(key);
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
const config = await fetchParentConfig(extendsAccount, extendsGateway);
|
|
107
|
+
if (config.repository) {
|
|
108
|
+
return { repository: config.repository, config };
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const extendsRef = config.extends;
|
|
112
|
+
if (extendsRef && typeof extendsRef === "string") {
|
|
113
|
+
const normalized = extendsRef.startsWith("bos://") ? extendsRef : `bos://${extendsRef}`;
|
|
114
|
+
const match = normalized.match(/^bos:\/\/([^/]+)\/(.+)$/);
|
|
115
|
+
if (match) {
|
|
116
|
+
const result = await resolveRepositoryViaExtendsChain(match[1], match[2], visited);
|
|
117
|
+
if (result) return result;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return null;
|
|
122
|
+
} catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
83
127
|
export async function downloadTarball(
|
|
84
128
|
repoUrl: string,
|
|
85
129
|
): Promise<{ dir: string; cleanup: () => Promise<void> }> {
|
|
@@ -161,13 +205,6 @@ export async function copyFilteredFiles(
|
|
|
161
205
|
? [...patterns, "host/**"]
|
|
162
206
|
: patterns.filter((p) => !p.startsWith("host/") && p !== "host/**");
|
|
163
207
|
|
|
164
|
-
const filteredPatterns = effectivePatterns.filter((p) => {
|
|
165
|
-
const pluginMatch = p.match(/^plugins\/([^/]+)/);
|
|
166
|
-
if (!pluginMatch) return true;
|
|
167
|
-
const pluginName = pluginMatch[1];
|
|
168
|
-
return options.plugins?.includes(pluginName) ?? true;
|
|
169
|
-
});
|
|
170
|
-
|
|
171
208
|
const excludedRoutePatterns: string[] = [];
|
|
172
209
|
if (options.pluginRoutes) {
|
|
173
210
|
for (const [pluginKey, routePatterns] of Object.entries(options.pluginRoutes)) {
|
|
@@ -178,7 +215,7 @@ export async function copyFilteredFiles(
|
|
|
178
215
|
}
|
|
179
216
|
|
|
180
217
|
const allFiles = new Set<string>();
|
|
181
|
-
for (const pattern of
|
|
218
|
+
for (const pattern of effectivePatterns) {
|
|
182
219
|
const matches = await glob(pattern, {
|
|
183
220
|
cwd: sourceDir,
|
|
184
221
|
nodir: true,
|
|
@@ -293,126 +330,21 @@ export async function personalizeConfig(
|
|
|
293
330
|
}
|
|
294
331
|
}
|
|
295
332
|
|
|
296
|
-
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
for (const pluginKey of Object.keys(plugins)) {
|
|
300
|
-
const plugin = plugins[pluginKey];
|
|
301
|
-
let pluginObj: Record<string, unknown>;
|
|
302
|
-
|
|
303
|
-
if (typeof plugin === "string") {
|
|
304
|
-
pluginObj = { extends: plugin };
|
|
305
|
-
plugins[pluginKey] = pluginObj;
|
|
306
|
-
} else if (plugin && typeof plugin === "object") {
|
|
307
|
-
pluginObj = { ...(plugin as Record<string, unknown>) };
|
|
308
|
-
} else {
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
333
|
+
for (const pluginKey of Object.keys(plugins)) {
|
|
334
|
+
const plugin = plugins[pluginKey];
|
|
335
|
+
let pluginObj: Record<string, unknown>;
|
|
311
336
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
if (existsSync(pluginConfigPath)) {
|
|
321
|
-
try {
|
|
322
|
-
const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, "utf-8")) as Record<
|
|
323
|
-
string,
|
|
324
|
-
unknown
|
|
325
|
-
>;
|
|
326
|
-
delete pluginConfig.extends;
|
|
327
|
-
if (pluginConfig.app && typeof pluginConfig.app === "object") {
|
|
328
|
-
const app = pluginConfig.app as Record<string, unknown>;
|
|
329
|
-
for (const entryKey of Object.keys(app)) {
|
|
330
|
-
const entry = app[entryKey];
|
|
331
|
-
if (entry && typeof entry === "object") {
|
|
332
|
-
const e = entry as Record<string, unknown>;
|
|
333
|
-
delete e.production;
|
|
334
|
-
delete e.integrity;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
writeFileSync(pluginConfigPath, `${JSON.stringify(pluginConfig, null, 2)}\n`);
|
|
339
|
-
} catch {}
|
|
340
|
-
} else if (existsSync(pluginDir)) {
|
|
341
|
-
const pluginConfig: Record<string, unknown> = {};
|
|
342
|
-
pluginConfig.domain = `${pluginKey}.${opts.domain ?? parentDomain}`;
|
|
343
|
-
pluginConfig.app = { api: { development: "local:." } };
|
|
344
|
-
|
|
345
|
-
if (opts.pluginRoutes?.[pluginKey]) {
|
|
346
|
-
pluginConfig.routes = opts.pluginRoutes[pluginKey];
|
|
347
|
-
}
|
|
348
|
-
if (pluginObj.sidebar) {
|
|
349
|
-
pluginConfig.sidebar = pluginObj.sidebar;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
mkdirSync(pluginDir, { recursive: true });
|
|
353
|
-
writeFileSync(pluginConfigPath, `${JSON.stringify(pluginConfig, null, 2)}\n`);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
const cleanEntry: Record<string, unknown> = { development: pluginObj.development };
|
|
357
|
-
if (pluginObj.extends) {
|
|
358
|
-
cleanEntry.extends = pluginObj.extends;
|
|
359
|
-
}
|
|
360
|
-
if (pluginObj.secrets) {
|
|
361
|
-
cleanEntry.secrets = pluginObj.secrets;
|
|
362
|
-
}
|
|
363
|
-
if (pluginObj.variables) {
|
|
364
|
-
cleanEntry.variables = pluginObj.variables;
|
|
365
|
-
}
|
|
366
|
-
plugins[pluginKey] = cleanEntry;
|
|
367
|
-
} else {
|
|
368
|
-
delete pluginObj.production;
|
|
369
|
-
delete pluginObj.integrity;
|
|
370
|
-
delete pluginObj.sidebar;
|
|
371
|
-
delete pluginObj.routes;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
} else {
|
|
375
|
-
for (const pluginKey of Object.keys(plugins)) {
|
|
376
|
-
const pluginDir = resolve(
|
|
377
|
-
destination,
|
|
378
|
-
(plugins[pluginKey] as Record<string, unknown>)?.development
|
|
379
|
-
?.toString()
|
|
380
|
-
?.slice("local:".length) ?? "",
|
|
381
|
-
);
|
|
382
|
-
const pluginConfigPath = join(pluginDir, "bos.config.json");
|
|
383
|
-
if (!existsSync(pluginConfigPath)) continue;
|
|
384
|
-
|
|
385
|
-
try {
|
|
386
|
-
const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, "utf-8")) as Record<
|
|
387
|
-
string,
|
|
388
|
-
unknown
|
|
389
|
-
>;
|
|
390
|
-
let changed = false;
|
|
391
|
-
|
|
392
|
-
if ("extends" in pluginConfig) {
|
|
393
|
-
delete pluginConfig.extends;
|
|
394
|
-
changed = true;
|
|
395
|
-
}
|
|
396
|
-
if (pluginConfig.app && typeof pluginConfig.app === "object") {
|
|
397
|
-
const app = pluginConfig.app as Record<string, unknown>;
|
|
398
|
-
for (const entryKey of Object.keys(app)) {
|
|
399
|
-
const entry = app[entryKey];
|
|
400
|
-
if (entry && typeof entry === "object") {
|
|
401
|
-
const e = entry as Record<string, unknown>;
|
|
402
|
-
if ("production" in e || "integrity" in e) {
|
|
403
|
-
delete e.production;
|
|
404
|
-
delete e.integrity;
|
|
405
|
-
changed = true;
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
if (changed) {
|
|
412
|
-
writeFileSync(pluginConfigPath, `${JSON.stringify(pluginConfig, null, 2)}\n`);
|
|
413
|
-
}
|
|
414
|
-
} catch {}
|
|
337
|
+
if (typeof plugin === "string") {
|
|
338
|
+
pluginObj = { extends: plugin };
|
|
339
|
+
plugins[pluginKey] = pluginObj;
|
|
340
|
+
} else if (plugin && typeof plugin === "object") {
|
|
341
|
+
pluginObj = { ...(plugin as Record<string, unknown>) };
|
|
342
|
+
} else {
|
|
343
|
+
continue;
|
|
415
344
|
}
|
|
345
|
+
|
|
346
|
+
delete pluginObj.production;
|
|
347
|
+
delete pluginObj.integrity;
|
|
416
348
|
}
|
|
417
349
|
|
|
418
350
|
if (Object.keys(plugins).length === 0) {
|
|
@@ -618,6 +550,121 @@ const WORKSPACE_LOCAL_PATHS: Record<string, string> = {
|
|
|
618
550
|
"every-plugin": "packages/every-plugin",
|
|
619
551
|
};
|
|
620
552
|
|
|
553
|
+
export async function scaffoldMinimalProject(
|
|
554
|
+
destination: string,
|
|
555
|
+
parentConfig: BosConfigInput,
|
|
556
|
+
opts: {
|
|
557
|
+
extendsAccount: string;
|
|
558
|
+
extendsGateway: string;
|
|
559
|
+
account?: string;
|
|
560
|
+
domain?: string;
|
|
561
|
+
plugins?: string[];
|
|
562
|
+
withHost?: boolean;
|
|
563
|
+
},
|
|
564
|
+
): Promise<number> {
|
|
565
|
+
mkdirSync(destination, { recursive: true });
|
|
566
|
+
|
|
567
|
+
const config: Record<string, unknown> = {
|
|
568
|
+
extends: `bos://${opts.extendsAccount}/${opts.extendsGateway}`,
|
|
569
|
+
account: opts.account || opts.extendsAccount,
|
|
570
|
+
...(opts.domain ? { domain: opts.domain } : {}),
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
if (parentConfig.app && typeof parentConfig.app === "object") {
|
|
574
|
+
const app: Record<string, unknown> = {};
|
|
575
|
+
const parentApp = parentConfig.app as Record<string, Record<string, unknown>>;
|
|
576
|
+
|
|
577
|
+
if (parentApp.host) {
|
|
578
|
+
app.host = { ...parentApp.host };
|
|
579
|
+
const host = app.host as Record<string, unknown>;
|
|
580
|
+
delete host.production;
|
|
581
|
+
delete host.integrity;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
if (parentApp.ui) {
|
|
585
|
+
app.ui = { ...parentApp.ui };
|
|
586
|
+
const ui = app.ui as Record<string, unknown>;
|
|
587
|
+
delete ui.production;
|
|
588
|
+
delete ui.integrity;
|
|
589
|
+
delete ui.ssr;
|
|
590
|
+
delete ui.ssrIntegrity;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
if (parentApp.api) {
|
|
594
|
+
app.api = { ...parentApp.api };
|
|
595
|
+
const api = app.api as Record<string, unknown>;
|
|
596
|
+
delete api.production;
|
|
597
|
+
delete api.integrity;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
if (parentApp.auth) {
|
|
601
|
+
app.auth = { ...parentApp.auth };
|
|
602
|
+
const auth = app.auth as Record<string, unknown>;
|
|
603
|
+
delete auth.production;
|
|
604
|
+
delete auth.integrity;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
config.app = app;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
if (opts.plugins && opts.plugins.length > 0 && parentConfig.plugins) {
|
|
611
|
+
const plugins: Record<string, unknown> = {};
|
|
612
|
+
for (const key of opts.plugins) {
|
|
613
|
+
const parentPlugin = (parentConfig.plugins as Record<string, unknown>)?.[key];
|
|
614
|
+
if (parentPlugin) {
|
|
615
|
+
if (typeof parentPlugin === "string") {
|
|
616
|
+
plugins[key] = { extends: parentPlugin };
|
|
617
|
+
} else {
|
|
618
|
+
const pluginCopy = { ...(parentPlugin as Record<string, unknown>) };
|
|
619
|
+
delete pluginCopy.production;
|
|
620
|
+
delete pluginCopy.integrity;
|
|
621
|
+
plugins[key] = pluginCopy;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
config.plugins = plugins;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
await saveBosConfig(destination, config);
|
|
629
|
+
|
|
630
|
+
const pkg: Record<string, unknown> = {
|
|
631
|
+
name: opts.domain || opts.extendsGateway,
|
|
632
|
+
private: true,
|
|
633
|
+
type: "module",
|
|
634
|
+
scripts: {
|
|
635
|
+
dev: "node_modules/.bin/bos dev --host remote",
|
|
636
|
+
"dev:ui": "node_modules/.bin/bos dev --ui local --api remote",
|
|
637
|
+
"dev:api": "node_modules/.bin/bos dev --ui remote --api local",
|
|
638
|
+
build: "node_modules/.bin/bos build",
|
|
639
|
+
deploy: "node_modules/.bin/bos build --deploy",
|
|
640
|
+
publish: "node_modules/.bin/bos publish",
|
|
641
|
+
start: "node_modules/.bin/bos start",
|
|
642
|
+
typecheck: "node_modules/.bin/bos types gen && tsc --noEmit",
|
|
643
|
+
postinstall: "node_modules/.bin/bos types gen || true",
|
|
644
|
+
"types:gen": "node_modules/.bin/bos types gen",
|
|
645
|
+
},
|
|
646
|
+
dependencies: {
|
|
647
|
+
"everything-dev": "catalog:",
|
|
648
|
+
"every-plugin": "catalog:",
|
|
649
|
+
},
|
|
650
|
+
devDependencies: {},
|
|
651
|
+
workspaces: {
|
|
652
|
+
packages: [],
|
|
653
|
+
catalog: {},
|
|
654
|
+
},
|
|
655
|
+
};
|
|
656
|
+
writeFileSync(join(destination, "package.json"), `${JSON.stringify(pkg, null, 2)}\n`);
|
|
657
|
+
|
|
658
|
+
const envExample = generateEnvExample(parentConfig);
|
|
659
|
+
if (envExample) {
|
|
660
|
+
writeFileSync(join(destination, ".env.example"), envExample);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
writeFileSync(join(destination, ".gitignore"), generateGitignore());
|
|
664
|
+
|
|
665
|
+
return 4;
|
|
666
|
+
}
|
|
667
|
+
|
|
621
668
|
async function resolveWorkspaceRefs(
|
|
622
669
|
destination: string,
|
|
623
670
|
options?: { localOverrides?: boolean; sourceDir?: string },
|
|
@@ -769,3 +816,50 @@ export async function generateDatabaseMigrations(destination: string): Promise<v
|
|
|
769
816
|
export async function execCommand(command: string, args: string[], cwd?: string): Promise<void> {
|
|
770
817
|
await execa(command, args, { cwd, stdio: "pipe" });
|
|
771
818
|
}
|
|
819
|
+
|
|
820
|
+
function generateEnvExample(config: BosConfigInput): string {
|
|
821
|
+
const lines: string[] = ["# Environment variables"];
|
|
822
|
+
const collectSecrets = (obj: Record<string, unknown>, prefix = ""): void => {
|
|
823
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
824
|
+
if (key === "secrets" && Array.isArray(value)) {
|
|
825
|
+
for (const secret of value) {
|
|
826
|
+
if (typeof secret === "string") {
|
|
827
|
+
lines.push(`${secret}=`);
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
} else if (key === "variables" && isPlainObject(value)) {
|
|
831
|
+
for (const [varKey, varVal] of Object.entries(value as Record<string, unknown>)) {
|
|
832
|
+
if (typeof varVal === "string") {
|
|
833
|
+
lines.push(`${varKey}=${varVal}`);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
} else if (isPlainObject(value) && key !== "extends") {
|
|
837
|
+
collectSecrets(value as Record<string, unknown>, `${prefix}${key}.`);
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
if (config.app && typeof config.app === "object") {
|
|
843
|
+
collectSecrets(config.app as Record<string, unknown>);
|
|
844
|
+
}
|
|
845
|
+
if (config.plugins && typeof config.plugins === "object") {
|
|
846
|
+
collectSecrets(config.plugins as Record<string, unknown>);
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
lines.push("BETTER_AUTH_SECRET=generate-a-secret-here");
|
|
850
|
+
return `${lines.join("\n")}\n`;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
854
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
function generateGitignore(): string {
|
|
858
|
+
return `node_modules/
|
|
859
|
+
dist/
|
|
860
|
+
.env
|
|
861
|
+
.bos/
|
|
862
|
+
*.gen.ts
|
|
863
|
+
*.gen.tsx
|
|
864
|
+
`;
|
|
865
|
+
}
|
package/src/cli/prompts.ts
CHANGED
|
@@ -2,12 +2,13 @@ import process from "node:process";
|
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
3
|
|
|
4
4
|
function parseExtendsRef(ref: string): { account: string; gateway: string } | null {
|
|
5
|
-
const
|
|
5
|
+
const normalized = ref.startsWith("bos://") ? ref : `bos://${ref}`;
|
|
6
|
+
const match = normalized.match(/^bos:\/\/([^/]+)\/(.+)$/);
|
|
6
7
|
if (!match) return null;
|
|
7
8
|
return { account: match[1], gateway: match[2] };
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
function
|
|
11
|
+
function deriveAccountFromExtends(domain: string, extendsAccount: string): string {
|
|
11
12
|
const firstSegment = domain.split(".")[0];
|
|
12
13
|
if (!firstSegment) return "";
|
|
13
14
|
const suffix = extendsAccount.includes(".")
|
|
@@ -17,8 +18,6 @@ function deriveAccountFromDomain(domain: string, extendsAccount: string): string
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
export async function promptInitOptions(input: {
|
|
20
|
-
extendsAccount?: string;
|
|
21
|
-
extendsGateway?: string;
|
|
22
21
|
extends?: string;
|
|
23
22
|
directory?: string;
|
|
24
23
|
account?: string;
|
|
@@ -37,40 +36,36 @@ export async function promptInitOptions(input: {
|
|
|
37
36
|
}> {
|
|
38
37
|
p.intro("Let's build an app...");
|
|
39
38
|
|
|
40
|
-
const domain =
|
|
41
|
-
input.domain ??
|
|
42
|
-
((await p.text({
|
|
43
|
-
message: "Starting with a domain?",
|
|
44
|
-
placeholder: "no",
|
|
45
|
-
})) as string);
|
|
46
|
-
|
|
47
|
-
if (p.isCancel(domain)) process.exit(0);
|
|
48
|
-
|
|
49
|
-
const extendsPlaceholder = "bos://dev.everything.near/everything.dev";
|
|
50
39
|
const extendsInput =
|
|
51
40
|
input.extends ??
|
|
52
41
|
((await p.text({
|
|
53
42
|
message: "Extending an existing app?",
|
|
54
|
-
placeholder:
|
|
43
|
+
placeholder: "bos://dev.everything.near/everything.dev",
|
|
55
44
|
})) as string);
|
|
56
45
|
|
|
57
46
|
if (p.isCancel(extendsInput)) process.exit(0);
|
|
58
47
|
|
|
59
|
-
let extendsAccount =
|
|
60
|
-
let extendsGateway =
|
|
48
|
+
let extendsAccount = "dev.everything.near";
|
|
49
|
+
let extendsGateway = "everything.dev";
|
|
61
50
|
|
|
62
51
|
if (extendsInput) {
|
|
63
52
|
const parsed = parseExtendsRef(extendsInput);
|
|
64
53
|
if (parsed) {
|
|
65
|
-
extendsAccount =
|
|
66
|
-
extendsGateway =
|
|
54
|
+
extendsAccount = parsed.account;
|
|
55
|
+
extendsGateway = parsed.gateway;
|
|
67
56
|
}
|
|
68
57
|
}
|
|
69
58
|
|
|
70
|
-
|
|
71
|
-
|
|
59
|
+
const domain =
|
|
60
|
+
input.domain ??
|
|
61
|
+
((await p.text({
|
|
62
|
+
message: "Starting with a domain?",
|
|
63
|
+
placeholder: "no",
|
|
64
|
+
})) as string);
|
|
65
|
+
|
|
66
|
+
if (p.isCancel(domain)) process.exit(0);
|
|
72
67
|
|
|
73
|
-
const accountDefault = domain ?
|
|
68
|
+
const accountDefault = domain ? deriveAccountFromExtends(domain, extendsAccount) : "";
|
|
74
69
|
const account =
|
|
75
70
|
input.account ??
|
|
76
71
|
((await p.text({
|
package/src/cli/sync.ts
CHANGED
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
mergeBosConfigWithTemplate,
|
|
17
17
|
resolveExtendsRef,
|
|
18
18
|
} from "../merge";
|
|
19
|
-
import type { BosPluginRef } from "../types";
|
|
20
19
|
import { isPathExcluded } from "../utils/path-match";
|
|
21
20
|
import { writeGeneratedInfra } from "./infra";
|
|
22
21
|
import {
|
|
@@ -314,7 +313,7 @@ export async function syncTemplate(projectDir: string, options: SyncOptions): Pr
|
|
|
314
313
|
const extendsAccount = extendsMatch[1];
|
|
315
314
|
const extendsGateway = extendsMatch[2];
|
|
316
315
|
|
|
317
|
-
const { sourceDir,
|
|
316
|
+
const { sourceDir, cleanup } = await resolveSourceDir({
|
|
318
317
|
extendsAccount,
|
|
319
318
|
extendsGateway,
|
|
320
319
|
});
|
|
@@ -354,12 +353,10 @@ export async function syncTemplate(projectDir: string, options: SyncOptions): Pr
|
|
|
354
353
|
: [];
|
|
355
354
|
|
|
356
355
|
const pluginRoutes: Record<string, string[]> = {};
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
pluginRoutes[key] = ref.routes;
|
|
362
|
-
}
|
|
356
|
+
const parentRuntime = await loadConfig({ cwd: sourceDir });
|
|
357
|
+
for (const [key, plugin] of Object.entries(parentRuntime?.runtime.plugins ?? {})) {
|
|
358
|
+
if (plugin.routes && plugin.routes.length > 0) {
|
|
359
|
+
pluginRoutes[key] = plugin.routes;
|
|
363
360
|
}
|
|
364
361
|
}
|
|
365
362
|
|