UNPKG

@storm-stack/core

Version:

A build toolkit and runtime used by Storm Software in TypeScript applications

1 lines 25.4 kB
{"version":3,"sources":["../../src/lib/context.ts"],"names":["PROJECT_ROOT_HASH_LENGTH","getPrefixedProjectRootHash","name","projectRootHash","combined","kebabCase","length","slice","discoverTemplates","path","result","Promise","all","listFiles","joinPaths","flat","getChecksum","hashDirectory","ignore","getPersistedMeta","context","metaFilePath","dataPath","existsSync","readJsonFile","log","LogLevelLabel","WARN","removeFile","persistedMeta","undefined","createContext","inlineConfig","workspaceConfig","options","workspaceRoot","getWorkspaceRoot","projectRoot","root","getProjectRoot","process","cwd","resolvedWorkspaceConfig","defu","projectJson","projectJsonPath","packageJson","packageJsonPath","command","workspacePackageJsonPath","repository","url","Error","checksum","meta","buildId","uuid","releaseId","timestamp","Date","now","hash","maxLength","runtimeIdMap","virtualFiles","artifactsPath","runtimePath","entryPath","envPaths","getEnvPaths","orgId","appId","cache","partiallyResolvedContext","userConfig","config","plugins","createLog","dtsPath","runtimeDtsFilePath","data","cachePath","templates","runtime","logs","storage","init","packageDeps","workers","reflections","resolver","createResolver","cacheDir","relativeToWorkspaceRoot","resolveConfig","output","dts","startsWith","tsconfig","getParsedTypeScriptConfig","TRACE","vfs","restoreVfs","createVfs","packagePath","env","STORM_STACK_LOCAL","resolvePackage","serializeContext","compiler","unimport","Object","entries","reduce","ret","key","reflection","serializeType","tsconfigFilePath","tsconfigJson","value","__VFS_VIRTUAL__","toJSON","deserializeContext","serialized","logName","keys","ReflectionClass","from","deserializeType","writeMetaFile","DEBUG","map","id","writeFileToDisk","StormJSON","stringify"],"mappings":"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","file":"chunk-UTUPUYE6.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Storm Stack\n\n This code was released as part of the Storm Stack project. Storm Stack\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/storm-stack.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/storm-stack\n Documentation: https://docs.stormsoftware.com/projects/storm-stack\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { deserializeType, ReflectionClass } from \"@deepkit/type\";\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { getEnvPaths } from \"@stryke/env/get-env-paths\";\nimport { readJsonFile } from \"@stryke/fs/json\";\nimport { listFiles } from \"@stryke/fs/list-files\";\nimport { removeFile } from \"@stryke/fs/remove-file\";\nimport { hash } from \"@stryke/hash/hash\";\nimport { hashDirectory } from \"@stryke/hash/hash-files\";\nimport { StormJSON } from \"@stryke/json/storm-json\";\nimport { existsSync } from \"@stryke/path/exists\";\nimport { relativeToWorkspaceRoot } from \"@stryke/path/file-path-fns\";\nimport {\n getProjectRoot,\n getWorkspaceRoot\n} from \"@stryke/path/get-workspace-root\";\nimport { joinPaths } from \"@stryke/path/join-paths\";\nimport { resolvePackage } from \"@stryke/path/resolve\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { PackageJson } from \"@stryke/types/package-json\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport defu from \"defu\";\nimport { DirectoryJSON } from \"memfs\";\nimport {\n __VFS_VIRTUAL__,\n Context,\n InlineConfig,\n MetaInfo,\n Reflection,\n ResolvedOptions,\n RuntimeConfig,\n SerializedContext,\n WorkspaceConfig\n} from \"../types\";\nimport { PartiallyResolvedContext, resolveConfig } from \"./config\";\nimport { createLog } from \"./logger\";\nimport { createResolver } from \"./resolver\";\nimport { getParsedTypeScriptConfig } from \"./typescript/tsconfig\";\nimport { createVfs, restoreVfs } from \"./vfs/virtual-file-system\";\n\nexport interface CreateContextOptions {\n name?: string;\n}\n\nexport const PROJECT_ROOT_HASH_LENGTH = 45;\n\n/**\n * Generates a prefixed project root hash object.\n *\n * @remarks\n * This function returns a string where the project root hash is prefixed with the project name plus a hyphen. If the total length of this string combination exceeds 45 characters, it will truncate the hash.\n *\n * @param name - The name of the project.\n * @param projectRootHash - The hash of the project root.\n * @returns An object containing the name and project root hash.\n */\nexport function getPrefixedProjectRootHash(\n name: string,\n projectRootHash: string\n): string {\n const combined = `${kebabCase(name)}_${projectRootHash}`;\n\n return combined.length > PROJECT_ROOT_HASH_LENGTH\n ? combined.slice(0, PROJECT_ROOT_HASH_LENGTH)\n : combined;\n}\n\nexport async function discoverTemplates(path: string): Promise<string[]> {\n const result = await Promise.all([\n listFiles(joinPaths(path, \"**/*.ts\")),\n listFiles(joinPaths(path, \"**/*.tsx\"))\n ]);\n\n return result.flat();\n}\n\nexport async function getChecksum(path: string): Promise<string> {\n return hashDirectory(path, {\n ignore: [\"node_modules\", \".git\", \".nx\", \".cache\", \".storm\", \"tmp\", \"dist\"]\n });\n}\n\nexport async function getPersistedMeta(\n context: Context\n): Promise<MetaInfo | undefined> {\n const metaFilePath = joinPaths(context.dataPath, \"meta.json\");\n if (existsSync(metaFilePath)) {\n try {\n return await readJsonFile<MetaInfo>(metaFilePath);\n } catch {\n context.log(\n LogLevelLabel.WARN,\n `Failed to read meta file at ${metaFilePath}. It may be corrupted.`\n );\n await removeFile(metaFilePath);\n\n context.persistedMeta = undefined;\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates a new context for the Storm Stack build process.\n *\n * @remarks\n * This function initializes the context with the provided inline configuration, workspace configuration, and other options.\n *\n * @param inlineConfig - The inline configuration for the Storm Stack build process.\n * @param workspaceConfig - The workspace configuration for the Storm Stack project.\n * @param options - Additional options for creating the context.\n * @returns The created context.\n */\nexport async function createContext<TContext extends Context = Context>(\n inlineConfig: InlineConfig,\n workspaceConfig?: WorkspaceConfig,\n options: CreateContextOptions = {}\n): Promise<TContext> {\n const workspaceRoot = workspaceConfig?.workspaceRoot ?? getWorkspaceRoot();\n const projectRoot = inlineConfig.root || getProjectRoot() || process.cwd();\n\n const resolvedWorkspaceConfig = defu(workspaceConfig, {\n workspaceRoot\n });\n\n let projectJson: Record<string, any> | undefined;\n\n const projectJsonPath = joinPaths(projectRoot, \"project.json\");\n if (existsSync(projectJsonPath)) {\n projectJson = await readJsonFile(projectJsonPath);\n }\n\n let packageJson!: PackageJson;\n\n const packageJsonPath = joinPaths(projectRoot, \"package.json\");\n if (existsSync(packageJsonPath)) {\n packageJson = await readJsonFile<PackageJson>(packageJsonPath);\n } else if (inlineConfig.command === \"new\") {\n const workspacePackageJsonPath = joinPaths(workspaceRoot, \"package.json\");\n packageJson = await readJsonFile<PackageJson>(workspacePackageJsonPath);\n\n resolvedWorkspaceConfig.repository ??=\n typeof packageJson?.repository === \"string\"\n ? packageJson.repository\n : packageJson?.repository?.url;\n } else {\n throw new Error(\n `The package.json file is missing in the project root directory: ${\n projectRoot\n }. Please run the \"new\" command to create a new Storm Stack project.`\n );\n }\n\n const checksum = await getChecksum(projectRoot);\n const meta = {\n buildId: uuid(),\n releaseId: uuid(),\n checksum,\n timestamp: Date.now(),\n projectRootHash: hash(joinPaths(workspaceRoot, projectRoot), {\n maxLength: PROJECT_ROOT_HASH_LENGTH\n }),\n runtimeIdMap: {} as Record<string, string>,\n virtualFiles: {} as DirectoryJSON<string | null>\n };\n\n const artifactsPath = joinPaths(workspaceRoot, projectRoot, \".storm\");\n const runtimePath = joinPaths(artifactsPath, \"runtime\");\n const entryPath = joinPaths(artifactsPath, \"entry\");\n\n const envPaths = getEnvPaths({\n orgId: \"storm-software\",\n appId: \"storm-stack\",\n workspaceRoot\n });\n if (!envPaths.cache) {\n throw new Error(\"The cache directory could not be determined.\");\n }\n\n envPaths.cache = joinPaths(envPaths.cache, \"projects\", meta.projectRootHash);\n\n const partiallyResolvedContext = {\n options: {\n ...resolvedWorkspaceConfig,\n name: projectJson?.name || options.name,\n ...inlineConfig,\n userConfig: {\n config: {}\n },\n inlineConfig,\n projectRoot,\n workspaceConfig: resolvedWorkspaceConfig,\n plugins: {} as ResolvedOptions[\"plugins\"]\n },\n log: createLog(\n options.name ?? null,\n defu(inlineConfig, resolvedWorkspaceConfig) as Partial<ResolvedOptions>\n ),\n meta,\n envPaths,\n artifactsPath,\n runtimePath,\n entryPath,\n dtsPath: joinPaths(envPaths.cache, \"dts\"),\n runtimeDtsFilePath: joinPaths(projectRoot, \"storm.d.ts\"),\n dataPath: joinPaths(envPaths.data, \"projects\", meta.projectRootHash),\n cachePath: envPaths.cache,\n templates: [],\n projectJson,\n packageJson,\n runtime: {\n logs: [],\n storage: [],\n init: []\n } as RuntimeConfig,\n packageDeps: {},\n workers: {} as TContext[\"workers\"],\n reflections: {},\n resolver: createResolver({\n workspaceRoot,\n projectRoot,\n cacheDir: envPaths.cache\n }),\n relativeToWorkspaceRoot: relativeToWorkspaceRoot(projectRoot)\n } as PartiallyResolvedContext;\n\n partiallyResolvedContext.options = await resolveConfig(\n partiallyResolvedContext,\n inlineConfig,\n undefined,\n projectRoot\n );\n const context = partiallyResolvedContext as TContext;\n\n context.dataPath = joinPaths(\n context.envPaths.data,\n \"projects\",\n getPrefixedProjectRootHash(\n context.options.name,\n context.meta.projectRootHash\n )\n );\n\n context.persistedMeta = await getPersistedMeta(context);\n\n context.templates = (\n await Promise.all([\n discoverTemplates(context.options.templates),\n discoverTemplates(joinPaths(context.envPaths.config, \"templates\")),\n discoverTemplates(joinPaths(projectRoot, \"templates\"))\n ])\n ).flat();\n\n context.runtimeDtsFilePath = context.options.output.dts\n ? context.options.output.dts.startsWith(context.options.workspaceRoot)\n ? context.options.output.dts\n : joinPaths(context.options.workspaceRoot, context.options.output.dts)\n : joinPaths(\n context.options.workspaceRoot,\n context.options.projectRoot,\n \"storm.d.ts\"\n );\n\n context.tsconfig = getParsedTypeScriptConfig(\n context.options.workspaceRoot,\n context.options.projectRoot,\n context.options.tsconfig\n );\n\n if (context.persistedMeta?.checksum === context.meta.checksum) {\n context.log(\n LogLevelLabel.TRACE,\n `Restoring the virtual file system (VFS) as the meta checksum has not changed.`\n );\n\n context.vfs = restoreVfs(context, {\n runtimeIdMap: context.persistedMeta.runtimeIdMap,\n virtualFiles: context.persistedMeta.virtualFiles\n });\n } else {\n context.vfs = createVfs(context);\n }\n\n const packagePath = process.env.STORM_STACK_LOCAL\n ? joinPaths(context.options.workspaceRoot, \"dist/packages/core\")\n : await resolvePackage(\"@storm-stack/core\");\n if (!packagePath) {\n throw new Error(\n \"Could not resolve the Storm Stack core package. Please ensure it is installed.\"\n );\n }\n\n // context.workers.errorLookup = createWorker(\n // joinPaths(packagePath, \"workers\", \"error-lookup.cjs\"),\n // [\"find\"]\n // );\n // context.workers.configReflection = createWorker(\n // joinPaths(packagePath, \"workers\", \"config-reflection.cjs\"),\n // [\"add\", \"clear\"]\n // );\n\n return context;\n}\n\n/**\n * Serializes the context to a format suitable for sending over the network.\n *\n * @param context - The context to serialize.\n * @returns The serialized context.\n */\nexport function serializeContext(context: Context): SerializedContext {\n return {\n ...context,\n log: null,\n workers: null,\n resolver: null,\n compiler: null,\n unimport: null,\n reflections: Object.entries(context.reflections).reduce(\n (ret, [key, reflection]) => {\n ret[key] = (reflection as Reflection)?.serializeType();\n\n return ret;\n },\n {}\n ),\n tsconfig: {\n tsconfigFilePath: context.tsconfig.tsconfigFilePath,\n tsconfigJson: context.tsconfig.tsconfigJson\n },\n vfs: {\n runtimeIdMap: context.vfs.runtimeIdMap\n .entries()\n .reduce((ret, [key, value]) => {\n ret[key] = value;\n\n return ret;\n }, {}),\n virtualFiles: context.vfs[__VFS_VIRTUAL__].toJSON(context.artifactsPath)\n }\n };\n}\n\n/**\n * Deserializes the context from a serialized format.\n *\n * @param serialized - The serialized context.\n * @param logName - The name of the log to use for the context.\n * @returns The deserialized context.\n */\nexport function deserializeContext(\n serialized: SerializedContext,\n logName: string | null = null\n): Context {\n const context = {\n ...serialized,\n log: createLog(logName, serialized.options),\n reflections: Object.keys(serialized.reflections).reduce(\n (ret, key) => {\n ret[key] = ReflectionClass.from(\n deserializeType(serialized.reflections[key])\n );\n return ret;\n },\n {} as Record<string, ReflectionClass<any>>\n ),\n resolver: createResolver({\n workspaceRoot: serialized.options.workspaceRoot,\n projectRoot: serialized.options.projectRoot,\n cacheDir: serialized.envPaths.cache\n }),\n vfs: {} as Context[\"vfs\"],\n compiler: {} as Context[\"compiler\"],\n tsconfig: {} as Context[\"tsconfig\"],\n workers: {} as Context[\"workers\"],\n unimport: {} as Context[\"unimport\"]\n } as Context;\n\n context.vfs = restoreVfs(context, serialized.vfs);\n context.tsconfig = getParsedTypeScriptConfig(\n context.options.workspaceRoot,\n serialized.options.projectRoot,\n serialized.tsconfig.tsconfigFilePath,\n serialized.tsconfig.tsconfigJson\n );\n\n return context;\n}\n\n/**\n * Writes the meta file for the context.\n *\n * @param context - The context to write the meta file for.\n * @returns A promise that resolves when the meta file has been written.\n */\nexport async function writeMetaFile(context: Context): Promise<void> {\n const metaFilePath = joinPaths(context.dataPath, \"meta.json\");\n\n context.log(\n LogLevelLabel.DEBUG,\n `Writing runtime metadata to ${metaFilePath}`\n );\n\n context.meta.runtimeIdMap = context.vfs.runtimeIdMap.entries().reduce(\n (map, [id, path]) => {\n map[id] = path;\n return map;\n },\n {} as Record<string, string>\n );\n context.meta.virtualFiles = context.vfs[__VFS_VIRTUAL__].toJSON(\n context.artifactsPath\n );\n\n return context.vfs.writeFileToDisk(\n metaFilePath,\n StormJSON.stringify(context.meta)\n );\n}\n"]}