Skip to content

Commit

Permalink
feat(core): pass source maps up the chain and write them to json
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxKless committed Nov 10, 2023
1 parent a4255c0 commit 91af0b0
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,37 +1,33 @@
import { performance } from 'perf_hooks';
import { readNxJson } from '../../config/nx-json';
import {
FileData,
FileMap,
ProjectFileMap,
ProjectGraph,
ProjectGraphExternalNode,
} from '../../config/project-graph';
import { ProjectConfiguration } from '../../config/workspace-json-project-json';
import { hashArray } from '../../hasher/file-hasher';
import { buildProjectGraphUsingProjectFileMap as buildProjectGraphUsingFileMap } from '../../project-graph/build-project-graph';
import { updateFileMap } from '../../project-graph/file-map-utils';
import {
nxProjectGraph,
FileMapCache,
nxProjectGraph,
readFileMapCache,
} from '../../project-graph/nx-deps-cache';
import { fileExists } from '../../utils/fileutils';
import { notifyFileWatcherSockets } from './file-watching/file-watcher-sockets';
import { serverLogger } from './logger';
import { workspaceRoot } from '../../utils/workspace-root';
import { execSync } from 'child_process';
import { hashArray } from '../../hasher/file-hasher';
import {
retrieveWorkspaceFiles,
retrieveProjectConfigurations,
retrieveWorkspaceFiles,
} from '../../project-graph/utils/retrieve-workspace-files';
import {
ProjectConfiguration,
ProjectsConfigurations,
} from '../../config/workspace-json-project-json';
import { readNxJson } from '../../config/nx-json';
import { fileExists } from '../../utils/fileutils';
import { writeSourceMaps } from '../../utils/source-maps';
import {
resetWorkspaceContext,
updateFilesInContext,
} from '../../utils/workspace-context';
import { workspaceRoot } from '../../utils/workspace-root';
import { notifyFileWatcherSockets } from './file-watching/file-watcher-sockets';
import { serverLogger } from './logger';

