@_linked/cli 1.46.0 → 1.46.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/defaults/app-react-native/apps/mobile/package.json +1 -1
- package/defaults/app-react-native/packages/app-shapes/package.json +2 -2
- package/defaults/app-react-native/services/api/package.json +2 -2
- package/lib/esm/build-error-excerpt.d.ts +13 -0
- package/lib/esm/build-error-excerpt.d.ts.map +1 -0
- package/lib/esm/build-error-excerpt.js +97 -0
- package/lib/esm/build-error-excerpt.js.map +1 -0
- package/lib/esm/cli-methods.d.ts.map +1 -1
- package/lib/esm/cli-methods.js +98 -64
- package/lib/esm/cli-methods.js.map +1 -1
- package/lib/esm/lifecycle.d.ts +27 -0
- package/lib/esm/lifecycle.d.ts.map +1 -1
- package/lib/esm/lifecycle.js +28 -0
- package/lib/esm/lifecycle.js.map +1 -1
- package/lib/esm/localize/prune.d.ts +21 -4
- package/lib/esm/localize/prune.d.ts.map +1 -1
- package/lib/esm/localize/prune.js +87 -3
- package/lib/esm/localize/prune.js.map +1 -1
- package/lib/esm/localize/relink.js +3 -1
- package/lib/esm/localize/relink.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-methods.js","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport {exec} from 'child_process';\nimport depcheck from 'depcheck';\nimport {getEnvFile} from 'env-cmd/dist/get-env-vars.js';\nimport fs from 'fs-extra';\nimport path, {dirname} from 'path';\nimport {createInterface} from 'readline';\nimport {\n debugInfo,\n execp,\n execPromise,\n getFileImports,\n getFiles,\n getLastCommitTime,\n getPackageJSON,\n isImportOutsideOfPackage,\n isInternalLinkedImport,\n needsRebuilding,\n} from './utils.js';\nimport {renameShippedDotfiles} from './utils/shippedDotfiles.js';\nimport {planPackageSetup} from './utils/packageSetup.js';\nimport {\n bareName,\n CreatePackageError,\n decideCreatePackageTarget,\n ensureRelinkPostinstall,\n ensureWorkspaceGlob,\n findLinkedAppRoot,\n RELINK_COMMAND,\n repositoryUrlFor,\n} from './utils/createPackageLocation.js';\nimport type {\n CreatePackageOptions,\n TargetDecision,\n} from './utils/createPackageLocation.js';\nimport {\n detectPackageManager,\n execBinCommand,\n runScriptCommand,\n} from './utils/packageManager.js';\nimport {rewriteExtensionlessImports} from './utils/esmSpecifiers.js';\nimport {checkShapeNames} from './utils/shapeNames.js';\nimport {\n checkShapeReferences,\n inspectShapeReferences,\n type ShapeReferenceReport,\n} from './utils/shapeReferences.js';\nimport {checkShapesIndex, checkShapesSideEffects} from './utils/shapesIndex.js';\n\nimport {spawn as spawnChild, spawnSync} from 'child_process';\nimport {findNearestPackageJson} from 'find-nearest-package-json';\nimport {statSync} from 'fs';\nimport {LinkedFileStorage} from '@_linked/core/utils/LinkedFileStorage';\nimport type {PackageDetails} from './interfaces.js';\n// import pkg from 'lincd/utils/LinkedFileStorage';\n// const { LinkedFileStorage } = pkg;\nimport {glob} from 'glob';\n\nimport ora, {Ora} from 'ora';\nimport stagedGitFiles from 'staged-git-files';\nimport {packagePublishesCjs} from './package-manifest.js';\nimport {asNamespace, defaultOntologyNamespace} from './utils/ontologyNamespace.js';\nimport {\n decidePackageKind,\n ontologySlugFor,\n packageNameFor,\n scaffoldKinds,\n PACKAGE_TEMPLATE_DIRS,\n SHARED_TEMPLATE_FILES,\n} from './utils/packageKind.js';\nimport type {PackageKind, ScaffoldKind} from './utils/packageKind.js';\nimport {resolvePackageBaseUri, withBaseUri} from './utils/packageBaseUri.js';\nimport type {ResolvedBaseUri} from './utils/packageBaseUri.js';\n\nlet dirname__ =\n typeof __dirname !== 'undefined'\n ? __dirname\n : //@ts-ignore\n dirname(import.meta.url).replace('file:/', '');\n\n/**\n * A folder under this package's `defaults/`. The built module sits in `lib/esm/`\n * and the source in `src/`, so the templates are two or one level up.\n */\nfunction defaultsDir(...parts: string[]): string {\n const candidates = [\n path.join(dirname__, '..', '..', 'defaults'),\n path.join(dirname__, '..', 'defaults'),\n ];\n const root = candidates.find((dir) => fs.existsSync(dir)) ?? candidates[0];\n return path.join(root, ...parts);\n}\n\n/**\n * The commands that write a file importing `../package.js` need a `src/package.ts`\n * to import. A new app root has none (it is a linkedApp, not a linkedPackage), so\n * there the import would be broken: refuse instead. Only the file decides: a\n * linkedApp that keeps its shapes at its root with its own `src/package.ts`, as\n * create-now does, is served as before.\n */\nfunction assertInsidePackage(sourceFolder: string, command: string) {\n if (fs.existsSync(path.join(sourceFolder, 'package.ts'))) return;\n throw new CreatePackageError(\n `${command}: no src/package.ts here, so there is no package to add to. An app root is ` +\n `not a package; run this inside a package (packages/<name>).`,\n );\n}\n\n/**\n * Dynamically import the app's backend storage configuration. Tries the\n * canonical `linked.backend.storage.{ts,js}` at app root first, then the\n * earlier `backend-storage-config.{ts,js}` (Iter3), then the legacy\n * `scripts/storage-config.js` (pre-rename). The fallback chain lets older\n * app clones keep booting through the rename.\n */\n// Extracted to ./lifecycle.ts so the Vite SSR loader doesn't\n// have to graph-walk the rest of cli-methods.ts (which contains many\n// dynamic imports Vite can't analyze). We import for internal callers\n// AND re-export so external consumers can keep importing from here.\nimport {\n ensureEnvironmentLoaded,\n loadBackendStorageConfig,\n getLincdPackages,\n discoverLocalPackages,\n planBuildAll,\n} from './lifecycle.js';\nimport type {BuildAllPlan} from './lifecycle.js';\nexport {\n ensureEnvironmentLoaded,\n loadBackendStorageConfig,\n getLincdPackages,\n discoverLocalPackages,\n planBuildAll,\n};\n\nvar variables = {};\n/**\n * Prompt user for input\n */\nfunction promptUser(question: string): Promise<string> {\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(chalk.cyan(question), (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nexport type AppTemplate = 'web' | 'react-native';\n\ntype AppIdentity = {\n appName: string;\n appPrefix: string;\n appDomain: string;\n hyphenName: string;\n};\n\nexport const createApp = async (name, basePath = process.cwd(), options: {appName?: string, appPrefix?: string, appDomain?: string, skipInstall?: boolean, template?: AppTemplate} = {}) => {\n // Reject unknown templates before prompting or writing anything.\n const template = options.template;\n if (\n template !== undefined &&\n template !== 'web' &&\n template !== 'react-native'\n ) {\n console.warn(\n chalk.red(`Unknown template \"${template}\". Use \"web\" or \"react-native\".`),\n );\n return;\n }\n\n // If no name provided, prompt for folder name first\n if (!name) {\n console.log(chalk.blue('\\n📁 Folder name for your app:\\n'));\n const folderNameInput = await promptUser('Folder name (e.g., \"my-app\"): ');\n if (!folderNameInput || !folderNameInput.trim()) {\n console.warn(chalk.red('Folder name is required. Aborting.'));\n return;\n }\n name = folderNameInput.trim();\n }\n\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n const defaultAppName = name\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n const defaultAppPrefix = underscoreName;\n const defaultAppDomain = hyphenName + '.com';\n\n let appName: string;\n let appPrefix: string;\n let appDomain: string;\n\n // If any options provided, skip interactive prompts\n if (options.appName || options.appPrefix || options.appDomain) {\n appName = options.appName || defaultAppName;\n appPrefix = options.appPrefix || defaultAppPrefix;\n appDomain = options.appDomain || defaultAppDomain;\n } else {\n // Prompt user for app configuration\n console.log(chalk.blue('\\n📝 Please provide the following information:\\n'));\n console.log(\n chalk.gray('(Press Enter to use defaults based on folder name)\\n'),\n );\n\n const appNameInput = await promptUser(\n `App Name (display name) [${chalk.gray(defaultAppName)}]: `,\n );\n const appPrefixInput = await promptUser(\n `App Prefix (short code for data files, e.g., \"myapp\") [${chalk.gray(defaultAppPrefix)}]: `,\n );\n const appDomainInput = await promptUser(\n `App Domain [${chalk.gray(defaultAppDomain)}]: `,\n );\n\n appName = appNameInput || defaultAppName;\n appPrefix = appPrefixInput || defaultAppPrefix;\n appDomain = appDomainInput || defaultAppDomain;\n }\n\n // Set new variables for app configuration\n setVariable('app_name', appName);\n setVariable('app_prefix', appPrefix);\n setVariable('app_domain', appDomain);\n\n let targetFolder = path.join(basePath, hyphenName);\n\n if (template === 'react-native') {\n // Called through reactNativeInternals so tests can stub the scaffold step.\n await reactNativeInternals.scaffoldReactNativeApp(\n targetFolder,\n {appName, appPrefix, appDomain, hyphenName},\n {skipInstall: options.skipInstall},\n );\n return;\n }\n\n if (!fs.existsSync(targetFolder)) {\n fs.mkdirSync(targetFolder);\n }\n\n // Scaffold from the canonical template repo (single source of truth; CN's\n // server-side createProject clones the same repo). Shallow clone, then drop\n // .git so the new app starts with clean history.\n await execPromise(`git clone --depth 1 https://github.com/linked-fw/app-template.git \"${targetFolder}\"`, false, false);\n fs.removeSync(path.join(targetFolder, '.git'));\n //make sure the data folder exists (even though its empty).. copying empty folders does not work with fs.copySync\n fs.mkdirSync(path.join(targetFolder, 'data'), {recursive: true});\n fs.mkdirSync(path.join(targetFolder, 'data/uploads/resized'), {\n recursive: true,\n });\n\n // The template repo now ships real dotfiles; guard the legacy\n // `*.template` renames so they no-op when the dotfile already exists.\n const gitignoreTemplate = path.join(targetFolder, 'gitignore.template');\n if (fs.existsSync(gitignoreTemplate)) {\n fs.renameSync(gitignoreTemplate, path.join(targetFolder, '.gitignore'));\n }\n stripYarnProjectFiles(targetFolder);\n\n // Seed the real (gitignored) Layer 2 config from the committed example so\n // the scaffolded app boots first try. Users can edit either file later.\n const datasetsExample = path.join(\n targetFolder,\n 'linked.backend.datasets.example.json',\n );\n const datasetsReal = path.join(targetFolder, 'linked.backend.datasets.json');\n if (fs.existsSync(datasetsExample) && !fs.existsSync(datasetsReal)) {\n fs.copySync(datasetsExample, datasetsReal);\n }\n\n // fs.copySync(path.join(__dirname, '..', 'defaults', 'app'), targetFolder);\n\n log(\"Creating new Linked app '\" + appName + \"'\");\n\n //replace variables in some copied files\n await replaceVariablesInFolder(targetFolder);\n\n // The template ships placeholder-free (so a raw clone boots on defaults), so\n // create-app stamps this app's identity into the clone directly rather than\n // relying on ${var} substitution.\n applyAppIdentity(targetFolder, {appName, appPrefix, hyphenName});\n\n // New apps are npm apps: npm is the package manager the templates, the CI\n // workflows and the published @_linked/* packages are all tested against, and\n // the react-native template already installs with npm. Keeping a single\n // package manager also keeps the scaffolded app to a single lockfile.\n const pm: PackageManager = CREATE_APP_PACKAGE_MANAGER;\n\n if (!options.skipInstall) {\n const installCommand = installCommandFor(pm);\n\n const spinner = ora({\n text: `Installing dependencies (${pm})...`,\n spinner: 'dots',\n }).start();\n\n const {stdout, stderr, failed} = await new Promise<{\n stdout: string;\n stderr: string;\n failed: boolean;\n }>((resolve) => {\n exec(\n `cd ${hyphenName} && ${installCommand}`,\n {maxBuffer: 50 * 1024 * 1024} as any,\n (error, out, err) => {\n resolve({\n stdout: typeof out === 'string' ? out : out?.toString() ?? '',\n stderr: typeof err === 'string' ? err : err?.toString() ?? '',\n failed: !!error,\n });\n },\n );\n });\n\n if (failed) {\n spinner.fail('Could not install dependencies');\n if (stdout) process.stdout.write(stdout);\n if (stderr) process.stderr.write(stderr);\n } else {\n spinner.succeed(`Dependencies installed (${pm})`);\n // Even on a 0-exit install, surface stderr (peer-dep warnings,\n // deprecations, ERESOLVE warns). Silent installs hide real problems\n // that bite users the next time they touch the lockfile.\n if (stderr && stderr.trim()) {\n process.stderr.write(stderr);\n }\n }\n }\n\n const startCommand = startCommandFor(pm);\n\n log(\n `Your Linked app is ready at ${chalk.blueBright(targetFolder)}`,\n `\\nStorage: linked.backend.storage.ts wires aliases to stores; linked.backend.datasets.json holds endpoints.`,\n `Defaults to Fuseki at ${chalk.cyan('http://localhost:3030')} (auto-creates the dataset on first boot).`,\n `Make sure Fuseki is running, e.g.:`,\n ` ${chalk.blueBright('docker run -d --rm -p 3030:3030 --name fuseki stain/jena-fuseki')}`,\n `Edit ${chalk.cyan('linked.backend.datasets.json')} to change endpoints or credentials.`,\n `Mirror file for the frontend: ${chalk.cyan('src/linked.frontend.storage.ts')} + ${chalk.cyan('src/linked.frontend.datasets.json')}.`,\n `\\nTo start:`,\n ` ${chalk.blueBright(`cd ${hyphenName} && ${startCommand}`)}`,\n );\n};\n\n/**\n * iOS bundle identifier from the app domain and prefix:\n * ('example.com', 'demo') -> 'com.example.demo'.\n */\nexport function reactNativeBundleId(\n appDomain: string,\n appPrefix: string,\n): string {\n const host = appDomain\n .trim()\n .toLowerCase()\n .replace(/^[a-z][a-z0-9+.-]*:\\/\\//, '')\n .split(/[/?#]/)[0]\n .replace(/:\\d*$/, '');\n const hostLabels = host.split('.').filter(Boolean);\n // A bare host such as `localhost` gets a `com` top level: com.localhost.<prefix>.\n if (hostLabels.length === 1) hostLabels.push('com');\n return [...hostLabels.reverse(), appPrefix.toLowerCase()]\n .map((label) => label.replace(/_/g, '-').replace(/[^a-z0-9-]/g, ''))\n .filter(Boolean)\n .join('.');\n}\n\n/**\n * The prefix becomes a directory, an npm package name, a bundle-ID label and a\n * literal inside a Jest regex; this form is valid in all four unescaped.\n */\nexport const RN_PREFIX_PATTERN = /^[a-z][a-z0-9-]*$/;\n\n/** Throws when the prefix is invalid or the target folder is non-empty. */\nfunction assertReactNativeScaffoldable(targetFolder: string, appPrefix: string) {\n if (typeof appPrefix !== 'string' || !RN_PREFIX_PATTERN.test(appPrefix)) {\n throw new Error(\n `Invalid app prefix \"${appPrefix ?? ''}\": it must match ${RN_PREFIX_PATTERN.source} ` +\n '(start with a lowercase letter; only lowercase letters, digits and hyphens).',\n );\n }\n if (fs.existsSync(targetFolder) && fs.readdirSync(targetFolder).length > 0) {\n throw new Error(\n `Target folder ${targetFolder} already exists and is not empty. ` +\n 'Choose another name or remove the folder.',\n );\n }\n}\n\n/** Placeholder name of the shapes package in defaults/app-react-native. */\nexport const RN_SHAPES_TOKEN = 'app-shapes';\n\n/**\n * Literal tokens in defaults/app-react-native that are replaced by names\n * derived from the app prefix: the shapes package and the Fuseki datasets.\n */\nexport function reactNativeTokens(appPrefix: string): Record<string, string> {\n return {\n [RN_SHAPES_TOKEN]: `${appPrefix}-shapes`,\n 'app-dev': `${appPrefix}-dev`,\n 'app-test': `${appPrefix}-test`,\n };\n}\n\n/**\n * Replace every occurrence of `token` in the text files under `folder`\n * (node_modules and files containing a NUL byte are skipped). A literal token\n * replacement, not the ${...} variable substitution.\n */\nfunction replaceTokenInTextFiles(folder: string, token: string, value: string) {\n if (token === value) return;\n for (const entry of fs.readdirSync(folder, {withFileTypes: true})) {\n const full = path.join(folder, entry.name);\n if (entry.isDirectory()) {\n if (entry.name !== 'node_modules' && entry.name !== '.git') {\n replaceTokenInTextFiles(full, token, value);\n }\n } else if (entry.isFile()) {\n const buffer = fs.readFileSync(full);\n if (buffer.includes(0)) continue;\n const text = buffer.toString('utf8');\n if (text.includes(token)) {\n fs.writeFileSync(full, text.split(token).join(value));\n }\n }\n }\n}\n\nconst readJSON = (file: string) => JSON.parse(fs.readFileSync(file, 'utf8'));\nconst writeJSON = (file: string, data: any) =>\n fs.writeFileSync(file, JSON.stringify(data, null, 2) + '\\n');\n\n/**\n * Scaffold the React Native monorepo from defaults/app-react-native.\n * Identity is stamped into named fields only; the global ${...} substitution\n * (replaceVariablesInFolder) is never used, so template literals in TypeScript\n * sources stay intact.\n */\nexport async function scaffoldReactNativeApp(\n targetFolder: string,\n id: AppIdentity,\n options: {skipInstall?: boolean; templateDir?: string} = {},\n): Promise<void> {\n const {appName, appPrefix, appDomain, hyphenName} = id;\n // Validate before writing anything.\n assertReactNativeScaffoldable(targetFolder, appPrefix);\n // lib/esm/ (built) is two levels below the package root; src/ (Jest) is one.\n const templateDir =\n options.templateDir ||\n [\n path.join(getScriptDir(), '..', '..', 'defaults', 'app-react-native'),\n path.join(getScriptDir(), '..', 'defaults', 'app-react-native'),\n ].find((dir) => fs.existsSync(dir));\n if (!templateDir) {\n throw new Error('React Native template not found (defaults/app-react-native)');\n }\n const shapesName = `${appPrefix}-shapes`;\n\n log(\"Creating new Linked React Native app '\" + appName + \"'\");\n\n // 1. Copy the template.\n fs.copySync(templateDir, targetFolder);\n\n // 2. Restore dotfiles npm would strip from the CLI tarball.\n renameShippedDotfiles(targetFolder);\n\n // 3. Rename the shapes package directory.\n const oldShapesDir = path.join(targetFolder, 'packages', RN_SHAPES_TOKEN);\n const shapesDir = path.join(targetFolder, 'packages', shapesName);\n if (fs.existsSync(oldShapesDir) && oldShapesDir !== shapesDir) {\n fs.renameSync(oldShapesDir, shapesDir);\n }\n\n // 4a. Rename the shapes package token everywhere: workspaces, .gitignore\n // negation, package names, dependency keys, Jest patterns, import specifiers,\n // test expectations and docs. The Fuseki dataset tokens (`app-dev`,\n // `app-test`) are replaced the same way. Only these literal tokens change.\n for (const [token, value] of Object.entries(reactNativeTokens(appPrefix))) {\n replaceTokenInTextFiles(targetFolder, token, value);\n }\n\n // 4b. Stamp the identity fields that are not the shapes token.\n const rootPkgPath = path.join(targetFolder, 'package.json');\n if (fs.existsSync(rootPkgPath)) {\n const rootPkg = readJSON(rootPkgPath);\n rootPkg.name = `${hyphenName}-monorepo`;\n writeJSON(rootPkgPath, rootPkg);\n }\n\n const mobileDir = path.join(targetFolder, 'apps', 'mobile');\n const appJsonPath = path.join(mobileDir, 'app.json');\n if (fs.existsSync(appJsonPath)) {\n const appJson = readJSON(appJsonPath);\n appJson.expo = appJson.expo || {};\n appJson.expo.name = appName;\n appJson.expo.slug = hyphenName;\n appJson.expo.ios = appJson.expo.ios || {};\n appJson.expo.ios.bundleIdentifier = reactNativeBundleId(\n appDomain,\n appPrefix,\n );\n writeJSON(appJsonPath, appJson);\n }\n\n // 5. Install with npm: the template is an npm workspaces monorepo.\n if (!options.skipInstall) {\n const spinner = ora({\n text: 'Installing dependencies (npm)...',\n spinner: 'dots',\n }).start();\n try {\n await execPromise('npm install', false, false, {\n cwd: targetFolder,\n maxBuffer: 50 * 1024 * 1024,\n });\n spinner.succeed('Dependencies installed (npm)');\n } catch (err) {\n spinner.fail('Could not install dependencies');\n if (err?.stdout) process.stdout.write(err.stdout);\n if (err?.stderr) process.stderr.write(err.stderr);\n throw new Error(\n `npm install failed. The files are in ${targetFolder}; ` +\n `run \\`npm install\\` there to retry.`,\n );\n }\n }\n\n // 6. Next steps.\n log(\n `Your Linked React Native app is ready at ${chalk.blueBright(targetFolder)}`,\n `\\nNext steps:`,\n ` ${chalk.blueBright(`cd ${path.basename(targetFolder)}`)}`,\n ` ${chalk.blueBright('npm test')} app and API unit tests`,\n ` ${chalk.blueBright('cp services/api/.env.example services/api/.env')} once`,\n ` ${chalk.blueBright('npm run fuseki:up')} Fuseki on :3030 (Docker)`,\n ` ${chalk.blueBright('npm run api')} API-only backend on :4000`,\n ` ${chalk.blueBright('npm run test:integration')} round trip against Fuseki`,\n ` ${chalk.blueBright('cd apps/mobile && npx expo run:ios')}`,\n `See README.md (and services/api/README.md if port 3030 is taken).`,\n );\n}\n\n// Indirection so tests can replace the scaffold step when exercising createApp.\nexport const reactNativeInternals = {scaffoldReactNativeApp};\n\n/** Set or append a `KEY=value` line in a `.env`-style text blob. */\nfunction setEnvVar(envText: string, key: string, value: string): string {\n const line = `${key}=${value}`;\n const re = new RegExp(`^${key}=.*$`, 'm');\n return re.test(envText)\n ? envText.replace(re, line)\n : envText.replace(/\\n?$/, `\\n${line}\\n`);\n}\n\n/**\n * Stamp the new app's identity into the freshly-cloned template. The template\n * ships without `${var}` placeholders (so a raw CN clone boots on defaults), so\n * create-app writes the real per-app values here:\n * - `.env.example` (committed defaults for this app) + `.env` (local): APP_NAME\n * drives the display name; APP_PREFIX names data files.\n * - `package.json`: `name` (hyphenated id) + `displayName` (human name).\n * - pm2 process names + the VS Code launch name (cosmetic, but should match).\n *\n * Nothing under `src/` is touched: the app is a linkedApp, not a linked package,\n * so its root registers no package and has no package id to stamp. Its shapes\n * live in its packages (`packages/<name>-assets`), each with its own\n * `src/package.ts`.\n */\n/**\n * Scaffolded apps are npm apps, so the new app must not also look like a yarn\n * project. Removes every yarn project file a template clone may still carry —\n * including the legacy `yarnrc.yml.template` that create-app used to rename\n * into `.yarnrc.yml`. (No empty `yarn.lock` is written any more either; that\n * file only existed to pin down Yarn's project-root search.)\n */\nexport function stripYarnProjectFiles(targetFolder: string) {\n for (const yarnLeftover of [\n 'yarnrc.yml.template',\n '.yarnrc.yml',\n '.yarn',\n 'yarn.lock',\n ]) {\n fs.removeSync(path.join(targetFolder, yarnLeftover));\n }\n}\n\nexport function applyAppIdentity(\n targetFolder: string,\n ids: {appName: string; appPrefix: string; hyphenName: string},\n) {\n const {appName, appPrefix, hyphenName} = ids;\n\n // 1. .env.example (+ seed .env from it so the first `npm start` is correct).\n const envExample = path.join(targetFolder, '.env.example');\n if (fs.existsSync(envExample)) {\n let env = fs.readFileSync(envExample, 'utf8');\n env = setEnvVar(env, 'APP_NAME', appName);\n env = setEnvVar(env, 'APP_PREFIX', appPrefix);\n fs.writeFileSync(envExample, env);\n const envReal = path.join(targetFolder, '.env');\n if (!fs.existsSync(envReal)) fs.writeFileSync(envReal, env);\n }\n\n // 2. package.json — name + displayName.\n const pkgPath = path.join(targetFolder, 'package.json');\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));\n pkg.name = hyphenName;\n pkg.displayName = appName;\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n');\n }\n\n // 3. pm2 process names + VS Code launch name (template hardcodes 'app').\n const renames: Array<[string, RegExp, string]> = [\n ['pm2.config.js', /name:\\s*'app'/, `name: '${hyphenName}'`],\n ['pm2-staging.config.js', /name:\\s*'app-staging'/, `name: '${hyphenName}-staging'`],\n [path.join('.vscode', 'launch.json'), /\"name\":\\s*\"Run app\"/, `\"name\": \"Run ${hyphenName}\"`],\n ];\n for (const [rel, re, replacement] of renames) {\n const f = path.join(targetFolder, rel);\n if (!fs.existsSync(f)) continue;\n fs.writeFileSync(f, fs.readFileSync(f, 'utf8').replace(re, replacement));\n }\n}\n\nfunction logHelp() {\n execp(execBinCommand(detectPackageManager(), 'linked help'));\n}\n\nfunction log(...messages) {\n messages.forEach((message) => {\n console.log(chalk.cyan('Info: ') + message);\n });\n}\n\nfunction progressUpdate(message) {\n process.stdout.write(\n ' \\r',\n );\n process.stdout.write(message + '\\r');\n}\n\nexport function warn(...messages) {\n messages.forEach((message) => {\n console.warn(chalk.redBright('Warning: ') + message);\n // console.log(chalk.red(message));\n });\n}\nexport function logError(...errors) {\n errors.forEach((error:Error) => {\n console.error(chalk.redBright('Error: ') + error);\n });\n}\nexport function developPackage(target, mode) {\n if (!target) target = 'es6';\n if (mode !== 'production') mode = '';\n else if (target !== 'es6')\n log('target must be es6 when developing for production');\n if (target == 'es5' || target == 'es6') {\n // log('> Starting continuous development build for '+target+' target')\n log('starting continuous development build');\n log(\n 'grunt dev' +\n (target ? '-' + target : '') +\n (mode ? '-' + mode : '') +\n ' --color',\n );\n var command = exec(\n 'grunt dev' +\n (target ? '-' + target : '') +\n (mode ? '-' + mode : '') +\n ' --color',\n );\n command.stdout.pipe(process.stdout);\n command.stderr.pipe(process.stderr);\n } else {\n console.warn('unknown build target. Use es5 or es6');\n }\n}\n\n// checkWorkspaces/checkPackagePath used to live here as a second, unreferenced\n// copy of the workspaces walk in lifecycle.ts. Both copies ignored negated\n// `workspaces` entries; the live one now shares ./workspace-globs.js, and this\n// dead duplicate is gone rather than left to be revived with the old bug.\n\nexport function runOnPackagesGroupedByDependencies(\n lincdPackages,\n onBuildStack: (\n packageGroup,\n dependencies,\n ) => (pkg: PackageDetails) => Promise<any>,\n onStackEnd,\n sync = false,\n): Promise<void> {\n let dependencies: Map<PackageDetails, PackageDetails[]> = new Map();\n\n let res, rej;\n const deferredPromise = new Promise<void>((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n //get dependencies of each package\n let leastDependentPackage;\n lincdPackages.forEach((pkg) => {\n var pack = getPackageJSON(pkg.path);\n if (pack) {\n //get lincd related dependencies and get the actual package details from the package map by removing '@dacore/' from the package name\n let packageDependencies = Object.keys(pack.dependencies || {})\n .filter((dependency) => lincdPackages.has(dependency))\n .map((dependency) => {\n return lincdPackages.has(dependency)\n ? lincdPackages.get(dependency)\n : dependency;\n });\n // console.log(package.packageName,packageDependencies.map())\n dependencies.set(pkg, packageDependencies);\n }\n });\n\n dependencies.forEach((PackageDependencies, pkg) => {\n if (\n !PackageDependencies.some((dependency) => {\n return (\n typeof dependency !== 'string' &&\n lincdPackages.has(dependency.packageName)\n );\n })\n ) {\n leastDependentPackage = pkg;\n }\n });\n\n let startStack: PackageDetails[] = leastDependentPackage\n ? [leastDependentPackage]\n : [];\n\n const runPackage = async (runFunction, pck) => {\n try {\n const result = await runFunction(pck);\n done.add(pck);\n return result;\n } catch (errorObj) {\n if (errorObj.error) {\n let {error, stdout, stderr} = errorObj;\n warn(\n 'Uncaught exception whilst running parallel function on ' +\n pck.packageName,\n error?.message ? error.message : error?.toString(),\n // stdout,\n // stderr,\n );\n } else {\n warn(\n 'Uncaught exception whilst running parallel function on ' +\n pck.packageName,\n errorObj?.toString(),\n // stdout,\n // stderr,\n );\n process.exit();\n }\n // warn(chalk.red(pck.packageName+' failed:'));\n // console.log(stdout);\n done.add(pck);\n return undefined;\n }\n };\n\n let done: Set<PackageDetails> = new Set();\n let results = [];\n let runStack = async (stack) => {\n let runFunction = onBuildStack(stack, dependencies);\n let stackPromise: Promise<any>;\n if (sync) {\n //build the stack in parallel\n stackPromise = Promise.resolve(true);\n stack.forEach((pck) => {\n stackPromise = stackPromise.then(() => {\n return runPackage(runFunction, pck);\n });\n });\n } else {\n //build the stack in parallel\n stackPromise = Promise.all(\n stack.map((pck) => {\n return runPackage(runFunction, pck);\n }),\n );\n }\n\n //wait till stack is completed\n let stackResults = await stackPromise;\n results = results.concat(stackResults);\n\n //clear stack for next round\n stack = [];\n\n //find those packages who have all their dependencies already built and add them to the stack\n lincdPackages.forEach((pkg) => {\n let deps = dependencies.get(pkg);\n\n //if the package is not done yet\n //but every dependency is now done OR was not something we can build (some @dacore dependencies may not be local)\n if (\n !done.has(pkg) &&\n deps.every((dependency) => {\n return (\n typeof dependency !== 'string' &&\n (done.has(dependency) || !lincdPackages.has(dependency.packageName))\n );\n })\n ) {\n stack.push(pkg);\n }\n });\n\n if (stack.length <= 0 && done.size < lincdPackages.size) {\n console.log(\n chalk.red(\n 'Only ' +\n done.size +\n ' out of ' +\n lincdPackages.size +\n ' packages have been built',\n ),\n );\n console.log(\n 'ALL remaining packages have dependencies that have not been met. This may point to ' +\n chalk.red('circular dependencies.'),\n );\n console.log(\n 'Already built: ' +\n Array.from(done)\n .map((p) => chalk.green(p.packageName))\n .join(', '),\n );\n console.log(\n chalk.blue('\\nTo solve this issue') +\n ': find the circular dependencies below and fix the dependencies:\\n\\n',\n );\n //TODO: actually find and name the packages that have circular dependencies\n // let circular = [];\n // lincdPackages.forEach((pkg) => {\n // if (!done.has(pkg))\n // {\n // let deps = dependencies.get(pkg);\n // if (deps.some(dependency => {\n // //return true if this dependency (indirectly) depends on the package whos' dependency it is\n // return hasDependency(dependency,pkg,dependencies)\n // }))\n // {\n // circular.push(pkg);\n // }\n // process.exit();\n // }\n // });\n lincdPackages.forEach((pkg) => {\n let deps = dependencies.get(pkg);\n if (!done.has(pkg)) {\n console.log(\n chalk.red(pkg.packageName) +\n ' has not been built yet. Unbuilt dependencies:\\n' +\n deps\n .filter((dependency) => {\n return !Array.from(done).some((p) => {\n // console.log(p.packageName,dependency.packageName,p===dependency)\n return p === dependency;\n });\n })\n .map((p) =>\n chalk.red(\n '\\t- ' +\n (p?.packageName ? p.packageName : p.toString()) +\n '\\n',\n ),\n )\n .join(' '),\n );\n // console.log(chalk.red(pkg.packageName)+' has not been built yet. Built dependencies:\\n' + deps.filter(dependency => {\n // return Array.from(done).some(p => p.packageName === pkg.packageName)\n // }).map(p => chalk.green('\\t- '+p.packageName+'\\n')).join(\" \"))\n // console.log(chalk.red(pkg.packageName)+' has not been built yet. Built dependencies:\\n' + deps.filter(dependency => done.has(pkg)).map(p => chalk.green('\\t- '+p.packageName+'\\n')).join(\" \"))\n }\n });\n }\n\n //if more to be built, iterate\n if (stack.length > 0) {\n return runStack(stack);\n } else {\n onStackEnd(dependencies, results.filter(Boolean));\n res();\n }\n };\n\n //starts the process\n if (startStack.length === 0) {\n // No packages to build, resolve immediately\n onStackEnd(dependencies, []);\n res();\n } else {\n runStack(startStack).catch((err) => {\n rej(err);\n });\n }\n return deferredPromise;\n}\n\nfunction hasDependency(pkg, childPkg, dependencies, depth = 1) {\n console.log(\n 'Does ' + pkg.packageName + ' have dep ' + childPkg.packageName + ' ?',\n );\n let deps = dependencies.get(pkg);\n if (\n deps.some((dependency) => {\n console.log(\n dependency.packageName,\n childPkg.packageName,\n dependency === childPkg,\n );\n if (depth === 2) return false;\n // return dependency === childPkg;\n return (\n dependency === childPkg ||\n hasDependency(dependency, childPkg, dependencies, depth++)\n );\n })\n ) {\n console.log('##YES');\n return true;\n }\n console.log('going up');\n return false;\n}\n\n/**\n * Finds the topmost package.json that could be an APP_ROOT\n * Returns null if no app root is found (standalone repo case)\n */\nfunction findAppRoot(startPath = process.cwd()): string | null {\n let currentPath = startPath;\n let candidateRoots: Array<{\n path: string;\n hasWorkspaces: boolean;\n isLinked: boolean;\n }> = [];\n\n // Walk up the directory tree\n for (let i = 0; i < 10; i++) {\n const packageJsonPath = path.join(currentPath, 'package.json');\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n\n candidateRoots.push({\n path: currentPath,\n hasWorkspaces: !!packageJson.workspaces,\n isLinked: packageJson.linkedPackage === true,\n });\n }\n\n const parentPath = path.join(currentPath, '..');\n // If we've reached the root or haven't moved up\n if (parentPath === currentPath) {\n break;\n }\n currentPath = parentPath;\n }\n\n // Find the topmost package.json that has workspaces\n // Prefer non-linked packages (app roots) over linked packages\n let appRoot = null;\n for (let i = candidateRoots.length - 1; i >= 0; i--) {\n const candidate = candidateRoots[i];\n if (candidate.hasWorkspaces && !candidate.isLinked) {\n appRoot = candidate.path;\n break;\n }\n }\n\n // If no non-linked workspace found, use the topmost workspace\n if (!appRoot) {\n for (let i = candidateRoots.length - 1; i >= 0; i--) {\n if (candidateRoots[i].hasWorkspaces) {\n appRoot = candidateRoots[i].path;\n break;\n }\n }\n }\n\n return appRoot;\n}\n\n/**\n * Print the discovery result in full: what will be built, and every package\n * that was found and will not be. Nothing is discovered silently.\n */\nfunction printBuildAllPlan(plan: BuildAllPlan) {\n console.log(\n chalk.magenta(\n `Found ${plan.build.size} linked package${plan.build.size === 1 ? '' : 's'} to build: ` +\n Array.from(plan.build.keys()).join(', '),\n ),\n );\n if (plan.skipped.length === 0) return;\n console.log(\n chalk.yellow(\n `Skipping ${plan.skipped.length} package${plan.skipped.length === 1 ? '' : 's'} found but not built:`,\n ),\n );\n for (const skip of [...plan.skipped].sort((a, b) =>\n a.packageName.localeCompare(b.packageName),\n )) {\n console.log(chalk.yellow(` - ${skip.packageName}: ${skip.reason}`));\n }\n}\n\nexport function buildAll(options) {\n console.log(\n 'Building all linked packages of this repository in order of dependencies',\n );\n\n const plan = planBuildAll('./', findAppRoot() || undefined);\n printBuildAllPlan(plan);\n let lincdPackages = plan.build;\n\n if (lincdPackages.size === 0) {\n console.log(chalk.yellow('Nothing to build.'));\n return;\n }\n\n let startFrom: string;\n //by default start building\n let building: boolean = true;\n\n let from = options?.from;\n let sync = options?.sync || false;\n\n // console.log('from', from);\n // console.log('sync', sync);\n // process.exit();\n\n //option to start from a specific package in the stack\n if (from) {\n startFrom = from;\n //if we have a startFrom, then we havnt started the build process yet\n building = startFrom ? false : true;\n\n //clear targets\n // target = '';\n // target2 = '';\n console.log(chalk.blue('Will skip builds until ' + startFrom));\n\n // return async (pkg) => {};\n }\n // if (target2 == 'from') {\n // startFrom = target3;\n // //if we have a startFrom, then we havnt started the build process yet\n // building = startFrom ? false : true;\n //\n // //clear targets\n // target2 = '';\n // target3 = '';\n // console.log(chalk.blue('Will skip builds until ' + startFrom));\n //\n // // return async (pkg) => {};\n // }\n\n // Successfully built (or deliberately passed over by --from).\n let done: Set<PackageDetails> = new Set();\n // Packages whose own build script failed.\n let failed: Set<PackageDetails> = new Set();\n // Packages not built because a dependency failed or was itself not built,\n // mapped to the failed package(s) at the root of that chain.\n let notBuilt: Map<PackageDetails, string[]> = new Map();\n\n progressUpdate(lincdPackages.size + ' packages left');\n\n let packagesLeft = lincdPackages.size;\n const finished = runOnPackagesGroupedByDependencies(\n lincdPackages,\n (packageGroup, dependencies) => {\n if (done.size > 0) {\n debugInfo(\n chalk.magenta(\n '\\n-------\\nThese packages are next, since all their dependencies have now been build:',\n ),\n );\n }\n debugInfo(\n 'Now building: ' + chalk.blue(packageGroup.map((i) => i.packageName)),\n );\n return async (pkg: PackageDetails) => {\n // A package whose dependency failed (directly or further down the\n // chain) cannot be built against it. Report it instead of building it,\n // and keep building everything else.\n const causes = new Set<string>();\n for (const dep of dependencies.get(pkg) || []) {\n if (typeof dep === 'string') continue;\n if (failed.has(dep)) causes.add(dep.packageName);\n notBuilt.get(dep)?.forEach((c) => causes.add(c));\n }\n if (causes.size > 0) {\n const roots = [...causes];\n notBuilt.set(pkg, roots);\n packagesLeft--;\n console.log(\n chalk.yellow(\n `Not building ${pkg.packageName} because ${roots.join(', ')} failed`,\n ),\n );\n return undefined;\n }\n\n let command: Promise<any>;\n let skipping = false;\n //if we're skipping builds until a certain package\n if (!building) {\n //if the package name matches the package we're supposed to start from then start building packages\n if (pkg.packageName == startFrom) {\n building = true;\n }\n //else still waiting for the package\n else {\n log(chalk.blue('skipping ' + pkg.packageName));\n command = Promise.resolve(true);\n skipping = true;\n }\n }\n //unless told otherwise, build the package\n if (!command) {\n // Invoke the package's own `build` script. This lets each package\n // own its build pipeline — e.g. @_linked/core uses direct tsc, pure-CSS\n // packages may have no-op builds, and linkedPackage: true packages\n // typically call `linked build` internally.\n //\n // npm is the default; the package manager is detected per package so\n // packages inside an existing yarn workspace still build with yarn.\n const pkgDir = path.join(process.cwd(), pkg.path);\n const pkgJson = getPackageJSON(pkgDir);\n const hasBuildScript = !!pkgJson?.scripts?.build;\n\n if (!hasBuildScript) {\n // No build script — skip gracefully (e.g. a pure-assets package).\n command = Promise.resolve(true);\n } else {\n const buildCmd = runScriptCommand(\n detectPackageManager(pkgDir),\n 'build',\n );\n command = execPromise(buildCmd, false, false, {\n cwd: pkgDir,\n })\n .then((res) => res === '' || typeof res === 'string')\n .catch((err) => {\n // A non-zero exit is a failed build. Report it and resolve to\n // undefined, which is what the result handler below reads as\n // failure. Resolving to an error object would count as built.\n const output = [err?.stdout, err?.stderr]\n .filter(Boolean)\n .join('\\n');\n console.error(\n chalk.red(pkg.packageName + ' build failed') +\n (output ? '\\n' + output : ''),\n );\n return undefined;\n });\n }\n log(chalk.cyan('Building ' + pkg.packageName));\n process.stdout.write(packagesLeft + ' packages left\\r');\n }\n\n const res = await command;\n packagesLeft--;\n //true is success, false is success with warnings, undefined is failure\n if (typeof res === 'undefined') {\n failed.add(pkg);\n return undefined;\n }\n if (!skipping) {\n log(\n chalk.green('Built ' + pkg.packageName) +\n (res === false ? chalk.redBright(' (with warnings)') : ''),\n );\n }\n done.add(pkg);\n process.stdout.write(packagesLeft + ' packages left\\r');\n return res;\n };\n },\n (dependencies) => {\n //if no more packages to build but we never started building...\n if (!building) {\n console.log(\n chalk.red(\n 'Could not find the package to start from. Please provide a correct package name or package name to build from',\n ),\n );\n process.exit(1);\n return;\n }\n // Anything neither built, failed nor held back by a failure was never\n // scheduled: its dependencies could not all be met, which points to a\n // dependency cycle.\n const unscheduled = Array.from(lincdPackages.values()).filter(\n (pkg: PackageDetails) =>\n !done.has(pkg) && !failed.has(pkg) && !notBuilt.has(pkg),\n ) as PackageDetails[];\n if (unscheduled.length > 0) {\n console.log(\n chalk.red(\n 'CYCLICAL DEPENDENCIES? - could not build some packages because they depend on each other.',\n ),\n );\n for (const pkg of unscheduled) {\n const deps = dependencies.get(pkg) || [];\n console.log(\n chalk.red(pkg.packageName) +\n ' depends on ' +\n deps\n .filter((dependency) => typeof dependency !== 'string')\n .map((d: PackageDetails) =>\n done.has(d) ? d.packageName : chalk.red(d.packageName),\n )\n .join(', '),\n );\n //also print some information why these packages have not been moved into the stack\n const stringDependencies = deps.filter((d) => typeof d === 'string');\n if (stringDependencies.length > 0) {\n console.log(\n chalk.red(\n 'And it depends on these package(s) - which seem not to be proper packages :' +\n stringDependencies.join(', '),\n ),\n );\n console.log(\n chalk.red(\n 'Could you remove this from dependencies? Should it be a devDependency?',\n ),\n );\n }\n }\n }\n\n printBuildAllSummary(done, failed, notBuilt, unscheduled);\n if (failed.size > 0 || notBuilt.size > 0 || unscheduled.length > 0) {\n process.exit(1);\n }\n },\n sync,\n );\n return finished;\n}\n\n/**\n * The end-of-run report of `build-all`: what was built, every package whose\n * build failed, and every package that was not built because of one.\n */\nfunction printBuildAllSummary(\n done: Set<PackageDetails>,\n failed: Set<PackageDetails>,\n notBuilt: Map<PackageDetails, string[]>,\n unscheduled: PackageDetails[],\n) {\n printBuildResults(\n [...failed].map((p) => p.packageName),\n done,\n );\n if (notBuilt.size > 0) {\n warn(\n `Not built (${notBuilt.size}) because a dependency failed:\\n` +\n [...notBuilt]\n .map(\n ([pkg, roots]) =>\n ` - ${chalk.red(pkg.packageName)}: not built because ${roots.join(', ')} failed`,\n )\n .join('\\n') +\n '\\n',\n );\n }\n if (unscheduled.length > 0) {\n warn(\n 'Not built (dependency cycle): ' +\n chalk.red(unscheduled.map((p) => p.packageName).join(', ')) +\n '\\n',\n );\n }\n const problems = failed.size + notBuilt.size + unscheduled.length;\n if (problems > 0) {\n warn(\n chalk.red(\n `build-all finished with ${failed.size} failed and ${notBuilt.size + unscheduled.length} not built, out of ${done.size + problems} packages.`,\n ),\n );\n }\n}\n\n/**\n * Returns a map of the packages that this repository manages (so no packages found through the workspaces who's path contains ../ )\n * @param rootPath\n */\nfunction getLocalLincdPackageMap(rootPath = './'): Map<string, PackageDetails> {\n let map = new Map();\n getLincdPackages(rootPath).forEach((pkg) => {\n if (pkg.path.indexOf('../') === -1 && pkg.path.indexOf('..\\\\') === -1) {\n // console.log(package.path);\n map.set(pkg.packageName, pkg);\n }\n });\n return map;\n}\n\nfunction getLocalLincdModules(rootPath = './'): PackageDetails[] {\n return getLincdPackages(rootPath).filter((pkg) => {\n return pkg.path.indexOf('..\\\\') === -1;\n });\n}\n\n// getLincdPackages moved to ./lifecycle.ts and re-exported above.\n\nfunction setVariable(name, replacement) {\n //prepare name for regexp\n name = name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n variables[name] = replacement;\n}\n\nvar replaceVariablesInFile = async (filePath: string) => {\n var fileContent = await fs.readFile(filePath, 'utf8').catch((err) => {\n console.warn(chalk.red('Could not read file ' + filePath));\n });\n if (fileContent) {\n var newContent = replaceCurlyVariables(fileContent);\n return fs.writeFile(filePath, newContent);\n } else {\n return Promise.resolve();\n }\n};\n\nvar replaceCurlyVariables = function (string) {\n // var reg = new RegExp('\\\\$\\\\{'+key+'\\\\}','g');\n for (var key in variables) {\n string = string.replace(\n new RegExp('\\\\$\\\\{' + key + '\\\\}', 'g'),\n variables[key],\n );\n }\n return string;\n};\n\nconst capitalize = (str) =>\n str.charAt(0).toUpperCase() + str.toLowerCase().slice(1);\nconst camelCase = (str) => {\n let string = str.replace(/[^A-Za-z0-9]/g, ' ').split(' ');\n if (string.length > 1) {\n return string.reduce((result, word) => result + capitalize(word));\n }\n return str;\n};\n\nexport const createOntology = async (\n prefix,\n uriBase?,\n basePath = process.cwd(),\n) => {\n if (!prefix) {\n console.warn('Please provide a suggested prefix as the first argument');\n return;\n }\n\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-ontology');\n let targetFolder = ensureFolderExists(sourceFolder, 'ontologies');\n\n if (!uriBase) {\n uriBase = defaultOntologyNamespace(prefix);\n }\n setVariable('uri_base', asNamespace(uriBase));\n\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(prefix);\n\n //copy ontology accessor file\n log(\"Creating files for ontology '\" + prefix + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.ts');\n let targetRegisterFile = path.join(targetFolder, hyphenName + '.register.ts');\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'ontologies', 'example-ontology.ts'),\n targetFile,\n );\n\n // The registration sibling. It has to be a separate module: registration needs the\n // ontology module's whole export namespace, and a module cannot import itself once a\n // bundler is involved -- Rollup elides the self-reference and the app dies at boot.\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'ontologies', 'example-ontology.register.ts'),\n targetRegisterFile,\n );\n\n //copy data files\n let targetDataFile = path.join(\n targetFolder,\n '..',\n 'data',\n hyphenName + '.json',\n );\n let targetDataFile2 = path.join(\n targetFolder,\n '..',\n 'data',\n hyphenName + '.json.d.ts',\n );\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'data', 'example-ontology.json'),\n targetDataFile,\n );\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'data', 'example-ontology.json.d.ts'),\n targetDataFile2,\n );\n\n await replaceVariablesInFiles(\n targetFile,\n targetRegisterFile,\n targetDataFile,\n targetDataFile2,\n );\n log(\n `Prepared a new ontology data files in ${chalk.magenta(\n targetDataFile.replace(basePath, ''),\n )}`,\n `And an ontology accessor file in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n );\n\n //if this is not a lincd app (but a lincd package instead)\n if (!sourceFolder.includes('frontend')) {\n //then also add an import to index\n // Import the register sibling, not the terms module: only the sibling calls\n // linkedOntology(). See the comment in example-ontology.register.ts.\n let indexPath = addLineToIndex(\n `import './ontologies/${hyphenName}.register.js';`,\n 'ontologies',\n );\n log(`Added an import of this file from ${chalk.magenta(indexPath)}`);\n }\n};\n// The shapes barrel (src/shapes/index.ts) is imported by both the frontend index and\n// the backend entry, so every shape registers on both boot paths (and materializes into\n// app-data on boot). `create-shape` adds each new shape here — NOT to the main index.\n// It holds side-effect imports only (no exports), in packages and apps alike: apps load a\n// package's whole set with `import '<pkg>/shapes/index'`, and `linked build` fails a\n// package whose shapes/index misses one of its shapes.\nconst SHAPES_BARREL_HEADER =\n `// Shape registry — every shape is imported here so its @linkedShape decorator runs and\\n` +\n `// the shape registers on both boot paths (backend materialization + frontend).\\n` +\n `// Side-effect imports only: no exports, components or providers. \\`linked\\n` +\n `// create-shape\\` maintains this list.\\n//SHAPES\\n`;\n\nconst ensureBackendImportsShapes = function (root: string = process.cwd()) {\n const backendPath = path.join(root, 'src', 'backend.ts');\n if (!fs.existsSync(backendPath)) return;\n let contents = fs.readFileSync(backendPath, 'utf-8');\n if (contents.includes('./shapes/index')) return;\n fs.writeFileSync(backendPath, `import './shapes/index.js';\\n` + contents);\n};\n\n// Register a shape in the shapes barrel (src/shapes/index.ts), creating it if needed, and\n// make sure both the main index and backend.ts import the barrel. Idempotent.\nexport const addShapeToBarrel = function (shapeHyphenName: string, root: string = process.cwd()) {\n const shapesDir = path.join(root, 'src', 'shapes');\n fs.ensureDirSync(shapesDir);\n const barrelPath = path.join(shapesDir, 'index.ts');\n let contents = fs.existsSync(barrelPath)\n ? fs.readFileSync(barrelPath, 'utf-8')\n : SHAPES_BARREL_HEADER;\n const line = `import './${shapeHyphenName}.js';`;\n if (!contents.split(/\\n/g).some((l) => l.trim() === line.trim())) {\n contents = contents.includes('//SHAPES')\n ? contents.replace('//SHAPES', `//SHAPES\\n${line}`)\n : contents.replace(/\\n*$/, '') + `\\n${line}\\n`;\n fs.writeFileSync(barrelPath, contents);\n }\n // Both boot paths must load the barrel (idempotent).\n addLineToIndex(`import './shapes/index.js';`, 'shapes', root);\n ensureBackendImportsShapes(root);\n return barrelPath;\n};\n\n// Exported for Shape-Builder reuse: CodeShapeSyncService adds\n// the `import './shapes/<Shape>.js';` line to a generated app package's index.\nexport const addLineToIndex = function (\n line,\n insertMatchString: string,\n root: string = process.cwd(),\n insertAtStart: boolean = false,\n) {\n //import ontology in index\n let indexPath = ['index.ts', 'index.tsx']\n .map((f) => path.join(root, 'src', f))\n .find((indexFileName) => {\n return fs.existsSync(indexFileName);\n });\n if (indexPath) {\n let indexContents = fs.readFileSync(indexPath, 'utf-8');\n // Idempotent: if the exact line is already present, do nothing (re-running\n // a shape edit must not append a duplicate import).\n if (indexContents.split(/\\n/g).some((l) => l.trim() === line.trim())) {\n return indexPath;\n }\n let lines = indexContents.split(/\\n/g);\n let newContents;\n for (var key in lines) {\n //if the match string is found\n if (lines[key].indexOf(insertMatchString) !== -1) {\n //add the new line after this line\n lines[key] += `\\n${line}`;\n newContents = lines.join('\\n');\n // log(\"Found at \"+key,lines,newContents);\n break;\n }\n }\n if (!newContents) {\n if (insertAtStart) {\n newContents = `${line}\\n${indexContents}`;\n } else {\n newContents = `${indexContents}\\n${line}`;\n }\n // log(\"Added at end\",newContents);\n }\n fs.writeFileSync(indexPath, newContents);\n }\n return indexPath;\n};\nconst replaceVariablesInFiles = function (...files: string[]) {\n return Promise.all(\n files.map((file) => {\n return replaceVariablesInFile(file);\n }),\n );\n};\nconst replaceVariablesInFolder = async function (\n folder: string,\n): Promise<void> {\n //get all files in folder, including files that start with a dot\n try {\n const files = await glob(folder + '/**/*', {dot: true, nodir: true});\n await Promise.all(\n files.map((file) => {\n return replaceVariablesInFile(file);\n }),\n );\n } catch (err) {\n console.log('Error', err);\n throw err;\n }\n};\n\nconst replaceVariablesInFilesWithRoot = function (\n root: string,\n ...files: string[]\n) {\n return replaceVariablesInFiles(...files.map((f) => path.join(root, f)));\n};\nexport type PackageManager = 'npm' | 'yarn';\n\n/**\n * The package manager `create-app` scaffolds with. Both templates (web and\n * react-native) install with npm, so a scaffolded app has exactly one lockfile.\n */\nexport const CREATE_APP_PACKAGE_MANAGER: PackageManager = 'npm';\n\n/** The shell command that installs a scaffolded app's dependencies. */\nexport function installCommandFor(pm: PackageManager): string {\n return pm === 'yarn'\n ? 'export NODE_OPTIONS=\"--no-network-family-autoselection\" && yarn install'\n : 'npm install';\n}\n\n/** The command printed to the user for starting their new app. */\nexport function startCommandFor(pm: PackageManager): string {\n return pm === 'yarn' ? 'yarn start' : 'npm start';\n}\n\nconst ensureFolderExists = function (...folders: string[]) {\n let target;\n folders.forEach((folder) => {\n target = target ? path.join(target, folder) : path.join(folder);\n if (!fs.existsSync(target)) {\n fs.mkdirSync(target);\n }\n });\n return target;\n /*let targetFolder = path.join(...folders);\n let parentDirectory = folders.slice(0, folders.length - 1);\n if (!fs.existsSync(targetFolder)) {\n if (fs.existsSync(path.join(...parentDirectory))) {\n fs.mkdirSync(targetFolder);\n } else {\n warn(\n `Please run this command from the root of your package. This command expects ${parentDirectory.toString()} to exists from that folder`,\n );\n }\n }\n return targetFolder;*/\n};\n\nexport const setNameVariables = function (name) {\n let hyphenName = name.toLowerCase().replace(/[-_\\s]+/g, '-');\n let camelCaseName = camelCase(name); //some-package --> someModule\n let underscoreName = name.replace(/[-\\s]+/g, '_');\n let plainName = name.replace(/[-\\s]+/g, '');\n\n //longer similar variables names should come before the shorter ones\n setVariable('underscore_name', underscoreName);\n setVariable('hyphen_name', hyphenName);\n setVariable('camel_name', camelCaseName);\n setVariable('name', name);\n setVariable('plain_name', plainName);\n\n return {hyphenName, camelCaseName, underscoreName, plainName};\n};\n\nfunction getSourceFolder(basePath = process.cwd()) {\n //LINCD App\n if (fs.existsSync(path.join(basePath, 'frontend', 'src'))) {\n return path.join(basePath, 'frontend', 'src');\n }\n //LINCD package\n if (fs.existsSync(path.join(basePath, 'src'))) {\n return path.join(basePath, 'src');\n } else {\n console.warn('Cannot find source folder');\n return path.join(basePath, 'src');\n }\n}\n\n/**\n * get __dirname for either ESM/CJS\n */\nexport const getScriptDir = () => {\n return dirname__;\n // // @ts-ignore\n // if (typeof __dirname !== 'undefined')\n // {\n // // @ts-ignore\n // return __dirname;\n // }\n // else\n // {\n // // @ts-ignore\n // return dirname(import.meta.url).replace('file:/','');\n // }\n};\nexport const createShape = async (name, basePath = process.cwd()) => {\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-shape');\n let targetFolder = ensureFolderExists(sourceFolder, 'shapes');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n // log(\"Creating files for shape '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.ts');\n fs.copySync(\n defaultsDir('shape.ts'),\n targetFile,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile);\n log(\n `Created a new shape class template in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n );\n\n // Register the shape in the shapes barrel (src/shapes/index.ts) — NOT the main index —\n // and make sure the barrel is loaded on both boot paths. This is what makes the app\n // materialize its own shapes on boot.\n // The barrel sits next to the shape: in the source folder's parent, not the cwd, which\n // is only the same folder when the command runs from the package or app root.\n const barrelPath = addShapeToBarrel(hyphenName, path.dirname(sourceFolder));\n log(`Registered the shape in ${chalk.magenta(barrelPath.replace(basePath, ''))}`);\n};\n\nexport const createSetComponent = async (name, basePath = process.cwd()) => {\n assertInsidePackage(path.join(basePath, 'src'), 'create-set-component');\n let targetFolder = ensureFolderExists(basePath, 'src', 'components');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n log(\"Creating files for set component '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.tsx');\n fs.copySync(\n defaultsDir('set-component.tsx'),\n targetFile,\n );\n\n let targetFile2 = path.join(targetFolder, hyphenName + '.scss');\n fs.copySync(\n defaultsDir('component.scss'),\n targetFile2,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile, targetFile2);\n\n let indexPath = addLineToIndex(\n `import './components/${hyphenName}.js';`,\n 'components',\n );\n\n log(\n `Created a new set component in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n `Created a new stylesheet in ${chalk.magenta(\n targetFile2.replace(basePath, ''),\n )}`,\n `Added an import of this file from ${chalk.magenta(indexPath)}`,\n );\n};\nexport const createComponent = async (name, basePath = process.cwd()) => {\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-component');\n let targetFolder = ensureFolderExists(sourceFolder, 'components');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n log(\"Creating files for component '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.tsx');\n fs.copySync(\n defaultsDir('component.tsx'),\n targetFile,\n );\n\n let targetFile2 = path.join(targetFolder, hyphenName + '.scss');\n fs.copySync(\n defaultsDir('component.scss'),\n targetFile2,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile, targetFile2);\n log(\n `Created a new component template in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n `Created component stylesheet template in ${chalk.magenta(\n targetFile2.replace(basePath, ''),\n )}`,\n );\n\n //if this is not a lincd app (but a lincd package instead)\n if (!sourceFolder.includes('frontend')) {\n //then also add an import to index\n let indexPath = addLineToIndex(\n `import './components/${hyphenName}.js';`,\n 'components',\n );\n log(`Added an import of this file from ${chalk.magenta(indexPath)}`);\n }\n};\n\n// Reads the source of all ts/tsx files in the src folder and fails on imports\n// that reach outside the package source root ('outside_package'), or that point\n// into another Linked package's /src/ or /lib/ ('internal_linked'). Extensionless relative\n// imports are fine: `linked build` rewrites the emitted ESM specifiers.\nexport const checkImports = async (\n sourceFolder: string = getSourceFolder(),\n depth: number = 0, // Used to check if the import is outside the src folder\n invalidImports: Map<string, {type: string; importPath: string}[]> = new Map(),\n) => {\n if (!fs.existsSync(sourceFolder)) {\n // Package has no src/ folder (e.g. pure-CSS packages). Nothing to check.\n return true;\n }\n const dir = fs.readdirSync(sourceFolder);\n\n // Start checking each file in the source folder\n for (const file of dir) {\n const filename = path.join(sourceFolder, file);\n\n // Skip test sources. Test files (and their helpers/probes) are not part\n // of the shipped package, so the import rules do not apply to them.\n if (\n /(?:^|[\\\\/])(?:tests?|__tests__|test-helpers)(?:[\\\\/]|$)/.test(filename) ||\n /\\.(?:test|spec)\\.tsx?$/.test(file) ||\n /^type-probe.*\\.tsx?$/.test(file)\n ) {\n continue;\n }\n\n // File is either a directory, or not a .ts(x)\n // INFO: For future use - if this part fails, it could be due to user permissions\n // i.e. the program not having access to check the file metadata\n if (!filename.match(/\\.tsx?$/)) {\n try {\n if (statSync(filename).isDirectory()) {\n await checkImports(filename, depth + 1, invalidImports);\n }\n } catch (e) {\n console.log(e);\n }\n // A directory has now been recursed into, and any other file is not a\n // source file: either way there is nothing here to read imports from.\n continue;\n }\n\n const allImports = await getFileImports(filename);\n if (!invalidImports.has(filename)) {\n invalidImports.set(filename, []);\n }\n\n allImports.forEach((i) => {\n if (isImportOutsideOfPackage(i, depth)) {\n invalidImports.get(filename).push({\n type: 'outside_package',\n importPath: i,\n });\n }\n if (isInternalLinkedImport(i)) {\n invalidImports.get(filename).push({\n type: 'internal_linked',\n importPath: i,\n });\n }\n });\n }\n\n let res = '';\n //check if invalidImports has any\n let flat = [...invalidImports.values()].flat();\n // All recursion must have finished, display any errors\n if (depth === 0 && flat.length > 0) {\n res += chalk.red('Invalid imports found.\\n');\n\n invalidImports.forEach((value, key) => {\n // res += '- '+chalk.blueBright(key.split('/').pop()) + ':\\n';\n value.forEach(({type, importPath}) => {\n let message =\n key.split('/').pop() + \" imports from '\" + importPath + \"'\";\n if (type === 'outside_package') {\n message += ' which is outside the package source root';\n }\n if (type === 'internal_linked') {\n message +=\n \" which reaches into another Linked package's /src/ or /lib/.\" +\n ' That breaks when its build layout changes and bypasses its' +\n ' exports map. Import its public subpath instead.';\n }\n res += chalk.red(message + '\\n');\n });\n });\n\n // Throw so buildStep aborts the compile pipeline: importing from outside\n // the package, or into another Linked package's /src/ or /lib/, breaks the\n // published package.\n throw res;\n }\n // Nothing invalid: all imports OK.\n return true;\n};\n\nexport const depCheckStaged = async () => {\n console.log('Checking dependencies of staged files');\n stagedGitFiles(async function (err, results) {\n const packages = new Set<string>();\n await Promise.all(\n results.map(async (file) => {\n // console.log('STAGED: ', file.filename);\n let root = await findNearestPackageJson(file.filename);\n packages.add(root.path);\n }),\n );\n\n [...packages].forEach((packageRoot) => {\n const pack = JSON.parse(fs.readFileSync(packageRoot, 'utf8'));\n const srcPath = packageRoot.replace('package.json', '');\n console.log('Checking dependencies of ' + chalk.blue(pack.name) + ':');\n return depCheck(process.cwd() + '/' + srcPath);\n // console.log('check dependencies of ' + pack.name);\n //\n // console.log('ROOT of ' + file.filename + ': ' + root.path);\n // console.log('ROOT of ' + file.filename + ': ' + root.data);\n });\n });\n};\nexport const depCheck = async (packagePath: string = process.cwd()) => {\n // log('Checking depencies of ' + chalk.cyan(packagePath));\n return new Promise((resolve, reject) => {\n depcheck(packagePath, {}, (results) => {\n if (results.missing) {\n let lincdPackages = getLocalLincdModules(packagePath);\n let missing = Object.keys(results.missing);\n //filter out missing types, if it builds we're not too concerned about that at the moment?\n //especially things like @types/react, @types/react-dom, @types/node (they are added elsewhere?)\n // missing = missing.filter(m => m.indexOf('@types/') === 0);\n //currently react is not an explicit dependency, but we should add it as a peer dependency\n missing.splice(missing.indexOf('react'), 1);\n\n let missingLincdPackages = missing.filter((missingDep) => {\n return lincdPackages.some((lincdPackage) => {\n return lincdPackage.packageName === missingDep;\n });\n });\n //currently just missing LINCD packages cause a hard failure exit code\n if (missingLincdPackages.length > 0) {\n reject(\n chalk.red(\n packagePath.split('/').pop() +\n '\\n[ERROR] These linked packages are imported but they are not listed in package.json:\\n- ' +\n missingLincdPackages\n .map((missedKey) => {\n const files = results.missing[missedKey];\n return `${missedKey} (${files.length} files: ${files.join(', ')})`;\n })\n .join(',\\n- '),\n ),\n );\n } else if (missing.length > 0) {\n resolve(\n chalk.redBright(\n 'warning: ' +\n packagePath.split('/').pop() +\n ' is missing dependencies:\\n - ' +\n missing.join('\\n - '),\n ),\n );\n } else {\n resolve(true);\n }\n }\n // if(Object.keys(results.invalidFiles).length > 0) {\n // console.warn(chalk.red(\"Invalid files:\\n\")+Object.keys(results.invalidFiles).join(\",\\n\"));\n // }\n // if(Object.keys(results.invalidDirs).length > 0) {\n // console.warn(chalk.red(\"Invalid dirs:\\n\")+results.invalidDirs.toString());\n // }\n // if(results.unused) {\n // console.warn(\"Unused dependencies: \"+results.missing.join(\", \"));\n // }\n });\n });\n};\n// ensureEnvironmentLoaded moved to ./lifecycle.ts and re-exported above.\nexport const runScript = async (\n scriptName: string,\n options: {spawn: boolean},\n) => {\n //if spawn is not defined, default to true\n const spawn = options.spawn !== undefined ? options.spawn : true;\n\n await ensureEnvironmentLoaded();\n if (spawn) {\n await startServer(true);\n }\n\n log('Running script ' + scriptName);\n const scriptPath = path.join(process.cwd(), 'scripts', scriptName);\n const script = await import(scriptPath);\n await script.default().catch((error) => {\n log('Script ' + scriptName + ' finished with errors');\n logError(error);\n process.exit(1);\n });\n log('Script ' + scriptName + ' finished');\n process.exit(0);\n};\n\nexport const runMethod = async (\n packageName: string,\n method: string,\n options: {spawn: boolean},\n) => {\n await ensureEnvironmentLoaded();\n\n if (options.spawn) {\n let linkedConfig = (\n await import(path.join(process.cwd(), 'linked.config.js'))\n ).default;\n\n // Set default loadAppComponent if not provided\n if (!linkedConfig.server) {\n linkedConfig.server = {};\n }\n if (!linkedConfig.server.loadAppComponent) {\n linkedConfig.server.loadAppComponent = async () =>\n (await import(path.join(process.cwd(), 'src', 'App'))).default;\n }\n // Set default loadRoutes if not provided\n if (!linkedConfig.server.loadRoutes) {\n linkedConfig.server.loadRoutes = async () =>\n await import(path.join(process.cwd(), 'src', 'routes.tsx'));\n }\n\n const ServerClass = await loadServerClass();\n await loadBackendStorageConfig();\n let server = new ServerClass(linkedConfig);\n //init the server\n console.log('Initializing server...');\n server.initOnly().then(() => {\n //process the backend method call\n console.log('Running method ' + method);\n //mock the request and response objects\n let request = {\n body: {},\n query: {},\n params: {},\n headers: {},\n method: 'POST',\n url: '/' + packageName + '/' + method,\n };\n let response = {\n status: (statusCode) => {\n console.log('Response status code:', statusCode);\n return response;\n },\n json: (data) => {\n console.log('Response data:', data);\n },\n send: (data) => {\n console.log('Response data:', data);\n },\n };\n //TODO; allow sending args\n server\n .callBackendMethod(\n packageName,\n method,\n [],\n request as any,\n response as any,\n )\n .then(() => {\n console.log('Done');\n process.exit();\n })\n // An unmatched method (ServerCallError 501) or a provider error rejects; report it instead of an\n // unhandled rejection.\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n });\n } else {\n //reuse the existing running LinkedServer instance.\n //make a HTTP call\n //'/call/:pkg/:method',\n fetch(process.env.SITE_ROOT + '/call/' + packageName + '/' + method, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json();\n })\n .then((data) => {\n console.log('Response data:', data);\n process.exit();\n })\n .catch((error) => {\n if (\n error.code === 'ECONNREFUSED' ||\n error.cause?.code === 'ECONNREFUSED'\n ) {\n console.error(\n chalk.red(\n 'Could not connect to the backend server. Is it running?',\n ),\n );\n console.error(\n `Make sure you ${chalk.magenta('run \"npm start\" in a separate process')} before calling this method.`,\n );\n } else {\n console.error('Error during backend call:', error);\n }\n process.exit(1);\n });\n }\n};\nexport const startServer = async (\n initOnly: boolean = false,\n ServerClass = null,\n) => {\n await ensureEnvironmentLoaded();\n\n let linkedConfig = (await import(path.join(process.cwd(), 'linked.config.js')))\n .default;\n\n // function scssLoadcall(source, filename) {\n // return 'console.log(\"SCSS CALL: ' + filename + '\");\\n' + source;\n // process.exit();\n // }\n // hook.hook('.scss', scssLoadcall);\n // hook.hook('.css', scssLoadcall);\n // import.meta.\n // // hook.hook('*.css', scssLoadcall);\n // // hook.hook('Body.module.css', scssLoadcall);\n // hook.hook('.module.css', scssLoadcall);\n\n if (!ServerClass) {\n ServerClass = await loadServerClass();\n }\n await loadBackendStorageConfig();\n\n // Set default loadAppComponent if not provided\n if (!linkedConfig.server) {\n linkedConfig.server = {};\n }\n if (!linkedConfig.server.loadAppComponent) {\n let appPromise;\n if (process.env.NODE_ENV !== 'development') {\n appPromise = (await import(path.join(process.cwd(), 'lib', 'App.js')))\n .default;\n } else {\n appPromise = (await import(path.join(process.cwd(), 'src', 'App.tsx')))\n .default;\n }\n linkedConfig.server.loadAppComponent = async () => {\n return appPromise;\n };\n }\n\n // Set default loadRoutes if not provided\n if (!linkedConfig.server.loadRoutes) {\n linkedConfig.server.loadRoutes = async () => {\n if (process.env.NODE_ENV !== 'development') {\n return await import(path.join(process.cwd(), 'lib', 'routes.js'));\n } else {\n return await import(path.join(process.cwd(), 'src', 'routes.tsx'));\n }\n };\n }\n\n let server = new ServerClass(linkedConfig);\n //Important to use slice, because when using clusers, child processes need to be able to read the same arguments\n let args = process.argv.slice(2);\n //if --initOnly is passed, only initialize the server and don't start it\n if (args.includes('--initOnly') || initOnly) {\n return server.initOnly();\n } else {\n return server.start();\n }\n};\n/**\n * Compile the app's backend into `lib/`.\n *\n * Vite, in SSR mode, against the app's own `vite.config` — the same transform\n * `linked start` applies through `vite.ssrLoadModule`. It used to be a bare\n * `tsc`, which meant dev and production resolved the same source two different\n * ways: `tsc` could not follow the workspace resolver or an extensionless\n * relative import, it inferred `rootDir` from whatever happened to be in the\n * program (so `lib/backend.js` could land in `lib/src/`), and being a\n * typechecker first it failed the build on any type error anywhere in the app,\n * including in files the backend never loads. Typechecking is a separate\n * concern from emitting, and belongs in its own command.\n */\nexport const buildBackend = async () => {\n console.log(chalk.magenta(`🛠 Preparing ${process.env.NODE_ENV} backend`));\n await ensureEnvironmentLoaded();\n\n const appRoot = process.cwd();\n const {buildBackendWithVite, copyBackendStylesheets} = await import(\n './app-release/build-backend.js'\n );\n\n // Step 1: Compile with Vite (it empties lib/ itself)\n const compileSpinner = ora({\n discardStdin: true,\n text: 'Compiling backend with Vite',\n }).start();\n\n try {\n await buildBackendWithVite({appRoot});\n compileSpinner.succeed('Backend compiled');\n } catch (e) {\n console.error(e);\n compileSpinner.fail('Failed to compile the backend');\n return;\n }\n\n // Step 2: Copy CSS files the server reads off disk by path\n const copySpinner = ora({\n discardStdin: true,\n text: 'Copying CSS files',\n }).start();\n\n try {\n const copied = await copyBackendStylesheets(appRoot, (dir) =>\n getFiles(dir, '.css'),\n );\n copySpinner.succeed(`${copied} CSS files copied`);\n } catch (e) {\n console.error(e);\n copySpinner.fail('Failed to copy CSS files');\n }\n\n return true;\n};\n\nexport const upgradePackages = async () => {\n await ensureEnvironmentLoaded();\n // let packages = getLincdPackages();\n // let packages = getLocalLincdModules();\n let packages = getLocalLincdPackageMap();\n let dirname = getScriptDir();\n const tsConfigESM = path.join(\n dirname,\n '../../defaults/package',\n 'tsconfig-esm.json',\n );\n const typesFile = path.join(\n dirname,\n '../../defaults/package/src',\n 'types.d.ts',\n );\n\n const tsConfigTemplate = await fs\n .readJson(path.join(dirname, '../../defaults/package', 'tsconfig.json'))\n .catch((err) => {\n console.log(err);\n });\n runOnPackagesGroupedByDependencies(\n packages,\n (packageGroup, dependencies) => {\n // packageGroup.forEach((pkg) => {\n // console.log(' Upgrading ' + pkg.packageName);\n console.log('-----');\n return async (pkg: PackageDetails) => {\n if (pkg.packageName === 'lincd') return;\n // await execPromise(`cd ${pkg.path} && yarn upgrade`);\n console.log('Upgrading ' + pkg.packageName);\n //\n // //create a new file src/tsconfig-cjs.json\n // //copy the contents of tsconfig.json into it\n // if (!fs.existsSync(path.join(pkg.path,'tsconfig-cjs.json')))\n // {\n // await fs.copy(tsConfigCJS,path.join(pkg.path,'tsconfig-cjs.json'));\n // await fs.copy(tsConfigESM,path.join(pkg.path,'tsconfig-esm.json'));\n // console.log('Copied new tsconfig to ' + pkg.packageName);\n // }\n //\n // //read tsconfig\n // await fs.readJson(path.join(pkg.path,'tsconfig.json')).then((tsconfig) => {\n // let oldCompilerOpts = tsconfig.compilerOptions;\n // tsconfig.compilerOptions = tsConfigTemplate.compilerOptions;\n // tsconfig.compilerOptions.types = oldCompilerOpts.types;\n // tsconfig.compilerOptions.plugins = [{\"name\": \"typescript-plugin-css-modules\"}];\n //\n // console.log('Upgraded tsconfig for ' + pkg.packageName);\n // return fs.writeJson(path.join(pkg.path,'tsconfig.json'),tsconfig,{spaces: 2});\n // });\n // //import types at the beginning of index.ts\n // addLineToIndex(`import './types';`,null,pkg.path,true);\n // //copy over the types file\n // await fs.copy(typesFile,path.join(pkg.path,'src','types.d.ts'));\n\n // await fs.readJson(path.join(pkg.path,'package.json')).then((packageJson) => {\n // let version = packageJson.version;\n // let nextVersion;\n // if (version.split('.').shift() === '0')\n // {\n // nextVersion = getNextMajorVersion(version);\n // }\n // else\n // {\n // nextVersion = getNextMinorVersion(version);\n // }\n // console.log('Upgraded version for ' + pkg.packageName + ' to ' + nextVersion);\n //\n // packageJson.version = nextVersion;\n // packageJson.devDependencies['tsconfig-to-dual-package'] = '^1.2.0';\n // packageJson.devDependencies['typescript-plugin-css-modules'] = '^5.1.0';\n //\n // packageJson.main = 'lib/cjs/index.js';\n // packageJson.module = 'lib/esm/index.js';\n // packageJson.exports = {\n // '.': {\n // 'types': './lib/esm/index.d.ts',\n // 'import': './lib/esm/index.js',\n // 'require': './lib/cjs/index.js',\n // },\n // './*': {\n // 'types': './lib/esm/*.d.ts',\n // 'import': './lib/esm/*.js',\n // 'require': './lib/cjs/*.js',\n // },\n // };\n // packageJson.typesVersions = {\n // '*': {\n // '*': [\n // 'lib/esm/*',\n // ],\n // },\n // };\n //\n // return fs.writeJson(path.join(pkg.path,'package.json'),packageJson,{ spaces: 2 });\n // });\n\n //change .css files and .scss files to .module.css and .module.scss\n let files = await getFiles(path.join(pkg.path, 'src'));\n // let tsFiles = files.filter(f => f.match(/\\.(ts|tsx)$/));\n // let cssFiles = files.filter(f => f.match(/\\.(css|scss)$/)).filter(f => !f.match(/\\.module\\.(css|scss)$/));\n // cssFiles.forEach(cssFile => {\n // let cssFileName = path.basename(cssFile);\n // let newFile = cssFileName.replace(/\\.s?css$/,'.module$&');\n // let newFilePath = cssFile.replace(/\\.s?css$/,'.module$&');\n // let jsonFile = cssFileName.replace(/\\.s?css$/,'$&.json');\n // fs.renameSync(cssFile,newFilePath);\n // console.log('Renaming ' + cssFileName + ' to ' + newFilePath);\n // //find other files that import this file and update them\n // tsFiles.forEach(tsFile => {\n // //read contents of f2\n // let contents = fs.readFileSync(tsFile,'utf8');\n // //if it imports f\n // if (contents.indexOf(cssFileName) !== -1)\n // {\n // //find the whole line that imports f\n // let line = contents.split('\\n').find(l => l.indexOf(cssFileName) !== -1);\n // // console.log(\"OLD: \"+line);\n // let jsonLine = contents.split('\\n').find(l => l.indexOf(jsonFile) !== -1);\n // // console.log(\"JSON: \"+jsonLine);\n // //if not commented out\n // if(line.indexOf('//') === -1) {\n // let previousImportPath = line.match(/['\"](.*)['\"]/)[1];\n // let newImportPath = previousImportPath.replace(cssFileName,newFile);\n // let newContents = contents.replace(line,`import style from '${newImportPath}';`)\n // .replace(jsonLine+'\\n','');\n // // console.log(\"\\n\");\n // fs.writeFileSync(tsFile,newContents);\n // console.log('Updated imports in ' + tsFile);\n // // fs.writeFileSync\n // // fs.writeFileSync(i,fs.readFileSync(i,'utf8').replace(f,newFile));\n // }\n // }\n // })\n // });\n files\n .filter((f) => f.match(/\\.(scss\\.json|css\\.json)$/))\n .forEach((cssJsonFile) => {\n console.log('Removing ' + cssJsonFile);\n fs.unlinkSync(cssJsonFile);\n });\n };\n // });\n },\n () => {\n console.log('Finished upgrading packages');\n },\n );\n\n // packages.forEach((pkg,key) => {\n // console.log(key+' Upgrading ' + pkg.packageName);\n // execPromise(`cd ${pkg.path} && yarn upgrade`).then(() => {\n // console.log('Upgraded ' + pkg.packageName);\n // }).catch(err => {\n // console.warn(err);\n // })\n // });\n};\n\nexport const createPackage = async (\n name,\n uriBase?,\n basePath = process.cwd(),\n options: CreatePackageOptions = {},\n) => {\n if (!name) {\n console.warn('Please provide a name as the first argument');\n return;\n }\n const isTTY = !!(process.stdin.isTTY && process.stdout.isTTY);\n\n // What, then where. Both are settled before anything is written, so a\n // refusal leaves nothing behind and `both` asks each question once.\n const kindDecided = decidePackageKind({\n kind: options.kind,\n remote: options.remote,\n isTTY,\n });\n if (kindDecided.kind === 'refuse') throw new CreatePackageError(kindDecided.message);\n const packageKind: PackageKind =\n kindDecided.kind === 'ask' ? await askPackageKind(name) : kindDecided.packageKind;\n\n const appRoot = findLinkedAppRoot(basePath);\n const decided = decideCreatePackageTarget({appRoot, options, isTTY});\n if (decided.kind === 'refuse') throw new CreatePackageError(decided.message);\n\n // The root its IRIs are minted under: a malformed one is refused here, before\n // anything is written or asked.\n let root: ResolvedBaseUri | undefined;\n try {\n root = resolvePackageBaseUri({flag: options.baseUri, appRoot});\n } catch (e) {\n throw new CreatePackageError((e as Error).message);\n }\n const decision =\n decided.kind === 'ask' ? await askPackageLocation(name) : decided;\n\n const packages = scaffoldKinds(packageKind).map((kind) => ({\n kind,\n name: packageNameFor(name, kind),\n }));\n // Nothing is written until every target is free.\n const targets = await Promise.all(\n packages.map(async ({name: packageName}) => {\n const targetFolder = await packageTargetFolder(packageName, basePath, appRoot, decision);\n if (fs.existsSync(targetFolder)) {\n throw new CreatePackageError(\n `${targetFolder} already exists. Refusing to write a new package over it.`,\n );\n }\n return targetFolder;\n }),\n );\n\n // linked.cm is the normal root for an open-source package, so its absence is\n // information, not a warning.\n log(\n root\n ? `Base URI ${root.baseUri} (from ${root.source}): shapes mint ${root.baseUri}shape/<package>/<Name>`\n : `Shapes and terms in ${packages.map((p) => p.name).join(' and ')} mint under https://linked.cm/. ` +\n `They resolve once the package is published (npx linked publish, coming soon).`,\n );\n for (const [i, {kind, name: packageName}] of packages.entries()) {\n const targetFolder = targets[i];\n await scaffoldPackage(packageName, kind, targetFolder, uriBase, root?.baseUri);\n if (kind === 'assets' && packageKind === 'both') {\n // The pair is one unit: the asset package's shapes use the ontology\n // created with it. `ontology` comes first in `scaffoldKinds`, so its\n // package.json is already written.\n const ontIndex = packages.findIndex((p) => p.kind === 'ontology');\n dependOnOntologyPackage(\n targetFolder,\n packages[ontIndex].name,\n targets[ontIndex],\n decision.kind === 'resolved' && decision.location === 'packages',\n );\n }\n const skipped = () =>\n log(`Prepared a new linked package in ${chalk.magenta(targetFolder)} (install skipped)`);\n if (decision.kind === 'outside') {\n if (options.skipInstall) skipped();\n else await installStandalonePackage(targetFolder);\n } else if (decision.location === 'packages') {\n // The app's package.json is wired either way: that is files, not install.\n await installWorkspacePackage(packageName, targetFolder, appRoot, options.skipInstall);\n } else if (options.skipInstall) {\n skipped();\n } else {\n await installOwnRepoPackage(packageName, targetFolder, appRoot, decision);\n }\n }\n};\n\n/**\n * Declare the ontology package as a regular dependency of the asset package,\n * at `^` its version — the same entry Create Now's project scaffold writes.\n *\n * Only where npm workspaces link the two (`--location packages`). Anywhere\n * else the `-ont` package is not published yet, so `npm install` in the asset\n * package would fail with E404: the entry is left out and one line says how to\n * add it once the ontology package is published.\n */\nfunction dependOnOntologyPackage(\n assetsFolder: string,\n ontName: string,\n ontFolder: string,\n linkedByWorkspace: boolean,\n) {\n if (!linkedByWorkspace) {\n log(\n `The asset package does not depend on ${ontName} yet: once ${ontName} is published, ` +\n `run npm install ${ontName} in ${assetsFolder}`,\n );\n return;\n }\n const {version} = fs.readJsonSync(path.join(ontFolder, 'package.json'));\n const pkgPath = path.join(assetsFolder, 'package.json');\n const pkg = fs.readJsonSync(pkgPath);\n pkg.dependencies = {...pkg.dependencies, [ontName]: `^${version}`};\n fs.writeJsonSync(pkgPath, pkg, {spaces: 2});\n}\n\n/** Where a package goes, given where create-package was told to put it. */\nasync function packageTargetFolder(\n name: string,\n basePath: string,\n appRoot: string | null,\n decision: TargetDecision,\n): Promise<string> {\n //let's remove scope for folder names\n const cleanPackageName = bareName(name);\n if (decision.kind === 'outside') {\n //if ran with npx, basePath will be the root directory of the repository, even if we're executing from a sub folder (the root directory is where node_modules lives and package.json with workspaces)\n //so we manually find a packages folder, if it exists we go into that.\n if (fs.existsSync(path.join(basePath, 'packages'))) {\n basePath = path.join(basePath, 'packages');\n }\n //for lincd.org currently packages are stored in the modules folder\n else if (fs.existsSync(path.join(basePath, 'modules'))) {\n basePath = path.join(basePath, 'modules');\n }\n return path.join(basePath, cleanPackageName);\n }\n if (decision.kind === 'resolved' && decision.location === 'packages') {\n return path.join(appRoot, 'packages', cleanPackageName);\n }\n // localize's own naming, so `linked localize` and this command can never\n // disagree about where a package lives.\n const {checkoutNameFor, DEFAULT_DIR} = await import('./localize/index.js');\n return path.join(appRoot, DEFAULT_DIR, checkoutNameFor(name));\n}\n\n/**\n * Write one package of a kind. Every kind gets the shared files of\n * `defaults/package` (manifest, tsconfigs, dotfiles, `src/package.ts`); an asset\n * package gets the rest of that folder, an ontology package gets\n * `defaults/package-ontology` instead, with the example ontology named after\n * its ontology slug.\n */\nasync function scaffoldPackage(\n name: string,\n kind: ScaffoldKind,\n targetFolder: string,\n uriBase?: string,\n baseUri?: string,\n) {\n // An ontology package `foo-ont` holds the ontology `foo`: that slug names its\n // files and its prefix, and its terms mint `{root}ont/foo/{Term}`.\n const ontologySlug = kind === 'ontology' ? ontologySlugFor(name) : undefined;\n if (!uriBase) {\n uriBase = baseUri\n ? `${baseUri}ont/${ontologySlug ?? bareName(name)}/`\n : defaultOntologyNamespace(ontologySlug ?? name);\n }\n setVariable('uri_base', asNamespace(uriBase));\n\n //save the full scoped package name under ${package_name}\n setVariable('package_name', name);\n\n //extra variable for clarity (will be same as 'name')\n setVariable('output_file_name', name);\n\n const {hyphenName} = setNameVariables(ontologySlug ?? bareName(name));\n\n log(`Creating new linked ${kind} package '${name}'`);\n fs.mkdirSync(targetFolder, {recursive: true});\n const [shared, ...variants] = PACKAGE_TEMPLATE_DIRS[kind];\n if (variants.length === 0) {\n fs.copySync(defaultsDir(shared), targetFolder);\n } else {\n for (const file of SHARED_TEMPLATE_FILES) {\n fs.copySync(defaultsDir(shared, file), path.join(targetFolder, file));\n }\n for (const variant of variants) {\n fs.copySync(defaultsDir(variant), targetFolder);\n }\n }\n renameShippedDotfiles(targetFolder);\n\n //replace variables in some of the copied files\n await Promise.all(\n ['src/index.ts', 'package.json', 'src/package.ts']\n .concat(\n kind === 'ontology'\n ? [\n 'src/ontologies/example-ontology.ts',\n 'src/ontologies/example-ontology.register.ts',\n 'src/data/example-ontology.json',\n ]\n : [],\n )\n .map((f) => path.join(targetFolder, f))\n .map((file) => replaceVariablesInFile(file)),\n );\n\n if (baseUri) {\n const packageTs = path.join(targetFolder, 'src', 'package.ts');\n fs.writeFileSync(packageTs, withBaseUri(fs.readFileSync(packageTs, 'utf8'), baseUri));\n }\n\n if (kind !== 'ontology') return;\n //rename these to a file name similar to the ontology slug\n [\n 'src/ontologies/example-ontology.ts',\n // The register sibling is what index.ts imports; without it here the scaffold keeps a\n // literal `example-ontology.register.ts` full of unsubstituted `${...}` placeholders and\n // nothing ever calls linkedOntology().\n 'src/ontologies/example-ontology.register.ts',\n 'src/data/example-ontology.json',\n 'src/data/example-ontology.json.d.ts',\n ].forEach((f) => {\n let parts = f.split('/');\n let newParts = [...parts];\n let [, ...extensions] = newParts.pop().split('.');\n let newName = hyphenName + '.' + extensions.join('.');\n fs.renameSync(\n path.join(targetFolder, f),\n path.join(targetFolder, ...newParts, newName),\n );\n });\n}\n\n/**\n * Ask what kind of package to make — only ever on a terminal, and only when\n * `--kind` did not say.\n */\nasync function askPackageKind(name: string): Promise<PackageKind> {\n console.log(\n `\\nWhat kind of package is ${chalk.magenta(name)}?\\n` +\n ` 1) ontology one ontology, no shapes or components (${packageNameFor(name, 'ontology')})\\n` +\n ` 2) assets shapes, components and a backend (${packageNameFor(name, 'assets')})\\n` +\n ` 3) both the two packages above\\n`,\n );\n const kinds: PackageKind[] = ['ontology', 'assets', 'both'];\n let answer = '';\n while (!['1', '2', '3'].includes(answer)) {\n answer = await promptUser('Choose 1, 2 or 3: ');\n }\n return kinds[Number(answer) - 1];\n}\n\n/**\n * Ask where a new package goes — only ever on a terminal, and only when no\n * flag said so already.\n */\nasync function askPackageLocation(\n name: string,\n): Promise<Extract<TargetDecision, {kind: 'resolved'}>> {\n console.log(\n `\\nWhere should ${chalk.magenta(name)} live?\\n` +\n ` 1) packages/ part of this app's repository\\n` +\n ` 2) packages-local/ its own git repository, linked into this app\\n`,\n );\n let answer = '';\n while (answer !== '1' && answer !== '2') {\n answer = await promptUser('Choose 1 or 2: ');\n }\n if (answer === '1') return {kind: 'resolved', location: 'packages', push: false};\n\n const remote = await promptUser(\n 'Remote git URL for its repository (optional, Enter to skip): ',\n );\n const push =\n !!remote &&\n /^y(es)?$/i.test(\n await promptUser(`Push the first commit to ${remote}? (y/N): `),\n );\n return {\n kind: 'resolved',\n location: 'packages-local',\n ...(remote ? {remote} : {}),\n push,\n };\n}\n\n/** The install + first build plan for a package, given where it installs from. */\nasync function packageSetupFor(installRoot: string) {\n // npm is the default for a new package. yarn is only consulted when the new\n // package lands inside an existing yarn project (a yarn-3 monorepo),\n // where adding an npm lockfile would break the workspace.\n const insideYarnProject = detectPackageManager(installRoot) === 'yarn';\n let version = insideYarnProject\n ? ((await execPromise('yarn --version').catch(() => {\n console.log('yarn probably not working');\n return '';\n })) as string)\n : '';\n return planPackageSetup(\n version.toString(),\n path.join(getScriptDir(), 'launch.js'),\n process.execPath,\n insideYarnProject,\n );\n}\n\n/**\n * Install `cwd` with `setup`, then build `targetFolder`. Failures set the exit\n * code; `installFailedHint` says what was already changed when the install fails.\n */\nasync function installThenBuild(\n setup: Awaited<ReturnType<typeof packageSetupFor>>,\n cwd: string,\n targetFolder: string,\n installFailedHint = '',\n) {\n const installed = await execp(setup.installCommand, true, false, {cwd})\n .then(() => true)\n .catch(() => {\n console.warn(\n `Could not install dependencies (${setup.installCommand})` +\n (installFailedHint ? `. ${installFailedHint}` : ''),\n );\n process.exitCode = 1;\n return false;\n });\n if (installed) {\n await execp(setup.buildCommand, true, false, {cwd: targetFolder}).catch(\n () => {\n console.warn('Dependencies installed, but the initial build failed');\n process.exitCode = 1;\n },\n );\n }\n}\n\n/** Outside an app: install inside the package itself, as this command always has. */\nasync function installStandalonePackage(targetFolder: string) {\n const setup = await packageSetupFor(path.dirname(path.resolve(targetFolder)));\n if (setup.yarnrc) {\n fs.writeFileSync(path.join(targetFolder, '.yarnrc.yml'), setup.yarnrc);\n }\n await installThenBuild(setup, targetFolder, targetFolder);\n log(\n `Prepared a new linked package in ${chalk.magenta(targetFolder)}`,\n `Run ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'build'),\n )} from this directory to build once`,\n `Or ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'start'),\n )} to continuously rebuild on file changes`,\n );\n}\n\n/**\n * packages/: a workspace member of the app's own repository. The app's\n * workspaces must cover it and its dependencies declare it — npm links a\n * workspace member by name, and `build-all` builds what the app depends on —\n * and the install runs at the app root, where the workspace is.\n */\nasync function installWorkspacePackage(\n name: string,\n targetFolder: string,\n appRoot: string,\n skipInstall = false,\n) {\n const appPkgPath = path.join(appRoot, 'package.json');\n const appPkg = fs.readJsonSync(appPkgPath);\n const workspaces = ensureWorkspaceGlob(appPkg);\n if (workspaces.warning) console.warn(chalk.yellow(workspaces.warning));\n const version = fs.readJsonSync(path.join(targetFolder, 'package.json')).version;\n appPkg.dependencies = {...appPkg.dependencies, [name]: `^${version}`};\n fs.writeJsonSync(appPkgPath, appPkg, {spaces: 2});\n log(\n `Added ${name}@^${version} to ${path.relative(process.cwd(), appPkgPath) || 'package.json'}` +\n (workspaces.changed ? ' and packages/* to its workspaces' : ''),\n );\n if (skipInstall) {\n log(`Prepared a new linked package in ${chalk.magenta(targetFolder)} (install skipped)`);\n return;\n }\n\n const setup = await packageSetupFor(appRoot);\n await installThenBuild(\n setup,\n appRoot,\n targetFolder,\n `The app's package.json already declares ${name}; run the install again at the app root once it is fixed.`,\n );\n log(\n `Prepared a new linked package in ${chalk.magenta(targetFolder)}, part of this app's repository`,\n `Run ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'start'),\n )} in it to continuously rebuild on file changes`,\n );\n}\n\n/**\n * packages-local/: a repository of its own. Its git history starts here, and\n * localize's `adopt` installs, builds, links and records it. The app's\n * dependencies are NOT touched: until the package is published a version range\n * fails `npm install` (E404 once a lockfile exists), and a `file:` path would\n * install cleanly for a teammate without the checkout and fail at runtime.\n */\nasync function installOwnRepoPackage(\n name: string,\n targetFolder: string,\n appRoot: string,\n decision: Extract<TargetDecision, {kind: 'resolved'}>,\n) {\n const {remote, push} = decision;\n const rel = path.relative(appRoot, targetFolder);\n const pkgPath = path.join(targetFolder, 'package.json');\n const fail = (message: string) => {\n console.warn(chalk.yellow(message));\n process.exitCode = 1;\n };\n\n if (!git(['init', '--quiet'], targetFolder)) {\n return fail(`git init failed in ${rel}; the package is scaffolded but not linked.`);\n }\n if (remote) {\n if (!git(['remote', 'add', 'origin', remote], targetFolder)) {\n return fail(`git remote add origin ${remote} failed in ${rel}; nothing was linked.`);\n }\n const pkg = fs.readJsonSync(pkgPath);\n pkg.repository = {type: 'git', url: repositoryUrlFor(remote)};\n fs.writeJsonSync(pkgPath, pkg, {spaces: 2});\n }\n\n // Before adopt, never during it: adopt asserts the app's package.json did not\n // change while it ran.\n const appPkgPath = path.join(appRoot, 'package.json');\n const appPkg = fs.readJsonSync(appPkgPath);\n if (ensureRelinkPostinstall(appPkg)) {\n fs.writeJsonSync(appPkgPath, appPkg, {spaces: 2});\n log(\n `Added \\`${RELINK_COMMAND}\\` to the app's postinstall, so npm install keeps the link`,\n );\n }\n\n const {adoptPackage} = await import('./commands/localize.js');\n const {EXIT_WARNED} = await import('./localize/index.js');\n // Only the build command matters here: adopt always installs with npm, so\n // the package-manager half of the plan does not apply.\n const {buildCommand} = planPackageSetup(\n '',\n path.join(getScriptDir(), 'launch.js'),\n process.execPath,\n );\n const code = await adoptPackage(name, {appRoot, build: buildCommand});\n if (code === EXIT_WARNED) {\n fail('The package is linked, but its initial build failed');\n } else if (code !== 0) {\n return fail(\n `Linking ${name} failed (localize exit ${code}). ${rel} is scaffolded with an uncommitted ` +\n `git init, and the app's postinstall relinks localized packages. Fix the cause and retry ` +\n `with: linked localize ${name} --adopt`,\n );\n }\n\n const committed =\n git(['add', '-A'], targetFolder) &&\n git(['commit', '--quiet', '-m', `feat: scaffold ${name}`], targetFolder);\n if (!committed) {\n fail(\n `Could not make the first commit in ${rel} (is git's user.name/user.email set?). ` +\n `The package is linked; commit it yourself.`,\n );\n }\n let pushed = false;\n if (push && committed) {\n pushed = git(['push', '--quiet', '-u', 'origin', 'HEAD'], targetFolder);\n if (!pushed) fail(`Could not push to ${remote}. Push it yourself: git push -u origin HEAD`);\n }\n\n const version = fs.readJsonSync(pkgPath).version;\n log(\n `Prepared ${name} in ${chalk.magenta(rel)}, in its own git repository` +\n (remote ? ` (origin ${remote}${pushed ? ', pushed' : ''})` : ' (no remote yet)'),\n `It is linked into node_modules and recorded in local-packages.json.`,\n `It is not in the app's dependencies: until it is published a version range would fail npm install.`,\n ` After publishing: ${chalk.blueBright(`npm install ${name}@^${version}`)}`,\n );\n if (!remote) {\n log(\n `To add a remote later: ${chalk.blueBright('git remote add origin <url>')} in ${rel}, ` +\n `then ${chalk.blueBright(`linked localize ${name} --adopt`)} to record it.`,\n );\n }\n}\n\n/** Run git with arguments (no shell, so a URL is never re-parsed). Echoes failures. */\nfunction git(args: string[], cwd: string): boolean {\n const r = spawnSync('git', args, {cwd, encoding: 'utf8'});\n if (r.status !== 0) {\n console.warn((r.stderr || r.stdout || String(r.error ?? '')).trim());\n return false;\n }\n return true;\n}\n\nvar getNextVersion = function (version) {\n let parts = version.split('.');\n return parts[0] + '.' + parts[1] + '.' + (parseInt(parts[2]) + 1).toString();\n};\nvar getNextMajorVersion = function (version) {\n let parts = version.split('.');\n return (parseInt(parts[0]) + 1).toString() + '.0.0';\n};\nvar getNextMinorVersion = function (version) {\n let parts = version.split('.');\n return parts[0] + '.' + (parseInt(parts[1]) + 1).toString() + '.0';\n};\nvar buildFailed = function (output: string) {\n return (\n output.indexOf('Aborted due to warnings') !== -1 &&\n output.indexOf('Command failed') !== -1\n );\n};\n\nexport const register = function (registryURL) {\n if (fs.existsSync(process.cwd() + '/package.json')) {\n var pack = JSON.parse(\n fs.readFileSync(process.cwd() + '/package.json', 'utf8'),\n );\n let version = pack.version;\n let packageName = pack.name;\n // let author = pack.author;\n // let description = pack.description;\n //\n // let authorName = pack.author;\n // if (pack.author.name) {\n // authorName = pack.author.name;\n // }\n\n console.log(\n chalk.cyan(\n 'registering package ' +\n packageName +\n ' ' +\n version +\n ' in the LINCD registry',\n ),\n );\n\n return fetch(registryURL + '/register', {\n method: 'POST',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({package: packageName, version}),\n // body: JSON.stringify({package: packageName, version, author}),\n })\n .then((res) => res.json())\n .then((json) => {\n if (json.error) {\n console.log(chalk.red('Response: ' + json.error));\n } else if (json.result) {\n console.log(chalk.blueBright('Response: ') + json.result);\n if (json.warning) {\n console.log(chalk.red('Warning: ') + json.warning);\n }\n }\n })\n .catch((err) => {\n console.warn(\n chalk.red('Warning: ') + 'Could not connect to LINCD registry',\n );\n });\n } else {\n console.warn(\n chalk.red('Warning:') + ' not found: ' + process.cwd() + '/package.json',\n );\n }\n};\n\nexport const buildPackage = async (\n target,\n target2,\n packagePath = process.cwd(),\n logResults: boolean = true,\n) => {\n // Ensure packagePath is absolute and points to a directory containing package.json; if not, go up until we find one\n // First, resolve to absolute path\n let currentPath = path.isAbsolute(packagePath) \n ? packagePath \n : path.resolve(process.cwd(), packagePath);\n while (!fs.existsSync(path.join(currentPath, 'package.json'))) {\n const parentPath = path.dirname(currentPath);\n if (parentPath === currentPath) {\n // Reached root and didn't find package.json. Optionally, handle this error.\n console.error(\n 'No package.json found in ' +\n packagePath +\n ' or any parent directories',\n );\n return false;\n }\n currentPath = parentPath;\n }\n // Always use the resolved absolute path\n packagePath = currentPath;\n\n // Guard: `linked build` only makes sense for linkedPackage. Apps must use\n // `linked build-app`. Plain packages (no linked flag) have no build pipeline\n // defined here and should have their own build script.\n const pkgJson = JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n );\n const isPackage = pkgJson.linkedPackage === true;\n const isApp = pkgJson.linkedApp === true;\n if (!isPackage) {\n if (isApp) {\n console.error(\n chalk.red(\n `'${pkgJson.name || packagePath}' is a linkedApp, not a linkedPackage. Use 'linked build-app' instead of 'linked build'.`,\n ),\n );\n } else {\n console.error(\n chalk.red(\n `'${pkgJson.name || packagePath}' does not have 'linkedPackage: true' in package.json. 'linked build' only builds linked packages. Add the flag or run a different build command.`,\n ),\n );\n }\n return false;\n }\n\n let spinner: Ora;\n if (logResults) {\n //TODO: replace with listr so we can show multiple processes at once\n spinner = ora({\n discardStdin: true,\n text: 'Compiling ESM',\n }).start();\n }\n let buildProcess: Promise<boolean | string | void> = Promise.resolve(true);\n let warned = false;\n let buildStep = (step) => {\n buildProcess = buildProcess.then((previousResult) => {\n if (!previousResult) {\n return false;\n }\n if (logResults) {\n spinner.text = step.name;\n spinner.start();\n }\n return step.apply().then((stepResult) => {\n //if a build step returns a string,\n //a warning is shown but the build is still successful with warnings\n if (typeof stepResult === 'string') {\n warned = true;\n if (logResults) {\n spinner.warn(step.name + ' - ' + stepResult);\n spinner.stop();\n } else {\n console.warn(chalk.yellow(step.name + ' - ' + stepResult));\n }\n //can still continue\n return true;\n } else if (stepResult === true || typeof stepResult === 'undefined') {\n if (logResults) {\n spinner.succeed();\n }\n return previousResult && true;\n } else if (\n //a step may report a detail alongside success, e.g. how many files\n //it changed. Not a warning: the build stays clean.\n stepResult &&\n typeof stepResult === 'object' &&\n (stepResult as any).info\n ) {\n if (logResults) {\n spinner.succeed(step.name + ' - ' + (stepResult as any).info);\n }\n return previousResult && true;\n } else if (\n stepResult &&\n typeof stepResult === 'object' &&\n (stepResult as any).error\n ) {\n if (logResults) {\n spinner.fail(step.name + ' - ' + (stepResult as any).error);\n spinner.stop();\n } else {\n console.error(\n chalk.red(step.name + ' - ' + (stepResult as any).error),\n );\n }\n //failed and should stop\n return false;\n }\n //anything else — notably a literal false, which several steps return\n //on failure — is a failure. Name the step, so the build does not end\n //on a bare 'Build failed'.\n const failure = step.name + ' failed';\n if (logResults) {\n spinner.fail(failure);\n spinner.stop();\n } else {\n console.error(chalk.red(failure));\n }\n return false;\n });\n });\n };\n\n planBuildSteps(pkgJson, packagePath).forEach(buildStep);\n\n let success = await buildProcess.catch((err) => {\n let msg =\n typeof err === 'string' || err instanceof Error\n ? err.toString()\n : err.error && !err.error.toString().includes('Command failed:')\n ? err.error\n : err.stdout + '\\n' + err.stderr;\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.red('✖'),\n // text: 'Build failed',\n });\n console.log(msg);\n } else {\n console.error(\n chalk.red(packagePath.split('/').pop(), ' - Build failed:'),\n );\n console.error(err);\n }\n //a failed build always resolves to false, never to a truthy message:\n //callers decide success by the return value.\n return false;\n });\n if (success === true) {\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.greenBright('✔'),\n text: warned ? 'Build successful with warnings' : 'Build successful',\n });\n }\n } else {\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.red('✖'),\n text: 'Build failed',\n });\n }\n }\n //true only when every step succeeded (warnings included); false otherwise.\n return success === true;\n};\n\ntype BuildStep = {\n name: string;\n // true/undefined: success; {info}: success with a note; a string: success\n // with a warning; false/{error}: stop.\n apply: () => Promise<unknown>;\n};\n\n// The ordered `linked build` steps for a linkedPackage. Source may use\n// extensionless relative imports: once `lib/esm` holds everything it will ship,\n// every package gets `.js` added to the relative specifiers in it (JS and\n// declarations). For a package that already writes `.js` this is a no-op.\n/**\n * Load `LinkedServer` from the app's `@_linked/server`.\n *\n * `@_linked/server` is deliberately NOT a dependency of this package: the CLI runs apps that may\n * have no backend at all, and `@_linked/server` already depends on `@_linked/cli`, so declaring it\n * here would make the two packages circular.\n *\n * The specifier is held in a variable so that TypeScript does not resolve it. When it was a string\n * literal, building this package in the workspace pulled in `@_linked/server`'s emitted `.d.ts`,\n * which imports `@_linked/cli/interfaces` — resolving, through the workspace symlink, to THIS\n * package's own `lib/esm/interfaces.d.ts`. tsc then refused to emit over its own input:\n *\n * error TS5055: Cannot write file '…/lib/esm/interfaces.d.ts' because it would overwrite input file.\n *\n * Only the workspace hit this; from a registry install the two packages are separate copies. The\n * variable also keeps the CLI's dependency checker honest, since the import really is optional.\n */\nconst loadServerClass = async (): Promise<any> => {\n const specifier = '@_linked/server/shapes/LinkedServer';\n try {\n return (await import(specifier)).LinkedServer;\n } catch (err) {\n throw new Error(\n `This app needs @_linked/server to run a backend, but it could not be loaded from ${process.cwd()}. ` +\n `Install it, or run the frontend only.\\nCause: ${err instanceof Error ? err.message : err}`,\n );\n }\n};\n\nexport const planBuildSteps = (pkgJson, packagePath: string): BuildStep[] => {\n // Loading every shape module in a child process of its own is the slow part of\n // a build; the shape checks below share one run, started by the first to ask.\n let inspection: Promise<ShapeReferenceReport> | undefined;\n const inspectShapes = () =>\n (inspection ??= inspectShapeReferences(packagePath));\n return [\n {\n name: 'Checking imports',\n apply: () => checkImports(packagePath + '/src'),\n },\n {\n name: 'Compiling ESM',\n apply: async () => {\n return compilePackageESM(packagePath);\n },\n },\n {\n name: 'Compiling CJS',\n apply: async () => {\n return compilePackageCJS(packagePath);\n },\n },\n {\n name: 'Copying files to lib folder',\n apply: async () => {\n const files = await glob(packagePath + '/src/**/*.{json,d.ts,css,scss}');\n let cjsPublished = false;\n try {\n cjsPublished = packagePublishesCjs(\n JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n ),\n );\n } catch {}\n return Promise.all(\n files.map(async (file) => {\n try {\n await fs.copy(\n file,\n packagePath +\n '/lib/esm/' +\n file.replace(packagePath + '/src/', ''),\n );\n // Only mirror into lib/cjs when there is a CJS build to mirror.\n if (cjsPublished) {\n await fs.copy(\n file,\n packagePath +\n '/lib/cjs/' +\n file.replace(packagePath + '/src/', ''),\n );\n }\n return true;\n } catch (err) {\n console.warn(err);\n return false;\n }\n }),\n ).then((allResults) => {\n return allResults.every((r) => r === true);\n });\n },\n },\n {\n name: 'Dual package support',\n apply: () => {\n // Skip if no tsconfig files (e.g. pure-CSS packages).\n if (\n !fs.existsSync(path.join(packagePath, 'tsconfig-esm.json')) ||\n !fs.existsSync(path.join(packagePath, 'tsconfig-cjs.json'))\n ) {\n return Promise.resolve(true);\n }\n // Nothing to make dual when only one format is published — otherwise this\n // leaves a lib/cjs holding a lone `{\"type\":\"commonjs\"}` marker and no code.\n try {\n if (\n !packagePublishesCjs(\n JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n ),\n )\n ) {\n return Promise.resolve(true);\n }\n } catch {}\n // Resolve the binary from the nearest node_modules (supports both\n // per-package and workspace-root installs of tsconfig-to-dual-package).\n return execPromise(\n 'npx tsconfig-to-dual-package ./tsconfig-cjs.json ./tsconfig-esm.json',\n false,\n false,\n {cwd: packagePath},\n ).then((res) => {\n return res === '';\n });\n },\n },\n {\n name: 'Removing old files from lib folder',\n apply: async () => {\n return removeOldFiles(packagePath);\n },\n },\n {\n // MUST run after 'Copying files to lib folder' and after 'Removing old\n // files from lib folder', because the rewrite resolves each specifier\n // against the files actually present in lib/esm:\n // - the copy step brings in the assets (`./x.scss`) and hand-written\n // `.d.ts` from src; before it, an asset import looks unresolvable (a\n // spurious \"build with warnings\") and a copied `.d.ts` is never rewritten;\n // - the cleanup step deletes stale output; before it, a leftover `x.js`\n // makes './x' resolve to './x.js' and the cleanup then removes the file\n // the specifier now points at.\n name: 'Rewriting ESM import specifiers',\n apply: async () => {\n // No tsconfig-esm.json means the ESM compile was skipped (e.g. pure-CSS\n // packages), so there is nothing to rewrite and nothing to fail over.\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-esm.json'))) {\n return true;\n }\n const libEsm = path.join(packagePath, 'lib', 'esm');\n if (!fs.existsSync(libEsm)) {\n return {\n error:\n 'lib/esm was not emitted while tsconfig-esm.json is present. Check the ESM compile.',\n };\n }\n const {changed, unresolved} = await rewriteExtensionlessImports(libEsm);\n if (unresolved.length > 0) {\n return `could not resolve ${unresolved.length} import(s), left unchanged: ${unresolved.join(', ')}`;\n }\n return changed > 0 ? {info: `rewrote ${changed} file(s)`} : true;\n },\n },\n {\n // Reads the emitted lib/esm, so it runs after everything that writes it.\n name: 'Checking shape names',\n apply: () => checkShapeNames(packagePath),\n },\n {\n // Loads each compiled shape module on its own, so it needs the final\n // lib/esm too. Fails the build: an unresolved reference is a query that\n // throws \"Shape class not found\" in a consumer's bundle.\n name: 'Checking shape references',\n apply: () => checkShapeReferences(packagePath, undefined, inspectShapes()),\n },\n {\n // Same per-module loads: loading lib/esm/shapes/index.js alone must register\n // every shape of this package that its shape modules register one by one,\n // because apps load a package's shapes with `import '<pkg>/shapes/index'`.\n name: 'Checking shapes/index',\n apply: () => checkShapesIndex(packagePath, undefined, inspectShapes()),\n },\n {\n // A bundler drops the side-effect-only imports in shapes/index of a module\n // package.json calls side-effect-free.\n name: 'Checking sideEffects',\n apply: async () => checkShapesSideEffects(packagePath),\n },\n {\n name: 'Checking dependencies',\n apply: () => depCheck(packagePath),\n },\n ];\n};\n\nexport const compilePackage = async (packagePath = process.cwd()) => {\n //echo 'compiling CJS' && tsc -p tsconfig-cjs.json && echo 'compiling ESM' && tsc -p tsconfig-esm.json\n // let cjsConfig = fs.existsSync(path.join(packagePath,'tsconfig-cjs.json'));\n // let esmConfig = fs.existsSync(path.join(packagePath,'tsconfig-esm.json'));\n // let compileCJS = `yarn exec tsc -p tsconfig-cjs.json`;\n // let compileESM = `yarn exec tsc -p tsconfig-esm.json`;\n // let compileCommand;\n // if (cjsConfig && esmConfig)\n // {\n // compileCommand = `${compileCJS} && ${compileESM}`;\n // }\n // else if (cjsConfig)\n // {\n // compileCommand = compileCJS;\n // }\n // else if (esmConfig)\n // {\n // compileCommand = compileESM;\n // }\n // else\n // {\n // compileCommand = `yarn exec tsc`;\n // }\n await compilePackageESM(packagePath);\n await compilePackageCJS(packagePath);\n};\nexport const compilePackageESM = async (packagePath = process.cwd()) => {\n // Skip packages without a tsconfig-esm.json (e.g. pure-CSS packages).\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-esm.json'))) {\n return true;\n }\n let compileCommand = `npx tsc -p tsconfig-esm.json`;\n return execPromise(compileCommand, false, false, {cwd: packagePath}).then(\n (res) => {\n return res === '';\n },\n );\n};\nexport const compilePackageCJS = async (packagePath = process.cwd()) => {\n // Skip packages that do not publish a CJS build at all.\n let packageJson: any = null;\n try {\n packageJson = JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n );\n } catch {}\n if (!packagePublishesCjs(packageJson)) {\n return true;\n }\n // Skip packages without a tsconfig-cjs.json.\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-cjs.json'))) {\n return true;\n }\n let compileCommand = `npx tsc -p tsconfig-cjs.json`;\n return execPromise(compileCommand, false, false, {cwd: packagePath})\n .then((res) => {\n return res === '';\n })\n .catch((err) => {\n return {\n error: err.stdout,\n };\n });\n};\n\nexport var publishUpdated = function (test: boolean = false) {\n let packages = getLocalLincdModules();\n\n var p: Promise<any> = Promise.resolve('');\n let packagesLeft = packages.length;\n let results = [];\n log(\n 'Checking which packages need to be published by comparing last published date with last git commit',\n );\n // p = Promise.all(packages.map((pckg) => {\n packages.forEach((pckg) => {\n p = p\n .then((previousResult) => {\n // progressUpdate(packagesLeft-- + ' packages left. Now checking ' + pckg.packageName);\n log('# Checking package ' + pckg.packageName);\n // log('# Requesting ' + 'yarn info '+pkg.packageName+' --json');\n // return execPromise('yarn info '+pkg.packageName+' --json').then((output:string) => {\n // console.log(\"Will be requesting npm view from this current working directory:\\n\"+process.cwd());\n // return execPromise('npm view '+pkg.packageName+' --json').then((output:string) => {\n\n let shouldPublish;\n var pack = getPackageJSON(pckg.path);\n let version = getNextVersion(pack.version);\n if (pack.private) {\n shouldPublish = false;\n debugInfo(chalk.blue('--> is private, skipping'));\n\n return chalk.gray(pckg.packageName + ' is private');\n // return previousResult + ' ' + chalk.gray(pckg.packageName + ' is private\\n');\n }\n console.log('testing npm');\n return execPromise('npm info ' + pckg.packageName + ' --json')\n .then(async (output: string) => {\n console.log('testing npm done');\n var info;\n try {\n if (output == '' || output.includes('E404')) {\n debugInfo(\n 'Empty or 404 response from `npm info`. This package was probably not published before',\n );\n // throw new Error('Empty response from `yarn info`. This pkg was probably not published before');\n // return;\n shouldPublish = true;\n //don't patch the version number (default, see above), use the current version\n version = pack.version;\n } else {\n info = JSON.parse(output);\n }\n\n if (info) {\n let lastPublish;\n //yarn:\n // let lastPublish = info.data.time[info.data.version];\n lastPublish = info.time[info.version];\n // }\n // catch (e) {\n // console.log(info);\n // console.error(chalk.red(\"Could not parse response from npm info. Format may have changed?\"));\n // process.exit();\n // }\n\n let lastPublishDate = new Date(lastPublish);\n // let {lastModifiedTime, lastModifiedName, lastModified} = getLastModifiedSourceTime(pkg.path);\n let lastCommitInfo = await getLastCommitTime(pckg.path);\n if (!lastCommitInfo) {\n shouldPublish = false;\n debugInfo('Could not determine last git commit');\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' - could not determine last commit\\n');\n return chalk.red(\n pckg.packageName + ' - could not determine last commit',\n );\n } else {\n //NOTE: removed lastModified, because switching branches will say that the file was modified and cause everything to publish\n //SO: now you NEED TO commit before it picks up that you should publish\n shouldPublish =\n lastPublishDate.getTime() < lastCommitInfo.date.getTime();\n\n //ignore changes to package.json if that's the only change, because when we publish the version number changes, which is then committed\n //(note there is always 2 lines for commit info + number of files changed)\n let changedFiles = lastCommitInfo.changes\n .split('\\n')\n .filter((line) => line.includes('|'));\n let numberOfFilesChanges = changedFiles.length;\n // console.log(\"CHECK \"+lastCommitInfo.changes.includes(\"package.json\")+\" - \"+numberOfFilesChanges)\n if (\n shouldPublish &&\n lastCommitInfo.changes.includes('package.json') &&\n numberOfFilesChanges === 1\n ) {\n shouldPublish = false;\n }\n if (shouldPublish) {\n log(\n chalk.magenta(pckg.packageName) +\n ' should be published because:',\n );\n log(\n lastPublishDate.toDateString() +\n ' ' +\n lastPublishDate.toTimeString() +\n ' published ' +\n info.version,\n );\n log(\n lastCommitInfo.date.toDateString() +\n ' ' +\n new Date(lastCommitInfo.date).toTimeString() +\n ' source last committed:',\n );\n log(lastCommitInfo.changes);\n }\n }\n }\n } catch (err) {\n // var stats = fs.statSync(path.join(packageDirectory));\n // var files = fs.readdirSync(path.join(packageDirectory,'src'));\n console.log(\n chalk.red(pckg.packageName + ' failed: ' + err.message + '\\n'),\n );\n console.warn('Returned JSON from npm: ' + output);\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' failed: ' + err.message + '\\n');\n return chalk.red(pckg.packageName + ' failed: ' + err.message);\n }\n if (shouldPublish) {\n return publishPackage(pckg, test, info, version);\n }\n return (\n chalk.blue(pckg.packageName) + ' latest version is up to date'\n );\n })\n .catch(({error, stdout, stderr}) => {\n if (error) {\n console.error(error.message);\n }\n if (stdout) {\n console.log(stderr);\n }\n if (stderr) {\n console.log(stderr);\n }\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' failed\\n');\n console.warn(chalk.red(pckg.packageName + ' failed'));\n return chalk.red(pckg.packageName + ' failed');\n });\n })\n .then((res) => {\n log(res);\n results.push(res);\n })\n .catch((err) => {\n console.warn(\n chalk.red(pckg.packageName + ' failed: ' + err.toString()),\n );\n results.push(\n chalk.red(pckg.packageName + ' failed: ' + err.toString()),\n );\n });\n });\n return p.then(() => {\n // if (messages == '')\n // {\n // console.log('All published packages are already up-to-date.');\n // }\n // else\n // {\n console.log(\n 'Summary: \\n' + results.join('\\n'),\n );\n // }\n });\n};\n\nasync function getEnvJsonPath(relativeToPath = process.cwd()) {\n let path = '';\n if (!relativeToPath.endsWith('/')) {\n relativeToPath += '/';\n }\n // let path = './';\n for (let i = 0; i <= 10; i++) {\n let envFile = await getEnvFile({\n filePath: relativeToPath + path + '.env.json',\n }).catch((err) => {\n return null;\n });\n if (envFile) {\n //note: we're getting the actual contents here, so we could also use that more directly?\n return path + '.env.json';\n }\n path += '../';\n }\n}\n\nexport var publishPackage = async function (\n pkg?,\n test?,\n info?,\n publishVersion?,\n) {\n if (!pkg) {\n let localPackageJson = getPackageJSON();\n pkg = {\n path: process.cwd(),\n packageName: localPackageJson.name,\n };\n }\n if (!publishVersion) {\n publishVersion = info ? getNextVersion(info.version) : 'patch';\n }\n if (test) {\n debugInfo('should publish ' + pkg.packageName + ' ' + publishVersion);\n //when testing what needs to be published\n return chalk.blue(pkg.packageName + ' should publish');\n }\n console.log(\n chalk.blue('publishing ' + pkg.packageName + ' ' + publishVersion),\n );\n\n //looking for an .env.json file in our workspace, which may store our NPM AUTH key\n let envJsonPath = await getEnvJsonPath(pkg.path);\n\n // `yarn version` / `yarn npm publish` is Yarn Berry syntax. Only use it when\n // the package really lives in a yarn project; otherwise publish with npm.\n const publishPm = detectPackageManager(pkg.path);\n const versionAndPublish =\n publishPm === 'yarn'\n ? `yarn version ${publishVersion} && yarn npm publish`\n : `npm version ${publishVersion} --no-git-tag-version && npm publish`;\n\n return execPromise(\n `cd ${pkg.path} && ${\n envJsonPath ? `env-cmd -f ${envJsonPath} --use-shell \"` : ''\n }${versionAndPublish}${envJsonPath ? `\"` : ''}`,\n true,\n false,\n {},\n true,\n )\n .then((res) => {\n if (\n res.indexOf('Aborted due to warnings') !== -1 ||\n res.indexOf('Could not publish') !== -1 ||\n res.indexOf(\"Couldn't publish\") !== -1\n ) {\n console.log(res);\n return chalk.red(pkg.packageName + ' failed\\n');\n }\n\n console.log(\n 'Successfully published ' +\n chalk.green(pkg.path) +\n ' ' +\n chalk.magenta(publishVersion),\n );\n return (\n chalk.green(pkg.packageName) +\n ' published ' +\n chalk.magenta(publishVersion)\n );\n })\n .catch(({error, stdout, stderr}) => {\n logError('Failed to publish: ' + error.message);\n return chalk.red(pkg.packageName + ' failed to publish');\n });\n};\n\nexport var buildUpdated = async function (\n back,\n target,\n target2,\n useGitForLastModified: boolean = false,\n test: boolean = false,\n) {\n // back = back || 1;\n // return execPromise(`git log -${back} --format=%ci`).then((result) => {\n // let now = new Date();\n let previousResult = '';\n log(\n test\n ? 'Checking which packages need to be rebuild'\n : 'Building updated packages',\n );\n // let packages = getLocalLincdModules();\n let packages = getLocalLincdPackageMap();\n\n // console.log(packages);\n // let jsonldPkgUpdated = await needsRebuilding(\n // packages.get('lincd-jsonld'),\n // useGitForLastModified,\n // );\n // let cliPkgUpdated = await needsRebuilding(packages.get('lincd-cli'), useGitForLastModified);\n\n //if either cli or jsonldPkg needs to be rebuilt\n // if (jsonldPkgUpdated || cliPkgUpdated) {\n // if (jsonldPkgUpdated)\n // {\n // await execPromise(\n // 'yarn exec tsc && echo \"compiled lincd-jsonld\"',\n // false,\n // false,\n // {\n // cwd: packages.get('lincd-jsonld').path,\n // },\n // true,\n // );\n // // await execPromise('yarn build-core', false, false, {}, true);\n // }\n let rebuildAllModules = false;\n // if (cliPkgUpdated) {\n // rebuildAllModules = true;\n // log(chalk.magenta('Rebuilding all packages because the build tools (lincd-cli) got updated'));\n // }\n\n let packagesLeft = packages.size;\n runOnPackagesGroupedByDependencies(\n packages,\n (packageGroup, dependencies) => {\n debugInfo(\n 'Now checking: ' + chalk.blue(packageGroup.map((i) => i.packageName)),\n );\n debugInfo(packagesLeft + ' packages left.');\n\n packagesLeft = packagesLeft - packageGroup.length;\n return async (pkg: PackageDetails) => {\n // debugInfo('# Checking package ' + pkg.packageName);\n let needRebuild = await needsRebuilding(\n pkg,\n useGitForLastModified,\n // true,\n );\n\n // if (pkg.packageName === 'lincd-jsonld' && jsonldPkgUpdated)\n // {\n // needRebuild = true;\n // }\n if (needRebuild || rebuildAllModules) {\n //TODO: when building a pkg, also rebuild all packages that depend on this package.. and iteratively build packages that depend on those packages..\n\n // log(packageName+' modified since last commit on '+now.toString());\n\n if (test) {\n debugInfo('Need to build ' + pkg.packageName);\n return chalk.blue(pkg.packageName + ' should be build');\n }\n log('Building ' + pkg.packageName);\n const pathToBuild = pkg.path.startsWith('.')\n ? path.join(process.cwd(), pkg.path)\n : pkg.path;\n //if the path is relative,\n // log('path: ' + pathToBuild);\n return buildPackage(null, null, pathToBuild, false)\n .then((res) => {\n //buildPackage returns true only when the build succeeded\n //(warnings included); anything else is a failure.\n if (res !== true) {\n logError('Failed to build ' + pkg.packageName);\n process.exit(1);\n } else {\n debugInfo(chalk.green(pkg.packageName + ' successfully built'));\n return chalk.green(pkg.packageName + ' built');\n }\n })\n .catch((err) => {\n logError(\n 'Failed to build ' + pkg.packageName + '. ' + err.message,\n );\n //console.error(err);\n process.exit(1);\n });\n }\n };\n },\n (dependencies, results) => {\n if (results.length) {\n log(chalk.green('Changed packages have been rebuilt'));\n log('Summary:');\n log(results.join('\\n'));\n } else {\n log(chalk.green('Nothing to rebuild'));\n }\n },\n );\n\n return;\n};\n\nconst printBuildResults = function (failed, done) {\n if (done.size > 0 || done.length > 0) {\n log(\n 'Successfully built: ' +\n chalk.green([...done].map((m) => m.packageName).join(', ')) +\n '\\n',\n );\n }\n if (failed.length > 0) {\n warn('Failed to build: ' + chalk.red(failed.join(', ')) + '\\n');\n }\n};\n\nexport var executeCommandForEachPackage = function (\n packages,\n command,\n filterMethod,\n filterValue,\n) {\n //if a specific set of packages is given\n if (filterMethod == 'exclude') {\n //filter packages, so that we only execute on the packages as provided in the command\n log('Excluding ' + filterValue);\n filterValue = filterValue.split(',');\n packages = packages.filter(\n (pkg) => filterValue.indexOf(pkg.packageName) === -1,\n );\n }\n let startFrom: string;\n //by default start executing, unless 'from' is given\n let executing: boolean = true;\n //option to start from a specific pkg in the stack\n if (filterMethod == 'from') {\n startFrom = filterValue;\n if (startFrom) {\n console.log(chalk.blue('Will skip ahead to ' + startFrom));\n }\n let seen = false;\n packages = packages.filter((pkg) => {\n if (!seen && pkg.packageName.includes(startFrom)) {\n seen = true;\n }\n return seen;\n });\n }\n\n log(\n \"Executing '\" +\n chalk.blueBright(command) +\n \"' on packages \" +\n chalk.magenta(packages.map((m) => m.packageName).join(', ')),\n );\n\n var p = Promise.resolve(true);\n packages.forEach((pkg) => {\n p = p.then(() => {\n log('# Package ' + chalk.magenta(pkg.packageName));\n return execp('cd ' + pkg.path + ' && ' + command);\n });\n });\n return p;\n};\n\nvar gitIgnore = function (...entries) {\n //add each entry to the .gitignore file\n let gitIgnorePath = path.resolve(process.cwd(), '.gitignore');\n addLinesToFile(gitIgnorePath, entries);\n};\nexport var addLinesToFile = function (filePath, entries) {\n let fileContents = fs.readFileSync(filePath, {encoding: 'utf8'});\n entries.forEach((entry) => {\n fileContents += '\\n' + entry;\n });\n fs.writeFileSync(filePath, fileContents);\n};\nexport var addCapacitor = async function (basePath = process.cwd()) {\n let targetFolder = ensureFolderExists(basePath);\n\n log('Adding capacitor');\n fs.copySync(\n path.join(getScriptDir(), '..', '..', 'defaults', 'app-static'),\n targetFolder,\n );\n fs.copySync(\n path.join(getScriptDir(), '..', '..', 'defaults', 'capacitor', 'scripts'),\n path.join(targetFolder, 'scripts'),\n );\n\n //update .env-cmdrc.json file\n let envCmdPath = path.resolve(basePath, '.env-cmdrc.json');\n let envCmd = JSON.parse(fs.readFileSync(envCmdPath, {encoding: 'utf8'}));\n\n envCmd['app-main'] = {\n APP_ENV: true,\n OUTPUT_PATH: './public/assets',\n ASSET_PATH: './assets/',\n ENTRY_PATH: './src/index-static.tsx',\n };\n envCmd['app-local-android'] = {\n NODE_ENV: 'app',\n SITE_ROOT: 'http://10.0.2.2:4000',\n };\n envCmd['app-local-ios'] = {\n NODE_ENV: 'app',\n SITE_ROOT: 'http://localhost:4000',\n };\n\n fs.writeFile(envCmdPath, JSON.stringify(envCmd, null, 2));\n log('Edited .env-cmdrc.json');\n\n gitIgnore(\n 'android/app/build',\n 'android/**/capacitor.build.gradle',\n 'ios/App/App/public',\n );\n\n //update package.json scripts\n let pack = getPackageJSON(basePath);\n pack.scripts['build-staging'] =\n 'env-cmd -e _main, staging node scripts/build.js';\n pack.scripts['fix-app'] = 'node scripts/fix-namespace.js';\n pack.scripts['app'] =\n 'env-cmd -e _main,production,app-main node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['app-local-ios'] =\n 'env-cmd -e _main,development,app-main,app-local-ios node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['app-local-android'] =\n 'env-cmd -e _main,development,app-main,app-local-android node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['cap:android'] = 'npx cap open android';\n pack.scripts['cap:ios'] = 'npx cap open ios';\n pack.scripts['cap:sync'] = 'npx cap sync';\n\n fs.writeFile(\n path.resolve(basePath, 'package.json'),\n JSON.stringify(pack, null, 2),\n );\n log('Added new run script to package.json');\n\n await execPromise(`npm install --save-dev @capacitor/cli`, true, false, null, true);\n await execPromise(\n `npm install @capacitor/android @capacitor/core @capacitor/app @capacitor/ios`,\n false,\n false,\n null,\n true,\n );\n\n // TODO: Do we need to add `npx cap init`? If yes, we should not copy capacitor config.ts yet\n // await execPromise(`npx cap init`, true, false, null, true);\n // got error:\n // [error] Non-interactive shell detected.\n // Run the command with --help to see a list of arguments that must be provided.\n // [error] Non-interactive shell detected.\n // Run the command with --help to see a list of arguments that must be provided.\n\n log(\n `Done! Now update your Capacitor configuration by providing an app name, app ID, and web directory at ${chalk.blue(\n 'capacitor.config.ts',\n )}`,\n );\n log(\n `And then run ${chalk.magenta(\n 'npx cap add android',\n )} and/or ${chalk.magenta('npx cap add ios')}')`,\n );\n log(\n `Last, run ${chalk.magenta('npm run app')} or ${chalk.magenta(\n 'npm run app-local-ios',\n )} or ${chalk.magenta('npm run app-local-android')}`,\n );\n};\n\nexport var executeCommandForPackage = function (packageName, command) {\n let packageDetails = getLincdPackages().find(\n (modDetails: PackageDetails) =>\n modDetails.packageName.indexOf(packageName) !== -1 ||\n modDetails.packageName.indexOf(packageName) !== -1,\n );\n if (packageDetails) {\n // npm is the default; only a package inside a yarn project is driven with\n // yarn (`yarn linked <cmd>` resolves the bin from the yarn workspace).\n const pm = detectPackageManager(packageDetails.path);\n // Windows quirk: the shim is `yarn.cmd` / `npx.cmd`.\n const isWin = process.platform === 'win32';\n const runner =\n pm === 'yarn' ? (isWin ? 'yarn.cmd' : 'yarn') : isWin ? 'npx.cmd' : 'npx';\n const runnerArgs = pm === 'yarn' ? ['linked'] : ['--no-install', 'linked'];\n\n log(\n \"Executing 'cd \" +\n packageDetails.path +\n ` && ${runner} linked` +\n (command ? ' ' + command : '') +\n \"'\",\n );\n\n spawnChild(\n runner,\n [...runnerArgs, command || null],\n {\n cwd: packageDetails.path,\n stdio: 'inherit',\n },\n );\n } else {\n warn(\n \"Could not find a pkg who's name (partially) matched \" +\n chalk.cyan(packageName),\n );\n }\n};\n\n/**\n * Function to remove files older than 10 seconds from the 'lib' folder.\n * @param {string} packagePath - The path to the package directory.\n */\nexport const removeOldFiles = async (packagePath) => {\n const libPath = path.join(packagePath, 'lib');\n\n try {\n // Read all files in the 'lib' folder asynchronously\n const files = await glob(packagePath + '/lib/**/*.*');\n\n // Iterate through each file\n for (const file of files) {\n // const filePath = path.join(libPath, file);\n\n // Check if the file exists before attempting to delete it\n // if (await fs.pathExists(filePath)) {\n const stats = await fs.stat(file);\n const currentTime = new Date().getTime();\n const lastModifiedTime = stats.mtime.getTime();\n\n // Check if the difference between the current time and last modified time is greater than 120 seconds\n if (currentTime - lastModifiedTime > 120000) {\n // Attempt to delete the file\n await fs.unlink(file);\n // console.log(`Removed: ${file}`);\n }\n // }\n }\n return true;\n } catch (error) {\n console.error(`Error removing files: ${error.message}`);\n return false;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"cli-methods.js","sourceRoot":"","sources":["../../src/cli-methods.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport {exec} from 'child_process';\nimport depcheck from 'depcheck';\nimport {getEnvFile} from 'env-cmd/dist/get-env-vars.js';\nimport fs from 'fs-extra';\nimport path, {dirname} from 'path';\nimport {createInterface} from 'readline';\nimport {\n debugInfo,\n execp,\n execPromise,\n getFileImports,\n getFiles,\n getLastCommitTime,\n getPackageJSON,\n isImportOutsideOfPackage,\n isInternalLinkedImport,\n needsRebuilding,\n} from './utils.js';\nimport {renameShippedDotfiles} from './utils/shippedDotfiles.js';\nimport {planPackageSetup} from './utils/packageSetup.js';\nimport {\n bareName,\n CreatePackageError,\n decideCreatePackageTarget,\n ensureRelinkPostinstall,\n ensureWorkspaceGlob,\n findLinkedAppRoot,\n RELINK_COMMAND,\n repositoryUrlFor,\n} from './utils/createPackageLocation.js';\nimport type {\n CreatePackageOptions,\n TargetDecision,\n} from './utils/createPackageLocation.js';\nimport {\n detectPackageManager,\n execBinCommand,\n runScriptCommand,\n} from './utils/packageManager.js';\nimport {rewriteExtensionlessImports} from './utils/esmSpecifiers.js';\nimport {checkShapeNames} from './utils/shapeNames.js';\nimport {\n checkShapeReferences,\n inspectShapeReferences,\n type ShapeReferenceReport,\n} from './utils/shapeReferences.js';\nimport {checkShapesIndex, checkShapesSideEffects} from './utils/shapesIndex.js';\n\nimport {spawn as spawnChild, spawnSync} from 'child_process';\nimport {findNearestPackageJson} from 'find-nearest-package-json';\nimport {statSync} from 'fs';\nimport {LinkedFileStorage} from '@_linked/core/utils/LinkedFileStorage';\nimport type {PackageDetails} from './interfaces.js';\n// import pkg from 'lincd/utils/LinkedFileStorage';\n// const { LinkedFileStorage } = pkg;\nimport {glob} from 'glob';\n\nimport ora, {Ora} from 'ora';\nimport stagedGitFiles from 'staged-git-files';\nimport {packagePublishesCjs} from './package-manifest.js';\nimport {asNamespace, defaultOntologyNamespace} from './utils/ontologyNamespace.js';\nimport {\n decidePackageKind,\n ontologySlugFor,\n packageNameFor,\n scaffoldKinds,\n PACKAGE_TEMPLATE_DIRS,\n SHARED_TEMPLATE_FILES,\n} from './utils/packageKind.js';\nimport type {PackageKind, ScaffoldKind} from './utils/packageKind.js';\nimport {resolvePackageBaseUri, withBaseUri} from './utils/packageBaseUri.js';\nimport type {ResolvedBaseUri} from './utils/packageBaseUri.js';\n\nlet dirname__ =\n typeof __dirname !== 'undefined'\n ? __dirname\n : //@ts-ignore\n dirname(import.meta.url).replace('file:/', '');\n\n/**\n * A folder under this package's `defaults/`. The built module sits in `lib/esm/`\n * and the source in `src/`, so the templates are two or one level up.\n */\nfunction defaultsDir(...parts: string[]): string {\n const candidates = [\n path.join(dirname__, '..', '..', 'defaults'),\n path.join(dirname__, '..', 'defaults'),\n ];\n const root = candidates.find((dir) => fs.existsSync(dir)) ?? candidates[0];\n return path.join(root, ...parts);\n}\n\n/**\n * The commands that write a file importing `../package.js` need a `src/package.ts`\n * to import. A new app root has none (it is a linkedApp, not a linkedPackage), so\n * there the import would be broken: refuse instead. Only the file decides: a\n * linkedApp that keeps its shapes at its root with its own `src/package.ts`, as\n * create-now does, is served as before.\n */\nfunction assertInsidePackage(sourceFolder: string, command: string) {\n if (fs.existsSync(path.join(sourceFolder, 'package.ts'))) return;\n throw new CreatePackageError(\n `${command}: no src/package.ts here, so there is no package to add to. An app root is ` +\n `not a package; run this inside a package (packages/<name>).`,\n );\n}\n\n/**\n * Dynamically import the app's backend storage configuration. Tries the\n * canonical `linked.backend.storage.{ts,js}` at app root first, then the\n * earlier `backend-storage-config.{ts,js}` (Iter3), then the legacy\n * `scripts/storage-config.js` (pre-rename). The fallback chain lets older\n * app clones keep booting through the rename.\n */\n// Extracted to ./lifecycle.ts so the Vite SSR loader doesn't\n// have to graph-walk the rest of cli-methods.ts (which contains many\n// dynamic imports Vite can't analyze). We import for internal callers\n// AND re-export so external consumers can keep importing from here.\nimport {\n ensureEnvironmentLoaded,\n loadBackendStorageConfig,\n getLincdPackages,\n discoverLocalPackages,\n planBuildAll,\n orderBuildToolFirst,\n} from './lifecycle.js';\nimport type {BuildAllPlan} from './lifecycle.js';\nimport {excerptBuildError} from './build-error-excerpt.js';\nexport {\n ensureEnvironmentLoaded,\n loadBackendStorageConfig,\n getLincdPackages,\n discoverLocalPackages,\n planBuildAll,\n};\n\nvar variables = {};\n/**\n * Prompt user for input\n */\nfunction promptUser(question: string): Promise<string> {\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(chalk.cyan(question), (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nexport type AppTemplate = 'web' | 'react-native';\n\ntype AppIdentity = {\n appName: string;\n appPrefix: string;\n appDomain: string;\n hyphenName: string;\n};\n\nexport const createApp = async (name, basePath = process.cwd(), options: {appName?: string, appPrefix?: string, appDomain?: string, skipInstall?: boolean, template?: AppTemplate} = {}) => {\n // Reject unknown templates before prompting or writing anything.\n const template = options.template;\n if (\n template !== undefined &&\n template !== 'web' &&\n template !== 'react-native'\n ) {\n console.warn(\n chalk.red(`Unknown template \"${template}\". Use \"web\" or \"react-native\".`),\n );\n return;\n }\n\n // If no name provided, prompt for folder name first\n if (!name) {\n console.log(chalk.blue('\\n📁 Folder name for your app:\\n'));\n const folderNameInput = await promptUser('Folder name (e.g., \"my-app\"): ');\n if (!folderNameInput || !folderNameInput.trim()) {\n console.warn(chalk.red('Folder name is required. Aborting.'));\n return;\n }\n name = folderNameInput.trim();\n }\n\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n const defaultAppName = name\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n const defaultAppPrefix = underscoreName;\n const defaultAppDomain = hyphenName + '.com';\n\n let appName: string;\n let appPrefix: string;\n let appDomain: string;\n\n // If any options provided, skip interactive prompts\n if (options.appName || options.appPrefix || options.appDomain) {\n appName = options.appName || defaultAppName;\n appPrefix = options.appPrefix || defaultAppPrefix;\n appDomain = options.appDomain || defaultAppDomain;\n } else {\n // Prompt user for app configuration\n console.log(chalk.blue('\\n📝 Please provide the following information:\\n'));\n console.log(\n chalk.gray('(Press Enter to use defaults based on folder name)\\n'),\n );\n\n const appNameInput = await promptUser(\n `App Name (display name) [${chalk.gray(defaultAppName)}]: `,\n );\n const appPrefixInput = await promptUser(\n `App Prefix (short code for data files, e.g., \"myapp\") [${chalk.gray(defaultAppPrefix)}]: `,\n );\n const appDomainInput = await promptUser(\n `App Domain [${chalk.gray(defaultAppDomain)}]: `,\n );\n\n appName = appNameInput || defaultAppName;\n appPrefix = appPrefixInput || defaultAppPrefix;\n appDomain = appDomainInput || defaultAppDomain;\n }\n\n // Set new variables for app configuration\n setVariable('app_name', appName);\n setVariable('app_prefix', appPrefix);\n setVariable('app_domain', appDomain);\n\n let targetFolder = path.join(basePath, hyphenName);\n\n if (template === 'react-native') {\n // Called through reactNativeInternals so tests can stub the scaffold step.\n await reactNativeInternals.scaffoldReactNativeApp(\n targetFolder,\n {appName, appPrefix, appDomain, hyphenName},\n {skipInstall: options.skipInstall},\n );\n return;\n }\n\n if (!fs.existsSync(targetFolder)) {\n fs.mkdirSync(targetFolder);\n }\n\n // Scaffold from the canonical template repo (single source of truth; CN's\n // server-side createProject clones the same repo). Shallow clone, then drop\n // .git so the new app starts with clean history.\n await execPromise(`git clone --depth 1 https://github.com/linked-fw/app-template.git \"${targetFolder}\"`, false, false);\n fs.removeSync(path.join(targetFolder, '.git'));\n //make sure the data folder exists (even though its empty).. copying empty folders does not work with fs.copySync\n fs.mkdirSync(path.join(targetFolder, 'data'), {recursive: true});\n fs.mkdirSync(path.join(targetFolder, 'data/uploads/resized'), {\n recursive: true,\n });\n\n // The template repo now ships real dotfiles; guard the legacy\n // `*.template` renames so they no-op when the dotfile already exists.\n const gitignoreTemplate = path.join(targetFolder, 'gitignore.template');\n if (fs.existsSync(gitignoreTemplate)) {\n fs.renameSync(gitignoreTemplate, path.join(targetFolder, '.gitignore'));\n }\n stripYarnProjectFiles(targetFolder);\n\n // Seed the real (gitignored) Layer 2 config from the committed example so\n // the scaffolded app boots first try. Users can edit either file later.\n const datasetsExample = path.join(\n targetFolder,\n 'linked.backend.datasets.example.json',\n );\n const datasetsReal = path.join(targetFolder, 'linked.backend.datasets.json');\n if (fs.existsSync(datasetsExample) && !fs.existsSync(datasetsReal)) {\n fs.copySync(datasetsExample, datasetsReal);\n }\n\n // fs.copySync(path.join(__dirname, '..', 'defaults', 'app'), targetFolder);\n\n log(\"Creating new Linked app '\" + appName + \"'\");\n\n //replace variables in some copied files\n await replaceVariablesInFolder(targetFolder);\n\n // The template ships placeholder-free (so a raw clone boots on defaults), so\n // create-app stamps this app's identity into the clone directly rather than\n // relying on ${var} substitution.\n applyAppIdentity(targetFolder, {appName, appPrefix, hyphenName});\n\n // New apps are npm apps: npm is the package manager the templates, the CI\n // workflows and the published @_linked/* packages are all tested against, and\n // the react-native template already installs with npm. Keeping a single\n // package manager also keeps the scaffolded app to a single lockfile.\n const pm: PackageManager = CREATE_APP_PACKAGE_MANAGER;\n\n if (!options.skipInstall) {\n const installCommand = installCommandFor(pm);\n\n const spinner = ora({\n text: `Installing dependencies (${pm})...`,\n spinner: 'dots',\n }).start();\n\n const {stdout, stderr, failed} = await new Promise<{\n stdout: string;\n stderr: string;\n failed: boolean;\n }>((resolve) => {\n exec(\n `cd ${hyphenName} && ${installCommand}`,\n {maxBuffer: 50 * 1024 * 1024} as any,\n (error, out, err) => {\n resolve({\n stdout: typeof out === 'string' ? out : out?.toString() ?? '',\n stderr: typeof err === 'string' ? err : err?.toString() ?? '',\n failed: !!error,\n });\n },\n );\n });\n\n if (failed) {\n spinner.fail('Could not install dependencies');\n if (stdout) process.stdout.write(stdout);\n if (stderr) process.stderr.write(stderr);\n } else {\n spinner.succeed(`Dependencies installed (${pm})`);\n // Even on a 0-exit install, surface stderr (peer-dep warnings,\n // deprecations, ERESOLVE warns). Silent installs hide real problems\n // that bite users the next time they touch the lockfile.\n if (stderr && stderr.trim()) {\n process.stderr.write(stderr);\n }\n }\n }\n\n const startCommand = startCommandFor(pm);\n\n log(\n `Your Linked app is ready at ${chalk.blueBright(targetFolder)}`,\n `\\nStorage: linked.backend.storage.ts wires aliases to stores; linked.backend.datasets.json holds endpoints.`,\n `Defaults to Fuseki at ${chalk.cyan('http://localhost:3030')} (auto-creates the dataset on first boot).`,\n `Make sure Fuseki is running, e.g.:`,\n ` ${chalk.blueBright('docker run -d --rm -p 3030:3030 --name fuseki stain/jena-fuseki')}`,\n `Edit ${chalk.cyan('linked.backend.datasets.json')} to change endpoints or credentials.`,\n `Mirror file for the frontend: ${chalk.cyan('src/linked.frontend.storage.ts')} + ${chalk.cyan('src/linked.frontend.datasets.json')}.`,\n `\\nTo start:`,\n ` ${chalk.blueBright(`cd ${hyphenName} && ${startCommand}`)}`,\n );\n};\n\n/**\n * iOS bundle identifier from the app domain and prefix:\n * ('example.com', 'demo') -> 'com.example.demo'.\n */\nexport function reactNativeBundleId(\n appDomain: string,\n appPrefix: string,\n): string {\n const host = appDomain\n .trim()\n .toLowerCase()\n .replace(/^[a-z][a-z0-9+.-]*:\\/\\//, '')\n .split(/[/?#]/)[0]\n .replace(/:\\d*$/, '');\n const hostLabels = host.split('.').filter(Boolean);\n // A bare host such as `localhost` gets a `com` top level: com.localhost.<prefix>.\n if (hostLabels.length === 1) hostLabels.push('com');\n return [...hostLabels.reverse(), appPrefix.toLowerCase()]\n .map((label) => label.replace(/_/g, '-').replace(/[^a-z0-9-]/g, ''))\n .filter(Boolean)\n .join('.');\n}\n\n/**\n * The prefix becomes a directory, an npm package name, a bundle-ID label and a\n * literal inside a Jest regex; this form is valid in all four unescaped.\n */\nexport const RN_PREFIX_PATTERN = /^[a-z][a-z0-9-]*$/;\n\n/** Throws when the prefix is invalid or the target folder is non-empty. */\nfunction assertReactNativeScaffoldable(targetFolder: string, appPrefix: string) {\n if (typeof appPrefix !== 'string' || !RN_PREFIX_PATTERN.test(appPrefix)) {\n throw new Error(\n `Invalid app prefix \"${appPrefix ?? ''}\": it must match ${RN_PREFIX_PATTERN.source} ` +\n '(start with a lowercase letter; only lowercase letters, digits and hyphens).',\n );\n }\n if (fs.existsSync(targetFolder) && fs.readdirSync(targetFolder).length > 0) {\n throw new Error(\n `Target folder ${targetFolder} already exists and is not empty. ` +\n 'Choose another name or remove the folder.',\n );\n }\n}\n\n/** Placeholder name of the shapes package in defaults/app-react-native. */\nexport const RN_SHAPES_TOKEN = 'app-shapes';\n\n/**\n * Literal tokens in defaults/app-react-native that are replaced by names\n * derived from the app prefix: the shapes package and the Fuseki datasets.\n */\nexport function reactNativeTokens(appPrefix: string): Record<string, string> {\n return {\n [RN_SHAPES_TOKEN]: `${appPrefix}-shapes`,\n 'app-dev': `${appPrefix}-dev`,\n 'app-test': `${appPrefix}-test`,\n };\n}\n\n/**\n * Replace every occurrence of `token` in the text files under `folder`\n * (node_modules and files containing a NUL byte are skipped). A literal token\n * replacement, not the ${...} variable substitution.\n */\nfunction replaceTokenInTextFiles(folder: string, token: string, value: string) {\n if (token === value) return;\n for (const entry of fs.readdirSync(folder, {withFileTypes: true})) {\n const full = path.join(folder, entry.name);\n if (entry.isDirectory()) {\n if (entry.name !== 'node_modules' && entry.name !== '.git') {\n replaceTokenInTextFiles(full, token, value);\n }\n } else if (entry.isFile()) {\n const buffer = fs.readFileSync(full);\n if (buffer.includes(0)) continue;\n const text = buffer.toString('utf8');\n if (text.includes(token)) {\n fs.writeFileSync(full, text.split(token).join(value));\n }\n }\n }\n}\n\nconst readJSON = (file: string) => JSON.parse(fs.readFileSync(file, 'utf8'));\nconst writeJSON = (file: string, data: any) =>\n fs.writeFileSync(file, JSON.stringify(data, null, 2) + '\\n');\n\n/**\n * Scaffold the React Native monorepo from defaults/app-react-native.\n * Identity is stamped into named fields only; the global ${...} substitution\n * (replaceVariablesInFolder) is never used, so template literals in TypeScript\n * sources stay intact.\n */\nexport async function scaffoldReactNativeApp(\n targetFolder: string,\n id: AppIdentity,\n options: {skipInstall?: boolean; templateDir?: string} = {},\n): Promise<void> {\n const {appName, appPrefix, appDomain, hyphenName} = id;\n // Validate before writing anything.\n assertReactNativeScaffoldable(targetFolder, appPrefix);\n // lib/esm/ (built) is two levels below the package root; src/ (Jest) is one.\n const templateDir =\n options.templateDir ||\n [\n path.join(getScriptDir(), '..', '..', 'defaults', 'app-react-native'),\n path.join(getScriptDir(), '..', 'defaults', 'app-react-native'),\n ].find((dir) => fs.existsSync(dir));\n if (!templateDir) {\n throw new Error('React Native template not found (defaults/app-react-native)');\n }\n const shapesName = `${appPrefix}-shapes`;\n\n log(\"Creating new Linked React Native app '\" + appName + \"'\");\n\n // 1. Copy the template.\n fs.copySync(templateDir, targetFolder);\n\n // 2. Restore dotfiles npm would strip from the CLI tarball.\n renameShippedDotfiles(targetFolder);\n\n // 3. Rename the shapes package directory.\n const oldShapesDir = path.join(targetFolder, 'packages', RN_SHAPES_TOKEN);\n const shapesDir = path.join(targetFolder, 'packages', shapesName);\n if (fs.existsSync(oldShapesDir) && oldShapesDir !== shapesDir) {\n fs.renameSync(oldShapesDir, shapesDir);\n }\n\n // 4a. Rename the shapes package token everywhere: workspaces, .gitignore\n // negation, package names, dependency keys, Jest patterns, import specifiers,\n // test expectations and docs. The Fuseki dataset tokens (`app-dev`,\n // `app-test`) are replaced the same way. Only these literal tokens change.\n for (const [token, value] of Object.entries(reactNativeTokens(appPrefix))) {\n replaceTokenInTextFiles(targetFolder, token, value);\n }\n\n // 4b. Stamp the identity fields that are not the shapes token.\n const rootPkgPath = path.join(targetFolder, 'package.json');\n if (fs.existsSync(rootPkgPath)) {\n const rootPkg = readJSON(rootPkgPath);\n rootPkg.name = `${hyphenName}-monorepo`;\n writeJSON(rootPkgPath, rootPkg);\n }\n\n const mobileDir = path.join(targetFolder, 'apps', 'mobile');\n const appJsonPath = path.join(mobileDir, 'app.json');\n if (fs.existsSync(appJsonPath)) {\n const appJson = readJSON(appJsonPath);\n appJson.expo = appJson.expo || {};\n appJson.expo.name = appName;\n appJson.expo.slug = hyphenName;\n appJson.expo.ios = appJson.expo.ios || {};\n appJson.expo.ios.bundleIdentifier = reactNativeBundleId(\n appDomain,\n appPrefix,\n );\n writeJSON(appJsonPath, appJson);\n }\n\n // 5. Install with npm: the template is an npm workspaces monorepo.\n if (!options.skipInstall) {\n const spinner = ora({\n text: 'Installing dependencies (npm)...',\n spinner: 'dots',\n }).start();\n try {\n await execPromise('npm install', false, false, {\n cwd: targetFolder,\n maxBuffer: 50 * 1024 * 1024,\n });\n spinner.succeed('Dependencies installed (npm)');\n } catch (err) {\n spinner.fail('Could not install dependencies');\n if (err?.stdout) process.stdout.write(err.stdout);\n if (err?.stderr) process.stderr.write(err.stderr);\n throw new Error(\n `npm install failed. The files are in ${targetFolder}; ` +\n `run \\`npm install\\` there to retry.`,\n );\n }\n }\n\n // 6. Next steps.\n log(\n `Your Linked React Native app is ready at ${chalk.blueBright(targetFolder)}`,\n `\\nNext steps:`,\n ` ${chalk.blueBright(`cd ${path.basename(targetFolder)}`)}`,\n ` ${chalk.blueBright('npm test')} app and API unit tests`,\n ` ${chalk.blueBright('cp services/api/.env.example services/api/.env')} once`,\n ` ${chalk.blueBright('npm run fuseki:up')} Fuseki on :3030 (Docker)`,\n ` ${chalk.blueBright('npm run api')} API-only backend on :4000`,\n ` ${chalk.blueBright('npm run test:integration')} round trip against Fuseki`,\n ` ${chalk.blueBright('cd apps/mobile && npx expo run:ios')}`,\n `See README.md (and services/api/README.md if port 3030 is taken).`,\n );\n}\n\n// Indirection so tests can replace the scaffold step when exercising createApp.\nexport const reactNativeInternals = {scaffoldReactNativeApp};\n\n/** Set or append a `KEY=value` line in a `.env`-style text blob. */\nfunction setEnvVar(envText: string, key: string, value: string): string {\n const line = `${key}=${value}`;\n const re = new RegExp(`^${key}=.*$`, 'm');\n return re.test(envText)\n ? envText.replace(re, line)\n : envText.replace(/\\n?$/, `\\n${line}\\n`);\n}\n\n/**\n * Stamp the new app's identity into the freshly-cloned template. The template\n * ships without `${var}` placeholders (so a raw CN clone boots on defaults), so\n * create-app writes the real per-app values here:\n * - `.env.example` (committed defaults for this app) + `.env` (local): APP_NAME\n * drives the display name; APP_PREFIX names data files.\n * - `package.json`: `name` (hyphenated id) + `displayName` (human name).\n * - pm2 process names + the VS Code launch name (cosmetic, but should match).\n *\n * Nothing under `src/` is touched: the app is a linkedApp, not a linked package,\n * so its root registers no package and has no package id to stamp. Its shapes\n * live in its packages (`packages/<name>-assets`), each with its own\n * `src/package.ts`.\n */\n/**\n * Scaffolded apps are npm apps, so the new app must not also look like a yarn\n * project. Removes every yarn project file a template clone may still carry —\n * including the legacy `yarnrc.yml.template` that create-app used to rename\n * into `.yarnrc.yml`. (No empty `yarn.lock` is written any more either; that\n * file only existed to pin down Yarn's project-root search.)\n */\nexport function stripYarnProjectFiles(targetFolder: string) {\n for (const yarnLeftover of [\n 'yarnrc.yml.template',\n '.yarnrc.yml',\n '.yarn',\n 'yarn.lock',\n ]) {\n fs.removeSync(path.join(targetFolder, yarnLeftover));\n }\n}\n\nexport function applyAppIdentity(\n targetFolder: string,\n ids: {appName: string; appPrefix: string; hyphenName: string},\n) {\n const {appName, appPrefix, hyphenName} = ids;\n\n // 1. .env.example (+ seed .env from it so the first `npm start` is correct).\n const envExample = path.join(targetFolder, '.env.example');\n if (fs.existsSync(envExample)) {\n let env = fs.readFileSync(envExample, 'utf8');\n env = setEnvVar(env, 'APP_NAME', appName);\n env = setEnvVar(env, 'APP_PREFIX', appPrefix);\n fs.writeFileSync(envExample, env);\n const envReal = path.join(targetFolder, '.env');\n if (!fs.existsSync(envReal)) fs.writeFileSync(envReal, env);\n }\n\n // 2. package.json — name + displayName.\n const pkgPath = path.join(targetFolder, 'package.json');\n if (fs.existsSync(pkgPath)) {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));\n pkg.name = hyphenName;\n pkg.displayName = appName;\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n');\n }\n\n // 3. pm2 process names + VS Code launch name (template hardcodes 'app').\n const renames: Array<[string, RegExp, string]> = [\n ['pm2.config.js', /name:\\s*'app'/, `name: '${hyphenName}'`],\n ['pm2-staging.config.js', /name:\\s*'app-staging'/, `name: '${hyphenName}-staging'`],\n [path.join('.vscode', 'launch.json'), /\"name\":\\s*\"Run app\"/, `\"name\": \"Run ${hyphenName}\"`],\n ];\n for (const [rel, re, replacement] of renames) {\n const f = path.join(targetFolder, rel);\n if (!fs.existsSync(f)) continue;\n fs.writeFileSync(f, fs.readFileSync(f, 'utf8').replace(re, replacement));\n }\n}\n\nfunction logHelp() {\n execp(execBinCommand(detectPackageManager(), 'linked help'));\n}\n\nfunction log(...messages) {\n messages.forEach((message) => {\n console.log(chalk.cyan('Info: ') + message);\n });\n}\n\nfunction progressUpdate(message) {\n process.stdout.write(\n ' \\r',\n );\n process.stdout.write(message + '\\r');\n}\n\nexport function warn(...messages) {\n messages.forEach((message) => {\n console.warn(chalk.redBright('Warning: ') + message);\n // console.log(chalk.red(message));\n });\n}\nexport function logError(...errors) {\n errors.forEach((error:Error) => {\n console.error(chalk.redBright('Error: ') + error);\n });\n}\nexport function developPackage(target, mode) {\n if (!target) target = 'es6';\n if (mode !== 'production') mode = '';\n else if (target !== 'es6')\n log('target must be es6 when developing for production');\n if (target == 'es5' || target == 'es6') {\n // log('> Starting continuous development build for '+target+' target')\n log('starting continuous development build');\n log(\n 'grunt dev' +\n (target ? '-' + target : '') +\n (mode ? '-' + mode : '') +\n ' --color',\n );\n var command = exec(\n 'grunt dev' +\n (target ? '-' + target : '') +\n (mode ? '-' + mode : '') +\n ' --color',\n );\n command.stdout.pipe(process.stdout);\n command.stderr.pipe(process.stderr);\n } else {\n console.warn('unknown build target. Use es5 or es6');\n }\n}\n\n// checkWorkspaces/checkPackagePath used to live here as a second, unreferenced\n// copy of the workspaces walk in lifecycle.ts. Both copies ignored negated\n// `workspaces` entries; the live one now shares ./workspace-globs.js, and this\n// dead duplicate is gone rather than left to be revived with the old bug.\n\nexport function runOnPackagesGroupedByDependencies(\n lincdPackages,\n onBuildStack: (\n packageGroup,\n dependencies,\n ) => (pkg: PackageDetails) => Promise<any>,\n onStackEnd,\n sync = false,\n): Promise<void> {\n let dependencies: Map<PackageDetails, PackageDetails[]> = new Map();\n\n let res, rej;\n const deferredPromise = new Promise<void>((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n //get dependencies of each package\n let leastDependentPackage;\n lincdPackages.forEach((pkg) => {\n var pack = getPackageJSON(pkg.path);\n if (pack) {\n //get lincd related dependencies and get the actual package details from the package map by removing '@dacore/' from the package name\n let packageDependencies = Object.keys(pack.dependencies || {})\n .filter((dependency) => lincdPackages.has(dependency))\n .map((dependency) => {\n return lincdPackages.has(dependency)\n ? lincdPackages.get(dependency)\n : dependency;\n });\n // console.log(package.packageName,packageDependencies.map())\n dependencies.set(pkg, packageDependencies);\n }\n });\n\n dependencies.forEach((PackageDependencies, pkg) => {\n if (\n !PackageDependencies.some((dependency) => {\n return (\n typeof dependency !== 'string' &&\n lincdPackages.has(dependency.packageName)\n );\n })\n ) {\n leastDependentPackage = pkg;\n }\n });\n\n let startStack: PackageDetails[] = leastDependentPackage\n ? [leastDependentPackage]\n : [];\n\n const runPackage = async (runFunction, pck) => {\n try {\n const result = await runFunction(pck);\n done.add(pck);\n return result;\n } catch (errorObj) {\n if (errorObj.error) {\n let {error, stdout, stderr} = errorObj;\n warn(\n 'Uncaught exception whilst running parallel function on ' +\n pck.packageName,\n error?.message ? error.message : error?.toString(),\n // stdout,\n // stderr,\n );\n } else {\n warn(\n 'Uncaught exception whilst running parallel function on ' +\n pck.packageName,\n errorObj?.toString(),\n // stdout,\n // stderr,\n );\n process.exit();\n }\n // warn(chalk.red(pck.packageName+' failed:'));\n // console.log(stdout);\n done.add(pck);\n return undefined;\n }\n };\n\n let done: Set<PackageDetails> = new Set();\n let results = [];\n let runStack = async (stack) => {\n let runFunction = onBuildStack(stack, dependencies);\n let stackPromise: Promise<any>;\n if (sync) {\n //build the stack in parallel\n stackPromise = Promise.resolve(true);\n stack.forEach((pck) => {\n stackPromise = stackPromise.then(() => {\n return runPackage(runFunction, pck);\n });\n });\n } else {\n //build the stack in parallel\n stackPromise = Promise.all(\n stack.map((pck) => {\n return runPackage(runFunction, pck);\n }),\n );\n }\n\n //wait till stack is completed\n let stackResults = await stackPromise;\n results = results.concat(stackResults);\n\n //clear stack for next round\n stack = [];\n\n //find those packages who have all their dependencies already built and add them to the stack\n lincdPackages.forEach((pkg) => {\n let deps = dependencies.get(pkg);\n\n //if the package is not done yet\n //but every dependency is now done OR was not something we can build (some @dacore dependencies may not be local)\n if (\n !done.has(pkg) &&\n deps.every((dependency) => {\n return (\n typeof dependency !== 'string' &&\n (done.has(dependency) || !lincdPackages.has(dependency.packageName))\n );\n })\n ) {\n stack.push(pkg);\n }\n });\n\n if (stack.length <= 0 && done.size < lincdPackages.size) {\n console.log(\n chalk.red(\n 'Only ' +\n done.size +\n ' out of ' +\n lincdPackages.size +\n ' packages have been built',\n ),\n );\n console.log(\n 'ALL remaining packages have dependencies that have not been met. This may point to ' +\n chalk.red('circular dependencies.'),\n );\n console.log(\n 'Already built: ' +\n Array.from(done)\n .map((p) => chalk.green(p.packageName))\n .join(', '),\n );\n console.log(\n chalk.blue('\\nTo solve this issue') +\n ': find the circular dependencies below and fix the dependencies:\\n\\n',\n );\n //TODO: actually find and name the packages that have circular dependencies\n // let circular = [];\n // lincdPackages.forEach((pkg) => {\n // if (!done.has(pkg))\n // {\n // let deps = dependencies.get(pkg);\n // if (deps.some(dependency => {\n // //return true if this dependency (indirectly) depends on the package whos' dependency it is\n // return hasDependency(dependency,pkg,dependencies)\n // }))\n // {\n // circular.push(pkg);\n // }\n // process.exit();\n // }\n // });\n lincdPackages.forEach((pkg) => {\n let deps = dependencies.get(pkg);\n if (!done.has(pkg)) {\n console.log(\n chalk.red(pkg.packageName) +\n ' has not been built yet. Unbuilt dependencies:\\n' +\n deps\n .filter((dependency) => {\n return !Array.from(done).some((p) => {\n // console.log(p.packageName,dependency.packageName,p===dependency)\n return p === dependency;\n });\n })\n .map((p) =>\n chalk.red(\n '\\t- ' +\n (p?.packageName ? p.packageName : p.toString()) +\n '\\n',\n ),\n )\n .join(' '),\n );\n // console.log(chalk.red(pkg.packageName)+' has not been built yet. Built dependencies:\\n' + deps.filter(dependency => {\n // return Array.from(done).some(p => p.packageName === pkg.packageName)\n // }).map(p => chalk.green('\\t- '+p.packageName+'\\n')).join(\" \"))\n // console.log(chalk.red(pkg.packageName)+' has not been built yet. Built dependencies:\\n' + deps.filter(dependency => done.has(pkg)).map(p => chalk.green('\\t- '+p.packageName+'\\n')).join(\" \"))\n }\n });\n }\n\n //if more to be built, iterate\n if (stack.length > 0) {\n return runStack(stack);\n } else {\n onStackEnd(dependencies, results.filter(Boolean));\n res();\n }\n };\n\n //starts the process\n if (startStack.length === 0) {\n // No packages to build, resolve immediately\n onStackEnd(dependencies, []);\n res();\n } else {\n runStack(startStack).catch((err) => {\n rej(err);\n });\n }\n return deferredPromise;\n}\n\nfunction hasDependency(pkg, childPkg, dependencies, depth = 1) {\n console.log(\n 'Does ' + pkg.packageName + ' have dep ' + childPkg.packageName + ' ?',\n );\n let deps = dependencies.get(pkg);\n if (\n deps.some((dependency) => {\n console.log(\n dependency.packageName,\n childPkg.packageName,\n dependency === childPkg,\n );\n if (depth === 2) return false;\n // return dependency === childPkg;\n return (\n dependency === childPkg ||\n hasDependency(dependency, childPkg, dependencies, depth++)\n );\n })\n ) {\n console.log('##YES');\n return true;\n }\n console.log('going up');\n return false;\n}\n\n/**\n * Finds the topmost package.json that could be an APP_ROOT\n * Returns null if no app root is found (standalone repo case)\n */\nfunction findAppRoot(startPath = process.cwd()): string | null {\n let currentPath = startPath;\n let candidateRoots: Array<{\n path: string;\n hasWorkspaces: boolean;\n isLinked: boolean;\n }> = [];\n\n // Walk up the directory tree\n for (let i = 0; i < 10; i++) {\n const packageJsonPath = path.join(currentPath, 'package.json');\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n\n candidateRoots.push({\n path: currentPath,\n hasWorkspaces: !!packageJson.workspaces,\n isLinked: packageJson.linkedPackage === true,\n });\n }\n\n const parentPath = path.join(currentPath, '..');\n // If we've reached the root or haven't moved up\n if (parentPath === currentPath) {\n break;\n }\n currentPath = parentPath;\n }\n\n // Find the topmost package.json that has workspaces\n // Prefer non-linked packages (app roots) over linked packages\n let appRoot = null;\n for (let i = candidateRoots.length - 1; i >= 0; i--) {\n const candidate = candidateRoots[i];\n if (candidate.hasWorkspaces && !candidate.isLinked) {\n appRoot = candidate.path;\n break;\n }\n }\n\n // If no non-linked workspace found, use the topmost workspace\n if (!appRoot) {\n for (let i = candidateRoots.length - 1; i >= 0; i--) {\n if (candidateRoots[i].hasWorkspaces) {\n appRoot = candidateRoots[i].path;\n break;\n }\n }\n }\n\n return appRoot;\n}\n\n/**\n * Print the discovery result in full: what will be built, and every package\n * that was found and will not be. Nothing is discovered silently.\n */\nfunction printBuildAllPlan(plan: BuildAllPlan) {\n console.log(\n chalk.magenta(\n `Found ${plan.build.size} linked package${plan.build.size === 1 ? '' : 's'} to build: ` +\n Array.from(plan.build.keys()).join(', '),\n ),\n );\n if (plan.skipped.length === 0) return;\n console.log(\n chalk.yellow(\n `Skipping ${plan.skipped.length} package${plan.skipped.length === 1 ? '' : 's'} found but not built:`,\n ),\n );\n for (const skip of [...plan.skipped].sort((a, b) =>\n a.packageName.localeCompare(b.packageName),\n )) {\n console.log(chalk.yellow(` - ${skip.packageName}: ${skip.reason}`));\n }\n}\n\n/**\n * Run one package's own `build` script. Resolves to true when it built, false\n * when it built with warnings, and undefined when it failed (the failure has\n * been printed, and its output is kept in `failureOutput` when given, for the\n * summary).\n */\nfunction runBuildScript(\n pkg: PackageDetails,\n failureOutput?: Map<string, string>,\n): Promise<boolean | undefined> {\n // Invoke the package's own `build` script. This lets each package\n // own its build pipeline — e.g. @_linked/core uses direct tsc, pure-CSS\n // packages may have no-op builds, and linkedPackage: true packages\n // typically call `linked build` internally.\n //\n // npm is the default; the package manager is detected per package so\n // packages inside an existing yarn workspace still build with yarn.\n const pkgDir = path.join(process.cwd(), pkg.path);\n const pkgJson = getPackageJSON(pkgDir);\n if (!pkgJson?.scripts?.build) {\n // No build script — skip gracefully (e.g. a pure-assets package).\n return Promise.resolve(true);\n }\n const buildCmd = runScriptCommand(detectPackageManager(pkgDir), 'build');\n return execPromise(buildCmd, false, false, {cwd: pkgDir})\n .then((res) => res === '' || typeof res === 'string')\n .catch((err) => {\n // A non-zero exit is a failed build. Report it and resolve to\n // undefined, which is what the callers read as failure. Resolving to an\n // error object would count as built.\n const output = [err?.stdout, err?.stderr].filter(Boolean).join('\\n');\n failureOutput?.set(pkg.packageName, output);\n console.error(\n chalk.red(pkg.packageName + ' build failed') +\n (output ? '\\n' + output : ''),\n );\n return undefined;\n });\n}\n\nexport function buildAll(options) {\n console.log(\n 'Building all linked packages of this repository in order of dependencies',\n );\n\n const plan = planBuildAll('./', findAppRoot() || undefined);\n printBuildAllPlan(plan);\n\n if (plan.build.size === 0) {\n console.log(chalk.yellow('Nothing to build.'));\n return;\n }\n\n // The build tool goes first and alone: every other build runs it.\n const order = orderBuildToolFirst(plan.build, options?.from);\n const sync = options?.sync || false;\n\n // Successfully built (or deliberately passed over by --from).\n const done: Set<PackageDetails> = new Set();\n\n if (!order.tool) {\n return buildInDependencyOrder(order.rest, order.from, sync, done);\n }\n const tool = order.tool;\n if (!order.buildToolFirst) {\n log(chalk.blue('skipping ' + tool.packageName));\n done.add(tool);\n return buildInDependencyOrder(order.rest, order.from, sync, done);\n }\n\n // This process has already loaded every module `build-all` uses (the\n // command's code is imported statically), so the tool's `rimraf ./lib`\n // cannot pull anything out from under it.\n console.log(\n chalk.blue(\n `Building ${tool.packageName} first: the other packages build with it.`,\n ),\n );\n return runBuildScript(tool).then((res) => {\n if (typeof res === 'undefined') {\n const others = order.rest.size;\n console.error(\n chalk.red(\n `${tool.packageName} failed to build, so build-all stopped before ` +\n `the other ${others} package${others === 1 ? '' : 's'}: they build with it. ` +\n `Fix ${tool.packageName} and run build-all again.`,\n ),\n );\n process.exit(1);\n return;\n }\n log(\n chalk.green('Built ' + tool.packageName) +\n (res === false ? chalk.redBright(' (with warnings)') : ''),\n );\n done.add(tool);\n if (order.rest.size === 0) {\n printBuildAllSummary(done, new Set(), new Map(), [], new Map());\n return;\n }\n return buildInDependencyOrder(order.rest, order.from, sync, done);\n });\n}\n\nfunction buildInDependencyOrder(\n lincdPackages: Map<string, PackageDetails>,\n from: string | undefined,\n sync: boolean,\n done: Set<PackageDetails>,\n) {\n let startFrom: string;\n //by default start building\n let building: boolean = true;\n\n //option to start from a specific package in the stack\n if (from) {\n startFrom = from;\n //if we have a startFrom, then we havnt started the build process yet\n building = false;\n console.log(chalk.blue('Will skip builds until ' + startFrom));\n }\n\n // Packages whose own build script failed.\n let failed: Set<PackageDetails> = new Set();\n // Packages not built because a dependency failed or was itself not built,\n // mapped to the failed package(s) at the root of that chain.\n let notBuilt: Map<PackageDetails, string[]> = new Map();\n // The output of each failed build, by package name, for the summary.\n const failureOutput: Map<string, string> = new Map();\n\n progressUpdate(lincdPackages.size + ' packages left');\n\n let packagesLeft = lincdPackages.size;\n // `done` may already hold the build tool, built before this ran.\n const doneBefore = done.size;\n const finished = runOnPackagesGroupedByDependencies(\n lincdPackages,\n (packageGroup, dependencies) => {\n if (done.size > doneBefore) {\n debugInfo(\n chalk.magenta(\n '\\n-------\\nThese packages are next, since all their dependencies have now been build:',\n ),\n );\n }\n debugInfo(\n 'Now building: ' + chalk.blue(packageGroup.map((i) => i.packageName)),\n );\n return async (pkg: PackageDetails) => {\n // A package whose dependency failed (directly or further down the\n // chain) cannot be built against it. Report it instead of building it,\n // and keep building everything else.\n const causes = new Set<string>();\n for (const dep of dependencies.get(pkg) || []) {\n if (typeof dep === 'string') continue;\n if (failed.has(dep)) causes.add(dep.packageName);\n notBuilt.get(dep)?.forEach((c) => causes.add(c));\n }\n if (causes.size > 0) {\n const roots = [...causes];\n notBuilt.set(pkg, roots);\n packagesLeft--;\n console.log(\n chalk.yellow(\n `Not building ${pkg.packageName} because ${roots.join(', ')} failed`,\n ),\n );\n return undefined;\n }\n\n let command: Promise<any>;\n let skipping = false;\n //if we're skipping builds until a certain package\n if (!building) {\n //if the package name matches the package we're supposed to start from then start building packages\n if (pkg.packageName == startFrom) {\n building = true;\n }\n //else still waiting for the package\n else {\n log(chalk.blue('skipping ' + pkg.packageName));\n command = Promise.resolve(true);\n skipping = true;\n }\n }\n //unless told otherwise, build the package\n if (!command) {\n command = runBuildScript(pkg, failureOutput);\n log(chalk.cyan('Building ' + pkg.packageName));\n process.stdout.write(packagesLeft + ' packages left\\r');\n }\n\n const res = await command;\n packagesLeft--;\n //true is success, false is success with warnings, undefined is failure\n if (typeof res === 'undefined') {\n failed.add(pkg);\n return undefined;\n }\n if (!skipping) {\n log(\n chalk.green('Built ' + pkg.packageName) +\n (res === false ? chalk.redBright(' (with warnings)') : ''),\n );\n }\n done.add(pkg);\n process.stdout.write(packagesLeft + ' packages left\\r');\n return res;\n };\n },\n (dependencies) => {\n //if no more packages to build but we never started building...\n if (!building) {\n console.log(\n chalk.red(\n 'Could not find the package to start from. Please provide a correct package name or package name to build from',\n ),\n );\n process.exit(1);\n return;\n }\n // Anything neither built, failed nor held back by a failure was never\n // scheduled: its dependencies could not all be met, which points to a\n // dependency cycle.\n const unscheduled = Array.from(lincdPackages.values()).filter(\n (pkg: PackageDetails) =>\n !done.has(pkg) && !failed.has(pkg) && !notBuilt.has(pkg),\n ) as PackageDetails[];\n if (unscheduled.length > 0) {\n console.log(\n chalk.red(\n 'CYCLICAL DEPENDENCIES? - could not build some packages because they depend on each other.',\n ),\n );\n for (const pkg of unscheduled) {\n const deps = dependencies.get(pkg) || [];\n console.log(\n chalk.red(pkg.packageName) +\n ' depends on ' +\n deps\n .filter((dependency) => typeof dependency !== 'string')\n .map((d: PackageDetails) =>\n done.has(d) ? d.packageName : chalk.red(d.packageName),\n )\n .join(', '),\n );\n //also print some information why these packages have not been moved into the stack\n const stringDependencies = deps.filter((d) => typeof d === 'string');\n if (stringDependencies.length > 0) {\n console.log(\n chalk.red(\n 'And it depends on these package(s) - which seem not to be proper packages :' +\n stringDependencies.join(', '),\n ),\n );\n console.log(\n chalk.red(\n 'Could you remove this from dependencies? Should it be a devDependency?',\n ),\n );\n }\n }\n }\n\n printBuildAllSummary(done, failed, notBuilt, unscheduled, failureOutput);\n if (failed.size > 0 || notBuilt.size > 0 || unscheduled.length > 0) {\n process.exit(1);\n }\n },\n sync,\n );\n return finished;\n}\n\n/**\n * The end-of-run report of `build-all`: what was built, every package whose\n * build failed with a few lines of why, and every package that was not built\n * because of one.\n */\nfunction printBuildAllSummary(\n done: Set<PackageDetails>,\n failed: Set<PackageDetails>,\n notBuilt: Map<PackageDetails, string[]>,\n unscheduled: PackageDetails[],\n failureOutput: Map<string, string>,\n) {\n printBuildResults(\n [...failed].map((p) => p.packageName),\n done,\n );\n for (const pkg of failed) {\n const excerpt = excerptBuildError(failureOutput.get(pkg.packageName) || '');\n console.warn(\n chalk.red(` ${pkg.packageName}:`) +\n '\\n' +\n (excerpt.length > 0 ? excerpt : ['(no output)'])\n .map((line) => chalk.gray(' | ') + line)\n .join('\\n'),\n );\n }\n if (failed.size > 0) console.warn('');\n if (notBuilt.size > 0) {\n warn(\n `Not built (${notBuilt.size}) because a dependency failed:\\n` +\n [...notBuilt]\n .map(\n ([pkg, roots]) =>\n ` - ${chalk.red(pkg.packageName)}: not built because ${roots.join(', ')} failed`,\n )\n .join('\\n') +\n '\\n',\n );\n }\n if (unscheduled.length > 0) {\n warn(\n 'Not built (dependency cycle): ' +\n chalk.red(unscheduled.map((p) => p.packageName).join(', ')) +\n '\\n',\n );\n }\n const problems = failed.size + notBuilt.size + unscheduled.length;\n if (problems > 0) {\n warn(\n chalk.red(\n `build-all finished with ${failed.size} failed and ${notBuilt.size + unscheduled.length} not built, out of ${done.size + problems} packages.`,\n ),\n );\n }\n}\n\n/**\n * Returns a map of the packages that this repository manages (so no packages found through the workspaces who's path contains ../ )\n * @param rootPath\n */\nfunction getLocalLincdPackageMap(rootPath = './'): Map<string, PackageDetails> {\n let map = new Map();\n getLincdPackages(rootPath).forEach((pkg) => {\n if (pkg.path.indexOf('../') === -1 && pkg.path.indexOf('..\\\\') === -1) {\n // console.log(package.path);\n map.set(pkg.packageName, pkg);\n }\n });\n return map;\n}\n\nfunction getLocalLincdModules(rootPath = './'): PackageDetails[] {\n return getLincdPackages(rootPath).filter((pkg) => {\n return pkg.path.indexOf('..\\\\') === -1;\n });\n}\n\n// getLincdPackages moved to ./lifecycle.ts and re-exported above.\n\nfunction setVariable(name, replacement) {\n //prepare name for regexp\n name = name.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n variables[name] = replacement;\n}\n\nvar replaceVariablesInFile = async (filePath: string) => {\n var fileContent = await fs.readFile(filePath, 'utf8').catch((err) => {\n console.warn(chalk.red('Could not read file ' + filePath));\n });\n if (fileContent) {\n var newContent = replaceCurlyVariables(fileContent);\n return fs.writeFile(filePath, newContent);\n } else {\n return Promise.resolve();\n }\n};\n\nvar replaceCurlyVariables = function (string) {\n // var reg = new RegExp('\\\\$\\\\{'+key+'\\\\}','g');\n for (var key in variables) {\n string = string.replace(\n new RegExp('\\\\$\\\\{' + key + '\\\\}', 'g'),\n variables[key],\n );\n }\n return string;\n};\n\nconst capitalize = (str) =>\n str.charAt(0).toUpperCase() + str.toLowerCase().slice(1);\nconst camelCase = (str) => {\n let string = str.replace(/[^A-Za-z0-9]/g, ' ').split(' ');\n if (string.length > 1) {\n return string.reduce((result, word) => result + capitalize(word));\n }\n return str;\n};\n\nexport const createOntology = async (\n prefix,\n uriBase?,\n basePath = process.cwd(),\n) => {\n if (!prefix) {\n console.warn('Please provide a suggested prefix as the first argument');\n return;\n }\n\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-ontology');\n let targetFolder = ensureFolderExists(sourceFolder, 'ontologies');\n\n if (!uriBase) {\n uriBase = defaultOntologyNamespace(prefix);\n }\n setVariable('uri_base', asNamespace(uriBase));\n\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(prefix);\n\n //copy ontology accessor file\n log(\"Creating files for ontology '\" + prefix + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.ts');\n let targetRegisterFile = path.join(targetFolder, hyphenName + '.register.ts');\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'ontologies', 'example-ontology.ts'),\n targetFile,\n );\n\n // The registration sibling. It has to be a separate module: registration needs the\n // ontology module's whole export namespace, and a module cannot import itself once a\n // bundler is involved -- Rollup elides the self-reference and the app dies at boot.\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'ontologies', 'example-ontology.register.ts'),\n targetRegisterFile,\n );\n\n //copy data files\n let targetDataFile = path.join(\n targetFolder,\n '..',\n 'data',\n hyphenName + '.json',\n );\n let targetDataFile2 = path.join(\n targetFolder,\n '..',\n 'data',\n hyphenName + '.json.d.ts',\n );\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'data', 'example-ontology.json'),\n targetDataFile,\n );\n fs.copySync(\n defaultsDir('package-ontology', 'src', 'data', 'example-ontology.json.d.ts'),\n targetDataFile2,\n );\n\n await replaceVariablesInFiles(\n targetFile,\n targetRegisterFile,\n targetDataFile,\n targetDataFile2,\n );\n log(\n `Prepared a new ontology data files in ${chalk.magenta(\n targetDataFile.replace(basePath, ''),\n )}`,\n `And an ontology accessor file in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n );\n\n //if this is not a lincd app (but a lincd package instead)\n if (!sourceFolder.includes('frontend')) {\n //then also add an import to index\n // Import the register sibling, not the terms module: only the sibling calls\n // linkedOntology(). See the comment in example-ontology.register.ts.\n let indexPath = addLineToIndex(\n `import './ontologies/${hyphenName}.register.js';`,\n 'ontologies',\n );\n log(`Added an import of this file from ${chalk.magenta(indexPath)}`);\n }\n};\n// The shapes barrel (src/shapes/index.ts) is imported by both the frontend index and\n// the backend entry, so every shape registers on both boot paths (and materializes into\n// app-data on boot). `create-shape` adds each new shape here — NOT to the main index.\n// It holds side-effect imports only (no exports), in packages and apps alike: apps load a\n// package's whole set with `import '<pkg>/shapes/index'`, and `linked build` fails a\n// package whose shapes/index misses one of its shapes.\nconst SHAPES_BARREL_HEADER =\n `// Shape registry — every shape is imported here so its @linkedShape decorator runs and\\n` +\n `// the shape registers on both boot paths (backend materialization + frontend).\\n` +\n `// Side-effect imports only: no exports, components or providers. \\`linked\\n` +\n `// create-shape\\` maintains this list.\\n//SHAPES\\n`;\n\nconst ensureBackendImportsShapes = function (root: string = process.cwd()) {\n const backendPath = path.join(root, 'src', 'backend.ts');\n if (!fs.existsSync(backendPath)) return;\n let contents = fs.readFileSync(backendPath, 'utf-8');\n if (contents.includes('./shapes/index')) return;\n fs.writeFileSync(backendPath, `import './shapes/index.js';\\n` + contents);\n};\n\n// Register a shape in the shapes barrel (src/shapes/index.ts), creating it if needed, and\n// make sure both the main index and backend.ts import the barrel. Idempotent.\nexport const addShapeToBarrel = function (shapeHyphenName: string, root: string = process.cwd()) {\n const shapesDir = path.join(root, 'src', 'shapes');\n fs.ensureDirSync(shapesDir);\n const barrelPath = path.join(shapesDir, 'index.ts');\n let contents = fs.existsSync(barrelPath)\n ? fs.readFileSync(barrelPath, 'utf-8')\n : SHAPES_BARREL_HEADER;\n const line = `import './${shapeHyphenName}.js';`;\n if (!contents.split(/\\n/g).some((l) => l.trim() === line.trim())) {\n contents = contents.includes('//SHAPES')\n ? contents.replace('//SHAPES', `//SHAPES\\n${line}`)\n : contents.replace(/\\n*$/, '') + `\\n${line}\\n`;\n fs.writeFileSync(barrelPath, contents);\n }\n // Both boot paths must load the barrel (idempotent).\n addLineToIndex(`import './shapes/index.js';`, 'shapes', root);\n ensureBackendImportsShapes(root);\n return barrelPath;\n};\n\n// Exported for Shape-Builder reuse: CodeShapeSyncService adds\n// the `import './shapes/<Shape>.js';` line to a generated app package's index.\nexport const addLineToIndex = function (\n line,\n insertMatchString: string,\n root: string = process.cwd(),\n insertAtStart: boolean = false,\n) {\n //import ontology in index\n let indexPath = ['index.ts', 'index.tsx']\n .map((f) => path.join(root, 'src', f))\n .find((indexFileName) => {\n return fs.existsSync(indexFileName);\n });\n if (indexPath) {\n let indexContents = fs.readFileSync(indexPath, 'utf-8');\n // Idempotent: if the exact line is already present, do nothing (re-running\n // a shape edit must not append a duplicate import).\n if (indexContents.split(/\\n/g).some((l) => l.trim() === line.trim())) {\n return indexPath;\n }\n let lines = indexContents.split(/\\n/g);\n let newContents;\n for (var key in lines) {\n //if the match string is found\n if (lines[key].indexOf(insertMatchString) !== -1) {\n //add the new line after this line\n lines[key] += `\\n${line}`;\n newContents = lines.join('\\n');\n // log(\"Found at \"+key,lines,newContents);\n break;\n }\n }\n if (!newContents) {\n if (insertAtStart) {\n newContents = `${line}\\n${indexContents}`;\n } else {\n newContents = `${indexContents}\\n${line}`;\n }\n // log(\"Added at end\",newContents);\n }\n fs.writeFileSync(indexPath, newContents);\n }\n return indexPath;\n};\nconst replaceVariablesInFiles = function (...files: string[]) {\n return Promise.all(\n files.map((file) => {\n return replaceVariablesInFile(file);\n }),\n );\n};\nconst replaceVariablesInFolder = async function (\n folder: string,\n): Promise<void> {\n //get all files in folder, including files that start with a dot\n try {\n const files = await glob(folder + '/**/*', {dot: true, nodir: true});\n await Promise.all(\n files.map((file) => {\n return replaceVariablesInFile(file);\n }),\n );\n } catch (err) {\n console.log('Error', err);\n throw err;\n }\n};\n\nconst replaceVariablesInFilesWithRoot = function (\n root: string,\n ...files: string[]\n) {\n return replaceVariablesInFiles(...files.map((f) => path.join(root, f)));\n};\nexport type PackageManager = 'npm' | 'yarn';\n\n/**\n * The package manager `create-app` scaffolds with. Both templates (web and\n * react-native) install with npm, so a scaffolded app has exactly one lockfile.\n */\nexport const CREATE_APP_PACKAGE_MANAGER: PackageManager = 'npm';\n\n/** The shell command that installs a scaffolded app's dependencies. */\nexport function installCommandFor(pm: PackageManager): string {\n return pm === 'yarn'\n ? 'export NODE_OPTIONS=\"--no-network-family-autoselection\" && yarn install'\n : 'npm install';\n}\n\n/** The command printed to the user for starting their new app. */\nexport function startCommandFor(pm: PackageManager): string {\n return pm === 'yarn' ? 'yarn start' : 'npm start';\n}\n\nconst ensureFolderExists = function (...folders: string[]) {\n let target;\n folders.forEach((folder) => {\n target = target ? path.join(target, folder) : path.join(folder);\n if (!fs.existsSync(target)) {\n fs.mkdirSync(target);\n }\n });\n return target;\n /*let targetFolder = path.join(...folders);\n let parentDirectory = folders.slice(0, folders.length - 1);\n if (!fs.existsSync(targetFolder)) {\n if (fs.existsSync(path.join(...parentDirectory))) {\n fs.mkdirSync(targetFolder);\n } else {\n warn(\n `Please run this command from the root of your package. This command expects ${parentDirectory.toString()} to exists from that folder`,\n );\n }\n }\n return targetFolder;*/\n};\n\nexport const setNameVariables = function (name) {\n let hyphenName = name.toLowerCase().replace(/[-_\\s]+/g, '-');\n let camelCaseName = camelCase(name); //some-package --> someModule\n let underscoreName = name.replace(/[-\\s]+/g, '_');\n let plainName = name.replace(/[-\\s]+/g, '');\n\n //longer similar variables names should come before the shorter ones\n setVariable('underscore_name', underscoreName);\n setVariable('hyphen_name', hyphenName);\n setVariable('camel_name', camelCaseName);\n setVariable('name', name);\n setVariable('plain_name', plainName);\n\n return {hyphenName, camelCaseName, underscoreName, plainName};\n};\n\nfunction getSourceFolder(basePath = process.cwd()) {\n //LINCD App\n if (fs.existsSync(path.join(basePath, 'frontend', 'src'))) {\n return path.join(basePath, 'frontend', 'src');\n }\n //LINCD package\n if (fs.existsSync(path.join(basePath, 'src'))) {\n return path.join(basePath, 'src');\n } else {\n console.warn('Cannot find source folder');\n return path.join(basePath, 'src');\n }\n}\n\n/**\n * get __dirname for either ESM/CJS\n */\nexport const getScriptDir = () => {\n return dirname__;\n // // @ts-ignore\n // if (typeof __dirname !== 'undefined')\n // {\n // // @ts-ignore\n // return __dirname;\n // }\n // else\n // {\n // // @ts-ignore\n // return dirname(import.meta.url).replace('file:/','');\n // }\n};\nexport const createShape = async (name, basePath = process.cwd()) => {\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-shape');\n let targetFolder = ensureFolderExists(sourceFolder, 'shapes');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n // log(\"Creating files for shape '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.ts');\n fs.copySync(\n defaultsDir('shape.ts'),\n targetFile,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile);\n log(\n `Created a new shape class template in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n );\n\n // Register the shape in the shapes barrel (src/shapes/index.ts) — NOT the main index —\n // and make sure the barrel is loaded on both boot paths. This is what makes the app\n // materialize its own shapes on boot.\n // The barrel sits next to the shape: in the source folder's parent, not the cwd, which\n // is only the same folder when the command runs from the package or app root.\n const barrelPath = addShapeToBarrel(hyphenName, path.dirname(sourceFolder));\n log(`Registered the shape in ${chalk.magenta(barrelPath.replace(basePath, ''))}`);\n};\n\nexport const createSetComponent = async (name, basePath = process.cwd()) => {\n assertInsidePackage(path.join(basePath, 'src'), 'create-set-component');\n let targetFolder = ensureFolderExists(basePath, 'src', 'components');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n log(\"Creating files for set component '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.tsx');\n fs.copySync(\n defaultsDir('set-component.tsx'),\n targetFile,\n );\n\n let targetFile2 = path.join(targetFolder, hyphenName + '.scss');\n fs.copySync(\n defaultsDir('component.scss'),\n targetFile2,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile, targetFile2);\n\n let indexPath = addLineToIndex(\n `import './components/${hyphenName}.js';`,\n 'components',\n );\n\n log(\n `Created a new set component in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n `Created a new stylesheet in ${chalk.magenta(\n targetFile2.replace(basePath, ''),\n )}`,\n `Added an import of this file from ${chalk.magenta(indexPath)}`,\n );\n};\nexport const createComponent = async (name, basePath = process.cwd()) => {\n let sourceFolder = getSourceFolder(basePath);\n assertInsidePackage(sourceFolder, 'create-component');\n let targetFolder = ensureFolderExists(sourceFolder, 'components');\n let {hyphenName, camelCaseName, underscoreName} = setNameVariables(name);\n\n //copy default shape file\n log(\"Creating files for component '\" + name + \"'\");\n let targetFile = path.join(targetFolder, hyphenName + '.tsx');\n fs.copySync(\n defaultsDir('component.tsx'),\n targetFile,\n );\n\n let targetFile2 = path.join(targetFolder, hyphenName + '.scss');\n fs.copySync(\n defaultsDir('component.scss'),\n targetFile2,\n );\n\n //replace variables in some of the copied files\n await replaceVariablesInFiles(targetFile, targetFile2);\n log(\n `Created a new component template in ${chalk.magenta(\n targetFile.replace(basePath, ''),\n )}`,\n `Created component stylesheet template in ${chalk.magenta(\n targetFile2.replace(basePath, ''),\n )}`,\n );\n\n //if this is not a lincd app (but a lincd package instead)\n if (!sourceFolder.includes('frontend')) {\n //then also add an import to index\n let indexPath = addLineToIndex(\n `import './components/${hyphenName}.js';`,\n 'components',\n );\n log(`Added an import of this file from ${chalk.magenta(indexPath)}`);\n }\n};\n\n// Reads the source of all ts/tsx files in the src folder and fails on imports\n// that reach outside the package source root ('outside_package'), or that point\n// into another Linked package's /src/ or /lib/ ('internal_linked'). Extensionless relative\n// imports are fine: `linked build` rewrites the emitted ESM specifiers.\nexport const checkImports = async (\n sourceFolder: string = getSourceFolder(),\n depth: number = 0, // Used to check if the import is outside the src folder\n invalidImports: Map<string, {type: string; importPath: string}[]> = new Map(),\n) => {\n if (!fs.existsSync(sourceFolder)) {\n // Package has no src/ folder (e.g. pure-CSS packages). Nothing to check.\n return true;\n }\n const dir = fs.readdirSync(sourceFolder);\n\n // Start checking each file in the source folder\n for (const file of dir) {\n const filename = path.join(sourceFolder, file);\n\n // Skip test sources. Test files (and their helpers/probes) are not part\n // of the shipped package, so the import rules do not apply to them.\n if (\n /(?:^|[\\\\/])(?:tests?|__tests__|test-helpers)(?:[\\\\/]|$)/.test(filename) ||\n /\\.(?:test|spec)\\.tsx?$/.test(file) ||\n /^type-probe.*\\.tsx?$/.test(file)\n ) {\n continue;\n }\n\n // File is either a directory, or not a .ts(x)\n // INFO: For future use - if this part fails, it could be due to user permissions\n // i.e. the program not having access to check the file metadata\n if (!filename.match(/\\.tsx?$/)) {\n try {\n if (statSync(filename).isDirectory()) {\n await checkImports(filename, depth + 1, invalidImports);\n }\n } catch (e) {\n console.log(e);\n }\n // A directory has now been recursed into, and any other file is not a\n // source file: either way there is nothing here to read imports from.\n continue;\n }\n\n const allImports = await getFileImports(filename);\n if (!invalidImports.has(filename)) {\n invalidImports.set(filename, []);\n }\n\n allImports.forEach((i) => {\n if (isImportOutsideOfPackage(i, depth)) {\n invalidImports.get(filename).push({\n type: 'outside_package',\n importPath: i,\n });\n }\n if (isInternalLinkedImport(i)) {\n invalidImports.get(filename).push({\n type: 'internal_linked',\n importPath: i,\n });\n }\n });\n }\n\n let res = '';\n //check if invalidImports has any\n let flat = [...invalidImports.values()].flat();\n // All recursion must have finished, display any errors\n if (depth === 0 && flat.length > 0) {\n res += chalk.red('Invalid imports found.\\n');\n\n invalidImports.forEach((value, key) => {\n // res += '- '+chalk.blueBright(key.split('/').pop()) + ':\\n';\n value.forEach(({type, importPath}) => {\n let message =\n key.split('/').pop() + \" imports from '\" + importPath + \"'\";\n if (type === 'outside_package') {\n message += ' which is outside the package source root';\n }\n if (type === 'internal_linked') {\n message +=\n \" which reaches into another Linked package's /src/ or /lib/.\" +\n ' That breaks when its build layout changes and bypasses its' +\n ' exports map. Import its public subpath instead.';\n }\n res += chalk.red(message + '\\n');\n });\n });\n\n // Throw so buildStep aborts the compile pipeline: importing from outside\n // the package, or into another Linked package's /src/ or /lib/, breaks the\n // published package.\n throw res;\n }\n // Nothing invalid: all imports OK.\n return true;\n};\n\nexport const depCheckStaged = async () => {\n console.log('Checking dependencies of staged files');\n stagedGitFiles(async function (err, results) {\n const packages = new Set<string>();\n await Promise.all(\n results.map(async (file) => {\n // console.log('STAGED: ', file.filename);\n let root = await findNearestPackageJson(file.filename);\n packages.add(root.path);\n }),\n );\n\n [...packages].forEach((packageRoot) => {\n const pack = JSON.parse(fs.readFileSync(packageRoot, 'utf8'));\n const srcPath = packageRoot.replace('package.json', '');\n console.log('Checking dependencies of ' + chalk.blue(pack.name) + ':');\n return depCheck(process.cwd() + '/' + srcPath);\n // console.log('check dependencies of ' + pack.name);\n //\n // console.log('ROOT of ' + file.filename + ': ' + root.path);\n // console.log('ROOT of ' + file.filename + ': ' + root.data);\n });\n });\n};\nexport const depCheck = async (packagePath: string = process.cwd()) => {\n // log('Checking depencies of ' + chalk.cyan(packagePath));\n return new Promise((resolve, reject) => {\n depcheck(packagePath, {}, (results) => {\n if (results.missing) {\n let lincdPackages = getLocalLincdModules(packagePath);\n let missing = Object.keys(results.missing);\n //filter out missing types, if it builds we're not too concerned about that at the moment?\n //especially things like @types/react, @types/react-dom, @types/node (they are added elsewhere?)\n // missing = missing.filter(m => m.indexOf('@types/') === 0);\n //currently react is not an explicit dependency, but we should add it as a peer dependency\n missing.splice(missing.indexOf('react'), 1);\n\n let missingLincdPackages = missing.filter((missingDep) => {\n return lincdPackages.some((lincdPackage) => {\n return lincdPackage.packageName === missingDep;\n });\n });\n //currently just missing LINCD packages cause a hard failure exit code\n if (missingLincdPackages.length > 0) {\n reject(\n chalk.red(\n packagePath.split('/').pop() +\n '\\n[ERROR] These linked packages are imported but they are not listed in package.json:\\n- ' +\n missingLincdPackages\n .map((missedKey) => {\n const files = results.missing[missedKey];\n return `${missedKey} (${files.length} files: ${files.join(', ')})`;\n })\n .join(',\\n- '),\n ),\n );\n } else if (missing.length > 0) {\n resolve(\n chalk.redBright(\n 'warning: ' +\n packagePath.split('/').pop() +\n ' is missing dependencies:\\n - ' +\n missing.join('\\n - '),\n ),\n );\n } else {\n resolve(true);\n }\n }\n // if(Object.keys(results.invalidFiles).length > 0) {\n // console.warn(chalk.red(\"Invalid files:\\n\")+Object.keys(results.invalidFiles).join(\",\\n\"));\n // }\n // if(Object.keys(results.invalidDirs).length > 0) {\n // console.warn(chalk.red(\"Invalid dirs:\\n\")+results.invalidDirs.toString());\n // }\n // if(results.unused) {\n // console.warn(\"Unused dependencies: \"+results.missing.join(\", \"));\n // }\n });\n });\n};\n// ensureEnvironmentLoaded moved to ./lifecycle.ts and re-exported above.\nexport const runScript = async (\n scriptName: string,\n options: {spawn: boolean},\n) => {\n //if spawn is not defined, default to true\n const spawn = options.spawn !== undefined ? options.spawn : true;\n\n await ensureEnvironmentLoaded();\n if (spawn) {\n await startServer(true);\n }\n\n log('Running script ' + scriptName);\n const scriptPath = path.join(process.cwd(), 'scripts', scriptName);\n const script = await import(scriptPath);\n await script.default().catch((error) => {\n log('Script ' + scriptName + ' finished with errors');\n logError(error);\n process.exit(1);\n });\n log('Script ' + scriptName + ' finished');\n process.exit(0);\n};\n\nexport const runMethod = async (\n packageName: string,\n method: string,\n options: {spawn: boolean},\n) => {\n await ensureEnvironmentLoaded();\n\n if (options.spawn) {\n let linkedConfig = (\n await import(path.join(process.cwd(), 'linked.config.js'))\n ).default;\n\n // Set default loadAppComponent if not provided\n if (!linkedConfig.server) {\n linkedConfig.server = {};\n }\n if (!linkedConfig.server.loadAppComponent) {\n linkedConfig.server.loadAppComponent = async () =>\n (await import(path.join(process.cwd(), 'src', 'App'))).default;\n }\n // Set default loadRoutes if not provided\n if (!linkedConfig.server.loadRoutes) {\n linkedConfig.server.loadRoutes = async () =>\n await import(path.join(process.cwd(), 'src', 'routes.tsx'));\n }\n\n const ServerClass = await loadServerClass();\n await loadBackendStorageConfig();\n let server = new ServerClass(linkedConfig);\n //init the server\n console.log('Initializing server...');\n server.initOnly().then(() => {\n //process the backend method call\n console.log('Running method ' + method);\n //mock the request and response objects\n let request = {\n body: {},\n query: {},\n params: {},\n headers: {},\n method: 'POST',\n url: '/' + packageName + '/' + method,\n };\n let response = {\n status: (statusCode) => {\n console.log('Response status code:', statusCode);\n return response;\n },\n json: (data) => {\n console.log('Response data:', data);\n },\n send: (data) => {\n console.log('Response data:', data);\n },\n };\n //TODO; allow sending args\n server\n .callBackendMethod(\n packageName,\n method,\n [],\n request as any,\n response as any,\n )\n .then(() => {\n console.log('Done');\n process.exit();\n })\n // An unmatched method (ServerCallError 501) or a provider error rejects; report it instead of an\n // unhandled rejection.\n .catch((err) => {\n console.error(err?.message ?? err);\n process.exit(1);\n });\n });\n } else {\n //reuse the existing running LinkedServer instance.\n //make a HTTP call\n //'/call/:pkg/:method',\n fetch(process.env.SITE_ROOT + '/call/' + packageName + '/' + method, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json();\n })\n .then((data) => {\n console.log('Response data:', data);\n process.exit();\n })\n .catch((error) => {\n if (\n error.code === 'ECONNREFUSED' ||\n error.cause?.code === 'ECONNREFUSED'\n ) {\n console.error(\n chalk.red(\n 'Could not connect to the backend server. Is it running?',\n ),\n );\n console.error(\n `Make sure you ${chalk.magenta('run \"npm start\" in a separate process')} before calling this method.`,\n );\n } else {\n console.error('Error during backend call:', error);\n }\n process.exit(1);\n });\n }\n};\nexport const startServer = async (\n initOnly: boolean = false,\n ServerClass = null,\n) => {\n await ensureEnvironmentLoaded();\n\n let linkedConfig = (await import(path.join(process.cwd(), 'linked.config.js')))\n .default;\n\n // function scssLoadcall(source, filename) {\n // return 'console.log(\"SCSS CALL: ' + filename + '\");\\n' + source;\n // process.exit();\n // }\n // hook.hook('.scss', scssLoadcall);\n // hook.hook('.css', scssLoadcall);\n // import.meta.\n // // hook.hook('*.css', scssLoadcall);\n // // hook.hook('Body.module.css', scssLoadcall);\n // hook.hook('.module.css', scssLoadcall);\n\n if (!ServerClass) {\n ServerClass = await loadServerClass();\n }\n await loadBackendStorageConfig();\n\n // Set default loadAppComponent if not provided\n if (!linkedConfig.server) {\n linkedConfig.server = {};\n }\n if (!linkedConfig.server.loadAppComponent) {\n let appPromise;\n if (process.env.NODE_ENV !== 'development') {\n appPromise = (await import(path.join(process.cwd(), 'lib', 'App.js')))\n .default;\n } else {\n appPromise = (await import(path.join(process.cwd(), 'src', 'App.tsx')))\n .default;\n }\n linkedConfig.server.loadAppComponent = async () => {\n return appPromise;\n };\n }\n\n // Set default loadRoutes if not provided\n if (!linkedConfig.server.loadRoutes) {\n linkedConfig.server.loadRoutes = async () => {\n if (process.env.NODE_ENV !== 'development') {\n return await import(path.join(process.cwd(), 'lib', 'routes.js'));\n } else {\n return await import(path.join(process.cwd(), 'src', 'routes.tsx'));\n }\n };\n }\n\n let server = new ServerClass(linkedConfig);\n //Important to use slice, because when using clusers, child processes need to be able to read the same arguments\n let args = process.argv.slice(2);\n //if --initOnly is passed, only initialize the server and don't start it\n if (args.includes('--initOnly') || initOnly) {\n return server.initOnly();\n } else {\n return server.start();\n }\n};\n/**\n * Compile the app's backend into `lib/`.\n *\n * Vite, in SSR mode, against the app's own `vite.config` — the same transform\n * `linked start` applies through `vite.ssrLoadModule`. It used to be a bare\n * `tsc`, which meant dev and production resolved the same source two different\n * ways: `tsc` could not follow the workspace resolver or an extensionless\n * relative import, it inferred `rootDir` from whatever happened to be in the\n * program (so `lib/backend.js` could land in `lib/src/`), and being a\n * typechecker first it failed the build on any type error anywhere in the app,\n * including in files the backend never loads. Typechecking is a separate\n * concern from emitting, and belongs in its own command.\n */\nexport const buildBackend = async () => {\n console.log(chalk.magenta(`🛠 Preparing ${process.env.NODE_ENV} backend`));\n await ensureEnvironmentLoaded();\n\n const appRoot = process.cwd();\n const {buildBackendWithVite, copyBackendStylesheets} = await import(\n './app-release/build-backend.js'\n );\n\n // Step 1: Compile with Vite (it empties lib/ itself)\n const compileSpinner = ora({\n discardStdin: true,\n text: 'Compiling backend with Vite',\n }).start();\n\n try {\n await buildBackendWithVite({appRoot});\n compileSpinner.succeed('Backend compiled');\n } catch (e) {\n console.error(e);\n compileSpinner.fail('Failed to compile the backend');\n return;\n }\n\n // Step 2: Copy CSS files the server reads off disk by path\n const copySpinner = ora({\n discardStdin: true,\n text: 'Copying CSS files',\n }).start();\n\n try {\n const copied = await copyBackendStylesheets(appRoot, (dir) =>\n getFiles(dir, '.css'),\n );\n copySpinner.succeed(`${copied} CSS files copied`);\n } catch (e) {\n console.error(e);\n copySpinner.fail('Failed to copy CSS files');\n }\n\n return true;\n};\n\nexport const upgradePackages = async () => {\n await ensureEnvironmentLoaded();\n // let packages = getLincdPackages();\n // let packages = getLocalLincdModules();\n let packages = getLocalLincdPackageMap();\n let dirname = getScriptDir();\n const tsConfigESM = path.join(\n dirname,\n '../../defaults/package',\n 'tsconfig-esm.json',\n );\n const typesFile = path.join(\n dirname,\n '../../defaults/package/src',\n 'types.d.ts',\n );\n\n const tsConfigTemplate = await fs\n .readJson(path.join(dirname, '../../defaults/package', 'tsconfig.json'))\n .catch((err) => {\n console.log(err);\n });\n runOnPackagesGroupedByDependencies(\n packages,\n (packageGroup, dependencies) => {\n // packageGroup.forEach((pkg) => {\n // console.log(' Upgrading ' + pkg.packageName);\n console.log('-----');\n return async (pkg: PackageDetails) => {\n if (pkg.packageName === 'lincd') return;\n // await execPromise(`cd ${pkg.path} && yarn upgrade`);\n console.log('Upgrading ' + pkg.packageName);\n //\n // //create a new file src/tsconfig-cjs.json\n // //copy the contents of tsconfig.json into it\n // if (!fs.existsSync(path.join(pkg.path,'tsconfig-cjs.json')))\n // {\n // await fs.copy(tsConfigCJS,path.join(pkg.path,'tsconfig-cjs.json'));\n // await fs.copy(tsConfigESM,path.join(pkg.path,'tsconfig-esm.json'));\n // console.log('Copied new tsconfig to ' + pkg.packageName);\n // }\n //\n // //read tsconfig\n // await fs.readJson(path.join(pkg.path,'tsconfig.json')).then((tsconfig) => {\n // let oldCompilerOpts = tsconfig.compilerOptions;\n // tsconfig.compilerOptions = tsConfigTemplate.compilerOptions;\n // tsconfig.compilerOptions.types = oldCompilerOpts.types;\n // tsconfig.compilerOptions.plugins = [{\"name\": \"typescript-plugin-css-modules\"}];\n //\n // console.log('Upgraded tsconfig for ' + pkg.packageName);\n // return fs.writeJson(path.join(pkg.path,'tsconfig.json'),tsconfig,{spaces: 2});\n // });\n // //import types at the beginning of index.ts\n // addLineToIndex(`import './types';`,null,pkg.path,true);\n // //copy over the types file\n // await fs.copy(typesFile,path.join(pkg.path,'src','types.d.ts'));\n\n // await fs.readJson(path.join(pkg.path,'package.json')).then((packageJson) => {\n // let version = packageJson.version;\n // let nextVersion;\n // if (version.split('.').shift() === '0')\n // {\n // nextVersion = getNextMajorVersion(version);\n // }\n // else\n // {\n // nextVersion = getNextMinorVersion(version);\n // }\n // console.log('Upgraded version for ' + pkg.packageName + ' to ' + nextVersion);\n //\n // packageJson.version = nextVersion;\n // packageJson.devDependencies['tsconfig-to-dual-package'] = '^1.2.0';\n // packageJson.devDependencies['typescript-plugin-css-modules'] = '^5.1.0';\n //\n // packageJson.main = 'lib/cjs/index.js';\n // packageJson.module = 'lib/esm/index.js';\n // packageJson.exports = {\n // '.': {\n // 'types': './lib/esm/index.d.ts',\n // 'import': './lib/esm/index.js',\n // 'require': './lib/cjs/index.js',\n // },\n // './*': {\n // 'types': './lib/esm/*.d.ts',\n // 'import': './lib/esm/*.js',\n // 'require': './lib/cjs/*.js',\n // },\n // };\n // packageJson.typesVersions = {\n // '*': {\n // '*': [\n // 'lib/esm/*',\n // ],\n // },\n // };\n //\n // return fs.writeJson(path.join(pkg.path,'package.json'),packageJson,{ spaces: 2 });\n // });\n\n //change .css files and .scss files to .module.css and .module.scss\n let files = await getFiles(path.join(pkg.path, 'src'));\n // let tsFiles = files.filter(f => f.match(/\\.(ts|tsx)$/));\n // let cssFiles = files.filter(f => f.match(/\\.(css|scss)$/)).filter(f => !f.match(/\\.module\\.(css|scss)$/));\n // cssFiles.forEach(cssFile => {\n // let cssFileName = path.basename(cssFile);\n // let newFile = cssFileName.replace(/\\.s?css$/,'.module$&');\n // let newFilePath = cssFile.replace(/\\.s?css$/,'.module$&');\n // let jsonFile = cssFileName.replace(/\\.s?css$/,'$&.json');\n // fs.renameSync(cssFile,newFilePath);\n // console.log('Renaming ' + cssFileName + ' to ' + newFilePath);\n // //find other files that import this file and update them\n // tsFiles.forEach(tsFile => {\n // //read contents of f2\n // let contents = fs.readFileSync(tsFile,'utf8');\n // //if it imports f\n // if (contents.indexOf(cssFileName) !== -1)\n // {\n // //find the whole line that imports f\n // let line = contents.split('\\n').find(l => l.indexOf(cssFileName) !== -1);\n // // console.log(\"OLD: \"+line);\n // let jsonLine = contents.split('\\n').find(l => l.indexOf(jsonFile) !== -1);\n // // console.log(\"JSON: \"+jsonLine);\n // //if not commented out\n // if(line.indexOf('//') === -1) {\n // let previousImportPath = line.match(/['\"](.*)['\"]/)[1];\n // let newImportPath = previousImportPath.replace(cssFileName,newFile);\n // let newContents = contents.replace(line,`import style from '${newImportPath}';`)\n // .replace(jsonLine+'\\n','');\n // // console.log(\"\\n\");\n // fs.writeFileSync(tsFile,newContents);\n // console.log('Updated imports in ' + tsFile);\n // // fs.writeFileSync\n // // fs.writeFileSync(i,fs.readFileSync(i,'utf8').replace(f,newFile));\n // }\n // }\n // })\n // });\n files\n .filter((f) => f.match(/\\.(scss\\.json|css\\.json)$/))\n .forEach((cssJsonFile) => {\n console.log('Removing ' + cssJsonFile);\n fs.unlinkSync(cssJsonFile);\n });\n };\n // });\n },\n () => {\n console.log('Finished upgrading packages');\n },\n );\n\n // packages.forEach((pkg,key) => {\n // console.log(key+' Upgrading ' + pkg.packageName);\n // execPromise(`cd ${pkg.path} && yarn upgrade`).then(() => {\n // console.log('Upgraded ' + pkg.packageName);\n // }).catch(err => {\n // console.warn(err);\n // })\n // });\n};\n\nexport const createPackage = async (\n name,\n uriBase?,\n basePath = process.cwd(),\n options: CreatePackageOptions = {},\n) => {\n if (!name) {\n console.warn('Please provide a name as the first argument');\n return;\n }\n const isTTY = !!(process.stdin.isTTY && process.stdout.isTTY);\n\n // What, then where. Both are settled before anything is written, so a\n // refusal leaves nothing behind and `both` asks each question once.\n const kindDecided = decidePackageKind({\n kind: options.kind,\n remote: options.remote,\n isTTY,\n });\n if (kindDecided.kind === 'refuse') throw new CreatePackageError(kindDecided.message);\n const packageKind: PackageKind =\n kindDecided.kind === 'ask' ? await askPackageKind(name) : kindDecided.packageKind;\n\n const appRoot = findLinkedAppRoot(basePath);\n const decided = decideCreatePackageTarget({appRoot, options, isTTY});\n if (decided.kind === 'refuse') throw new CreatePackageError(decided.message);\n\n // The root its IRIs are minted under: a malformed one is refused here, before\n // anything is written or asked.\n let root: ResolvedBaseUri | undefined;\n try {\n root = resolvePackageBaseUri({flag: options.baseUri, appRoot});\n } catch (e) {\n throw new CreatePackageError((e as Error).message);\n }\n const decision =\n decided.kind === 'ask' ? await askPackageLocation(name) : decided;\n\n const packages = scaffoldKinds(packageKind).map((kind) => ({\n kind,\n name: packageNameFor(name, kind),\n }));\n // Nothing is written until every target is free.\n const targets = await Promise.all(\n packages.map(async ({name: packageName}) => {\n const targetFolder = await packageTargetFolder(packageName, basePath, appRoot, decision);\n if (fs.existsSync(targetFolder)) {\n throw new CreatePackageError(\n `${targetFolder} already exists. Refusing to write a new package over it.`,\n );\n }\n return targetFolder;\n }),\n );\n\n // linked.cm is the normal root for an open-source package, so its absence is\n // information, not a warning.\n log(\n root\n ? `Base URI ${root.baseUri} (from ${root.source}): shapes mint ${root.baseUri}shape/<package>/<Name>`\n : `Shapes and terms in ${packages.map((p) => p.name).join(' and ')} mint under https://linked.cm/. ` +\n `They resolve once the package is published (npx linked publish, coming soon).`,\n );\n for (const [i, {kind, name: packageName}] of packages.entries()) {\n const targetFolder = targets[i];\n await scaffoldPackage(packageName, kind, targetFolder, uriBase, root?.baseUri);\n if (kind === 'assets' && packageKind === 'both') {\n // The pair is one unit: the asset package's shapes use the ontology\n // created with it. `ontology` comes first in `scaffoldKinds`, so its\n // package.json is already written.\n const ontIndex = packages.findIndex((p) => p.kind === 'ontology');\n dependOnOntologyPackage(\n targetFolder,\n packages[ontIndex].name,\n targets[ontIndex],\n decision.kind === 'resolved' && decision.location === 'packages',\n );\n }\n const skipped = () =>\n log(`Prepared a new linked package in ${chalk.magenta(targetFolder)} (install skipped)`);\n if (decision.kind === 'outside') {\n if (options.skipInstall) skipped();\n else await installStandalonePackage(targetFolder);\n } else if (decision.location === 'packages') {\n // The app's package.json is wired either way: that is files, not install.\n await installWorkspacePackage(packageName, targetFolder, appRoot, options.skipInstall);\n } else if (options.skipInstall) {\n skipped();\n } else {\n await installOwnRepoPackage(packageName, targetFolder, appRoot, decision);\n }\n }\n};\n\n/**\n * Declare the ontology package as a regular dependency of the asset package,\n * at `^` its version — the same entry Create Now's project scaffold writes.\n *\n * Only where npm workspaces link the two (`--location packages`). Anywhere\n * else the `-ont` package is not published yet, so `npm install` in the asset\n * package would fail with E404: the entry is left out and one line says how to\n * add it once the ontology package is published.\n */\nfunction dependOnOntologyPackage(\n assetsFolder: string,\n ontName: string,\n ontFolder: string,\n linkedByWorkspace: boolean,\n) {\n if (!linkedByWorkspace) {\n log(\n `The asset package does not depend on ${ontName} yet: once ${ontName} is published, ` +\n `run npm install ${ontName} in ${assetsFolder}`,\n );\n return;\n }\n const {version} = fs.readJsonSync(path.join(ontFolder, 'package.json'));\n const pkgPath = path.join(assetsFolder, 'package.json');\n const pkg = fs.readJsonSync(pkgPath);\n pkg.dependencies = {...pkg.dependencies, [ontName]: `^${version}`};\n fs.writeJsonSync(pkgPath, pkg, {spaces: 2});\n}\n\n/** Where a package goes, given where create-package was told to put it. */\nasync function packageTargetFolder(\n name: string,\n basePath: string,\n appRoot: string | null,\n decision: TargetDecision,\n): Promise<string> {\n //let's remove scope for folder names\n const cleanPackageName = bareName(name);\n if (decision.kind === 'outside') {\n //if ran with npx, basePath will be the root directory of the repository, even if we're executing from a sub folder (the root directory is where node_modules lives and package.json with workspaces)\n //so we manually find a packages folder, if it exists we go into that.\n if (fs.existsSync(path.join(basePath, 'packages'))) {\n basePath = path.join(basePath, 'packages');\n }\n //for lincd.org currently packages are stored in the modules folder\n else if (fs.existsSync(path.join(basePath, 'modules'))) {\n basePath = path.join(basePath, 'modules');\n }\n return path.join(basePath, cleanPackageName);\n }\n if (decision.kind === 'resolved' && decision.location === 'packages') {\n return path.join(appRoot, 'packages', cleanPackageName);\n }\n // localize's own naming, so `linked localize` and this command can never\n // disagree about where a package lives.\n const {checkoutNameFor, DEFAULT_DIR} = await import('./localize/index.js');\n return path.join(appRoot, DEFAULT_DIR, checkoutNameFor(name));\n}\n\n/**\n * Write one package of a kind. Every kind gets the shared files of\n * `defaults/package` (manifest, tsconfigs, dotfiles, `src/package.ts`); an asset\n * package gets the rest of that folder, an ontology package gets\n * `defaults/package-ontology` instead, with the example ontology named after\n * its ontology slug.\n */\nasync function scaffoldPackage(\n name: string,\n kind: ScaffoldKind,\n targetFolder: string,\n uriBase?: string,\n baseUri?: string,\n) {\n // An ontology package `foo-ont` holds the ontology `foo`: that slug names its\n // files and its prefix, and its terms mint `{root}ont/foo/{Term}`.\n const ontologySlug = kind === 'ontology' ? ontologySlugFor(name) : undefined;\n if (!uriBase) {\n uriBase = baseUri\n ? `${baseUri}ont/${ontologySlug ?? bareName(name)}/`\n : defaultOntologyNamespace(ontologySlug ?? name);\n }\n setVariable('uri_base', asNamespace(uriBase));\n\n //save the full scoped package name under ${package_name}\n setVariable('package_name', name);\n\n //extra variable for clarity (will be same as 'name')\n setVariable('output_file_name', name);\n\n const {hyphenName} = setNameVariables(ontologySlug ?? bareName(name));\n\n log(`Creating new linked ${kind} package '${name}'`);\n fs.mkdirSync(targetFolder, {recursive: true});\n const [shared, ...variants] = PACKAGE_TEMPLATE_DIRS[kind];\n if (variants.length === 0) {\n fs.copySync(defaultsDir(shared), targetFolder);\n } else {\n for (const file of SHARED_TEMPLATE_FILES) {\n fs.copySync(defaultsDir(shared, file), path.join(targetFolder, file));\n }\n for (const variant of variants) {\n fs.copySync(defaultsDir(variant), targetFolder);\n }\n }\n renameShippedDotfiles(targetFolder);\n\n //replace variables in some of the copied files\n await Promise.all(\n ['src/index.ts', 'package.json', 'src/package.ts']\n .concat(\n kind === 'ontology'\n ? [\n 'src/ontologies/example-ontology.ts',\n 'src/ontologies/example-ontology.register.ts',\n 'src/data/example-ontology.json',\n ]\n : [],\n )\n .map((f) => path.join(targetFolder, f))\n .map((file) => replaceVariablesInFile(file)),\n );\n\n if (baseUri) {\n const packageTs = path.join(targetFolder, 'src', 'package.ts');\n fs.writeFileSync(packageTs, withBaseUri(fs.readFileSync(packageTs, 'utf8'), baseUri));\n }\n\n if (kind !== 'ontology') return;\n //rename these to a file name similar to the ontology slug\n [\n 'src/ontologies/example-ontology.ts',\n // The register sibling is what index.ts imports; without it here the scaffold keeps a\n // literal `example-ontology.register.ts` full of unsubstituted `${...}` placeholders and\n // nothing ever calls linkedOntology().\n 'src/ontologies/example-ontology.register.ts',\n 'src/data/example-ontology.json',\n 'src/data/example-ontology.json.d.ts',\n ].forEach((f) => {\n let parts = f.split('/');\n let newParts = [...parts];\n let [, ...extensions] = newParts.pop().split('.');\n let newName = hyphenName + '.' + extensions.join('.');\n fs.renameSync(\n path.join(targetFolder, f),\n path.join(targetFolder, ...newParts, newName),\n );\n });\n}\n\n/**\n * Ask what kind of package to make — only ever on a terminal, and only when\n * `--kind` did not say.\n */\nasync function askPackageKind(name: string): Promise<PackageKind> {\n console.log(\n `\\nWhat kind of package is ${chalk.magenta(name)}?\\n` +\n ` 1) ontology one ontology, no shapes or components (${packageNameFor(name, 'ontology')})\\n` +\n ` 2) assets shapes, components and a backend (${packageNameFor(name, 'assets')})\\n` +\n ` 3) both the two packages above\\n`,\n );\n const kinds: PackageKind[] = ['ontology', 'assets', 'both'];\n let answer = '';\n while (!['1', '2', '3'].includes(answer)) {\n answer = await promptUser('Choose 1, 2 or 3: ');\n }\n return kinds[Number(answer) - 1];\n}\n\n/**\n * Ask where a new package goes — only ever on a terminal, and only when no\n * flag said so already.\n */\nasync function askPackageLocation(\n name: string,\n): Promise<Extract<TargetDecision, {kind: 'resolved'}>> {\n console.log(\n `\\nWhere should ${chalk.magenta(name)} live?\\n` +\n ` 1) packages/ part of this app's repository\\n` +\n ` 2) packages-local/ its own git repository, linked into this app\\n`,\n );\n let answer = '';\n while (answer !== '1' && answer !== '2') {\n answer = await promptUser('Choose 1 or 2: ');\n }\n if (answer === '1') return {kind: 'resolved', location: 'packages', push: false};\n\n const remote = await promptUser(\n 'Remote git URL for its repository (optional, Enter to skip): ',\n );\n const push =\n !!remote &&\n /^y(es)?$/i.test(\n await promptUser(`Push the first commit to ${remote}? (y/N): `),\n );\n return {\n kind: 'resolved',\n location: 'packages-local',\n ...(remote ? {remote} : {}),\n push,\n };\n}\n\n/** The install + first build plan for a package, given where it installs from. */\nasync function packageSetupFor(installRoot: string) {\n // npm is the default for a new package. yarn is only consulted when the new\n // package lands inside an existing yarn project (a yarn-3 monorepo),\n // where adding an npm lockfile would break the workspace.\n const insideYarnProject = detectPackageManager(installRoot) === 'yarn';\n let version = insideYarnProject\n ? ((await execPromise('yarn --version').catch(() => {\n console.log('yarn probably not working');\n return '';\n })) as string)\n : '';\n return planPackageSetup(\n version.toString(),\n path.join(getScriptDir(), 'launch.js'),\n process.execPath,\n insideYarnProject,\n );\n}\n\n/**\n * Install `cwd` with `setup`, then build `targetFolder`. Failures set the exit\n * code; `installFailedHint` says what was already changed when the install fails.\n */\nasync function installThenBuild(\n setup: Awaited<ReturnType<typeof packageSetupFor>>,\n cwd: string,\n targetFolder: string,\n installFailedHint = '',\n) {\n const installed = await execp(setup.installCommand, true, false, {cwd})\n .then(() => true)\n .catch(() => {\n console.warn(\n `Could not install dependencies (${setup.installCommand})` +\n (installFailedHint ? `. ${installFailedHint}` : ''),\n );\n process.exitCode = 1;\n return false;\n });\n if (installed) {\n await execp(setup.buildCommand, true, false, {cwd: targetFolder}).catch(\n () => {\n console.warn('Dependencies installed, but the initial build failed');\n process.exitCode = 1;\n },\n );\n }\n}\n\n/** Outside an app: install inside the package itself, as this command always has. */\nasync function installStandalonePackage(targetFolder: string) {\n const setup = await packageSetupFor(path.dirname(path.resolve(targetFolder)));\n if (setup.yarnrc) {\n fs.writeFileSync(path.join(targetFolder, '.yarnrc.yml'), setup.yarnrc);\n }\n await installThenBuild(setup, targetFolder, targetFolder);\n log(\n `Prepared a new linked package in ${chalk.magenta(targetFolder)}`,\n `Run ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'build'),\n )} from this directory to build once`,\n `Or ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'start'),\n )} to continuously rebuild on file changes`,\n );\n}\n\n/**\n * packages/: a workspace member of the app's own repository. The app's\n * workspaces must cover it and its dependencies declare it — npm links a\n * workspace member by name, and `build-all` builds what the app depends on —\n * and the install runs at the app root, where the workspace is.\n */\nasync function installWorkspacePackage(\n name: string,\n targetFolder: string,\n appRoot: string,\n skipInstall = false,\n) {\n const appPkgPath = path.join(appRoot, 'package.json');\n const appPkg = fs.readJsonSync(appPkgPath);\n const workspaces = ensureWorkspaceGlob(appPkg);\n if (workspaces.warning) console.warn(chalk.yellow(workspaces.warning));\n const version = fs.readJsonSync(path.join(targetFolder, 'package.json')).version;\n appPkg.dependencies = {...appPkg.dependencies, [name]: `^${version}`};\n fs.writeJsonSync(appPkgPath, appPkg, {spaces: 2});\n log(\n `Added ${name}@^${version} to ${path.relative(process.cwd(), appPkgPath) || 'package.json'}` +\n (workspaces.changed ? ' and packages/* to its workspaces' : ''),\n );\n if (skipInstall) {\n log(`Prepared a new linked package in ${chalk.magenta(targetFolder)} (install skipped)`);\n return;\n }\n\n const setup = await packageSetupFor(appRoot);\n await installThenBuild(\n setup,\n appRoot,\n targetFolder,\n `The app's package.json already declares ${name}; run the install again at the app root once it is fixed.`,\n );\n log(\n `Prepared a new linked package in ${chalk.magenta(targetFolder)}, part of this app's repository`,\n `Run ${chalk.blueBright(\n runScriptCommand(setup.packageManager, 'start'),\n )} in it to continuously rebuild on file changes`,\n );\n}\n\n/**\n * packages-local/: a repository of its own. Its git history starts here, and\n * localize's `adopt` installs, builds, links and records it. The app's\n * dependencies are NOT touched: until the package is published a version range\n * fails `npm install` (E404 once a lockfile exists), and a `file:` path would\n * install cleanly for a teammate without the checkout and fail at runtime.\n */\nasync function installOwnRepoPackage(\n name: string,\n targetFolder: string,\n appRoot: string,\n decision: Extract<TargetDecision, {kind: 'resolved'}>,\n) {\n const {remote, push} = decision;\n const rel = path.relative(appRoot, targetFolder);\n const pkgPath = path.join(targetFolder, 'package.json');\n const fail = (message: string) => {\n console.warn(chalk.yellow(message));\n process.exitCode = 1;\n };\n\n if (!git(['init', '--quiet'], targetFolder)) {\n return fail(`git init failed in ${rel}; the package is scaffolded but not linked.`);\n }\n if (remote) {\n if (!git(['remote', 'add', 'origin', remote], targetFolder)) {\n return fail(`git remote add origin ${remote} failed in ${rel}; nothing was linked.`);\n }\n const pkg = fs.readJsonSync(pkgPath);\n pkg.repository = {type: 'git', url: repositoryUrlFor(remote)};\n fs.writeJsonSync(pkgPath, pkg, {spaces: 2});\n }\n\n // Before adopt, never during it: adopt asserts the app's package.json did not\n // change while it ran.\n const appPkgPath = path.join(appRoot, 'package.json');\n const appPkg = fs.readJsonSync(appPkgPath);\n if (ensureRelinkPostinstall(appPkg)) {\n fs.writeJsonSync(appPkgPath, appPkg, {spaces: 2});\n log(\n `Added \\`${RELINK_COMMAND}\\` to the app's postinstall, so npm install keeps the link`,\n );\n }\n\n const {adoptPackage} = await import('./commands/localize.js');\n const {EXIT_WARNED} = await import('./localize/index.js');\n // Only the build command matters here: adopt always installs with npm, so\n // the package-manager half of the plan does not apply.\n const {buildCommand} = planPackageSetup(\n '',\n path.join(getScriptDir(), 'launch.js'),\n process.execPath,\n );\n const code = await adoptPackage(name, {appRoot, build: buildCommand});\n if (code === EXIT_WARNED) {\n fail('The package is linked, but its initial build failed');\n } else if (code !== 0) {\n return fail(\n `Linking ${name} failed (localize exit ${code}). ${rel} is scaffolded with an uncommitted ` +\n `git init, and the app's postinstall relinks localized packages. Fix the cause and retry ` +\n `with: linked localize ${name} --adopt`,\n );\n }\n\n const committed =\n git(['add', '-A'], targetFolder) &&\n git(['commit', '--quiet', '-m', `feat: scaffold ${name}`], targetFolder);\n if (!committed) {\n fail(\n `Could not make the first commit in ${rel} (is git's user.name/user.email set?). ` +\n `The package is linked; commit it yourself.`,\n );\n }\n let pushed = false;\n if (push && committed) {\n pushed = git(['push', '--quiet', '-u', 'origin', 'HEAD'], targetFolder);\n if (!pushed) fail(`Could not push to ${remote}. Push it yourself: git push -u origin HEAD`);\n }\n\n const version = fs.readJsonSync(pkgPath).version;\n log(\n `Prepared ${name} in ${chalk.magenta(rel)}, in its own git repository` +\n (remote ? ` (origin ${remote}${pushed ? ', pushed' : ''})` : ' (no remote yet)'),\n `It is linked into node_modules and recorded in local-packages.json.`,\n `It is not in the app's dependencies: until it is published a version range would fail npm install.`,\n ` After publishing: ${chalk.blueBright(`npm install ${name}@^${version}`)}`,\n );\n if (!remote) {\n log(\n `To add a remote later: ${chalk.blueBright('git remote add origin <url>')} in ${rel}, ` +\n `then ${chalk.blueBright(`linked localize ${name} --adopt`)} to record it.`,\n );\n }\n}\n\n/** Run git with arguments (no shell, so a URL is never re-parsed). Echoes failures. */\nfunction git(args: string[], cwd: string): boolean {\n const r = spawnSync('git', args, {cwd, encoding: 'utf8'});\n if (r.status !== 0) {\n console.warn((r.stderr || r.stdout || String(r.error ?? '')).trim());\n return false;\n }\n return true;\n}\n\nvar getNextVersion = function (version) {\n let parts = version.split('.');\n return parts[0] + '.' + parts[1] + '.' + (parseInt(parts[2]) + 1).toString();\n};\nvar getNextMajorVersion = function (version) {\n let parts = version.split('.');\n return (parseInt(parts[0]) + 1).toString() + '.0.0';\n};\nvar getNextMinorVersion = function (version) {\n let parts = version.split('.');\n return parts[0] + '.' + (parseInt(parts[1]) + 1).toString() + '.0';\n};\nvar buildFailed = function (output: string) {\n return (\n output.indexOf('Aborted due to warnings') !== -1 &&\n output.indexOf('Command failed') !== -1\n );\n};\n\nexport const register = function (registryURL) {\n if (fs.existsSync(process.cwd() + '/package.json')) {\n var pack = JSON.parse(\n fs.readFileSync(process.cwd() + '/package.json', 'utf8'),\n );\n let version = pack.version;\n let packageName = pack.name;\n // let author = pack.author;\n // let description = pack.description;\n //\n // let authorName = pack.author;\n // if (pack.author.name) {\n // authorName = pack.author.name;\n // }\n\n console.log(\n chalk.cyan(\n 'registering package ' +\n packageName +\n ' ' +\n version +\n ' in the LINCD registry',\n ),\n );\n\n return fetch(registryURL + '/register', {\n method: 'POST',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({package: packageName, version}),\n // body: JSON.stringify({package: packageName, version, author}),\n })\n .then((res) => res.json())\n .then((json) => {\n if (json.error) {\n console.log(chalk.red('Response: ' + json.error));\n } else if (json.result) {\n console.log(chalk.blueBright('Response: ') + json.result);\n if (json.warning) {\n console.log(chalk.red('Warning: ') + json.warning);\n }\n }\n })\n .catch((err) => {\n console.warn(\n chalk.red('Warning: ') + 'Could not connect to LINCD registry',\n );\n });\n } else {\n console.warn(\n chalk.red('Warning:') + ' not found: ' + process.cwd() + '/package.json',\n );\n }\n};\n\nexport const buildPackage = async (\n target,\n target2,\n packagePath = process.cwd(),\n logResults: boolean = true,\n) => {\n // Ensure packagePath is absolute and points to a directory containing package.json; if not, go up until we find one\n // First, resolve to absolute path\n let currentPath = path.isAbsolute(packagePath) \n ? packagePath \n : path.resolve(process.cwd(), packagePath);\n while (!fs.existsSync(path.join(currentPath, 'package.json'))) {\n const parentPath = path.dirname(currentPath);\n if (parentPath === currentPath) {\n // Reached root and didn't find package.json. Optionally, handle this error.\n console.error(\n 'No package.json found in ' +\n packagePath +\n ' or any parent directories',\n );\n return false;\n }\n currentPath = parentPath;\n }\n // Always use the resolved absolute path\n packagePath = currentPath;\n\n // Guard: `linked build` only makes sense for linkedPackage. Apps must use\n // `linked build-app`. Plain packages (no linked flag) have no build pipeline\n // defined here and should have their own build script.\n const pkgJson = JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n );\n const isPackage = pkgJson.linkedPackage === true;\n const isApp = pkgJson.linkedApp === true;\n if (!isPackage) {\n if (isApp) {\n console.error(\n chalk.red(\n `'${pkgJson.name || packagePath}' is a linkedApp, not a linkedPackage. Use 'linked build-app' instead of 'linked build'.`,\n ),\n );\n } else {\n console.error(\n chalk.red(\n `'${pkgJson.name || packagePath}' does not have 'linkedPackage: true' in package.json. 'linked build' only builds linked packages. Add the flag or run a different build command.`,\n ),\n );\n }\n return false;\n }\n\n let spinner: Ora;\n if (logResults) {\n //TODO: replace with listr so we can show multiple processes at once\n spinner = ora({\n discardStdin: true,\n text: 'Compiling ESM',\n }).start();\n }\n let buildProcess: Promise<boolean | string | void> = Promise.resolve(true);\n let warned = false;\n let buildStep = (step) => {\n buildProcess = buildProcess.then((previousResult) => {\n if (!previousResult) {\n return false;\n }\n if (logResults) {\n spinner.text = step.name;\n spinner.start();\n }\n return step.apply().then((stepResult) => {\n //if a build step returns a string,\n //a warning is shown but the build is still successful with warnings\n if (typeof stepResult === 'string') {\n warned = true;\n if (logResults) {\n spinner.warn(step.name + ' - ' + stepResult);\n spinner.stop();\n } else {\n console.warn(chalk.yellow(step.name + ' - ' + stepResult));\n }\n //can still continue\n return true;\n } else if (stepResult === true || typeof stepResult === 'undefined') {\n if (logResults) {\n spinner.succeed();\n }\n return previousResult && true;\n } else if (\n //a step may report a detail alongside success, e.g. how many files\n //it changed. Not a warning: the build stays clean.\n stepResult &&\n typeof stepResult === 'object' &&\n (stepResult as any).info\n ) {\n if (logResults) {\n spinner.succeed(step.name + ' - ' + (stepResult as any).info);\n }\n return previousResult && true;\n } else if (\n stepResult &&\n typeof stepResult === 'object' &&\n (stepResult as any).error\n ) {\n if (logResults) {\n spinner.fail(step.name + ' - ' + (stepResult as any).error);\n spinner.stop();\n } else {\n console.error(\n chalk.red(step.name + ' - ' + (stepResult as any).error),\n );\n }\n //failed and should stop\n return false;\n }\n //anything else — notably a literal false, which several steps return\n //on failure — is a failure. Name the step, so the build does not end\n //on a bare 'Build failed'.\n const failure = step.name + ' failed';\n if (logResults) {\n spinner.fail(failure);\n spinner.stop();\n } else {\n console.error(chalk.red(failure));\n }\n return false;\n });\n });\n };\n\n planBuildSteps(pkgJson, packagePath).forEach(buildStep);\n\n let success = await buildProcess.catch((err) => {\n let msg =\n typeof err === 'string' || err instanceof Error\n ? err.toString()\n : err.error && !err.error.toString().includes('Command failed:')\n ? err.error\n : err.stdout + '\\n' + err.stderr;\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.red('✖'),\n // text: 'Build failed',\n });\n console.log(msg);\n } else {\n console.error(\n chalk.red(packagePath.split('/').pop(), ' - Build failed:'),\n );\n console.error(err);\n }\n //a failed build always resolves to false, never to a truthy message:\n //callers decide success by the return value.\n return false;\n });\n if (success === true) {\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.greenBright('✔'),\n text: warned ? 'Build successful with warnings' : 'Build successful',\n });\n }\n } else {\n if (logResults) {\n spinner.stopAndPersist({\n symbol: chalk.red('✖'),\n text: 'Build failed',\n });\n }\n }\n //true only when every step succeeded (warnings included); false otherwise.\n return success === true;\n};\n\ntype BuildStep = {\n name: string;\n // true/undefined: success; {info}: success with a note; a string: success\n // with a warning; false/{error}: stop.\n apply: () => Promise<unknown>;\n};\n\n// The ordered `linked build` steps for a linkedPackage. Source may use\n// extensionless relative imports: once `lib/esm` holds everything it will ship,\n// every package gets `.js` added to the relative specifiers in it (JS and\n// declarations). For a package that already writes `.js` this is a no-op.\n/**\n * Load `LinkedServer` from the app's `@_linked/server`.\n *\n * `@_linked/server` is deliberately NOT a dependency of this package: the CLI runs apps that may\n * have no backend at all, and `@_linked/server` already depends on `@_linked/cli`, so declaring it\n * here would make the two packages circular.\n *\n * The specifier is held in a variable so that TypeScript does not resolve it. When it was a string\n * literal, building this package in the workspace pulled in `@_linked/server`'s emitted `.d.ts`,\n * which imports `@_linked/cli/interfaces` — resolving, through the workspace symlink, to THIS\n * package's own `lib/esm/interfaces.d.ts`. tsc then refused to emit over its own input:\n *\n * error TS5055: Cannot write file '…/lib/esm/interfaces.d.ts' because it would overwrite input file.\n *\n * Only the workspace hit this; from a registry install the two packages are separate copies. The\n * variable also keeps the CLI's dependency checker honest, since the import really is optional.\n */\nconst loadServerClass = async (): Promise<any> => {\n const specifier = '@_linked/server/shapes/LinkedServer';\n try {\n return (await import(specifier)).LinkedServer;\n } catch (err) {\n throw new Error(\n `This app needs @_linked/server to run a backend, but it could not be loaded from ${process.cwd()}. ` +\n `Install it, or run the frontend only.\\nCause: ${err instanceof Error ? err.message : err}`,\n );\n }\n};\n\nexport const planBuildSteps = (pkgJson, packagePath: string): BuildStep[] => {\n // Loading every shape module in a child process of its own is the slow part of\n // a build; the shape checks below share one run, started by the first to ask.\n let inspection: Promise<ShapeReferenceReport> | undefined;\n const inspectShapes = () =>\n (inspection ??= inspectShapeReferences(packagePath));\n return [\n {\n name: 'Checking imports',\n apply: () => checkImports(packagePath + '/src'),\n },\n {\n name: 'Compiling ESM',\n apply: async () => {\n return compilePackageESM(packagePath);\n },\n },\n {\n name: 'Compiling CJS',\n apply: async () => {\n return compilePackageCJS(packagePath);\n },\n },\n {\n name: 'Copying files to lib folder',\n apply: async () => {\n const files = await glob(packagePath + '/src/**/*.{json,d.ts,css,scss}');\n let cjsPublished = false;\n try {\n cjsPublished = packagePublishesCjs(\n JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n ),\n );\n } catch {}\n return Promise.all(\n files.map(async (file) => {\n try {\n await fs.copy(\n file,\n packagePath +\n '/lib/esm/' +\n file.replace(packagePath + '/src/', ''),\n );\n // Only mirror into lib/cjs when there is a CJS build to mirror.\n if (cjsPublished) {\n await fs.copy(\n file,\n packagePath +\n '/lib/cjs/' +\n file.replace(packagePath + '/src/', ''),\n );\n }\n return true;\n } catch (err) {\n console.warn(err);\n return false;\n }\n }),\n ).then((allResults) => {\n return allResults.every((r) => r === true);\n });\n },\n },\n {\n name: 'Dual package support',\n apply: () => {\n // Skip if no tsconfig files (e.g. pure-CSS packages).\n if (\n !fs.existsSync(path.join(packagePath, 'tsconfig-esm.json')) ||\n !fs.existsSync(path.join(packagePath, 'tsconfig-cjs.json'))\n ) {\n return Promise.resolve(true);\n }\n // Nothing to make dual when only one format is published — otherwise this\n // leaves a lib/cjs holding a lone `{\"type\":\"commonjs\"}` marker and no code.\n try {\n if (\n !packagePublishesCjs(\n JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n ),\n )\n ) {\n return Promise.resolve(true);\n }\n } catch {}\n // Resolve the binary from the nearest node_modules (supports both\n // per-package and workspace-root installs of tsconfig-to-dual-package).\n return execPromise(\n 'npx tsconfig-to-dual-package ./tsconfig-cjs.json ./tsconfig-esm.json',\n false,\n false,\n {cwd: packagePath},\n ).then((res) => {\n return res === '';\n });\n },\n },\n {\n name: 'Removing old files from lib folder',\n apply: async () => {\n return removeOldFiles(packagePath);\n },\n },\n {\n // MUST run after 'Copying files to lib folder' and after 'Removing old\n // files from lib folder', because the rewrite resolves each specifier\n // against the files actually present in lib/esm:\n // - the copy step brings in the assets (`./x.scss`) and hand-written\n // `.d.ts` from src; before it, an asset import looks unresolvable (a\n // spurious \"build with warnings\") and a copied `.d.ts` is never rewritten;\n // - the cleanup step deletes stale output; before it, a leftover `x.js`\n // makes './x' resolve to './x.js' and the cleanup then removes the file\n // the specifier now points at.\n name: 'Rewriting ESM import specifiers',\n apply: async () => {\n // No tsconfig-esm.json means the ESM compile was skipped (e.g. pure-CSS\n // packages), so there is nothing to rewrite and nothing to fail over.\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-esm.json'))) {\n return true;\n }\n const libEsm = path.join(packagePath, 'lib', 'esm');\n if (!fs.existsSync(libEsm)) {\n return {\n error:\n 'lib/esm was not emitted while tsconfig-esm.json is present. Check the ESM compile.',\n };\n }\n const {changed, unresolved} = await rewriteExtensionlessImports(libEsm);\n if (unresolved.length > 0) {\n return `could not resolve ${unresolved.length} import(s), left unchanged: ${unresolved.join(', ')}`;\n }\n return changed > 0 ? {info: `rewrote ${changed} file(s)`} : true;\n },\n },\n {\n // Reads the emitted lib/esm, so it runs after everything that writes it.\n name: 'Checking shape names',\n apply: () => checkShapeNames(packagePath),\n },\n {\n // Loads each compiled shape module on its own, so it needs the final\n // lib/esm too. Fails the build: an unresolved reference is a query that\n // throws \"Shape class not found\" in a consumer's bundle.\n name: 'Checking shape references',\n apply: () => checkShapeReferences(packagePath, undefined, inspectShapes()),\n },\n {\n // Same per-module loads: loading lib/esm/shapes/index.js alone must register\n // every shape of this package that its shape modules register one by one,\n // because apps load a package's shapes with `import '<pkg>/shapes/index'`.\n name: 'Checking shapes/index',\n apply: () => checkShapesIndex(packagePath, undefined, inspectShapes()),\n },\n {\n // A bundler drops the side-effect-only imports in shapes/index of a module\n // package.json calls side-effect-free.\n name: 'Checking sideEffects',\n apply: async () => checkShapesSideEffects(packagePath),\n },\n {\n name: 'Checking dependencies',\n apply: () => depCheck(packagePath),\n },\n ];\n};\n\nexport const compilePackage = async (packagePath = process.cwd()) => {\n //echo 'compiling CJS' && tsc -p tsconfig-cjs.json && echo 'compiling ESM' && tsc -p tsconfig-esm.json\n // let cjsConfig = fs.existsSync(path.join(packagePath,'tsconfig-cjs.json'));\n // let esmConfig = fs.existsSync(path.join(packagePath,'tsconfig-esm.json'));\n // let compileCJS = `yarn exec tsc -p tsconfig-cjs.json`;\n // let compileESM = `yarn exec tsc -p tsconfig-esm.json`;\n // let compileCommand;\n // if (cjsConfig && esmConfig)\n // {\n // compileCommand = `${compileCJS} && ${compileESM}`;\n // }\n // else if (cjsConfig)\n // {\n // compileCommand = compileCJS;\n // }\n // else if (esmConfig)\n // {\n // compileCommand = compileESM;\n // }\n // else\n // {\n // compileCommand = `yarn exec tsc`;\n // }\n await compilePackageESM(packagePath);\n await compilePackageCJS(packagePath);\n};\nexport const compilePackageESM = async (packagePath = process.cwd()) => {\n // Skip packages without a tsconfig-esm.json (e.g. pure-CSS packages).\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-esm.json'))) {\n return true;\n }\n let compileCommand = `npx tsc -p tsconfig-esm.json`;\n return execPromise(compileCommand, false, false, {cwd: packagePath}).then(\n (res) => {\n return res === '';\n },\n );\n};\nexport const compilePackageCJS = async (packagePath = process.cwd()) => {\n // Skip packages that do not publish a CJS build at all.\n let packageJson: any = null;\n try {\n packageJson = JSON.parse(\n fs.readFileSync(path.join(packagePath, 'package.json'), 'utf8'),\n );\n } catch {}\n if (!packagePublishesCjs(packageJson)) {\n return true;\n }\n // Skip packages without a tsconfig-cjs.json.\n if (!fs.existsSync(path.join(packagePath, 'tsconfig-cjs.json'))) {\n return true;\n }\n let compileCommand = `npx tsc -p tsconfig-cjs.json`;\n return execPromise(compileCommand, false, false, {cwd: packagePath})\n .then((res) => {\n return res === '';\n })\n .catch((err) => {\n return {\n error: err.stdout,\n };\n });\n};\n\nexport var publishUpdated = function (test: boolean = false) {\n let packages = getLocalLincdModules();\n\n var p: Promise<any> = Promise.resolve('');\n let packagesLeft = packages.length;\n let results = [];\n log(\n 'Checking which packages need to be published by comparing last published date with last git commit',\n );\n // p = Promise.all(packages.map((pckg) => {\n packages.forEach((pckg) => {\n p = p\n .then((previousResult) => {\n // progressUpdate(packagesLeft-- + ' packages left. Now checking ' + pckg.packageName);\n log('# Checking package ' + pckg.packageName);\n // log('# Requesting ' + 'yarn info '+pkg.packageName+' --json');\n // return execPromise('yarn info '+pkg.packageName+' --json').then((output:string) => {\n // console.log(\"Will be requesting npm view from this current working directory:\\n\"+process.cwd());\n // return execPromise('npm view '+pkg.packageName+' --json').then((output:string) => {\n\n let shouldPublish;\n var pack = getPackageJSON(pckg.path);\n let version = getNextVersion(pack.version);\n if (pack.private) {\n shouldPublish = false;\n debugInfo(chalk.blue('--> is private, skipping'));\n\n return chalk.gray(pckg.packageName + ' is private');\n // return previousResult + ' ' + chalk.gray(pckg.packageName + ' is private\\n');\n }\n console.log('testing npm');\n return execPromise('npm info ' + pckg.packageName + ' --json')\n .then(async (output: string) => {\n console.log('testing npm done');\n var info;\n try {\n if (output == '' || output.includes('E404')) {\n debugInfo(\n 'Empty or 404 response from `npm info`. This package was probably not published before',\n );\n // throw new Error('Empty response from `yarn info`. This pkg was probably not published before');\n // return;\n shouldPublish = true;\n //don't patch the version number (default, see above), use the current version\n version = pack.version;\n } else {\n info = JSON.parse(output);\n }\n\n if (info) {\n let lastPublish;\n //yarn:\n // let lastPublish = info.data.time[info.data.version];\n lastPublish = info.time[info.version];\n // }\n // catch (e) {\n // console.log(info);\n // console.error(chalk.red(\"Could not parse response from npm info. Format may have changed?\"));\n // process.exit();\n // }\n\n let lastPublishDate = new Date(lastPublish);\n // let {lastModifiedTime, lastModifiedName, lastModified} = getLastModifiedSourceTime(pkg.path);\n let lastCommitInfo = await getLastCommitTime(pckg.path);\n if (!lastCommitInfo) {\n shouldPublish = false;\n debugInfo('Could not determine last git commit');\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' - could not determine last commit\\n');\n return chalk.red(\n pckg.packageName + ' - could not determine last commit',\n );\n } else {\n //NOTE: removed lastModified, because switching branches will say that the file was modified and cause everything to publish\n //SO: now you NEED TO commit before it picks up that you should publish\n shouldPublish =\n lastPublishDate.getTime() < lastCommitInfo.date.getTime();\n\n //ignore changes to package.json if that's the only change, because when we publish the version number changes, which is then committed\n //(note there is always 2 lines for commit info + number of files changed)\n let changedFiles = lastCommitInfo.changes\n .split('\\n')\n .filter((line) => line.includes('|'));\n let numberOfFilesChanges = changedFiles.length;\n // console.log(\"CHECK \"+lastCommitInfo.changes.includes(\"package.json\")+\" - \"+numberOfFilesChanges)\n if (\n shouldPublish &&\n lastCommitInfo.changes.includes('package.json') &&\n numberOfFilesChanges === 1\n ) {\n shouldPublish = false;\n }\n if (shouldPublish) {\n log(\n chalk.magenta(pckg.packageName) +\n ' should be published because:',\n );\n log(\n lastPublishDate.toDateString() +\n ' ' +\n lastPublishDate.toTimeString() +\n ' published ' +\n info.version,\n );\n log(\n lastCommitInfo.date.toDateString() +\n ' ' +\n new Date(lastCommitInfo.date).toTimeString() +\n ' source last committed:',\n );\n log(lastCommitInfo.changes);\n }\n }\n }\n } catch (err) {\n // var stats = fs.statSync(path.join(packageDirectory));\n // var files = fs.readdirSync(path.join(packageDirectory,'src'));\n console.log(\n chalk.red(pckg.packageName + ' failed: ' + err.message + '\\n'),\n );\n console.warn('Returned JSON from npm: ' + output);\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' failed: ' + err.message + '\\n');\n return chalk.red(pckg.packageName + ' failed: ' + err.message);\n }\n if (shouldPublish) {\n return publishPackage(pckg, test, info, version);\n }\n return (\n chalk.blue(pckg.packageName) + ' latest version is up to date'\n );\n })\n .catch(({error, stdout, stderr}) => {\n if (error) {\n console.error(error.message);\n }\n if (stdout) {\n console.log(stderr);\n }\n if (stderr) {\n console.log(stderr);\n }\n // return previousResult + ' ' + chalk.red(pckg.packageName + ' failed\\n');\n console.warn(chalk.red(pckg.packageName + ' failed'));\n return chalk.red(pckg.packageName + ' failed');\n });\n })\n .then((res) => {\n log(res);\n results.push(res);\n })\n .catch((err) => {\n console.warn(\n chalk.red(pckg.packageName + ' failed: ' + err.toString()),\n );\n results.push(\n chalk.red(pckg.packageName + ' failed: ' + err.toString()),\n );\n });\n });\n return p.then(() => {\n // if (messages == '')\n // {\n // console.log('All published packages are already up-to-date.');\n // }\n // else\n // {\n console.log(\n 'Summary: \\n' + results.join('\\n'),\n );\n // }\n });\n};\n\nasync function getEnvJsonPath(relativeToPath = process.cwd()) {\n let path = '';\n if (!relativeToPath.endsWith('/')) {\n relativeToPath += '/';\n }\n // let path = './';\n for (let i = 0; i <= 10; i++) {\n let envFile = await getEnvFile({\n filePath: relativeToPath + path + '.env.json',\n }).catch((err) => {\n return null;\n });\n if (envFile) {\n //note: we're getting the actual contents here, so we could also use that more directly?\n return path + '.env.json';\n }\n path += '../';\n }\n}\n\nexport var publishPackage = async function (\n pkg?,\n test?,\n info?,\n publishVersion?,\n) {\n if (!pkg) {\n let localPackageJson = getPackageJSON();\n pkg = {\n path: process.cwd(),\n packageName: localPackageJson.name,\n };\n }\n if (!publishVersion) {\n publishVersion = info ? getNextVersion(info.version) : 'patch';\n }\n if (test) {\n debugInfo('should publish ' + pkg.packageName + ' ' + publishVersion);\n //when testing what needs to be published\n return chalk.blue(pkg.packageName + ' should publish');\n }\n console.log(\n chalk.blue('publishing ' + pkg.packageName + ' ' + publishVersion),\n );\n\n //looking for an .env.json file in our workspace, which may store our NPM AUTH key\n let envJsonPath = await getEnvJsonPath(pkg.path);\n\n // `yarn version` / `yarn npm publish` is Yarn Berry syntax. Only use it when\n // the package really lives in a yarn project; otherwise publish with npm.\n const publishPm = detectPackageManager(pkg.path);\n const versionAndPublish =\n publishPm === 'yarn'\n ? `yarn version ${publishVersion} && yarn npm publish`\n : `npm version ${publishVersion} --no-git-tag-version && npm publish`;\n\n return execPromise(\n `cd ${pkg.path} && ${\n envJsonPath ? `env-cmd -f ${envJsonPath} --use-shell \"` : ''\n }${versionAndPublish}${envJsonPath ? `\"` : ''}`,\n true,\n false,\n {},\n true,\n )\n .then((res) => {\n if (\n res.indexOf('Aborted due to warnings') !== -1 ||\n res.indexOf('Could not publish') !== -1 ||\n res.indexOf(\"Couldn't publish\") !== -1\n ) {\n console.log(res);\n return chalk.red(pkg.packageName + ' failed\\n');\n }\n\n console.log(\n 'Successfully published ' +\n chalk.green(pkg.path) +\n ' ' +\n chalk.magenta(publishVersion),\n );\n return (\n chalk.green(pkg.packageName) +\n ' published ' +\n chalk.magenta(publishVersion)\n );\n })\n .catch(({error, stdout, stderr}) => {\n logError('Failed to publish: ' + error.message);\n return chalk.red(pkg.packageName + ' failed to publish');\n });\n};\n\nexport var buildUpdated = async function (\n back,\n target,\n target2,\n useGitForLastModified: boolean = false,\n test: boolean = false,\n) {\n // back = back || 1;\n // return execPromise(`git log -${back} --format=%ci`).then((result) => {\n // let now = new Date();\n let previousResult = '';\n log(\n test\n ? 'Checking which packages need to be rebuild'\n : 'Building updated packages',\n );\n // let packages = getLocalLincdModules();\n let packages = getLocalLincdPackageMap();\n\n // console.log(packages);\n // let jsonldPkgUpdated = await needsRebuilding(\n // packages.get('lincd-jsonld'),\n // useGitForLastModified,\n // );\n // let cliPkgUpdated = await needsRebuilding(packages.get('lincd-cli'), useGitForLastModified);\n\n //if either cli or jsonldPkg needs to be rebuilt\n // if (jsonldPkgUpdated || cliPkgUpdated) {\n // if (jsonldPkgUpdated)\n // {\n // await execPromise(\n // 'yarn exec tsc && echo \"compiled lincd-jsonld\"',\n // false,\n // false,\n // {\n // cwd: packages.get('lincd-jsonld').path,\n // },\n // true,\n // );\n // // await execPromise('yarn build-core', false, false, {}, true);\n // }\n let rebuildAllModules = false;\n // if (cliPkgUpdated) {\n // rebuildAllModules = true;\n // log(chalk.magenta('Rebuilding all packages because the build tools (lincd-cli) got updated'));\n // }\n\n let packagesLeft = packages.size;\n runOnPackagesGroupedByDependencies(\n packages,\n (packageGroup, dependencies) => {\n debugInfo(\n 'Now checking: ' + chalk.blue(packageGroup.map((i) => i.packageName)),\n );\n debugInfo(packagesLeft + ' packages left.');\n\n packagesLeft = packagesLeft - packageGroup.length;\n return async (pkg: PackageDetails) => {\n // debugInfo('# Checking package ' + pkg.packageName);\n let needRebuild = await needsRebuilding(\n pkg,\n useGitForLastModified,\n // true,\n );\n\n // if (pkg.packageName === 'lincd-jsonld' && jsonldPkgUpdated)\n // {\n // needRebuild = true;\n // }\n if (needRebuild || rebuildAllModules) {\n //TODO: when building a pkg, also rebuild all packages that depend on this package.. and iteratively build packages that depend on those packages..\n\n // log(packageName+' modified since last commit on '+now.toString());\n\n if (test) {\n debugInfo('Need to build ' + pkg.packageName);\n return chalk.blue(pkg.packageName + ' should be build');\n }\n log('Building ' + pkg.packageName);\n const pathToBuild = pkg.path.startsWith('.')\n ? path.join(process.cwd(), pkg.path)\n : pkg.path;\n //if the path is relative,\n // log('path: ' + pathToBuild);\n return buildPackage(null, null, pathToBuild, false)\n .then((res) => {\n //buildPackage returns true only when the build succeeded\n //(warnings included); anything else is a failure.\n if (res !== true) {\n logError('Failed to build ' + pkg.packageName);\n process.exit(1);\n } else {\n debugInfo(chalk.green(pkg.packageName + ' successfully built'));\n return chalk.green(pkg.packageName + ' built');\n }\n })\n .catch((err) => {\n logError(\n 'Failed to build ' + pkg.packageName + '. ' + err.message,\n );\n //console.error(err);\n process.exit(1);\n });\n }\n };\n },\n (dependencies, results) => {\n if (results.length) {\n log(chalk.green('Changed packages have been rebuilt'));\n log('Summary:');\n log(results.join('\\n'));\n } else {\n log(chalk.green('Nothing to rebuild'));\n }\n },\n );\n\n return;\n};\n\nconst printBuildResults = function (failed, done) {\n if (done.size > 0 || done.length > 0) {\n log(\n 'Successfully built: ' +\n chalk.green([...done].map((m) => m.packageName).join(', ')) +\n '\\n',\n );\n }\n if (failed.length > 0) {\n warn('Failed to build: ' + chalk.red(failed.join(', ')) + '\\n');\n }\n};\n\nexport var executeCommandForEachPackage = function (\n packages,\n command,\n filterMethod,\n filterValue,\n) {\n //if a specific set of packages is given\n if (filterMethod == 'exclude') {\n //filter packages, so that we only execute on the packages as provided in the command\n log('Excluding ' + filterValue);\n filterValue = filterValue.split(',');\n packages = packages.filter(\n (pkg) => filterValue.indexOf(pkg.packageName) === -1,\n );\n }\n let startFrom: string;\n //by default start executing, unless 'from' is given\n let executing: boolean = true;\n //option to start from a specific pkg in the stack\n if (filterMethod == 'from') {\n startFrom = filterValue;\n if (startFrom) {\n console.log(chalk.blue('Will skip ahead to ' + startFrom));\n }\n let seen = false;\n packages = packages.filter((pkg) => {\n if (!seen && pkg.packageName.includes(startFrom)) {\n seen = true;\n }\n return seen;\n });\n }\n\n log(\n \"Executing '\" +\n chalk.blueBright(command) +\n \"' on packages \" +\n chalk.magenta(packages.map((m) => m.packageName).join(', ')),\n );\n\n var p = Promise.resolve(true);\n packages.forEach((pkg) => {\n p = p.then(() => {\n log('# Package ' + chalk.magenta(pkg.packageName));\n return execp('cd ' + pkg.path + ' && ' + command);\n });\n });\n return p;\n};\n\nvar gitIgnore = function (...entries) {\n //add each entry to the .gitignore file\n let gitIgnorePath = path.resolve(process.cwd(), '.gitignore');\n addLinesToFile(gitIgnorePath, entries);\n};\nexport var addLinesToFile = function (filePath, entries) {\n let fileContents = fs.readFileSync(filePath, {encoding: 'utf8'});\n entries.forEach((entry) => {\n fileContents += '\\n' + entry;\n });\n fs.writeFileSync(filePath, fileContents);\n};\nexport var addCapacitor = async function (basePath = process.cwd()) {\n let targetFolder = ensureFolderExists(basePath);\n\n log('Adding capacitor');\n fs.copySync(\n path.join(getScriptDir(), '..', '..', 'defaults', 'app-static'),\n targetFolder,\n );\n fs.copySync(\n path.join(getScriptDir(), '..', '..', 'defaults', 'capacitor', 'scripts'),\n path.join(targetFolder, 'scripts'),\n );\n\n //update .env-cmdrc.json file\n let envCmdPath = path.resolve(basePath, '.env-cmdrc.json');\n let envCmd = JSON.parse(fs.readFileSync(envCmdPath, {encoding: 'utf8'}));\n\n envCmd['app-main'] = {\n APP_ENV: true,\n OUTPUT_PATH: './public/assets',\n ASSET_PATH: './assets/',\n ENTRY_PATH: './src/index-static.tsx',\n };\n envCmd['app-local-android'] = {\n NODE_ENV: 'app',\n SITE_ROOT: 'http://10.0.2.2:4000',\n };\n envCmd['app-local-ios'] = {\n NODE_ENV: 'app',\n SITE_ROOT: 'http://localhost:4000',\n };\n\n fs.writeFile(envCmdPath, JSON.stringify(envCmd, null, 2));\n log('Edited .env-cmdrc.json');\n\n gitIgnore(\n 'android/app/build',\n 'android/**/capacitor.build.gradle',\n 'ios/App/App/public',\n );\n\n //update package.json scripts\n let pack = getPackageJSON(basePath);\n pack.scripts['build-staging'] =\n 'env-cmd -e _main, staging node scripts/build.js';\n pack.scripts['fix-app'] = 'node scripts/fix-namespace.js';\n pack.scripts['app'] =\n 'env-cmd -e _main,production,app-main node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['app-local-ios'] =\n 'env-cmd -e _main,development,app-main,app-local-ios node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['app-local-android'] =\n 'env-cmd -e _main,development,app-main,app-local-android node scripts/build.js && npx cap sync && npm run fix-app';\n pack.scripts['cap:android'] = 'npx cap open android';\n pack.scripts['cap:ios'] = 'npx cap open ios';\n pack.scripts['cap:sync'] = 'npx cap sync';\n\n fs.writeFile(\n path.resolve(basePath, 'package.json'),\n JSON.stringify(pack, null, 2),\n );\n log('Added new run script to package.json');\n\n await execPromise(`npm install --save-dev @capacitor/cli`, true, false, null, true);\n await execPromise(\n `npm install @capacitor/android @capacitor/core @capacitor/app @capacitor/ios`,\n false,\n false,\n null,\n true,\n );\n\n // TODO: Do we need to add `npx cap init`? If yes, we should not copy capacitor config.ts yet\n // await execPromise(`npx cap init`, true, false, null, true);\n // got error:\n // [error] Non-interactive shell detected.\n // Run the command with --help to see a list of arguments that must be provided.\n // [error] Non-interactive shell detected.\n // Run the command with --help to see a list of arguments that must be provided.\n\n log(\n `Done! Now update your Capacitor configuration by providing an app name, app ID, and web directory at ${chalk.blue(\n 'capacitor.config.ts',\n )}`,\n );\n log(\n `And then run ${chalk.magenta(\n 'npx cap add android',\n )} and/or ${chalk.magenta('npx cap add ios')}')`,\n );\n log(\n `Last, run ${chalk.magenta('npm run app')} or ${chalk.magenta(\n 'npm run app-local-ios',\n )} or ${chalk.magenta('npm run app-local-android')}`,\n );\n};\n\nexport var executeCommandForPackage = function (packageName, command) {\n let packageDetails = getLincdPackages().find(\n (modDetails: PackageDetails) =>\n modDetails.packageName.indexOf(packageName) !== -1 ||\n modDetails.packageName.indexOf(packageName) !== -1,\n );\n if (packageDetails) {\n // npm is the default; only a package inside a yarn project is driven with\n // yarn (`yarn linked <cmd>` resolves the bin from the yarn workspace).\n const pm = detectPackageManager(packageDetails.path);\n // Windows quirk: the shim is `yarn.cmd` / `npx.cmd`.\n const isWin = process.platform === 'win32';\n const runner =\n pm === 'yarn' ? (isWin ? 'yarn.cmd' : 'yarn') : isWin ? 'npx.cmd' : 'npx';\n const runnerArgs = pm === 'yarn' ? ['linked'] : ['--no-install', 'linked'];\n\n log(\n \"Executing 'cd \" +\n packageDetails.path +\n ` && ${runner} linked` +\n (command ? ' ' + command : '') +\n \"'\",\n );\n\n spawnChild(\n runner,\n [...runnerArgs, command || null],\n {\n cwd: packageDetails.path,\n stdio: 'inherit',\n },\n );\n } else {\n warn(\n \"Could not find a pkg who's name (partially) matched \" +\n chalk.cyan(packageName),\n );\n }\n};\n\n/**\n * Function to remove files older than 10 seconds from the 'lib' folder.\n * @param {string} packagePath - The path to the package directory.\n */\nexport const removeOldFiles = async (packagePath) => {\n const libPath = path.join(packagePath, 'lib');\n\n try {\n // Read all files in the 'lib' folder asynchronously\n const files = await glob(packagePath + '/lib/**/*.*');\n\n // Iterate through each file\n for (const file of files) {\n // const filePath = path.join(libPath, file);\n\n // Check if the file exists before attempting to delete it\n // if (await fs.pathExists(filePath)) {\n const stats = await fs.stat(file);\n const currentTime = new Date().getTime();\n const lastModifiedTime = stats.mtime.getTime();\n\n // Check if the difference between the current time and last modified time is greater than 120 seconds\n if (currentTime - lastModifiedTime > 120000) {\n // Attempt to delete the file\n await fs.unlink(file);\n // console.log(`Removed: ${file}`);\n }\n // }\n }\n return true;\n } catch (error) {\n console.error(`Error removing files: ${error.message}`);\n return false;\n }\n};\n"]}
|