@storm-software/terraform-tools
Version:
Tools for managing Terraform infrastructure within a Nx workspace.
3,068 lines • 106 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkAYLQUJIFjs = require('./chunk-AYLQUJIF.js');
// src/generators/init/init.ts
var _devkit = require('@nx/devkit');
// ../workspace-tools/src/utils/cargo.ts
var _child_process = require('child_process');
var _path = require('path'); var path2 = _interopRequireWildcard(_path);
var INVALID_CARGO_ARGS = [
"allFeatures",
"allTargets",
"main",
"outputPath",
"package",
"tsConfig"
];
var buildCargoCommand = (baseCommand, options, context) => {
const args = [];
if (options.toolchain && options.toolchain !== "stable") {
args.push(`+${options.toolchain}`);
}
args.push(baseCommand);
for (const [key, value] of Object.entries(options)) {
if (key === "toolchain" || key === "release" || INVALID_CARGO_ARGS.includes(key)) {
continue;
}
if (typeof value === "boolean") {
if (value) {
args.push(`--${key}`);
}
} else if (Array.isArray(value)) {
for (const item of value) {
args.push(`--${key}`, item);
}
} else {
args.push(`--${key}`, String(value));
}
}
if (context.projectName) {
args.push("-p", context.projectName);
}
if (options.allFeatures && !args.includes("--all-features")) {
args.push("--all-features");
}
if (options.allTargets && !args.includes("--all-targets")) {
args.push("--all-targets");
}
if (options.release && !args.includes("--profile")) {
args.push("--release");
}
if (options.outputPath && !args.includes("--target-dir")) {
args.push("--target-dir", options.outputPath);
}
return args;
};
async function cargoCommand(workspaceRoot2, ...args) {
console.log(`> cargo ${args.join(" ")}`);
args.push("--color", "always");
return await Promise.resolve(runProcess(workspaceRoot2, "cargo", ...args));
}
function cargoCommandSync(args = "", options) {
const normalizedOptions = {
stdio: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _2 => _2.stdio]), () => ( "inherit")),
env: {
...process.env,
..._optionalChain([options, 'optionalAccess', _3 => _3.env])
}
};
try {
return {
output: _child_process.execSync.call(void 0, `cargo ${args}`, {
encoding: "utf8",
windowsHide: true,
stdio: normalizedOptions.stdio,
env: normalizedOptions.env,
maxBuffer: 1024 * 1024 * 10
}),
success: true
};
} catch (e) {
return {
output: e,
success: false
};
}
}
function cargoMetadata() {
const output2 = cargoCommandSync("metadata --format-version=1", {
stdio: "pipe"
});
if (!output2.success) {
console.error("Failed to get cargo metadata");
return null;
}
return JSON.parse(output2.output);
}
function runProcess(workspaceRoot2, processCmd, ...args) {
const metadata = cargoMetadata();
const targetDir = _nullishCoalesce(_optionalChain([metadata, 'optionalAccess', _4 => _4.target_directory]), () => ( _devkit.joinPathFragments.call(void 0, workspaceRoot2, "dist")));
return new Promise((resolve2) => {
if (process.env.VERCEL) {
return resolve2({ success: true });
}
_child_process.execSync.call(void 0, `${processCmd} ${args.join(" ")}`, {
cwd: process.cwd(),
env: {
...process.env,
RUSTC_WRAPPER: "",
CARGO_TARGET_DIR: targetDir,
CARGO_BUILD_TARGET_DIR: targetDir
},
windowsHide: true,
stdio: ["inherit", "inherit", "inherit"]
});
resolve2({ success: true });
});
}
// ../workspace-tools/src/executors/cargo-build/executor.ts
async function cargoBuildExecutor(options, context) {
const command = buildCargoCommand("build", options, context);
return await cargoCommand(context.root, ...command);
}
var executor_default = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Cargo - Build",
cargoBuildExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.outputPath ??= "dist/{projectRoot}/target";
options.toolchain ??= "stable";
return options;
}
}
}
);
// ../workspace-tools/src/executors/cargo-check/executor.ts
async function cargoCheckExecutor(options, context) {
const command = buildCargoCommand("check", options, context);
return await cargoCommand(context.root, ...command);
}
var executor_default2 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Cargo - Check",
cargoCheckExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.toolchain ??= "stable";
return options;
}
}
}
);
// ../workspace-tools/src/executors/cargo-clippy/executor.ts
async function cargoClippyExecutor(options, context) {
const command = buildCargoCommand("clippy", options, context);
return await cargoCommand(context.root, ...command);
}
var executor_default3 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Cargo - Clippy",
cargoClippyExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.toolchain ??= "stable";
options.fix ??= false;
return options;
}
}
}
);
// ../workspace-tools/src/executors/cargo-doc/executor.ts
async function cargoDocExecutor(options, context) {
const opts = { ...options };
opts["no-deps"] = opts.noDeps;
delete opts.noDeps;
const command = buildCargoCommand("doc", options, context);
return await cargoCommand(context.root, ...command);
}
var executor_default4 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Cargo - Doc",
cargoDocExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.outputPath ??= "dist/{projectRoot}/docs";
options.toolchain ??= "stable";
options.release ??= options.profile ? false : true;
options.allFeatures ??= true;
options.lib ??= true;
options.bins ??= true;
options.examples ??= true;
options.noDeps ??= false;
return options;
}
}
}
);
// ../workspace-tools/src/executors/cargo-format/executor.ts
async function cargoFormatExecutor(options, context) {
const command = buildCargoCommand("fmt", options, context);
return await cargoCommand(context.root, ...command);
}
var executor_default5 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Cargo - Format",
cargoFormatExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.outputPath ??= "dist/{projectRoot}/target";
options.toolchain ??= "stable";
return options;
}
}
}
);
// ../workspace-tools/src/executors/cargo-publish/executor.ts
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
var _https = require('https'); var _https2 = _interopRequireDefault(_https);
var LARGE_BUFFER = 1024 * 1e6;
// ../build-tools/src/config.ts
var DEFAULT_JS_BANNER = `
// ---------------------------------------
// \u26A1 Built by Storm Software
// ---------------------------------------
`;
var DEFAULT_CSS_BANNER = `
/* ---------------------------------------
\u26A1 Built by Storm Software
--------------------------------------- */
`;
var DEFAULT_ENVIRONMENT = "production";
var DEFAULT_TARGET = "esnext";
var DEFAULT_ORGANIZATION = "storm-software";
// ../build-tools/src/plugins/swc.ts
var _core = require('@swc/core');
// ../build-tools/src/plugins/ts-resolve.ts
var _module = require('module');
var _resolve2 = require('resolve'); var _resolve3 = _interopRequireDefault(_resolve2);
// ../build-tools/src/plugins/type-definitions.ts
// ../build-tools/src/utilities/copy-assets.ts
var _copyassetshandler = require('@nx/js/src/utils/assets/copy-assets-handler');
var _glob = require('glob');
var _promises = require('fs/promises'); var _promises2 = _interopRequireDefault(_promises);
var copyAssets = async (config, assets, outputPath, projectRoot, sourceRoot, generatePackageJson3 = true, includeSrc = false, banner, footer) => {
const pendingAssets = Array.from(_nullishCoalesce(assets, () => ( [])));
pendingAssets.push({
input: projectRoot,
glob: "*.md",
output: "."
});
pendingAssets.push({
input: ".",
glob: "LICENSE",
output: "."
});
if (generatePackageJson3 === false) {
pendingAssets.push({
input: projectRoot,
glob: "package.json",
output: "."
});
}
if (includeSrc === true) {
pendingAssets.push({
input: sourceRoot,
glob: "**/{*.ts,*.tsx,*.js,*.jsx}",
output: "src/"
});
}
_chunkAYLQUJIFjs.writeTrace.call(void 0,
`\u{1F4DD} Copying the following assets to the output directory:
${pendingAssets.map((pendingAsset) => typeof pendingAsset === "string" ? ` - ${pendingAsset} -> ${outputPath}` : ` - ${pendingAsset.input}/${pendingAsset.glob} -> ${_chunkAYLQUJIFjs.joinPaths.call(void 0, outputPath, pendingAsset.output)}`).join("\n")}`,
config
);
const assetHandler = new (0, _copyassetshandler.CopyAssetsHandler)({
projectDir: projectRoot,
rootDir: config.workspaceRoot,
outputDir: outputPath,
assets: pendingAssets
});
await assetHandler.processAllAssetsOnce();
_chunkAYLQUJIFjs.writeTrace.call(void 0, "Completed copying assets to the output directory", config);
if (includeSrc === true) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
`\u{1F4DD} Adding banner and writing source files: ${_chunkAYLQUJIFjs.joinPaths.call(void 0,
outputPath,
"src"
)}`,
config
);
const files = await _glob.glob.call(void 0, [
_chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, outputPath, "src/**/*.ts"),
_chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, outputPath, "src/**/*.tsx"),
_chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, outputPath, "src/**/*.js"),
_chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, outputPath, "src/**/*.jsx")
]);
await Promise.allSettled(
files.map(
async (file) => _promises.writeFile.call(void 0,
file,
`${banner && typeof banner === "string" ? banner.startsWith("//") ? banner : `// ${banner}` : ""}
${await _promises.readFile.call(void 0, file, "utf8")}
${footer && typeof footer === "string" ? footer.startsWith("//") ? footer : `// ${footer}` : ""}`
)
)
);
}
};
// ../build-tools/src/utilities/generate-package-json.ts
var _buildablelibsutils = require('@nx/js/src/utils/buildable-libs-utils');
var _projectgraph = require('nx/src/project-graph/project-graph');
var addPackageDependencies = async (workspaceRoot2, projectRoot, projectName, packageJson) => {
let projectGraph;
try {
projectGraph = _projectgraph.readCachedProjectGraph.call(void 0, );
} catch (e2) {
await _projectgraph.createProjectGraphAsync.call(void 0, );
projectGraph = _projectgraph.readCachedProjectGraph.call(void 0, );
}
if (!projectGraph) {
throw new Error(
"The Build process failed because the project graph is not available. Please run the build command again."
);
}
const projectDependencies = _buildablelibsutils.calculateProjectBuildableDependencies.call(void 0,
void 0,
projectGraph,
workspaceRoot2,
projectName,
process.env.NX_TASK_TARGET_TARGET || "build",
process.env.NX_TASK_TARGET_CONFIGURATION || "production",
true
);
const localPackages = [];
for (const project of projectDependencies.dependencies.filter(
(dep) => dep.node.type === "lib" && _optionalChain([dep, 'access', _5 => _5.node, 'access', _6 => _6.data, 'optionalAccess', _7 => _7.root]) !== projectRoot && _optionalChain([dep, 'access', _8 => _8.node, 'access', _9 => _9.data, 'optionalAccess', _10 => _10.root]) !== workspaceRoot2
)) {
const projectNode = project.node;
if (projectNode.data.root) {
const projectPackageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2,
projectNode.data.root,
"package.json"
);
if (_fs.existsSync.call(void 0, projectPackageJsonPath)) {
const projectPackageJsonContent = await _promises.readFile.call(void 0,
projectPackageJsonPath,
"utf8"
);
const projectPackageJson = JSON.parse(projectPackageJsonContent);
if (projectPackageJson.private !== true) {
localPackages.push(projectPackageJson);
}
}
}
}
if (localPackages.length > 0) {
_chunkAYLQUJIFjs.writeTrace.call(void 0,
`\u{1F4E6} Adding local packages to package.json: ${localPackages.map((p) => p.name).join(", ")}`
);
const projectJsonFile = await _promises.readFile.call(void 0,
_chunkAYLQUJIFjs.joinPaths.call(void 0, projectRoot, "project.json"),
"utf8"
);
const projectJson = JSON.parse(projectJsonFile);
const projectName2 = projectJson.name;
const projectConfigurations = _projectgraph.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
if (!_optionalChain([projectConfigurations, 'optionalAccess', _11 => _11.projects, 'optionalAccess', _12 => _12[projectName2]])) {
throw new Error(
"The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project."
);
}
const implicitDependencies = _optionalChain([projectConfigurations, 'access', _13 => _13.projects, 'optionalAccess', _14 => _14[projectName2], 'access', _15 => _15.implicitDependencies, 'optionalAccess', _16 => _16.reduce, 'call', _17 => _17((ret, dep) => {
if (_optionalChain([projectConfigurations, 'access', _18 => _18.projects, 'optionalAccess', _19 => _19[dep]])) {
const depPackageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2,
projectConfigurations.projects[dep].root,
"package.json"
);
if (_fs.existsSync.call(void 0, depPackageJsonPath)) {
const depPackageJsonContent = _fs.readFileSync.call(void 0,
depPackageJsonPath,
"utf8"
);
const depPackageJson = JSON.parse(depPackageJsonContent);
if (depPackageJson.private !== true && !ret.includes(depPackageJson.name)) {
ret.push(depPackageJson.name);
}
}
}
return ret;
}, [])]);
packageJson.dependencies = localPackages.reduce((ret, localPackage) => {
if (!ret[localPackage.name] && !_optionalChain([implicitDependencies, 'optionalAccess', _20 => _20.includes, 'call', _21 => _21(localPackage.name)]) && _optionalChain([packageJson, 'access', _22 => _22.devDependencies, 'optionalAccess', _23 => _23[localPackage.name]]) === void 0) {
ret[localPackage.name] = `^${localPackage.version || "0.0.1"}`;
}
return ret;
}, _nullishCoalesce(packageJson.dependencies, () => ( {})));
packageJson.devDependencies = localPackages.reduce((ret, localPackage) => {
if (!ret[localPackage.name] && _optionalChain([implicitDependencies, 'optionalAccess', _24 => _24.includes, 'call', _25 => _25(localPackage.name)]) && _optionalChain([packageJson, 'access', _26 => _26.dependencies, 'optionalAccess', _27 => _27[localPackage.name]]) === void 0) {
ret[localPackage.name] = `^${localPackage.version || "0.0.1"}`;
}
return ret;
}, _nullishCoalesce(packageJson.devDependencies, () => ( {})));
} else {
_chunkAYLQUJIFjs.writeTrace.call(void 0, "\u{1F4E6} No local packages dependencies to add to package.json");
}
return packageJson;
};
var addWorkspacePackageJsonFields = async (workspaceConfig, projectRoot, sourceRoot, projectName, includeSrc = false, packageJson) => {
const workspaceRoot2 = workspaceConfig.workspaceRoot ? workspaceConfig.workspaceRoot : _chunkAYLQUJIFjs.findWorkspaceRoot.call(void 0, );
const workspacePackageJsonContent = await _promises.readFile.call(void 0,
_chunkAYLQUJIFjs.joinPaths.call(void 0, workspaceRoot2, "package.json"),
"utf8"
);
const workspacePackageJson = JSON.parse(workspacePackageJsonContent);
packageJson.type ??= "module";
packageJson.sideEffects ??= false;
if (includeSrc === true) {
let distSrc = sourceRoot.replace(projectRoot, "");
if (distSrc.startsWith("/")) {
distSrc = distSrc.substring(1);
}
packageJson.source ??= `${_chunkAYLQUJIFjs.joinPaths.call(void 0, distSrc, "index.ts").replaceAll("\\", "/")}`;
}
packageJson.files ??= ["dist/**/*"];
if (includeSrc === true && !packageJson.files.includes("src")) {
packageJson.files.push("src/**/*");
}
packageJson.publishConfig ??= {
access: "public"
};
packageJson.description ??= workspacePackageJson.description;
packageJson.homepage ??= workspacePackageJson.homepage;
packageJson.bugs ??= workspacePackageJson.bugs;
packageJson.license ??= workspacePackageJson.license;
packageJson.keywords ??= workspacePackageJson.keywords;
packageJson.funding ??= workspacePackageJson.funding;
packageJson.author ??= workspacePackageJson.author;
packageJson.maintainers ??= workspacePackageJson.maintainers;
if (!packageJson.maintainers && packageJson.author) {
packageJson.maintainers = [packageJson.author];
}
packageJson.contributors ??= workspacePackageJson.contributors;
if (!packageJson.contributors && packageJson.author) {
packageJson.contributors = [packageJson.author];
}
packageJson.repository ??= workspacePackageJson.repository;
packageJson.repository.directory ??= projectRoot ? projectRoot : _chunkAYLQUJIFjs.joinPaths.call(void 0, "packages", projectName);
return packageJson;
};
var addPackageJsonExport = (file, type = "module", sourceRoot) => {
let entry = file.replaceAll("\\", "/");
if (sourceRoot) {
entry = entry.replace(sourceRoot, "");
}
return {
import: {
types: `./dist/${entry}.d.${type === "module" ? "ts" : "mts"}`,
default: `./dist/${entry}.${type === "module" ? "js" : "mjs"}`
},
require: {
types: `./dist/${entry}.d.${type === "commonjs" ? "ts" : "cts"}`,
default: `./dist/${entry}.${type === "commonjs" ? "js" : "cjs"}`
},
default: {
types: `./dist/${entry}.d.${type !== "fixed" ? "ts" : "mts"}`,
default: `./dist/${entry}.${type !== "fixed" ? "js" : "mjs"}`
}
};
};
// ../build-tools/src/utilities/get-entry-points.ts
// ../build-tools/src/utilities/get-env.ts
var getEnv = (builder, options) => {
return {
STORM_BUILD: builder,
STORM_ORG: options.orgName || DEFAULT_ORGANIZATION,
STORM_NAME: options.name,
STORM_MODE: options.mode || DEFAULT_ENVIRONMENT,
STORM_PLATFORM: options.platform,
STORM_FORMAT: JSON.stringify(options.format),
STORM_TARGET: JSON.stringify(options.target),
...options.env
};
};
// ../build-tools/src/utilities/read-nx-config.ts
// ../build-tools/src/utilities/task-graph.ts
var _createtaskgraph = require('nx/src/tasks-runner/create-task-graph');
// ../esbuild/src/assets.ts
async function copyBuildAssets(context) {
if (!_optionalChain([context, 'access', _28 => _28.result, 'optionalAccess', _29 => _29.errors, 'access', _30 => _30.length]) && _optionalChain([context, 'access', _31 => _31.options, 'access', _32 => _32.assets, 'optionalAccess', _33 => _33.length])) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F4CB} Copying ${context.options.assets.length} asset files to output directory: ${context.outputPath}`,
context.workspaceConfig
);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${context.options.name} asset copy`);
await copyAssets(
context.workspaceConfig,
_nullishCoalesce(context.options.assets, () => ( [])),
context.outputPath,
context.options.projectRoot,
context.sourceRoot,
true,
false
);
stopwatch();
}
return context;
}
// ../esbuild/src/clean.ts
async function cleanDirectories(directory) {
await _promises.rm.call(void 0, directory, { recursive: true, force: true });
}
// ../esbuild/src/context.ts
var _defu = require('defu'); var _defu2 = _interopRequireDefault(_defu);
var _findworkspaceroot = require('nx/src/utils/find-workspace-root');
// ../esbuild/src/config.ts
var DEFAULT_BUILD_OPTIONS = {
platform: "node",
target: "node22",
format: "esm",
mode: "production",
generatePackageJson: true,
includeSrc: false,
keepNames: true,
metafile: false,
treeshake: true,
splitting: true,
shims: false,
watch: false,
bundle: true,
distDir: "dist",
loader: {
".aac": "file",
".css": "file",
".eot": "file",
".flac": "file",
".gif": "file",
".jpeg": "file",
".jpg": "file",
".mp3": "file",
".mp4": "file",
".ogg": "file",
".otf": "file",
".png": "file",
".svg": "file",
".ttf": "file",
".wav": "file",
".webm": "file",
".webp": "file",
".woff": "file",
".woff2": "file"
},
banner: {
js: DEFAULT_JS_BANNER,
css: DEFAULT_CSS_BANNER
}
};
// ../esbuild/src/context.ts
async function resolveContext(userOptions) {
const projectRoot = userOptions.projectRoot;
const workspaceRoot2 = _findworkspaceroot.findWorkspaceRoot.call(void 0, projectRoot);
if (!workspaceRoot2) {
throw new Error("Cannot find Nx workspace root");
}
const workspaceConfig = await _chunkAYLQUJIFjs.getWorkspaceConfig.call(void 0, true, {
workspaceRoot: workspaceRoot2.dir
});
_chunkAYLQUJIFjs.writeDebug.call(void 0, " \u2699\uFE0F Resolving build options", workspaceConfig);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "Build options resolution");
const projectGraph = await _devkit.createProjectGraphAsync.call(void 0, {
exitOnError: true
});
const projectJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2.dir,
projectRoot,
"project.json"
);
if (!_fs.existsSync.call(void 0, projectJsonPath)) {
throw new Error("Cannot find project.json configuration");
}
const projectJsonFile = await _promises2.default.readFile(projectJsonPath, "utf8");
const projectJson = JSON.parse(projectJsonFile);
const projectName = projectJson.name || userOptions.name;
const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
if (!_optionalChain([projectConfigurations, 'optionalAccess', _34 => _34.projects, 'optionalAccess', _35 => _35[projectName]])) {
throw new Error(
"The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project."
);
}
const options = _defu2.default.call(void 0, userOptions, DEFAULT_BUILD_OPTIONS);
options.name ??= projectName;
const packageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2.dir,
options.projectRoot,
"package.json"
);
if (!_fs.existsSync.call(void 0, packageJsonPath)) {
throw new Error("Cannot find package.json configuration");
}
const env = getEnv("esbuild", options);
const define = _defu2.default.call(void 0, _nullishCoalesce(options.define, () => ( {})), _nullishCoalesce(env, () => ( {})));
const resolvedOptions = {
...options,
tsconfig: userOptions.tsconfig === null ? void 0 : userOptions.tsconfig ? userOptions.tsconfig : _chunkAYLQUJIFjs.joinPaths.call(void 0, workspaceRoot2.dir, projectRoot, "tsconfig.json"),
metafile: userOptions.mode === "development",
clean: false,
env,
define: {
STORM_FORMAT: JSON.stringify(options.format),
...Object.keys(define).filter((key) => define[key] !== void 0).reduce((res, key) => {
const value = JSON.stringify(define[key]);
const safeKey = key.replaceAll("(", "").replaceAll(")", "");
return {
...res,
[`process.env.${safeKey}`]: value,
[`import.meta.env.${safeKey}`]: value
};
}, {})
}
};
stopwatch();
const context = {
options: resolvedOptions,
clean: userOptions.clean !== false,
workspaceConfig,
projectConfigurations,
projectName,
projectGraph,
sourceRoot: resolvedOptions.sourceRoot || projectJson.sourceRoot || _chunkAYLQUJIFjs.joinPaths.call(void 0, resolvedOptions.projectRoot, "src"),
outputPath: resolvedOptions.outputPath || _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceConfig.workspaceRoot,
"dist",
resolvedOptions.projectRoot
),
minify: resolvedOptions.minify || resolvedOptions.mode === "production"
};
context.options.esbuildPlugins = [..._nullishCoalesce(context.options.esbuildPlugins, () => ( []))];
if (context.options.verbose) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u2699\uFE0F Build options resolved:
${_chunkAYLQUJIFjs.formatLogMessage.call(void 0, context.options)}`,
workspaceConfig
);
}
return context;
}
// ../esbuild/src/package-json.ts
async function generatePackageJson(context) {
if (context.options.generatePackageJson !== false && _fs.existsSync.call(void 0, _chunkAYLQUJIFjs.joinPaths.call(void 0, context.options.projectRoot, "package.json"))) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, " \u270D\uFE0F Writing package.json file", context.workspaceConfig);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "Write package.json file");
const packageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
context.options.projectRoot,
"project.json"
);
if (!_fs.existsSync.call(void 0, packageJsonPath)) {
throw new Error("Cannot find package.json configuration");
}
const packageJsonFile = await _promises2.default.readFile(
_chunkAYLQUJIFjs.joinPaths.call(void 0,
context.workspaceConfig.workspaceRoot,
context.options.projectRoot,
"package.json"
),
"utf8"
);
let packageJson = JSON.parse(packageJsonFile);
if (!packageJson) {
throw new Error("Cannot find package.json configuration file");
}
packageJson = await addPackageDependencies(
context.workspaceConfig.workspaceRoot,
context.options.projectRoot,
context.projectName,
packageJson
);
packageJson = await addWorkspacePackageJsonFields(
context.workspaceConfig,
context.options.projectRoot,
context.sourceRoot,
context.projectName,
false,
packageJson
);
if (context.options.entry) {
packageJson.exports ??= {};
packageJson.exports["./package.json"] ??= "./package.json";
const entryPoints = Array.isArray(context.options.entry) ? context.options.entry : Object.keys(context.options.entry);
if (entryPoints.length > 0) {
const defaultEntry = entryPoints.includes("index") ? `.${context.options.distDir ? `/${context.options.distDir}` : ""}/index` : `.${context.options.distDir ? `/${context.options.distDir}` : ""}/${entryPoints[0]}`;
const isEsm = Array.isArray(context.options.format) ? context.options.format.includes("esm") : context.options.format === "esm";
const isCjs = Array.isArray(context.options.format) ? context.options.format.includes("cjs") : context.options.format === "cjs";
const isDts = context.options.dts || context.options.experimentalDts;
packageJson.exports["."] ??= `${defaultEntry}.${isEsm ? "mjs" : isCjs ? "cjs" : "js"}`;
for (const entryPoint of entryPoints) {
packageJson.exports[`./${entryPoint}`] ??= {};
if (isEsm) {
if (isDts) {
packageJson.exports[`./${entryPoint}`].import = {
types: `./dist/${entryPoint}.d.mts`,
default: `./dist/${entryPoint}.mjs`
};
} else {
packageJson.exports[`./${entryPoint}`].import = `./dist/${entryPoint}.mjs`;
}
if (isDts) {
packageJson.exports[`./${entryPoint}`].default = {
types: `./dist/${entryPoint}.d.mts`,
default: `./dist/${entryPoint}.mjs`
};
} else {
packageJson.exports[`./${entryPoint}`].default = `./dist/${entryPoint}.mjs`;
}
}
if (isCjs) {
if (isDts) {
packageJson.exports[`./${entryPoint}`].require = {
types: `./dist/${entryPoint}.d.cts`,
default: `./dist/${entryPoint}.cjs`
};
} else {
packageJson.exports[`./${entryPoint}`].require = `./dist/${entryPoint}.cjs`;
}
if (!isEsm) {
if (isDts) {
packageJson.exports[`./${entryPoint}`].default = {
types: `./dist/${entryPoint}.d.cts`,
default: `./dist/${entryPoint}.cjs`
};
} else {
packageJson.exports[`./${entryPoint}`].default = `./dist/${entryPoint}.cjs`;
}
}
}
if (!isEsm && !isCjs) {
if (isDts) {
packageJson.exports[`./${entryPoint}`].default = {
types: `./dist/${entryPoint}.d.ts`,
default: `./dist/${entryPoint}.js`
};
} else {
packageJson.exports[`./${entryPoint}`].default = `./dist/${entryPoint}.js`;
}
}
}
if (isEsm) {
packageJson.module = `${defaultEntry}.mjs`;
} else {
packageJson.main = `${defaultEntry}.cjs`;
}
if (isDts) {
packageJson.types = `${defaultEntry}.d.${isEsm ? "mts" : isCjs ? "cts" : "ts"}`;
}
packageJson.exports = Object.keys(packageJson.exports).reduce(
(ret, key) => {
if (key.endsWith("/index") && !ret[key.replace("/index", "")]) {
ret[key.replace("/index", "")] = packageJson.exports[key];
}
return ret;
},
packageJson.exports
);
}
}
await _devkit.writeJsonFile.call(void 0,
_chunkAYLQUJIFjs.joinPaths.call(void 0, context.outputPath, "package.json"),
packageJson
);
stopwatch();
}
return context;
}
// ../tsup/src/index.ts
var _tsup = require('tsup');
async function build(options) {
if (!options.silent) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F680} Running ${options.name || "tsup"} build`,
options.workspaceConfig
);
}
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${options.name || "tsup"} build`);
await _tsup.build.call(void 0, options);
if (!options.silent) {
stopwatch();
}
}
// ../esbuild/src/tsup.ts
async function executeTsup(context) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F680} Running ${context.options.name} build`,
context.workspaceConfig
);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${context.options.name} build`);
await build({
...context.options,
outDir: context.options.distDir ? _chunkAYLQUJIFjs.joinPaths.call(void 0, context.outputPath, context.options.distDir) : context.outputPath,
workspaceConfig: context.workspaceConfig
});
stopwatch();
return context;
}
// ../esbuild/src/build.ts
async function reportResults(context) {
if (_optionalChain([context, 'access', _36 => _36.result, 'optionalAccess', _37 => _37.errors, 'access', _38 => _38.length]) === 0) {
if (context.result.warnings.length > 0) {
_chunkAYLQUJIFjs.writeWarning.call(void 0,
` \u{1F6A7} The following warnings occurred during the build: ${context.result.warnings.map((warning) => warning.text).join("\n")}`,
context.workspaceConfig
);
}
_chunkAYLQUJIFjs.writeSuccess.call(void 0,
` \u{1F4E6} The ${context.options.name} build completed successfully`,
context.workspaceConfig
);
} else if (_optionalChain([context, 'access', _39 => _39.result, 'optionalAccess', _40 => _40.errors]) && _optionalChain([context, 'access', _41 => _41.result, 'optionalAccess', _42 => _42.errors, 'access', _43 => _43.length]) > 0) {
_chunkAYLQUJIFjs.writeError.call(void 0,
` \u274C The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`,
context.workspaceConfig
);
throw new Error(
`The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`
);
}
}
async function cleanOutputPath(context) {
if (context.clean !== false && context.outputPath) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F9F9} Cleaning ${context.options.name} output path: ${context.outputPath}`,
context.workspaceConfig
);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${context.options.name} output clean`);
await cleanDirectories(context.outputPath);
stopwatch();
}
return context;
}
async function build2(options) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, ` \u26A1 Executing Storm ESBuild pipeline`);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "ESBuild pipeline");
try {
const opts = Array.isArray(options) ? options : [options];
if (opts.length === 0) {
throw new Error("No build options were provided");
}
const context = await resolveContext(options);
await cleanOutputPath(context);
await Promise.all([
// dependencyCheck(context.options),
generatePackageJson(context),
copyBuildAssets(context),
executeTsup(context)
]);
await reportResults(context);
_chunkAYLQUJIFjs.writeSuccess.call(void 0, " \u{1F3C1} ESBuild pipeline build completed successfully");
} catch (error) {
_chunkAYLQUJIFjs.writeFatal.call(void 0,
"Fatal errors that the build process could not recover from have occured. The build process has been terminated."
);
throw error;
} finally {
stopwatch();
}
}
// ../workspace-tools/src/executors/esbuild/executor.ts
async function esbuildExecutorFn(options, context, config) {
_chunkAYLQUJIFjs.writeInfo.call(void 0, "\u{1F4E6} Running Storm ESBuild executor on the workspace", config);
if (!_optionalChain([context, 'access', _44 => _44.projectsConfigurations, 'optionalAccess', _45 => _45.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _46 => _46.projectsConfigurations, 'access', _47 => _47.projects, 'access', _48 => _48[context.projectName], 'optionalAccess', _49 => _49.root])) {
throw new Error(
"The Build process failed because the context is not valid. Please run this command from a workspace."
);
}
await build2({
...options,
projectRoot: (
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
_optionalChain([context, 'access', _50 => _50.projectsConfigurations, 'access', _51 => _51.projects, 'optionalAccess', _52 => _52[context.projectName], 'access', _53 => _53.root])
),
name: context.projectName,
sourceRoot: _optionalChain([context, 'access', _54 => _54.projectsConfigurations, 'access', _55 => _55.projects, 'optionalAccess', _56 => _56[context.projectName], 'optionalAccess', _57 => _57.sourceRoot]),
format: options.format,
platform: options.platform
});
return {
success: true
};
}
var executor_default6 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Storm ESBuild build",
esbuildExecutorFn,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: async (options) => {
options.entry ??= ["src/index.ts"];
options.outputPath ??= "dist/{projectRoot}";
options.tsconfig ??= "{projectRoot}/tsconfig.json";
return options;
}
}
}
);
// ../workspace-tools/src/executors/napi/executor.ts
var _jiti = require('jiti');
var _fileutils = require('nx/src/utils/fileutils');
async function napiExecutor(options, context, config) {
const jiti = _jiti.createJiti.call(void 0, config.workspaceRoot, {
fsCache: config.skipCache ? false : _chunkAYLQUJIFjs.joinPaths.call(void 0,
config.workspaceRoot,
config.directories.cache || "node_modules/.cache/storm",
"jiti"
),
interopDefault: true
});
const { NapiCli } = await jiti.import(
jiti.esmResolve("@napi-rs/cli")
);
if (!_optionalChain([context, 'access', _58 => _58.projectGraph, 'optionalAccess', _59 => _59.nodes, 'access', _60 => _60[_nullishCoalesce(context.projectName, () => ( ""))]])) {
throw new Error(
"The Napi Build process failed because the project could not be found in the project graph. Please run this command from a workspace root directory."
);
}
const projectRoot = _optionalChain([context, 'access', _61 => _61.projectGraph, 'optionalAccess', _62 => _62.nodes, 'access', _63 => _63[_nullishCoalesce(context.projectName, () => ( ""))], 'access', _64 => _64.data, 'access', _65 => _65.root]);
const packageJson = _chunkAYLQUJIFjs.joinPaths.call(void 0, _nullishCoalesce(projectRoot, () => ( ".")), "package.json");
if (!_fileutils.fileExists.call(void 0, packageJson)) {
throw new Error(`Could not find package.json at ${packageJson}`);
}
const napi = new NapiCli();
const normalizedOptions = { ...options };
const metadata = cargoMetadata();
normalizedOptions.targetDir = options.targetDir || _optionalChain([metadata, 'optionalAccess', _66 => _66.target_directory]) || _chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, "dist", "target");
normalizedOptions.outputDir = options.outputPath;
normalizedOptions.packageJsonPath = options.packageJsonPath || packageJson;
if (options.cwd) {
normalizedOptions.cwd = _chunkAYLQUJIFjs.correctPaths.call(void 0, options.cwd);
} else {
normalizedOptions.cwd = _chunkAYLQUJIFjs.correctPaths.call(void 0, projectRoot);
const absoluteProjectRoot = _chunkAYLQUJIFjs.joinPaths.call(void 0,
config.workspaceRoot,
projectRoot || "."
);
if (normalizedOptions.outputDir) {
normalizedOptions.outputDir = _chunkAYLQUJIFjs.relative.call(void 0,
absoluteProjectRoot,
_chunkAYLQUJIFjs.correctPaths.call(void 0,
_chunkAYLQUJIFjs.isAbsolute.call(void 0, normalizedOptions.outputDir) ? normalizedOptions.outputDir : _chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, normalizedOptions.outputDir)
)
);
}
if (normalizedOptions.packageJsonPath) {
normalizedOptions.packageJsonPath = _chunkAYLQUJIFjs.relative.call(void 0,
absoluteProjectRoot,
_chunkAYLQUJIFjs.correctPaths.call(void 0,
_chunkAYLQUJIFjs.isAbsolute.call(void 0, normalizedOptions.packageJsonPath) ? normalizedOptions.packageJsonPath : _chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, normalizedOptions.packageJsonPath)
)
);
}
if (normalizedOptions.configPath) {
normalizedOptions.configPath = _chunkAYLQUJIFjs.relative.call(void 0,
absoluteProjectRoot,
_chunkAYLQUJIFjs.correctPaths.call(void 0,
_chunkAYLQUJIFjs.isAbsolute.call(void 0, normalizedOptions.configPath) ? normalizedOptions.configPath : _chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, normalizedOptions.configPath)
)
);
}
if (normalizedOptions.manifestPath) {
normalizedOptions.manifestPath = _chunkAYLQUJIFjs.relative.call(void 0,
absoluteProjectRoot,
_chunkAYLQUJIFjs.correctPaths.call(void 0,
_chunkAYLQUJIFjs.isAbsolute.call(void 0, normalizedOptions.manifestPath) ? normalizedOptions.manifestPath : _chunkAYLQUJIFjs.joinPaths.call(void 0, config.workspaceRoot, normalizedOptions.manifestPath)
)
);
}
}
if (process.env.VERCEL) {
return { success: true };
}
const { task } = await napi.build(normalizedOptions);
return { success: true, terminalOutput: await task };
}
var executor_default7 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Napi - Build Bindings",
napiExecutor,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.outputPath ??= "{sourceRoot}";
options.toolchain ??= "stable";
options.dtsCache ??= true;
options.platform ??= true;
options.constEnum ??= false;
options.verbose ??= false;
options.jsBinding ??= "binding.js";
options.dts ??= "binding.d.ts";
return options;
}
}
}
);
// ../npm-tools/src/helpers/get-registry.ts
// ../pnpm-tools/src/helpers/replace-deps-aliases.ts
var _prettier = require('prettier');
// ../npm-tools/src/helpers/get-version.ts
// ../pnpm-tools/src/helpers/catalog.ts
var _semver = require('semver');
// ../pnpm-tools/src/helpers/pnpm-workspace.ts
var _yaml = require('yaml');
// ../workspace-tools/src/executors/npm-publish/executor.ts
// ../workspace-tools/src/utils/package-helpers.ts
// ../workspace-tools/src/utils/project-tags.ts
var ProjectTagConstants = {
Language: {
TAG_ID: "language",
TYPESCRIPT: "typescript",
RUST: "rust"
},
ProjectType: {
TAG_ID: "type",
LIBRARY: "library",
APPLICATION: "application"
},
ProjectLinking: {
TAG_ID: "project-linking",
REFERENCE: "reference",
ALIAS: "alias"
},
DistStyle: {
TAG_ID: "dist-style",
NORMAL: "normal",
CLEAN: "clean"
},
Provider: {
TAG_ID: "provider"
},
Platform: {
TAG_ID: "platform",
NODE: "node",
BROWSER: "browser",
NEUTRAL: "neutral",
WORKER: "worker"
},
Registry: {
TAG_ID: "registry",
CARGO: "cargo",
NPM: "npm",
CONTAINER: "container",
CYCLONE: "cyclone"
},
Plugin: {
TAG_ID: "plugin"
},
Builder: {
TAG_ID: "builder",
TSC: "tsc",
TSUP: "tsup",
TSDOWN: "tsdown",
VITE: "vite",
ROLLDOWN: "rolldown"
}
};
var formatProjectTag = (variant, value) => {
return `${variant}:${value}`;
};
var hasProjectTag = (project, variant) => {
project.tags = _nullishCoalesce(project.tags, () => ( []));
const prefix = formatProjectTag(variant, "");
return project.tags.some(
(tag) => tag.startsWith(prefix) && tag.length > prefix.length
);
};
var addProjectTag = (project, variant, value, options = {
overwrite: false
}) => {
project.tags = _nullishCoalesce(project.tags, () => ( []));
if (options.overwrite || !hasProjectTag(project, variant)) {
project.tags = project.tags.filter(
(tag) => !tag.startsWith(formatProjectTag(variant, ""))
);
project.tags.push(formatProjectTag(variant, value));
}
};
// ../workspace-tools/src/executors/npm-publish/executor.ts
var LARGE_BUFFER2 = 1024 * 1e6;
// ../workspace-tools/src/executors/size-limit/executor.ts
var _esbuild = require('@size-limit/esbuild'); var _esbuild2 = _interopRequireDefault(_esbuild);
var _esbuildwhy = require('@size-limit/esbuild-why'); var _esbuildwhy2 = _interopRequireDefault(_esbuildwhy);
var _file = require('@size-limit/file'); var _file2 = _interopRequireDefault(_file);
var _sizelimit = require('size-limit'); var _sizelimit2 = _interopRequireDefault(_sizelimit);
async function sizeLimitExecutorFn(options, context, config) {
if (!_optionalChain([context, 'optionalAccess', _67 => _67.projectName]) || !_optionalChain([context, 'access', _68 => _68.projectsConfigurations, 'optionalAccess', _69 => _69.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
throw new Error(
"The Size-Limit process failed because the context is not valid. Please run this command from a workspace."
);
}
_chunkAYLQUJIFjs.writeInfo.call(void 0, `\u{1F4CF} Running Size-Limit on ${context.projectName}`, config);
_sizelimit2.default.call(void 0, [_file2.default, _esbuild2.default, _esbuildwhy2.default], {
checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access', _70 => _70.projectsConfigurations, 'access', _71 => _71.projects, 'access', _72 => _72[context.projectName], 'optionalAccess', _73 => _73.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0,
_nullishCoalesce(_optionalChain([context, 'access', _74 => _74.projectsConfigurations, 'access', _75 => _75.projects, 'access', _76 => _76[context.projectName], 'optionalAccess', _77 => _77.root]), () => ( "./")),
"src"
)))
}).then((result) => {
_chunkAYLQUJIFjs.writeInfo.call(void 0,
`\u{1F4CF} ${context.projectName} Size-Limit result: ${JSON.stringify(result)}`,
config
);
});
return {
success: true
};
}
var executor_default8 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Size-Limit Performance Test Executor",
sizeLimitExecutorFn,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
return options;
}
}
}
);
// ../tsdown/src/build.ts
var _tsdown = require('tsdown');
// ../tsdown/src/clean.ts
async function cleanDirectories2(name = "TSDown", directory, config) {
await _promises.rm.call(void 0, directory, { recursive: true, force: true });
}
// ../tsdown/src/config.ts
function getDefaultOptions(config) {
return {
entry: ["./src/*.ts"],
platform: "node",
target: "esnext",
mode: "production",
dts: true,
unused: {
level: "error",
ignore: ["typescript"]
},
publint: true,
fixedExtension: true,
...config
};
}
function toTSDownFormat(format4) {
if (!format4 || Array.isArray(format4) && format4.length === 0) {
return ["cjs", "es"];
} else if (format4 === "esm") {
return "es";
} else if (Array.isArray(format4)) {
return format4.map((f) => f === "esm" ? "es" : f);
}
return format4;
}
// ../tsdown/src/build.ts
var resolveOptions = async (userOptions) => {
const options = getDefaultOptions(userOptions);
const workspaceRoot2 = _chunkAYLQUJIFjs.findWorkspaceRoot.call(void 0, options.projectRoot);
if (!workspaceRoot2) {
throw new Error("Cannot find Nx workspace root");
}
const workspaceConfig = await _chunkAYLQUJIFjs.getWorkspaceConfig.call(void 0, options.debug === true, {
workspaceRoot: workspaceRoot2
});
_chunkAYLQUJIFjs.writeDebug.call(void 0, " \u2699\uFE0F Resolving build options", workspaceConfig);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "Build options resolution");
const projectGraph = await _devkit.createProjectGraphAsync.call(void 0, {
exitOnError: true
});
const projectJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2,
options.projectRoot,
"project.json"
);
if (!_fs.existsSync.call(void 0, projectJsonPath)) {
throw new Error("Cannot find project.json configuration");
}
const projectJsonFile = await _promises2.default.readFile(projectJsonPath, "utf8");
const projectJson = JSON.parse(projectJsonFile);
const projectName = projectJson.name;
const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
if (!_optionalChain([projectConfigurations, 'optionalAccess', _78 => _78.projects, 'optionalAccess', _79 => _79[projectName]])) {
throw new Error(
"The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project."
);
}
const packageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0,
workspaceRoot2,
options.projectRoot,
"package.json"
);
if (!_fs.existsSync.call(void 0, packageJsonPath)) {
throw new Error("Cannot find package.json configuration");
}
const debug = _nullishCoalesce(options.debug, () => ( (options.mode || workspaceConfig.mode) === "development"));
const sourceRoot = projectJson.sourceRoot || _chunkAYLQUJIFjs.joinPaths.call(void 0, options.projectRoot, "src");
const result = {
name: projectName,
mode: "production",
target: DEFAULT_TARGET,
generatePackageJson: true,
outDir: _chunkAYLQUJIFjs.joinPaths.call(void 0, "dist", options.projectRoot),
minify: !debug,
plugins: [],
assets: [],
dts: true,
shims: true,
silent: !debug,
logLevel: workspaceConfig.logLevel === "success" || workspaceConfig.logLevel === "debug" || workspaceConfig.logLevel === "trace" || workspaceConfig.logLevel === "all" ? "info" : workspaceConfig.logLevel === "fatal" ? "error" : workspaceConfig.logLevel,
sourcemap: debug ? "inline" : false,
clean: false,
fixedExtension: true,
nodeProtocol: true,
tsconfig: _chunkAYLQUJIFjs.joinPaths.call(void 0, options.projectRoot, "tsconfig.json"),
debug,
sourceRoot,
cwd: workspaceConfig.workspaceRoot,
entry: {
["index"]: _chunkAYLQUJIFjs.joinPaths.call(void 0, sourceRoot, "index.ts")
},
workspace: true,
...options,
treeshake: options.treeShaking !== false,
format: toTSDownFormat(options.format),
workspaceConfig,
projectName,
projectGraph,
projectConfigurations
};
result.env = _defu2.default.call(void 0,
options.env,
getEnv("tsdown", result)
);
stopwatch();
return result;
};
async function generatePackageJson2(options) {
if (options.generatePackageJson !== false && _fs.existsSync.call(void 0, _chunkAYLQUJIFjs.joinPaths.call(void 0, options.projectRoot, "package.json"))) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, " \u270D\uFE0F Writing package.json file", options.workspaceConfig);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "Write package.json file");
const packageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0, options.projectRoot, "project.json");
if (!_fs.existsSync.call(void 0, packageJsonPath)) {
throw new Error("Cannot find package.json configuration");
}
const packageJsonFile = await _promises2.default.readFile(
_chunkAYLQUJIFjs.joinPaths.call(void 0,
options.workspaceConfig.workspaceRoot,
options.projectRoot,
"package.json"
),
"utf8"
);
if (!packageJsonFile) {
throw new Error("Cannot find package.json configuration file");
}
let packageJson = JSON.parse(packageJsonFile);
packageJson = await addPackageDependencies(
options.workspaceConfig.workspaceRoot,
options.projectRoot,
options.projectName,
packageJson
);
packageJson = await addWorkspacePackageJsonFields(
options.workspaceConfig,
options.projectRoot,
options.sourceRoot,
options.projectName,
false,
packageJson
);
packageJson.exports ??= {};
packageJson.exports["./package.json"] ??= "./package.json";
packageJson.exports["."] ??= addPackageJsonExport(
"index",
packageJson.type,
options.sourceRoot
);
let entry = [{ in: "./src/index.ts", out: "./src/index.ts" }];
if (options.entry) {
if (Array.isArray(options.entry)) {
entry = options.entry.map(
(entryPoint) => typeof entryPoint === "string" ? { in: entryPoint, out: entryPoint } : entryPoint
);
}
for (const entryPoint of entry) {
const split = entryPoint.out.split(".");
split.pop();
const entry2 = split.join(".").replaceAll("\\", "/");
packageJson.exports[`./${entry2}`] ??= addPackageJsonExport(
entry2,
options.fixedExtension ? "fixed" : packageJson.type,
options.sourceRoot
);
}
}
packageJson.main = !options.fixedExtension && packageJson.type === "commonjs" ? "./dist/index.js" : "./dist/index.cjs";
packageJson.module = !options.fixedExtension && packageJson.type === "module" ? "./dist/index.js" : "./dist/index.mjs";
packageJson.types = `./dist/index.d.${!options.fixedExtension ? "ts" : "mts"}`;
packageJson.exports = Object.keys(packageJson.exports).reduce(
(ret, key) => {
if (key.endsWith("/index") && !ret[key.replace("/index", "")]) {
ret[key.replace("/index", "")] = packageJson.exports[key];
}
return ret;
},
packageJson.exports
);
await _devkit.writeJsonFile.call(void 0, _chunkAYLQUJIFjs.joinPaths.call(void 0, options.outDir, "package.json"), packageJson);
stopwatch();
}
return options;
}
async function executeTSDown(options) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, ` \u{1F680} Running ${options.name} build`, options.workspaceConfig);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${options.name} build`);
await _tsdown.build.call(void 0, {
...options,
entry: options.entry,
config: false
});
stopwatch();
return options;
}
async function copyBuildAssets2(options) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F4CB} Copying asset files to output directory: ${options.outDir}`,
options.workspaceConfig
);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${options.name} asset copy`);
await copyAssets(
options.workspaceConfig,
_nullishCoalesce(options.assets, () => ( [])),
options.outDir,
options.projectRoot,
options.sourceRoot,
true,
false
);
stopwatch();
return options;
}
async function reportResults2(options) {
_chunkAYLQUJIFjs.writeSuccess.call(void 0,
` \u{1F4E6} The ${options.name} build completed successfully`,
options.workspaceConfig
);
}
async function cleanOutputPath2(options) {
if (options.clean !== false && options.workspaceConfig) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
` \u{1F9F9} Cleaning ${options.name} output path: ${options.workspaceConfig}`,
options.workspaceConfig
);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, `${options.name} output clean`);
await cleanDirectories2(
options.name,
options.outDir,
options.workspaceConfig
);
stopwatch();
}
return options;
}
async function build3(options) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, ` \u26A1 Executing Storm TSDown pipeline`);
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, "TSDown pipeline");
try {
const opts = Array.isArray(options) ? options : [options];
if (opts.length === 0) {
throw new Error("No build options were provided");
}
const resolved = await Promise.all(
opts.map(async (opt) => await resolveOptions(opt))
);
if (resolved.length > 0) {
await cleanOutputPath2(resolved[0]);
await generatePackageJson2(resolved[0]);
await Promise.all(
resolved.map(async (opt) => {
await executeTSDown(opt);
await copyBuildAssets2(opt);
await reportResults2(opt);
})
);
} else {
_chunkAYLQUJIFjs.writeWarning.call(void 0,
" \u{1F6A7} No options were passed to TSBuild. Please check the parameters passed to the `build` function."
);
}
_chunkAYLQUJIFjs.writeSuccess.call(void 0, " \u{1F3C1} TSDown pipeline build completed successfully");
} catch (error) {
_chunkAYLQUJIFjs.writeFatal.call(void 0,
"Fatal errors that the build process could not recover from have occured. The build process has been terminated."
);
throw error;
} finally {
stopwatch();
}
}
// ../workspace-tools/src/executors/tsdown/executor.ts
async function tsdownExecutorFn(options, context, config) {
_chunkAYLQUJIFjs.writeInfo.call(void 0, "\u{1F4E6} Running Storm TSDown executor on the workspace", config);
if (!_optionalChain([context, 'access', _80 => _80.projectsConfigurations, 'optionalAccess', _81 => _81.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _82 => _82.projectsConfigurations, 'access', _83 => _83.projects, 'access', _84 => _84[context.projectName], 'optionalAccess', _85 => _85.root])) {
throw new Error(
"The Build process failed because the context is not valid. Please run this command from a workspace."
);
}
await build3({
...options,
projectRoot: (
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
_optionalChain([context, 'access', _86 => _86.projectsConfigurations, 'access', _87 => _87.projects, 'optionalAccess', _88 => _88[context.projectName], 'access', _89 => _89.root])
),
name: context.projectName,
sourceRoot: _optionalChain([context, 'access', _90 => _90.projectsConfigurations, 'access', _91 => _91.projects, 'optionalAccess', _92 => _92[context.projectName], 'optionalAccess', _93 => _93.sourceRoot]),
format: options.format,
platform: options.platform
});
return {
success: true
};
}
var executor_default9 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Storm TSDown build",
tsdownExecutorFn,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: async (options) => {
options.entry ??= ["src/index.ts"];
options.outputPath ??= "dist/{projectRoot}";
options.tsconfig ??= "{projectRoot}/tsconfig.json";
return options;
}
}
}
);
// ../workspace-tools/src/executors/typia/executor.ts
var _fsextra = require('fs-extra');
var _TypiaProgrammerjs = require('typia/lib/programmers/TypiaProgrammer.js');
async function typiaExecutorFn(options, _, config) {
if (options.clean !== false) {
_chunkAYLQUJIFjs.writeInfo.call(void 0, `\u{1F9F9} Cleaning output path: ${options.outputPath}`, config);
_fsextra.removeSync.call(void 0, options.outputPath);
}
await Promise.all(
options.entry.map((entry) => {
_chunkAYLQUJIFjs.writeInfo.call(void 0, `\u{1F680} Running Typia on entry: ${entry}`, config);
return _TypiaProgrammerjs.TypiaProgrammer.build({
input: entry,
output: options.outputPath,
project: options.tsconfig
});
})
);
return {
success: true
};
}
var executor_default10 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"Typia runtime validation generator",
typiaExecutorFn,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: (options) => {
options.entry ??= ["{sourceRoot}/index.ts"];
options.outputPath ??= "{sourceRoot}/__generated__/typia";
options.tsconfig ??= "{projectRoot}/tsconfig.json";
options.clean ??= true;
return options;
}
}
}
);
// ../workspace-tools/src/executors/unbuild/executor.ts
async function unbuildExecutorFn(options, context, config) {
_chunkAYLQUJIFjs.writeInfo.call(void 0, "\u{1F4E6} Running Storm Unbuild executor on the workspace", config);
if (!_optionalChain([context, 'access', _94 => _94.projectsConfigurations, 'optionalAccess', _95 => _95.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
throw new Error(
"The Build process failed because the context is not valid. Please run this command from a workspace root directory."
);
}
if (!context.projectsConfigurations.projects[context.projectName].root) {
throw new Error(
"The Build process failed because the project root is not valid. Please run this command from a workspace root directory."
);
}
if (!context.projectsConfigurations.projects[context.projectName].sourceRoot) {
throw new Error(
"The Build process failed because the project's source root is not valid. Please run this command from a workspace root directory."
);
}
const jiti = _jiti.createJiti.call(void 0, config.workspaceRoot, {
fsCache: config.skipCache ? false : _chunkAYLQUJIFjs.joinPaths.call(void 0,
config.workspaceRoot,
config.directories.cache || "node_modules/.cache/storm",
"jiti"
),
interopDefault: true
});
const stormUnbuild = await jiti.import(
jiti.esmResolve("@storm-software/unbuild/build")
);
await stormUnbuild.build(
_defu.defu.call(void 0,
{
...options,
projectRoot: context.projectsConfigurations.projects[context.projectName].root,
projectName: context.projectName,
sourceRoot: context.projectsConfigurations.projects[context.projectName].sourceRoot,
platform: options.platform
},
{
stubOptions: {
jiti: {
fsCache: config.skipCache ? false : _chunkAYLQUJIFjs.joinPaths.call(void 0,
config.workspaceRoot,
config.directories.cache || "node_modules/.cache/storm",
"jiti"
)
}
},
rollup: {
emitCJS: true,
watch: false,
dts: {
respectExternal: true
},
esbuild: {
target: options.target,
format: "esm",
platform: options.platform,
minify: _nullishCoalesce(options.minify, () => ( !options.debug)),
sourcemap: _nullishCoalesce(options.sourcemap, () => ( options.debug)),
treeShaking: options.treeShaking
}
}
}
)
);
return {
success: true
};
}
var executor_default11 = _chunkAYLQUJIFjs.withRunExecutor.call(void 0,
"TypeScript Unbuild build",
unbuildExecutorFn,
{
skipReadingConfig: false,
hooks: {
applyDefaultOptions: async (options, config) => {
options.debug ??= false;
options.treeShaking ??= true;
options.buildOnly ??= false;
options.platform ??= "neutral";
options.entry ??= ["{sourceRoot}"];
options.tsconfig ??= "{projectRoot}/tsconfig.json";
return options;
}
}
}
);
// ../workspace-tools/src/generators/browser-library/generator.ts
// ../workspace-tools/src/base/base-generator.ts
var withRunGenerator = (name, generatorFn, generatorOptions = {
skipReadingConfig: false
}) => async (tree, _options) => {
const stopwatch = _chunkAYLQUJIFjs.getStopwatch.call(void 0, name);
let options = _options;
let config;
try {
_chunkAYLQUJIFjs.writeInfo.call(void 0, `\u26A1 Running the ${name} generator...
`, config);
const workspaceRoot2 = _chunkAYLQUJIFjs.findWorkspaceRoot.call(void 0, );
if (!generatorOptions.skipReadingConfig) {
_chunkAYLQUJIFjs.writeDebug.call(void 0,
`Loading the Storm Config from environment variables and storm.config.js file...
- workspaceRoot: ${workspaceRoot2}`,
config
);
config = await _chunkAYLQUJIFjs.getConfig.call(void 0, workspaceRoot2);
}
if (_optionalChain([generatorOptions, 'optionalAccess', _96 => _96.hooks, 'optionalAccess', _97 => _97.applyDefaultOptions])) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Running the applyDefaultOptions hook...", config);
options = await Promise.resolve(
generatorOptions.hooks.applyDefaultOptions(options, config)
);
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Completed the applyDefaultOptions hook", config);
}
_chunkAYLQUJIFjs.writeTrace.call(void 0,
`Generator schema options \u2699\uFE0F
${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${JSON.stringify(options[key])}`).join("\n")}`,
config
);
const tokenized = await _chunkAYLQUJIFjs.applyWorkspaceTokens.call(void 0,
options,
{ workspaceRoot: tree.root, config },
_chunkAYLQUJIFjs.applyWorkspaceBaseTokens
);
if (_optionalChain([generatorOptions, 'optionalAccess', _98 => _98.hooks, 'optionalAccess', _99 => _99.preProcess])) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Running the preProcess hook...", config);
await Promise.resolve(
generatorOptions.hooks.preProcess(tokenized, config)
);
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Completed the preProcess hook", config);
}
const result = await Promise.resolve(
generatorFn(tree, tokenized, config)
);
if (result) {
if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _100 => _100.error, 'optionalAccess', _101 => _101.message]) && typeof _optionalChain([result, 'optionalAccess', _102 => _102.error, 'optionalAccess', _103 => _103.message]) === "string" && _optionalChain([result, 'optionalAccess', _104 => _104.error, 'optionalAccess', _105 => _105.name]) && typeof _optionalChain([result, 'optionalAccess', _106 => _106.error, 'optionalAccess', _107 => _107.name]) === "string") {
throw new Error(`The ${name} generator failed to run`, {
cause: _optionalChain([result, 'optionalAccess', _108 => _108.error])
});
} else if (result.success && result.data) {
return result;
}
}
if (_optionalChain([generatorOptions, 'optionalAccess', _109 => _109.hooks, 'optionalAccess', _110 => _110.postProcess])) {
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Running the postProcess hook...", config);
await Promise.resolve(generatorOptions.hooks.postProcess(config));
_chunkAYLQUJIFjs.writeDebug.call(void 0, "Completed the postProcess hook", config);
}
return () => {
_chunkAYLQUJIFjs.writeSuccess.call(void 0, `Completed running the ${name} generator!
`, config);
};
} catch (error) {
return () => {
_chunkAYLQUJIFjs.writeFatal.call(void 0,
"A fatal error occurred while running the generator - the process was forced to terminate",
config
);
_chunkAYLQUJIFjs.writeError.call(void 0,
`An exception was thrown in the generator's process
- Details: ${error.message}
- Stacktrace: ${error.stack}`,
config
);
};
} finally {
stopwatch();
}
};
// ../workspace-tools/src/base/typescript-library-generator.ts
var _projectnameandrootutils = require('@nx/devkit/src/generators/project-name-and-root-utils');
var _js = require('@nx/js');
var _init = require('@nx/js/src/generators/init/init'); var _init2 = _interopRequireDefault(_init);
var _generator = require('@nx/js/src/generators/setup-verdaccio/generator'); var _generator2 = _interopRequireDefault(_generator);
// ../workspace-tools/src/utils/versions.ts
var typesNodeVersion = "20.9.0";
var nxVersion = "^18.0.4";
var nodeVersion = "20.11.0";
var pnpmVersion = "8.10.2";
// ../workspace-tools/src/base/typescript-library-generator.ts
async function typeScriptLibraryGeneratorFn(tree, options, config) {
const normalized = await normalizeOptions(tree, { ...options });
const tasks = [];
tasks.push(
await _init2.default.call(void 0, tree, {
...normalized,
tsConfigName: normalized.rootProject ? "tsconfig.json" : "tsconfig.base.json"
})
);
tasks.push(
_devkit.addDependenciesToPackageJson.call(void 0,
tree,
{},
{
"@storm-software/workspace-tools": "latest",
"@storm-software/testing-tools": "latest",
..._nullishCoalesce(options.devDependencies, () => ( {}))
}
)
);
if (normalized.publishable) {
tasks.push(await _generator2.default.call(void 0, tree, { ...normalized, skipFormat: true }));
}
const projectConfig = {
root: normalized.directory,
projectType: "library",
sourceRoot: _chunkAYLQUJIFjs.joinPaths.call(void 0, _nullishCoalesce(normalized.directory, () => ( "")), "src"),
targets: {
build: {
executor: options.buildExecutor,
outputs: ["{options.outputPath}"],
options: {
entry: [_chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "src", "index.ts")],
outputPath: getOutputPath(normalized),
tsconfig: _chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "tsconfig.json"),
project: _chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "package.json"),
defaultConfiguration: "production",
platform: "neutral",
assets: [
{
input: normalized.projectRoot,
glob: "*.md",
output: "/"
},
{
input: "",
glob: "LICENSE",
output: "/"
}
]
},
configurations: {
production: {
debug: false,
verbose: false
},
development: {
debug: true,
verbose: true
}
}
}
}
};
if (options.platform) {
projectConfig.targets.build.options.platform = options.platform === "worker" ? "node" : options.platform;
}
addProjectTag(
projectConfig,
ProjectTagConstants.Platform.TAG_ID,
options.platform === "node" ? ProjectTagConstants.Platform.NODE : options.platform === "worker" ? ProjectTagConstants.Platform.WORKER : options.platform === "browser" ? ProjectTagConstants.Platform.BROWSER : ProjectTagConstants.Platform.NEUTRAL,
{ overwrite: false }
);
createProjectTsConfigJson(tree, normalized);
_devkit.addProjectConfiguration.call(void 0, tree, normalized.name, projectConfig);
let repository = {
type: "github",
url: _optionalChain([config, 'optionalAccess', _111 => _111.repository]) || `https://github.com/${(typeof _optionalChain([config, 'optionalAccess', _112 => _112.organization]) === "string" ? _optionalChain([config, 'optionalAccess', _113 => _113.organization]) : _optionalChain([config, 'optionalAccess', _114 => _114.organization, 'optionalAccess', _115 => _115.name])) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _116 => _116.namespace]) || _optionalChain([config, 'optionalAccess', _117 => _117.name]) || "repository"}.git`
};
let description = options.description || "A package developed by Storm Software used to create modern, scalable web applications.";
if (tree.exists("package.json")) {
const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
if (_optionalChain([packageJson, 'optionalAccess', _118 => _118.repository])) {
repository = packageJson.repository;
}
if (_optionalChain([packageJson, 'optionalAccess', _119 => _119.description])) {
description = packageJson.description;
}
}
if (!normalized.importPath) {
normalized.importPath = normalized.name;
}
const packageJsonPath = _chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "package.json");
if (tree.exists(packageJsonPath)) {
_devkit.updateJson.call(void 0, tree, packageJsonPath, (json) => {
if (!normalized.importPath) {
normalized.importPath = normalized.name;
}
json.name = normalized.importPath;
json.version = "0.0.1";
if (json.private && (normalized.publishable || normalized.rootProject)) {
json.private = void 0;
}
return {
...json,
version: "0.0.1",
description,
repository: {
...repository,
directory: normalized.projectRoot
},
type: "module",
dependencies: {
...json.dependencies
},
publishConfig: {
access: "public"
}
};
});
} else {
_devkit.writeJson.call(void 0, tree, packageJsonPath, {
name: normalized.importPath,
version: "0.0.1",
description,
repository: {
...repository,
directory: normalized.projectRoot
},
private: !normalized.publishable || normalized.rootProject,
type: "module",
publishConfig: {
access: "public"
}
});
}
if (tree.exists("package.json") && normalized.importPath) {
_devkit.updateJson.call(void 0, tree, "package.json", (json) => ({
...json,
pnpm: {
..._optionalChain([json, 'optionalAccess', _120 => _120.pnpm]),
overrides: {
..._optionalChain([json, 'optionalAccess', _121 => _121.pnpm, 'optionalAccess', _122 => _122.overrides]),
[_nullishCoalesce(normalized.importPath, () => ( ""))]: "workspace:*"
}
}
}));
}
_js.addTsConfigPath.call(void 0, tree, normalized.importPath, [
_chunkAYLQUJIFjs.joinPaths.call(void 0,
normalized.projectRoot,
"./src",
`index.${normalized.js ? "js" : "ts"}`
)
]);
_js.addTsConfigPath.call(void 0, tree, _chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.importPath, "/*"), [
_chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "./src", "/*")
]);
if (tree.exists("package.json")) {
const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
if (_optionalChain([packageJson, 'optionalAccess', _123 => _123.repository])) {
repository = packageJson.repository;
}
if (_optionalChain([packageJson, 'optionalAccess', _124 => _124.description])) {
description = packageJson.description;
}
}
const tsconfigPath = _chunkAYLQUJIFjs.joinPaths.call(void 0, normalized.projectRoot, "tsconfig.json");
if (tree.exists(tsconfigPath)) {
_devkit.updateJson.call(void 0, tree, tsconfigPath, (json) => {
json.composite ??= true;
return json;
});
} else {
_devkit.writeJson.call(void 0, tree, tsconfigPath, {
extends: `${_devkit.offsetFromRoot.call(void 0, normalized.projectRoot)}tsconfig.base.json`,
composite: true,
compilerOptions: {
outDir: `${_devkit.offsetFromRoot.call(void 0, normalized.projectRoot)}dist/out-tsc`
},
files: [],
include: ["src/**/*.ts", "src/**/*.js"],
exclude: ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
});
}
await _devkit.formatFiles.call(void 0, tree);
return null;
}
function getOutputPath(options) {
const parts = ["dist"];
if (options.projectRoot === ".") {
parts.push(options.name);
} else {
parts.push(options.projectRoot);
}
return _chunkAYLQUJIFjs.joinPaths.call(void 0, ...parts);
}
function createProjectTsConfigJson(tree, options) {
const tsconfig = {
extends: options.rootProject ? void 0 : _js.getRelativePathToRootTsConfig.call(void 0, tree, options.projectRoot),
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _125 => _125.tsconfigOptions]), () => ( {})),
compilerOptions: {
...options.rootProject ? _js.tsConfigBaseOptions : {},
outDir: _chunkAYLQUJIFjs.joinPaths.call(void 0, _devkit.offsetFromRoot.call(void 0, options.projectRoot), "dist/out-tsc"),
noEmit: true,
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _126 => _126.tsconfigOptions, 'optionalAccess', _127 => _127.compilerOptions]), () => ( {}))
},
files: [..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _128 => _128.tsconfigOptions, 'optionalAccess', _129 => _129.files]), () => ( []))],
include: [
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _130 => _130.tsconfigOptions, 'optionalAccess', _131 => _131.include]), () => ( [])),
"src/**/*.ts",
"src/**/*.js",
"bin/**/*"
],
exclude: [
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _132 => _132.tsconfigOptions, 'optionalAccess', _133 => _133.exclude]), () => ( [])),
"jest.config.ts",
"src/**/*.spec.ts",
"src/**/*.test.ts"
]
};
_devkit.writeJson.call(void 0, tree, _chunkAYLQUJIFjs.joinPaths.call(void 0, options.projectRoot, "tsconfig.json"), tsconfig);
}
async function normalizeOptions(tree, options, config) {
let importPath = options.importPath;
if (!importPath && _optionalChain([config, 'optionalAccess', _134 => _134.namespace])) {
importPath = `@${_optionalChain([config, 'optionalAccess', _135 => _135.namespace])}/${options.name}`;
}
if (options.publishable) {
if (!importPath) {
throw new Error(
`For publishable libs you have to provide a proper "--importPath" which needs to be a valid npm package name (e.g. my-awesome-lib or @myorg/my-lib)`
);
}
}
let bundler = "tsc";
if (options.publishable === false && options.buildable === false) {
bundler = "none";
}
const { Linter } = _devkit.ensurePackage.call(void 0, "@nx/eslint", nxVersion);
const rootProject = false;
const {
projectName,
names: projectNames,
projectRoot,
importPath: normalizedImportPath
} = await _projectnameandrootutils.determineProjectNameAndRootOptions.call(void 0, tree, {
name: options.name,
projectType: "library",
directory: options.directory,
importPath,
rootProject
});
const normalized = _devkit.names.call(void 0, projectNames.projectFileName);
const fileName = normalized.fileName;
return {
js: false,
pascalCaseFiles: false,
skipFormat: false,
skipTsConfig: false,
includeBabelRc: false,
unitTestRunner: "jest",
linter: Linter.EsLint,
testEnvironment: "node",
config: "project",
compiler: "tsc",
bundler,
skipTypeCheck: false,
minimal: false,
hasPlugin: false,
isUsingTsSolutionConfig: false,
projectPackageManagerWorkspaceState: "included",
...options,
fileName,
name: projectName,
projectNames,
projectRoot,
parsedTags: options.tags ? options.tags.split(",").map((s) => s.trim()) : [],
importPath: normalizedImportPath,
rootProject,
shouldUseSwcJest: false
};
}
// ../workspace-tools/src/generators/browser-library/generator.ts
async function browserLibraryGeneratorFn(tree, schema, config) {
const filesDir = _chunkAYLQUJIFjs.joinPaths.call(void 0,
__dirname,
"src",
"generators",
"browser-library",
"files"
);
const tsLibraryGeneratorOptions = {
buildExecutor: "@storm-software/workspace-tools:unbuild",
platform: "browser",
devDependencies: {
"@types/react": "^18.3.6",
"@types/react-dom": "^18.3.0"
},
peerDependencies: {
react: "^18.3.0",
"react-dom": "^18.3.0",
"react-native": "*"
},
peerDependenciesMeta: {
"react-dom": {
optional: true
},
"react-native": {
optional: true
}
},
...schema,
description: schema.description,
directory: schema.directory
};
const options = await normalizeOptions(tree, tsLibraryGeneratorOptions);
const { className, name, propertyName } = _devkit.names.call(void 0,
options.projectNames.projectFileName
);
_devkit.generateFiles.call(void 0, tree, filesDir, options.projectRoot, {
...schema,
dot: ".",
className,
name,
namespace: _nullishCoalesce(process.env.STORM_NAMESPACE, () => ( "storm-software")),
description: _nullishCoalesce(schema.description, () => ( "")),
propertyName,
js: !!options.js,
cliCommand: "nx",
strict: void 0,
tmpl: "",
offsetFromRoot: _devkit.offsetFromRoot.call(void 0, options.projectRoot),
buildable: options.bundler && options.bundler !== "none",
hasUnitTestRunner: options.unitTestRunner !== "none",
tsConfigOptions: {
compilerOptions: {
jsx: "react",
types: [
"node",
"@nx/react/typings/cssmodule.d.ts",
"@nx/react/typings/image.d.ts"
]
}
}
});
await typeScriptLibraryGeneratorFn(tree, tsLibraryGeneratorOptions, config);
await _devkit.formatFiles.call(void 0, tree);
return null;
}
var generator_default = withRunGenerator(
"TypeScript Library Creator (Browser Platform)",
browserLibraryGeneratorFn,
{
hooks: {
applyDefaultOptions: (options) => {
options.description ??= "A library used by Storm Software to support browser applications";
options.platform ??= "browser";
return options;
}
}
}
);
// ../workspace-tools/src/generators/config-schema/generator.ts
var _zod = require('zod'); var z = _interopRequireWildcard(_zod);
async function configSchemaGeneratorFn(tree, options, config) {
_chunkAYLQUJIFjs.writeInfo.call(void 0,
"\u{1F4E6} Running Storm Workspace Configuration JSON Schema generator",
config
);
_chunkAYLQUJIFjs.writeTrace.call(void 0,
`Determining the Storm Workspace Configuration JSON Schema...`,
config
);
const jsonSchema = z.toJSONSchema(_chunkAYLQUJIFjs.workspaceConfigSchema, {
target: "draft-7",
metadata: _chunkAYLQUJIFjs.schemaRegistry
});
jsonSchema.$id ??= "https://public.storm-cdn.com/schemas/storm-workspace.schema.json";
jsonSchema.title ??= "Storm Workspace Configuration JSON Schema";
jsonSchema.description ??= "This JSON Schema defines the structure of the Storm Workspace configuration file (`storm-workspace.json`). It is used to validate the configuration file and ensure that it adheres to the expected format.";
_chunkAYLQUJIFjs.writeTrace.call(void 0, jsonSchema, config);
if (!options.outputFile) {
throw new Error(
"The `outputFile` option is required. Please specify the output file path."
);
}
const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(
_nullishCoalesce(_optionalChain([config, 'optionalAccess', _136 => _136.workspaceRoot]), () => ( _chunkAYLQUJIFjs.findWorkspaceRoot.call(void 0, ))),
options.outputFile.startsWith("./") ? "" : "./"
);
_chunkAYLQUJIFjs.writeTrace.call(void 0,
`\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`,
config
);
_devkit.writeJson.call(void 0, tree, outputPath, jsonSchema, { spaces: 2 });
await _devkit.formatFiles.call(void 0, tree);
_chunkAYLQUJIFjs.writeSuccess.call(void 0,
"\u{1F680} Storm Configuration JSON Schema creation has completed successfully!",
config
);
return {
success: true
};
}
var generator_default2 = withRunGenerator(
"Configuration Schema Creator",
configSchemaGeneratorFn,
{
hooks: {
applyDefaultOptions: (options) => {
options.outputFile ??= "{workspaceRoot}/storm-workspace.schema.json";
return options;
}
}
}
);
// ../workspace-tools/src/generators/init/init.ts
async function initGenerator(tree, schema) {
const task = _devkit.addDependenciesToPackageJson.call(void 0,
tree,
{
nx: "^19.6.2",
"@nx/workspace": "^19.6.2",
"@nx/js": "^19.6.2",
"@storm-software/eslint": "latest",
"@storm-software/prettier": "latest",
"@storm-software/config-tools": "latest",
"@storm-software/testing-tools": "latest",
"@storm-software/git-tools": "latest",
"@storm-software/linting-tools": "latest"
},
{}
);
if (!schema.skipFormat) {
await _devkit.formatFiles.call(void 0, tree);
}
return task;
}
// ../workspace-tools/src/generators/neutral-library/generator.ts
async function neutralLibraryGeneratorFn(tree, schema, config) {
const filesDir = _chunkAYLQUJIFjs.joinPaths.call(void 0,
__dirname,
"src",
"generators",
"neutral-library",
"files"
);
const tsLibraryGeneratorOptions = {
...schema,
platform: "neutral",
devDependencies: {},
buildExecutor: "@storm-software/workspace-tools:unbuild"
};
const options = await normalizeOptions(tree, tsLibraryGeneratorOptions);
const { className, name, propertyName } = _devkit.names.call(void 0,
options.projectNames.projectFileName
);
_devkit.generateFiles.call(void 0, tree, filesDir, options.projectRoot, {
...schema,
dot: ".",
className,
name,
namespace: _nullishCoalesce(process.env.STORM_NAMESPACE, () => ( "storm-software")),
description: _nullishCoalesce(schema.description, () => ( "")),
propertyName,
js: !!options.js,
cliCommand: "nx",
strict: void 0,
tmpl: "",
offsetFromRoot: _devkit.offsetFromRoot.call(void 0, options.projectRoot),
buildable: options.bundler && options.bundler !== "none",
hasUnitTestRunner: options.unitTestRunner !== "none"
});
await typeScriptLibraryGeneratorFn(tree, tsLibraryGeneratorOptions, config);
await _devkit.formatFiles.call(void 0, tree);
return null;
}
var generator_default3 = withRunGenerator(
"TypeScript Library Creator (Neutral Platform)",
neutralLibraryGeneratorFn,
{
hooks: {
applyDefaultOptions: (options) => {
options.description ??= "A library used by Storm Software to support either browser or NodeJs applications";
options.platform = "neutral";
return options;
}
}
}
);
// ../workspace-tools/src/generators/node-library/generator.ts
async function nodeLibraryGeneratorFn(tree, schema, config) {
const filesDir = _chunkAYLQUJIFjs.joinPaths.call(void 0,
__dirname,
"src",
"generators",
"node-library",
"files"
);
const tsLibraryGeneratorOptions = {
platform: "node",
devDependencies: {
"@types/node": typesNodeVersion
},
buildExecutor: "@storm-software/workspace-tools:unbuild",
...schema,
directory: schema.directory,
description: schema.description
};
const options = await normalizeOptions(tree, tsLibraryGeneratorOptions);
const { className, name, propertyName } = _devkit.names.call(void 0, options.name);
_devkit.generateFiles.call(void 0, tree, filesDir, options.projectRoot, {
...schema,
dot: ".",
className,
name,
namespace: _nullishCoalesce(process.env.STORM_NAMESPACE, () => ( "storm-software")),
description: _nullishCoalesce(schema.description, () => ( "")),
propertyName,
js: !!options.js,
cliCommand: "nx",
strict: void 0,
tmpl: "",
offsetFromRoot: _devkit.offsetFromRoot.call(void 0, options.projectRoot),
buildable: options.bundler && options.bundler !== "none",
hasUnitTestRunner: options.unitTestRunner !== "none"
});
await typeScriptLibraryGeneratorFn(tree, tsLibraryGeneratorOptions, config);
await _devkit.formatFiles.call(void 0, tree);
return null;
}
var generator_default4 = withRunGenerator(
"TypeScript Library Creator (NodeJs Platform)",
nodeLibraryGeneratorFn,
{
hooks: {
applyDefaultOptions: (options) => {
options.description ??= "A library used by Storm Software to support NodeJs applications";
options.platform ??= "node";
return options;
}
}
}
);
// ../workspace-tools/src/generators/preset/generator.ts
async function presetGeneratorFn(tree, options) {
const projectRoot = ".";
options.description ??= `\u26A1The ${options.namespace ? options.namespace : options.name} monorepo contains utility applications, tools, and various libraries to create modern and scalable web applications.`;
options.namespace ??= options.organization;
_devkit.addProjectConfiguration.call(void 0, tree, `@${options.namespace}/${options.name}`, {
root: projectRoot,
projectType: "application",
targets: {
"local-registry": {
executor: "@nx/js:verdaccio",
options: {
port: 4873,
config: ".verdaccio/config.yml",
storage: "tmp/local-registry/storage"
}
}
}
});
_devkit.updateJson.call(void 0, tree, "package.json", (json) => {
json.scripts = json.scripts || {};
json.version = "0.0.0";
json.triggerEmptyDevReleaseByIncrementingThisNumber = 0;
json.private = true;
json.keywords ??= [
options.name,
options.namespace,
"storm",
"storm-stack",
"storm-ops",
"rust",
"nx",
"graphql",
"sullivanpj",
"monorepo"
];
json.homepage ??= "https://stormsoftware.com";
json.bugs ??= {
url: `https://github.com/${options.organization}/${options.name}/issues`,
email: "support@stormsoftware.com"
};
json.license = "Apache-2.0";
json.author ??= {
name: "Storm Software",
email: "contact@stormsoftware.com",
url: "https://stormsoftware.com"
};
json.maintainers ??= [
{
name: "Storm Software",
email: "contact@stormsoftware.com",
url: "https://stormsoftware.com"
},
{
name: "Pat Sullivan",
email: "admin@stormsoftware.com",
url: "https://patsullivan.org"
}
];
json.funding ??= {
type: "github",
url: "https://github.com/sponsors/storm-software"
};
json.namespace ??= `@${options.namespace}`;
json.description ??= options.description;
options.repositoryUrl ??= `https://github.com/${options.organization}/${options.name}`;
json.repository ??= {
type: "github",
url: `${options.repositoryUrl}.git`
};
json.packageManager ??= "pnpm@10.3.0";
json.engines ??= {
node: ">=20.11.0",
pnpm: ">=10.3.0"
};
json.prettier = "@storm-software/prettier/config.json";
json.nx ??= {
includedScripts: [
"lint-sherif",
"lint-knip",
"lint-ls",
"lint",
"format",
"format-sherif",
"format-readme",
"format-prettier",
"format-toml",
"commit",
"release"
]
};
json.scripts.adr = "pnpm log4brains adr new";
json.scripts["adr-preview"] = "pnpm log4brains preview";
json.scripts.prepare = "pnpm add lefthook -w && pnpm lefthook install";
json.scripts.preinstall = "npx -y only-allow pnpm";
json.scripts["install-csb"] = "corepack enable && pnpm install --no-frozen-lockfile";
json.scripts.clean = "rimraf dist && rimraf --glob packages/**/dist && rimraf --glob tools/**/dist && rimraf --glob docs/**/dist && rimraf --glob apps/**/dist && rimraf --glob libs/**/dist";
json.scripts.nuke = "nx clear-cache && rimraf .nx/cache && rimraf .nx/workspace-data && pnpm clean && rimraf pnpm-lock.yaml && rimraf --glob packages/**/node_modules && rimraf --glob tools/**/node_modules && rimraf node_modules";
json.scripts.prebuild = "pnpm clean";
json.scripts.build = "nx affected -t build --parallel=5";
json.scripts["build-all"] = "nx run-many -t build --all --parallel=5";
json.scripts["build-prod"] = "nx run-many -t build --all --prod --parallel=5";
json.scripts["build-tools"] = "nx run-many -t build --projects=tools/* --parallel=5";
json.scripts["build-docs"] = "nx run-many -t build --projects=docs/* --parallel=5";
if (!options.includeApps) {
json.scripts["build-packages"] = "nx run-many -t build --projects=packages/* --parallel=5";
} else {
json.scripts["build-apps"] = "nx run-many -t build --projects=apps/* --parallel=5";
json.scripts["build-libs"] = "nx run-many -t build --projects=libs/* --parallel=5";
json.scripts["build-storybook"] = "storybook build -s public";
}
json.scripts.nx = "nx";
json.scripts.graph = "nx graph";
json.scripts.lint = "pnpm storm-lint all --skip-cspell --skip-alex";
if (options.includeApps) {
json.scripts.start = "nx serve";
json.scripts.storybook = "pnpm storybook dev -p 6006";
}
json.scripts.help = "nx help";
json.scripts["dep-graph"] = "nx dep-graph";
json.scripts["local-registry"] = `nx local-registry @${options.namespace}/${options.name}`;
json.scripts.e2e = "nx e2e";
if (options.includeApps) {
json.scripts.test = "nx test && pnpm test-storybook";
json.scripts["test-storybook"] = "pnpm test-storybook";
} else {
json.scripts.test = "nx test";
}
json.scripts.lint = "pnpm storm-lint all --skip-cspell --skip-alex";
json.scripts.commit = "pnpm storm-git commit";
json.scripts["api-extractor"] = 'pnpm storm-docs api-extractor --outputPath="docs/api-reference" --clean';
json.scripts.release = "pnpm storm-git release";
json.scripts.format = "nx format:write";
json.scripts["format-sherif"] = "pnpm exec sherif -f -i typescript -i react -i react-dom";
json.scripts["format-toml"] = 'pnpm exec taplo format --config="./node_modules/@storm-software/linting-tools/taplo/config.toml" --cache-path="./node_modules/.cache/storm/taplo"';
json.scripts["format-readme"] = 'pnpm storm-git readme --templates="tools/readme-templates"';
json.scripts["format-prettier"] = "pnpm exec prettier --write --ignore-unknown --no-error-on-unmatched-pattern --cache && git update-index";
json.scripts.lint = "pnpm storm-lint all --skip-cspell";
json.scripts["lint-knip"] = "pnpm exec knip";
json.scripts["lint-sherif"] = "pnpm exec sherif -i typescript -i react -i react-dom";
json.scripts["lint-ls"] = 'pnpm exec ls-lint --config="./node_modules/@storm-software/linting-tools/ls-lint/ls-lint.yml"';
json.packageManager ??= `pnpm@${pnpmVersion}`;
json.engines = {
node: `>=${nodeVersion}`,
pnpm: `>=${pnpmVersion}`
};
return json;
});
_devkit.generateFiles.call(void 0, tree, path2.join(__dirname, "files"), projectRoot, {
...options,
pnpmVersion,
nodeVersion
});
await _devkit.formatFiles.call(void 0, tree);
let dependencies = {
"@ls-lint/ls-lint": "2.2.3",
"@ltd/j-toml": "1.38.0",
"@nx/devkit": "^20.2.2",
"@nx/eslint-plugin": "^20.2.2",
"@nx/js": "^20.2.2",
"@nx/workspace": "^20.2.2",
"@storm-software/config": "latest",
"@storm-software/git-tools": "latest",
"@storm-software/linting-tools": "latest",
"@storm-software/testing-tools": "latest",
"@storm-software/workspace-tools": "latest",
"@storm-software/eslint": "latest",
"@storm-software/cspell": "latest",
"@storm-software/prettier": "latest",
"@taplo/cli": "0.7.0",
"@types/node": "^20.14.10",
copyfiles: "2.4.1",
eslint: "9.5.0",
jest: "29.7.0",
"jest-environment-node": "29.7.0",
knip: "5.25.2",
lefthook: "1.6.18",
nx: "^20.2.2",
prettier: "3.3.2",
"prettier-plugin-prisma": "5.0.0",
rimraf: "5.0.7",
sherif: "0.10.0",
"ts-jest": "29.1.5",
"ts-node": "10.9.2",
tslib: "2.6.3",
typescript: "5.5.3",
verdaccio: "5.31.1"
};
if (options.includeApps) {
dependencies = {
...dependencies,
react: "latest",
"react-dom": "latest",
storybook: "latest",
"@storybook/addons": "latest",
"@nx/react": "latest",
"@nx/next": "latest",
"@nx/node": "latest",
"@nx/storybook": "latest",
"jest-environment-jsdom": "29.7.0"
};
}
if (options.includeRust) {
dependencies = {
...dependencies,
"@monodon/rust": "1.4.0"
};
}
if (options.nxCloud) {
dependencies = {
...dependencies,
"nx-cloud": "latest"
};
}
await Promise.resolve(
_devkit.addDependenciesToPackageJson.call(void 0,
tree,
dependencies,
{},
_devkit.joinPathFragments.call(void 0, projectRoot, "package.json")
)
);
return null;
}
var generator_default5 = withRunGenerator(
"Storm Workspace Preset Generator",
presetGeneratorFn
);
// ../workspace-tools/src/base/base-executor.untyped.ts
var _untyped = require('untyped');
var base_executor_untyped_default = _untyped.defineUntypedSchema.call(void 0, {
$schema: {
id: "baseExecutor",
title: "Base Executor",
description: "A base type definition for an executor schema"
},
outputPath: {
$schema: {
title: "Output Path",
type: "string",
format: "path",
description: "The output path for the build"
},
$default: "dist/{projectRoot}"
}
});
// ../workspace-tools/src/base/base-generator.untyped.ts
var base_generator_untyped_default = _untyped.defineUntypedSchema.call(void 0, {
$schema: {
id: "BaseGeneratorSchema",
title: "Base Generator",
description: "A type definition for the base Generator schema"
},
directory: {
$schema: {
title: "Directory",
type: "string",
description: "The directory to create the library in"
}
}
});
// ../workspace-tools/src/base/cargo-base-executor.untyped.ts
var cargo_base_executor_untyped_default = _untyped.defineUntypedSchema.call(void 0, {
...base_executor_untyped_default,
$schema: {
id: "cargoBaseExecutor",
title: "Cargo Base Executor",
description: "A base type definition for a Cargo/rust related executor schema"
},
package: {
$schema: {
title: "Cargo.toml Path",
type: "string",
format: "path",
description: "The path to the Cargo.toml file"
},
$default: "{projectRoot}/Cargo.toml"
},
toolchain: {
$schema: {
title: "Toolchain",
description: "The type of toolchain to use for the build",
enum: ["stable", "beta", "nightly"],
default: "stable"
},
$default: "stable"
},
target: {
$schema: {
title: "Target",
type: "string",
description: "The target to build"
}
},
allTargets: {
$schema: {
title: "All Targets",
type: "boolean",
description: "Build all targets"
}
},
profile: {
$schema: {
title: "Profile",
type: "string",
description: "The profile to build"
}
},
release: {
$schema: {
title: "Release",
type: "boolean",
description: "Build in release mode"
}
},
features: {
$schema: {
title: "Features",
type: "string",
description: "The features to build",
oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }]
}
},
allFeatures: {
$schema: {
title: "All Features",
type: "boolean",
description: "Build all features"
}
}
});
// ../workspace-tools/src/base/typescript-build-executor.untyped.ts
var typescript_build_executor_untyped_default = _untyped.defineUntypedSchema.call(void 0, {
...base_executor_untyped_default,
$schema: {
id: "TypeScriptBuildExecutorSchema",
title: "TypeScript Build Executor",
description: "A type definition for the base TypeScript build executor schema",
required: ["entry", "tsconfig"]
},
entry: {
$schema: {
title: "Entry File(s)",
format: "path",
type: "array",
description: "The entry file or files to build",
items: { type: "string" }
},
$default: ["{sourceRoot}/index.ts"]
},
tsconfig: {
$schema: {
title: "TSConfig Path",
type: "string",
format: "path",
description: "The path to the tsconfig file"
},
$default: "{projectRoot}/tsconfig.json"
},
bundle: {
$schema: {
title: "Bundle",
type: "boolean",
description: "Bundle the output"
}
},
minify: {
$schema: {
title: "Minify",
type: "boolean",
description: "Minify the output"
}
},
debug: {
$schema: {
title: "Debug",
type: "boolean",
description: "Debug the output"
}
},
sourcemap: {
$schema: {
title: "Sourcemap",
type: "boolean",
description: "Generate a sourcemap"
}
},
silent: {
$schema: {
title: "Silent",
type: "boolean",
description: "Should the build run silently - only report errors back to the user"
},
$default: false
},
target: {
$schema: {
title: "Target",
type: "string",
description: "The target to build",
enum: [
"es3",
"es5",
"es6",
"es2015",
"es2016",
"es2017",
"es2018",
"es2019",
"es2020",
"es2021",
"es2022",
"es2023",
"es2024",
"esnext",
"node12",
"node14",
"node16",
"node18",
"node20",
"node22",
"browser",
"chrome58",
"chrome59",
"chrome60"
]
},
$default: "esnext",
$resolve: (val = "esnext") => typeof val === "string" ? val.toLowerCase() : val
},
format: {
$schema: {
title: "Format",
type: "array",
description: "The format to build",
items: {
type: "string",
enum: ["cjs", "esm", "iife"]
}
},
$resolve: (val = ["cjs", "esm"]) => [].concat(val)
},
platform: {
$schema: {
title: "Platform",
type: "string",
description: "The platform to build",
enum: ["neutral", "node", "browser"]
},
$default: "neutral"
},
external: {
$schema: {
title: "External",
type: "array",
description: "The external dependencies"
},
$resolve: (val = []) => [].concat(val)
},
define: {
$schema: {
title: "Define",
type: "object",
tsType: "Record<string, string>",
description: "The define values"
},
$resolve: (val = {}) => val,
$default: {}
},
env: {
$schema: {
title: "Environment Variables",
type: "object",
tsType: "Record<string, string>",
description: "The environment variable values"
},
$resolve: (val = {}) => val,
$default: {}
}
});
// ../workspace-tools/src/base/typescript-library-generator.untyped.ts
var typescript_library_generator_untyped_default = _untyped.defineUntypedSchema.call(void 0, {
...base_generator_untyped_default,
$schema: {
id: "TypeScriptLibraryGeneratorSchema",
title: "TypeScript Library Generator",
description: "A type definition for the base TypeScript Library Generator schema",
required: ["directory", "name"]
},
name: {
$schema: {
title: "Name",
type: "string",
description: "The name of the library"
}
},
description: {
$schema: {
title: "Description",
type: "string",
description: "The description of the library"
}
},
buildExecutor: {
$schema: {
title: "Build Executor",
type: "string",
description: "The executor to use for building the library"
},
$default: "@storm-software/workspace-tools:unbuild"
},
platform: {
$schema: {
title: "Platform",
type: "string",
description: "The platform to target with the library",
enum: ["neutral", "node", "worker", "browser"]
},
$default: "neutral"
},
importPath: {
$schema: {
title: "Import Path",
type: "string",
description: "The import path for the library"
}
},
tags: {
$schema: {
title: "Tags",
type: "string",
description: "The tags for the library"
}
},
unitTestRunner: {
$schema: {
title: "Unit Test Runner",
type: "string",
enum: ["jest", "vitest", "none"],
description: "The unit test runner to use"
}
},
testEnvironment: {
$schema: {
title: "Test Environment",
type: "string",
enum: ["jsdom", "node"],
description: "The test environment to use"
}
},
pascalCaseFiles: {
$schema: {
title: "Pascal Case Files",
type: "boolean",
description: "Use PascalCase for file names"
},
$default: false
},
strict: {
$schema: {
title: "Strict",
type: "boolean",
description: "Enable strict mode"
},
$default: true
},
publishable: {
$schema: {
title: "Publishable",
type: "boolean",
description: "Make the library publishable"
},
$default: false
},
buildable: {
$schema: {
title: "Buildable",
type: "boolean",
description: "Make the library buildable"
},
$default: true
}
});
// ../workspace-tools/src/release/js-version-actions.ts
var _versionactionsjs = require('@nx/js/src/release/version-actions.js'); var _versionactionsjs2 = _interopRequireDefault(_versionactionsjs);
// ../workspace-tools/src/release/rust-version-actions.ts
var _release = require('nx/release');
// ../workspace-tools/src/utils/registry-helpers.ts
// ../workspace-tools/src/utils/create-cli-options.ts
// ../workspace-tools/src/utils/get-project-configurations.ts
var _retrieveworkspacefiles = require('nx/src/project-graph/utils/retrieve-workspace-files');
// ../workspace-tools/src/utils/lock-file.ts
var _npmparser = require('nx/src/plugins/js/lock-file/npm-parser');
var _pnpmparser = require('nx/src/plugins/js/lock-file/pnpm-parser');
var _yarnparser = require('nx/src/plugins/js/lock-file/yarn-parser');
var YARN_LOCK_FILE = "yarn.lock";
var NPM_LOCK_FILE = "package-lock.json";
var PNPM_LOCK_FILE = "pnpm-lock.yaml";
var YARN_LOCK_PATH = _path.join.call(void 0, _devkit.workspaceRoot, YARN_LOCK_FILE);
var NPM_LOCK_PATH = _path.join.call(void 0, _devkit.workspaceRoot, NPM_LOCK_FILE);
var PNPM_LOCK_PATH = _path.join.call(void 0, _devkit.workspaceRoot, PNPM_LOCK_FILE);
// ../workspace-tools/src/utils/plugin-helpers.ts
// ../workspace-tools/src/utils/typia-transform.ts
var _transform = require('typia/lib/transform'); var _transform2 = _interopRequireDefault(_transform);
// src/generators/init/init.ts
async function initGenerator2(tree, schema) {
const task = initGenerator(tree, { skipFormat: !!schema.skipFormat });
if (!schema.skipFormat) {
await _devkit.formatFiles.call(void 0, tree);
}
return task;
}
var init_default = initGenerator2;
exports.initGenerator = initGenerator2; exports.init_default = init_default;