let cachedSerializedProjectGraphPromise: Promise<{
error: Error | null;
Expand Down Expand Up @@ -278,6 +274,8 @@ async function createAndSerializeProjectGraph(): Promise<{
'json-stringify-end'
);

writeSourceMaps(projectConfigurations.sourceMaps);

return {
error: null,
projectGraph,
Expand Down
12 changes: 10 additions & 2 deletions packages/nx/src/project-graph/project-graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { performance } from 'perf_hooks';
import { retrieveWorkspaceFiles } from './utils/retrieve-workspace-files';
import { readNxJson } from '../config/nx-json';
import { unregisterPluginTSTranspiler } from '../utils/nx-plugin';
import { writeSourceMaps } from '../utils/source-maps';

/**
* Synchronously reads the latest cached copy of the workspace's ProjectGraph.
Expand Down Expand Up @@ -77,8 +78,13 @@ export function readProjectsConfigurationFromProjectGraph(
export async function buildProjectGraphWithoutDaemon() {
const nxJson = readNxJson();

const { allWorkspaceFiles, fileMap, projectConfigurations, externalNodes } =
await retrieveWorkspaceFiles(workspaceRoot, nxJson);
const {
allWorkspaceFiles,
fileMap,
projectConfigurations,
externalNodes,
sourceMaps,
} = await retrieveWorkspaceFiles(workspaceRoot, nxJson);

const cacheEnabled = process.env.NX_CACHE_PROJECT_GRAPH !== 'false';
const projectGraph = (
Expand All @@ -92,6 +98,8 @@ export async function buildProjectGraphWithoutDaemon() {
)
).projectGraph;

writeSourceMaps(sourceMaps);

unregisterPluginTSTranspiler();

return projectGraph;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ export function buildProjectsConfigurationsFromProjectPathsAndPlugins(
externalNodes: Record<string, ProjectGraphExternalNode>;
rootMap: Record<string, string>;
// sourceMap: Record<string, { plugin: string; file: string }>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
} {
const projectRootMap: Map<string, ProjectConfiguration> = new Map();
const externalNodes: Record<string, ProjectGraphExternalNode> = {};
Expand Down Expand Up @@ -213,6 +214,7 @@ export function buildProjectsConfigurationsFromProjectPathsAndPlugins(
projects: readProjectConfigurationsFromRootMap(projectRootMap),
externalNodes,
rootMap,
sourceMaps: projectRootSourceMaps,
};
}

Expand Down
26 changes: 18 additions & 8 deletions packages/nx/src/project-graph/utils/retrieve-workspace-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ import {
getGlobPatternsFromPackageManagerWorkspaces,
getNxPackageJsonWorkspacesPlugin,
} from '../../../plugins/package-json-workspaces';
import { buildProjectsConfigurationsFromProjectPathsAndPlugins } from './project-configuration-utils';
import {
SourceInformation,
buildProjectsConfigurationsFromProjectPathsAndPlugins,
} from './project-configuration-utils';
import {
LoadedNxPlugin,
loadNxPlugins,
Expand Down Expand Up @@ -62,6 +65,7 @@ export async function retrieveWorkspaceFiles(
performance.mark('get-workspace-files:start');
let projects: Record<string, ProjectConfiguration>;
let externalNodes: Record<string, ProjectGraphExternalNode>;
let sourceMaps: Record<string, Record<string, SourceInformation>>;

const { projectFileMap, globalFiles } = getNxWorkspaceFilesFromContext(
workspaceRoot,
Expand All @@ -75,6 +79,7 @@ export async function retrieveWorkspaceFiles(
);

projects = projectConfigurations.projects;
sourceMaps = projectConfigurations.sourceMaps;

externalNodes = projectConfigurations.externalNodes;
return projectConfigurations.rootMap;
Expand All @@ -98,6 +103,7 @@ export async function retrieveWorkspaceFiles(
projects,
} as ProjectsConfigurations,
externalNodes,
sourceMaps,
};
}

Expand All @@ -113,6 +119,7 @@ export async function retrieveProjectConfigurations(
): Promise<{
externalNodes: Record<string, ProjectGraphExternalNode>;
projectNodes: Record<string, ProjectConfiguration>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
}> {
const plugins = await loadNxPlugins(
nxJson?.plugins ?? [],
Expand All @@ -130,6 +137,7 @@ export async function retrieveProjectConfigurationsWithAngularProjects(
): Promise<{
externalNodes: Record<string, ProjectGraphExternalNode>;
projectNodes: Record<string, ProjectConfiguration>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
}> {
const plugins = await loadNxPlugins(
nxJson?.plugins ?? [],
Expand Down Expand Up @@ -157,6 +165,7 @@ export function retrieveProjectConfigurationsSync(
): {
externalNodes: Record<string, ProjectGraphExternalNode>;
projectNodes: Record<string, ProjectConfiguration>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
} {
const plugins = loadNxPluginsSync(
nxJson?.plugins ?? [],
Expand All @@ -176,25 +185,24 @@ function _retrieveProjectConfigurations(
): {
externalNodes: Record<string, ProjectGraphExternalNode>;
projectNodes: Record<string, ProjectConfiguration>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
} {
let result: {
externalNodes: Record<string, ProjectGraphExternalNode>;
projectNodes: Record<string, ProjectConfiguration>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
};
getProjectConfigurationsFromContext(
workspaceRoot,
globs,
(configs: string[]) => {
const { projects, externalNodes, rootMap } = createProjectConfigurations(
workspaceRoot,
nxJson,
configs,
plugins
);
const { projects, externalNodes, rootMap, sourceMaps } =
createProjectConfigurations(workspaceRoot, nxJson, configs, plugins);

result = {
projectNodes: projects,
externalNodes: externalNodes,
sourceMaps: sourceMaps,
};

return rootMap;
Expand Down Expand Up @@ -289,10 +297,11 @@ export function createProjectConfigurations(
projects: Record<string, ProjectConfiguration>;
externalNodes: Record<string, ProjectGraphExternalNode>;
rootMap: Record<string, string>;
sourceMaps: Record<string, Record<string, SourceInformation>>;
} {
performance.mark('build-project-configs:start');

const { projects, externalNodes, rootMap } =
const { projects, externalNodes, rootMap, sourceMaps } =
buildProjectsConfigurationsFromProjectPathsAndPlugins(
nxJson,
configFiles,
Expand All @@ -313,6 +322,7 @@ export function createProjectConfigurations(
projects: projectConfigurations,
externalNodes,
rootMap,
sourceMaps,
};
}

Expand Down
12 changes: 12 additions & 0 deletions packages/nx/src/utils/source-maps.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { join } from 'path';
import { projectGraphCacheDirectory } from './cache-directory';
import { writeJsonFile } from './fileutils';

export function writeSourceMaps(
sourceMaps: Record<string, Record<string, string[]>>
) {
writeJsonFile(
join(projectGraphCacheDirectory, 'configuration-source-maps.json'),
sourceMaps
);
}

0 comments on commit 91af0b0

Please sign in to comment.