@bleedingdev/modern-js-create 3.2.0-ultramodern.99 → 3.4.0-ultramodern.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/README.md +281 -106
- package/bin/run.js +1 -0
- package/dist/cjs/create-package-root.cjs +63 -0
- package/dist/cjs/index.cjs +658 -0
- package/dist/cjs/locale/en.cjs +101 -0
- package/dist/cjs/locale/index.cjs +50 -0
- package/dist/cjs/locale/zh.cjs +101 -0
- package/dist/cjs/ultramodern-package-source.cjs +135 -0
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +603 -0
- package/dist/cjs/ultramodern-workspace/app-files.cjs +223 -0
- package/dist/cjs/ultramodern-workspace/codesmith.cjs +134 -0
- package/dist/cjs/ultramodern-workspace/contracts.cjs +837 -0
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +422 -0
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +222 -0
- package/dist/cjs/ultramodern-workspace/effect-api.cjs +952 -0
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +191 -0
- package/dist/cjs/ultramodern-workspace/generation-result.cjs +158 -0
- package/dist/cjs/ultramodern-workspace/index.cjs +51 -0
- package/dist/cjs/ultramodern-workspace/locales.cjs +173 -0
- package/dist/cjs/ultramodern-workspace/module-federation.cjs +487 -0
- package/dist/cjs/ultramodern-workspace/naming.cjs +161 -0
- package/dist/cjs/ultramodern-workspace/overlays.cjs +120 -0
- package/dist/cjs/ultramodern-workspace/package-json.cjs +406 -0
- package/dist/cjs/ultramodern-workspace/package-source.cjs +59 -0
- package/dist/cjs/ultramodern-workspace/policy.cjs +248 -0
- package/dist/cjs/ultramodern-workspace/public-api.cjs +47 -0
- package/dist/cjs/ultramodern-workspace/public-surface.cjs +268 -0
- package/dist/cjs/ultramodern-workspace/routes.cjs +375 -0
- package/dist/cjs/ultramodern-workspace/types.cjs +61 -0
- package/dist/cjs/ultramodern-workspace/versions.cjs +161 -0
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +154 -0
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +197 -0
- package/dist/esm/create-package-root.js +14 -0
- package/dist/esm/index.js +621 -0
- package/dist/esm/locale/en.js +63 -0
- package/dist/esm/locale/index.js +9 -0
- package/dist/esm/locale/zh.js +63 -0
- package/dist/esm/ultramodern-package-source.js +63 -0
- package/dist/esm/ultramodern-workspace/add-vertical.js +511 -0
- package/dist/esm/ultramodern-workspace/app-files.js +149 -0
- package/dist/esm/ultramodern-workspace/codesmith.js +86 -0
- package/dist/esm/ultramodern-workspace/contracts.js +742 -0
- package/dist/esm/ultramodern-workspace/demo-components.js +363 -0
- package/dist/esm/ultramodern-workspace/descriptors.js +133 -0
- package/dist/esm/ultramodern-workspace/effect-api.js +854 -0
- package/dist/esm/ultramodern-workspace/fs-io.js +90 -0
- package/dist/esm/ultramodern-workspace/generation-result.js +102 -0
- package/dist/esm/ultramodern-workspace/index.js +3 -0
- package/dist/esm/ultramodern-workspace/locales.js +122 -0
- package/dist/esm/ultramodern-workspace/module-federation.js +415 -0
- package/dist/esm/ultramodern-workspace/naming.js +71 -0
- package/dist/esm/ultramodern-workspace/overlays.js +79 -0
- package/dist/esm/ultramodern-workspace/package-json.js +338 -0
- package/dist/esm/ultramodern-workspace/package-source.js +21 -0
- package/dist/esm/ultramodern-workspace/policy.js +183 -0
- package/dist/esm/ultramodern-workspace/public-api.js +2 -0
- package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
- package/dist/esm/ultramodern-workspace/routes.js +280 -0
- package/dist/esm/ultramodern-workspace/types.js +16 -0
- package/dist/esm/ultramodern-workspace/versions.js +36 -0
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +92 -0
- package/dist/esm/ultramodern-workspace/write-workspace.js +143 -0
- package/dist/esm-node/create-package-root.js +15 -0
- package/dist/esm-node/index.js +622 -0
- package/dist/esm-node/locale/en.js +64 -0
- package/dist/esm-node/locale/index.js +10 -0
- package/dist/esm-node/locale/zh.js +64 -0
- package/dist/esm-node/ultramodern-package-source.js +64 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +512 -0
- package/dist/esm-node/ultramodern-workspace/app-files.js +150 -0
- package/dist/esm-node/ultramodern-workspace/codesmith.js +87 -0
- package/dist/esm-node/ultramodern-workspace/contracts.js +743 -0
- package/dist/esm-node/ultramodern-workspace/demo-components.js +364 -0
- package/dist/esm-node/ultramodern-workspace/descriptors.js +134 -0
- package/dist/esm-node/ultramodern-workspace/effect-api.js +855 -0
- package/dist/esm-node/ultramodern-workspace/fs-io.js +91 -0
- package/dist/esm-node/ultramodern-workspace/generation-result.js +103 -0
- package/dist/esm-node/ultramodern-workspace/index.js +4 -0
- package/dist/esm-node/ultramodern-workspace/locales.js +123 -0
- package/dist/esm-node/ultramodern-workspace/module-federation.js +416 -0
- package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
- package/dist/esm-node/ultramodern-workspace/overlays.js +80 -0
- package/dist/esm-node/ultramodern-workspace/package-json.js +339 -0
- package/dist/esm-node/ultramodern-workspace/package-source.js +22 -0
- package/dist/esm-node/ultramodern-workspace/policy.js +184 -0
- package/dist/esm-node/ultramodern-workspace/public-api.js +3 -0
- package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
- package/dist/esm-node/ultramodern-workspace/routes.js +281 -0
- package/dist/esm-node/ultramodern-workspace/types.js +17 -0
- package/dist/esm-node/ultramodern-workspace/versions.js +37 -0
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +93 -0
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +144 -0
- package/dist/types/create-package-root.d.ts +1 -0
- package/dist/types/locale/en.d.ts +12 -8
- package/dist/types/locale/index.d.ts +125 -2
- package/dist/types/locale/zh.d.ts +12 -8
- package/dist/types/ultramodern-package-source.d.ts +28 -0
- package/dist/types/ultramodern-workspace/add-vertical.d.ts +36 -0
- package/dist/types/ultramodern-workspace/app-files.d.ts +14 -0
- package/dist/types/ultramodern-workspace/codesmith.d.ts +53 -0
- package/dist/types/ultramodern-workspace/contracts.d.ts +21 -0
- package/dist/types/ultramodern-workspace/demo-components.d.ts +9 -0
- package/dist/types/ultramodern-workspace/descriptors.d.ts +39 -0
- package/dist/types/ultramodern-workspace/effect-api.d.ts +73 -0
- package/dist/types/ultramodern-workspace/fs-io.d.ts +18 -0
- package/dist/types/ultramodern-workspace/generation-result.d.ts +14 -0
- package/dist/types/ultramodern-workspace/index.d.ts +4 -0
- package/dist/types/ultramodern-workspace/locales.d.ts +183 -0
- package/dist/types/ultramodern-workspace/module-federation.d.ts +16 -0
- package/dist/types/ultramodern-workspace/naming.d.ts +16 -0
- package/dist/types/ultramodern-workspace/overlays.d.ts +6 -0
- package/dist/types/ultramodern-workspace/package-json.d.ts +12 -0
- package/dist/types/ultramodern-workspace/package-source.d.ts +2 -0
- package/dist/types/ultramodern-workspace/policy.d.ts +60 -0
- package/dist/types/ultramodern-workspace/public-api.d.ts +3 -0
- package/dist/types/ultramodern-workspace/public-surface.d.ts +37 -0
- package/dist/types/ultramodern-workspace/routes.d.ts +25 -0
- package/dist/types/ultramodern-workspace/types.d.ts +197 -0
- package/dist/types/ultramodern-workspace/versions.d.ts +40 -0
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +10 -0
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -0
- package/package.json +58 -15
- package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +23 -10
- package/template-workspace/.mise.toml.handlebars +1 -0
- package/template-workspace/{AGENTS.md → AGENTS.md.handlebars} +20 -9
- package/template-workspace/README.md.handlebars +85 -14
- package/template-workspace/lefthook.yml +18 -4
- package/template-workspace/pnpm-workspace.yaml.handlebars +45 -0
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +69 -75
- package/template-workspace/scripts/setup-agent-reference-repos.mjs +8 -6
- package/templates/app/shell-frame.tsx +49 -0
- package/templates/app/ultramodern-route-head.tsx.handlebars +142 -0
- package/templates/packages/shared-contracts-index.ts +466 -0
- package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +69 -0
- package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mjs +9 -0
- package/templates/workspace-scripts/generate-public-surface-assets.mjs +529 -0
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +125 -0
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +851 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +223 -0
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +986 -0
- package/dist/index.js +0 -6625
- package/dist/types/ultramodern-workspace.d.ts +0 -31
- package/template/.agents/skills-lock.json +0 -34
- package/template/.browserslistrc +0 -4
- package/template/.codex/hooks.json +0 -16
- package/template/.github/renovate.json +0 -53
- package/template/.github/workflows/ultramodern-gates.yml.handlebars +0 -54
- package/template/.gitignore.handlebars +0 -30
- package/template/.mise.toml.handlebars +0 -2
- package/template/.nvmrc +0 -2
- package/template/AGENTS.md +0 -23
- package/template/README.md +0 -105
- package/template/api/effect/index.ts.handlebars +0 -34
- package/template/api/lambda/hello.ts.handlebars +0 -6
- package/template/config/public/locales/cs/translation.json +0 -39
- package/template/config/public/locales/en/translation.json +0 -39
- package/template/lefthook.yml +0 -10
- package/template/modern.config.ts.handlebars +0 -71
- package/template/oxfmt.config.ts +0 -15
- package/template/oxlint.config.ts +0 -19
- package/template/package.json.handlebars +0 -66
- package/template/pnpm-workspace.yaml +0 -29
- package/template/postcss.config.mjs.handlebars +0 -6
- package/template/rstest.config.mts +0 -5
- package/template/scripts/bootstrap-agent-skills.mjs +0 -228
- package/template/scripts/check-i18n-strings.mjs +0 -94
- package/template/scripts/validate-ultramodern.mjs.handlebars +0 -538
- package/template/shared/effect/api.ts.handlebars +0 -17
- package/template/src/modern-app-env.d.ts +0 -3
- package/template/src/modern.runtime.ts.handlebars +0 -23
- package/template/src/routes/[lang]/page.tsx.handlebars +0 -211
- package/template/src/routes/index.css.handlebars +0 -129
- package/template/src/routes/layout.tsx.handlebars +0 -10
- package/template/tailwind.config.ts.handlebars +0 -10
- package/template/tests/tsconfig.json +0 -7
- package/template/tests/ultramodern.contract.test.ts.handlebars +0 -78
- package/template/tsconfig.json +0 -120
- package/template-workspace/pnpm-workspace.yaml +0 -35
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
import { appI18nNamespace, remoteDependencyAlias, resolveRemoteRefs, shellApp } from "./descriptors.js";
|
|
3
|
+
import { readFileTemplate, renderFileTemplate } from "./fs-io.js";
|
|
4
|
+
import { packageName, tailwindPrefixForApp } from "./naming.js";
|
|
5
|
+
function createBoundaryDebugMetadata(scope, remotes = []) {
|
|
6
|
+
return {
|
|
7
|
+
appId: shellApp.id,
|
|
8
|
+
boundaries: [
|
|
9
|
+
shellApp,
|
|
10
|
+
...remotes
|
|
11
|
+
].map((app)=>({
|
|
12
|
+
appId: app.id,
|
|
13
|
+
label: app.displayName,
|
|
14
|
+
mfName: app.mfName,
|
|
15
|
+
ownerTeam: app.ownership.team,
|
|
16
|
+
packageName: packageName(scope, app.packageSuffix),
|
|
17
|
+
role: 'shell' === app.kind ? 'host' : 'vertical'
|
|
18
|
+
})),
|
|
19
|
+
schemaVersion: 1
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function createAppEnvDts(app, remotes = []) {
|
|
23
|
+
const remoteModuleDeclarations = resolveRemoteRefs(app, remotes).flatMap((remote)=>Object.keys(remote.exposes ?? {}).filter((expose)=>'./Route' !== expose).map((expose)=>{
|
|
24
|
+
const moduleName = `${remoteDependencyAlias(remote)}/${expose.replace(/^\.\//u, '')}`;
|
|
25
|
+
return `declare module '${moduleName}' {
|
|
26
|
+
const Component: React.ComponentType<Record<string, never>>;
|
|
27
|
+
export default Component;
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
})).join('\n');
|
|
31
|
+
const reactTypeReference = remoteModuleDeclarations ? "/// <reference types='react' />\n" : '';
|
|
32
|
+
const siteUrlDeclaration = 'declare const ULTRAMODERN_SITE_URL: string;';
|
|
33
|
+
return `${reactTypeReference}/// <reference types='@modern-js/app-tools/types' />
|
|
34
|
+
|
|
35
|
+
${siteUrlDeclaration}
|
|
36
|
+
declare module '*.svg' {
|
|
37
|
+
const url: string;
|
|
38
|
+
export default url;
|
|
39
|
+
}
|
|
40
|
+
declare module '*.css';
|
|
41
|
+
${remoteModuleDeclarations ? `\n${remoteModuleDeclarations}` : ''}`;
|
|
42
|
+
}
|
|
43
|
+
function createAppRuntimeConfig(app, scope, remotes = []) {
|
|
44
|
+
const pluginsConfig = 'shell' === app.kind ? ` plugins: [
|
|
45
|
+
ultramodernBoundaryDebuggerPlugin({
|
|
46
|
+
metadata: ${JSON.stringify(createBoundaryDebugMetadata(scope, remotes), null, 6).split('\n').join('\n ')},
|
|
47
|
+
}),
|
|
48
|
+
],
|
|
49
|
+
` : '';
|
|
50
|
+
return `import { defineRuntimeConfig } from '@modern-js/runtime';
|
|
51
|
+
${'shell' === app.kind ? "import { ultramodernBoundaryDebuggerPlugin } from '@modern-js/runtime/boundary-debugger';\n" : ''}import { createInstance } from 'i18next';
|
|
52
|
+
import csResource from '../locales/cs/${appI18nNamespace(app)}.json';
|
|
53
|
+
import enResource from '../locales/en/${appI18nNamespace(app)}.json';
|
|
54
|
+
import { ultramodernRouteNamespace } from './routes/ultramodern-route-metadata';
|
|
55
|
+
|
|
56
|
+
type LocaleResource = string | { readonly [key: string]: LocaleResource };
|
|
57
|
+
|
|
58
|
+
const flattenLocaleResource = (
|
|
59
|
+
resource: LocaleResource,
|
|
60
|
+
prefix = '',
|
|
61
|
+
): Record<string, string> => {
|
|
62
|
+
if (typeof resource === 'string') {
|
|
63
|
+
return prefix.length > 0 ? { [prefix]: resource } : {};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return Object.fromEntries(
|
|
67
|
+
Object.entries(resource).flatMap(([key, value]) => {
|
|
68
|
+
const nextKey = prefix.length > 0 ? \`\${prefix}.\${key}\` : key;
|
|
69
|
+
return typeof value === 'string'
|
|
70
|
+
? [[nextKey, value]]
|
|
71
|
+
: Object.entries(flattenLocaleResource(value, nextKey));
|
|
72
|
+
}),
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const i18nInstance = createInstance();
|
|
77
|
+
const resources = {
|
|
78
|
+
cs: { [ultramodernRouteNamespace]: flattenLocaleResource(csResource) },
|
|
79
|
+
en: { [ultramodernRouteNamespace]: flattenLocaleResource(enResource) },
|
|
80
|
+
} as const;
|
|
81
|
+
|
|
82
|
+
export default defineRuntimeConfig({
|
|
83
|
+
i18n: {
|
|
84
|
+
i18nInstance,
|
|
85
|
+
initOptions: {
|
|
86
|
+
defaultNS: ultramodernRouteNamespace,
|
|
87
|
+
fallbackLng: 'en',
|
|
88
|
+
interpolation: {
|
|
89
|
+
escapeValue: false,
|
|
90
|
+
},
|
|
91
|
+
ns: [ultramodernRouteNamespace, 'translation'],
|
|
92
|
+
resources,
|
|
93
|
+
supportedLngs: ['en', 'cs'],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
${pluginsConfig}
|
|
97
|
+
router: {
|
|
98
|
+
framework: 'tanstack',
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
function createCssTokenImport(scope) {
|
|
104
|
+
return `@import '${packageName(scope, 'shared-design-tokens')}/tokens.css';\n`;
|
|
105
|
+
}
|
|
106
|
+
function createTailwindImport(prefix) {
|
|
107
|
+
return `@import 'tailwindcss' prefix(${prefix}) source(none);\n@source '..';\n`;
|
|
108
|
+
}
|
|
109
|
+
function createShellStyles(enableTailwind, scope) {
|
|
110
|
+
return `${enableTailwind ? createTailwindImport(tailwindPrefixForApp(shellApp)) : ''}${createCssTokenImport(scope)}`;
|
|
111
|
+
}
|
|
112
|
+
function createRemoteStyles(enableTailwind, scope, app) {
|
|
113
|
+
return `${enableTailwind ? createTailwindImport(tailwindPrefixForApp(app)) : ''}${createCssTokenImport(scope)}`;
|
|
114
|
+
}
|
|
115
|
+
function createAppStyles(enableTailwind, scope, app) {
|
|
116
|
+
return 'shell' === app.kind ? createShellStyles(enableTailwind, scope) : createRemoteStyles(enableTailwind, scope, app);
|
|
117
|
+
}
|
|
118
|
+
function createPostcssConfig() {
|
|
119
|
+
return `export default {
|
|
120
|
+
plugins: {
|
|
121
|
+
'@tailwindcss/postcss': {},
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
`;
|
|
125
|
+
}
|
|
126
|
+
function createTailwindConfig() {
|
|
127
|
+
return `import type { Config } from 'tailwindcss';
|
|
128
|
+
|
|
129
|
+
export default {} satisfies Config;
|
|
130
|
+
`;
|
|
131
|
+
}
|
|
132
|
+
function createSharedDesignTokensCss() {
|
|
133
|
+
return `@theme {
|
|
134
|
+
--color-um-accent: #2f8f68;
|
|
135
|
+
--color-um-canvas: #f1eadc;
|
|
136
|
+
--color-um-foreground: #133225;
|
|
137
|
+
--color-um-link: #166b4b;
|
|
138
|
+
--color-um-surface: #f6fbf7;
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
}
|
|
142
|
+
function createRouteHeadModule(app) {
|
|
143
|
+
return renderFileTemplate('app/ultramodern-route-head.tsx', {
|
|
144
|
+
appDisplayNameJson: JSON.stringify(app.displayName)
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function createShellFrameComponent() {
|
|
148
|
+
return readFileTemplate('app/shell-frame.tsx');
|
|
149
|
+
}
|
|
150
|
+
export { createAppEnvDts, createAppRuntimeConfig, createAppStyles, createBoundaryDebugMetadata, createCssTokenImport, createPostcssConfig, createRemoteStyles, createRouteHeadModule, createSharedDesignTokensCss, createShellFrameComponent, createShellStyles, createTailwindConfig, createTailwindImport };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
import node_path from "node:path";
|
|
3
|
+
import { addUltramodernVertical, generateUltramodernWorkspace, planUltramodernVertical } from "./public-api.js";
|
|
4
|
+
async function ultramodernCodeSmithAdapter(context, runtime) {
|
|
5
|
+
const config = context.config ?? {};
|
|
6
|
+
const mode = resolveMode(config);
|
|
7
|
+
const basePath = node_path.resolve(runtime?.outputPath ?? context.materials?.default?.basePath ?? process.cwd());
|
|
8
|
+
const modernVersion = config.modernVersion ?? 'latest';
|
|
9
|
+
const packageSource = resolvePackageSource(config);
|
|
10
|
+
const enableTailwind = config.enableTailwind ?? config.tailwind;
|
|
11
|
+
if (config.dryRun && 'vertical' !== mode) throw new Error('UltraModern CodeSmith dry-run is supported only in vertical mode.');
|
|
12
|
+
const name = await resolveName(context, config, mode);
|
|
13
|
+
const result = 'workspace' === mode ? generateUltramodernWorkspace({
|
|
14
|
+
targetDir: resolveTargetDir(basePath, config.targetDir, name),
|
|
15
|
+
packageName: name,
|
|
16
|
+
modernVersion,
|
|
17
|
+
enableTailwind,
|
|
18
|
+
overlays: config.overlays,
|
|
19
|
+
packageSource
|
|
20
|
+
}) : runVerticalMode({
|
|
21
|
+
workspaceRoot: resolveWorkspaceRoot(basePath, config.workspaceRoot),
|
|
22
|
+
name,
|
|
23
|
+
modernVersion,
|
|
24
|
+
enableTailwind,
|
|
25
|
+
overlays: config.overlays,
|
|
26
|
+
packageSource
|
|
27
|
+
}, Boolean(config.dryRun));
|
|
28
|
+
context.data ??= {};
|
|
29
|
+
context.data.ultramodernResult = result;
|
|
30
|
+
if (config.logResult) {
|
|
31
|
+
const logger = context.logger ?? runtime?.logger;
|
|
32
|
+
logger?.info?.(JSON.stringify(result, null, 2));
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
function resolveMode(config) {
|
|
37
|
+
if (void 0 === config.mode) return 'workspace';
|
|
38
|
+
if ('workspace' !== config.mode && 'vertical' !== config.mode) throw new Error(`Unsupported UltraModern CodeSmith mode "${String(config.mode)}". Use "workspace" or "vertical".`);
|
|
39
|
+
return config.mode;
|
|
40
|
+
}
|
|
41
|
+
async function resolveName(context, config, label) {
|
|
42
|
+
const configuredName = config.name ?? config.targetName ?? config.packageName;
|
|
43
|
+
if (configuredName) return configuredName;
|
|
44
|
+
const prompt = context.prompt ?? context.inquirer?.prompt;
|
|
45
|
+
if (!prompt) throw new Error(`Missing UltraModern ${label} name. Pass config.name for non-interactive CodeSmith usage.`);
|
|
46
|
+
const answer = await prompt([
|
|
47
|
+
{
|
|
48
|
+
type: 'input',
|
|
49
|
+
name: 'name',
|
|
50
|
+
message: `UltraModern ${label} name`
|
|
51
|
+
}
|
|
52
|
+
]);
|
|
53
|
+
const promptedName = answer.name;
|
|
54
|
+
if ('string' != typeof promptedName || 0 === promptedName.length) throw new Error(`Missing UltraModern ${label} name.`);
|
|
55
|
+
return promptedName;
|
|
56
|
+
}
|
|
57
|
+
function resolveTargetDir(basePath, targetDir, name) {
|
|
58
|
+
return node_path.resolve(basePath, targetDir ?? name);
|
|
59
|
+
}
|
|
60
|
+
function resolveWorkspaceRoot(basePath, workspaceRoot) {
|
|
61
|
+
return node_path.resolve(basePath, workspaceRoot ?? '.');
|
|
62
|
+
}
|
|
63
|
+
function resolvePackageSource(config) {
|
|
64
|
+
const packageSource = {
|
|
65
|
+
...config.packageSource ?? {},
|
|
66
|
+
...config.packageSourceStrategy ? {
|
|
67
|
+
strategy: config.packageSourceStrategy
|
|
68
|
+
} : {},
|
|
69
|
+
...config.modernPackageVersion ? {
|
|
70
|
+
modernPackageVersion: config.modernPackageVersion
|
|
71
|
+
} : {},
|
|
72
|
+
...config.registry ? {
|
|
73
|
+
registry: config.registry
|
|
74
|
+
} : {},
|
|
75
|
+
...config.aliasScope ? {
|
|
76
|
+
aliasScope: config.aliasScope
|
|
77
|
+
} : {},
|
|
78
|
+
...config.aliasPackageNamePrefix ? {
|
|
79
|
+
aliasPackageNamePrefix: config.aliasPackageNamePrefix
|
|
80
|
+
} : {}
|
|
81
|
+
};
|
|
82
|
+
return Object.keys(packageSource).length > 0 ? packageSource : void 0;
|
|
83
|
+
}
|
|
84
|
+
function runVerticalMode(options, dryRun) {
|
|
85
|
+
return dryRun ? planUltramodernVertical(options) : addUltramodernVertical(options);
|
|
86
|
+
}
|
|
87
|
+
export default ultramodernCodeSmithAdapter;
|