@rock-js/tools 0.8.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/build-cache/common.d.ts +79 -0
- package/dist/src/lib/build-cache/common.d.ts.map +1 -0
- package/dist/src/lib/build-cache/common.js +44 -0
- package/dist/src/lib/build-cache/common.js.map +1 -0
- package/dist/src/lib/build-cache/fetchCachedBuild.d.ts +12 -0
- package/dist/src/lib/build-cache/fetchCachedBuild.d.ts.map +1 -0
- package/dist/src/lib/build-cache/fetchCachedBuild.js +128 -0
- package/dist/src/lib/build-cache/fetchCachedBuild.js.map +1 -0
- package/dist/src/lib/build-cache/getBinaryPath.d.ts +10 -0
- package/dist/src/lib/build-cache/getBinaryPath.d.ts.map +1 -0
- package/dist/src/lib/build-cache/getBinaryPath.js +60 -0
- package/dist/src/lib/build-cache/getBinaryPath.js.map +1 -0
- package/dist/src/lib/build-cache/localBuildCache.d.ts +8 -0
- package/dist/src/lib/build-cache/localBuildCache.d.ts.map +1 -0
- package/dist/src/lib/build-cache/localBuildCache.js +50 -0
- package/dist/src/lib/build-cache/localBuildCache.js.map +1 -0
- package/dist/src/lib/cacheManager.d.ts +15 -0
- package/dist/src/lib/cacheManager.d.ts.map +1 -0
- package/dist/src/lib/cacheManager.js +63 -0
- package/dist/src/lib/cacheManager.js.map +1 -0
- package/dist/src/lib/color.d.ts +3 -0
- package/dist/src/lib/color.d.ts.map +1 -0
- package/dist/src/lib/color.js +6 -0
- package/dist/src/lib/color.js.map +1 -0
- package/dist/src/lib/dev-server/findDevServerPort.d.ts +4 -0
- package/dist/src/lib/dev-server/findDevServerPort.d.ts.map +1 -0
- package/dist/src/lib/dev-server/findDevServerPort.js +27 -0
- package/dist/src/lib/dev-server/findDevServerPort.js.map +1 -0
- package/dist/src/lib/dev-server/getDevMiddleware.d.ts +1 -0
- package/dist/src/lib/dev-server/getDevMiddleware.js +10 -0
- package/dist/src/lib/dev-server/getDevMiddleware.js.map +1 -0
- package/dist/src/lib/dev-server/getNextPort.d.ts +11 -0
- package/dist/src/lib/dev-server/getNextPort.d.ts.map +1 -0
- package/dist/src/lib/dev-server/getNextPort.js +22 -0
- package/dist/src/lib/dev-server/getNextPort.js.map +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.d.ts +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.js +5 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.js.map +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.d.ts +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.js +8 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.js.map +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.d.ts +1 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.js +8 -0
- package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.js.map +1 -0
- package/dist/src/lib/dev-server/handlePortUnavailable.d.ts +4 -0
- package/dist/src/lib/dev-server/handlePortUnavailable.d.ts.map +1 -0
- package/dist/src/lib/dev-server/handlePortUnavailable.js +33 -0
- package/dist/src/lib/dev-server/handlePortUnavailable.js.map +1 -0
- package/dist/src/lib/dev-server/isDevServerRunning.d.ts +13 -0
- package/dist/src/lib/dev-server/isDevServerRunning.d.ts.map +1 -0
- package/dist/src/lib/dev-server/isDevServerRunning.js +29 -0
- package/dist/src/lib/dev-server/isDevServerRunning.js.map +1 -0
- package/dist/src/lib/dev-server/logAlreadyRunningBundler.d.ts +1 -0
- package/dist/src/lib/dev-server/logAlreadyRunningBundler.d.ts.map +1 -0
- package/dist/src/lib/dev-server/logAlreadyRunningBundler.js +5 -0
- package/dist/src/lib/dev-server/logAlreadyRunningBundler.js.map +1 -0
- package/dist/src/lib/env.d.ts +2 -0
- package/dist/src/lib/env.d.ts.map +1 -0
- package/dist/src/lib/env.js +11 -0
- package/dist/src/lib/env.js.map +1 -0
- package/dist/src/lib/error.d.ts +6 -0
- package/dist/src/lib/error.d.ts.map +1 -0
- package/dist/src/lib/error.js +11 -0
- package/dist/src/lib/error.js.map +1 -0
- package/dist/src/lib/fingerprint/index.d.ts +20 -0
- package/dist/src/lib/fingerprint/index.d.ts.map +1 -0
- package/dist/src/lib/fingerprint/index.js +128 -0
- package/dist/src/lib/fingerprint/index.js.map +1 -0
- package/dist/src/lib/fingerprint/processExtraSources.d.ts +9 -0
- package/dist/src/lib/fingerprint/processExtraSources.d.ts.map +1 -0
- package/dist/src/lib/fingerprint/processExtraSources.js +76 -0
- package/dist/src/lib/fingerprint/processExtraSources.js.map +1 -0
- package/dist/src/lib/hermes.d.ts +4 -0
- package/dist/src/lib/hermes.d.ts.map +1 -0
- package/dist/src/lib/hermes.js +141 -0
- package/dist/src/lib/hermes.js.map +1 -0
- package/dist/src/lib/isInteractive.d.ts +8 -0
- package/dist/src/lib/isInteractive.d.ts.map +1 -0
- package/dist/src/lib/isInteractive.js +10 -0
- package/dist/src/lib/isInteractive.js.map +1 -0
- package/dist/src/lib/logger.d.ts +11 -0
- package/dist/src/lib/logger.d.ts.map +1 -0
- package/dist/src/lib/logger.js +58 -0
- package/dist/src/lib/logger.js.map +1 -0
- package/dist/src/lib/parse-args.d.ts +1 -0
- package/dist/src/lib/parse-args.d.ts.map +1 -0
- package/dist/src/lib/parse-args.js +5 -0
- package/dist/src/lib/parse-args.js.map +1 -0
- package/dist/src/lib/path.d.ts +4 -0
- package/dist/src/lib/path.d.ts.map +1 -0
- package/dist/src/lib/path.js +36 -0
- package/dist/src/lib/path.js.map +1 -0
- package/dist/src/lib/project.d.ts +9 -0
- package/dist/src/lib/project.d.ts.map +1 -0
- package/dist/src/lib/project.js +33 -0
- package/dist/src/lib/project.js.map +1 -0
- package/dist/src/lib/prompts.d.ts +25 -0
- package/dist/src/lib/prompts.d.ts.map +1 -0
- package/dist/src/lib/prompts.js +106 -0
- package/dist/src/lib/prompts.js.map +1 -0
- package/dist/src/lib/spawn.d.ts +4 -0
- package/dist/src/lib/spawn.d.ts.map +1 -0
- package/dist/src/lib/spawn.js +43 -0
- package/dist/src/lib/spawn.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { handlePortUnavailable } from './handlePortUnavailable.js';
|
|
2
|
+
import { isDevServerRunning } from './isDevServerRunning.js';
|
|
3
|
+
import { logAlreadyRunningBundler } from './logAlreadyRunningBundler.js';
|
|
4
|
+
export const findDevServerPort = async (initialPort, root) => {
|
|
5
|
+
let port = initialPort;
|
|
6
|
+
let startDevServer = true;
|
|
7
|
+
const devServerStatus = await isDevServerRunning(port);
|
|
8
|
+
if (devServerStatus.status === 'running') {
|
|
9
|
+
if (devServerStatus.root === root) {
|
|
10
|
+
startDevServer = false;
|
|
11
|
+
logAlreadyRunningBundler(port);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const result = await handlePortUnavailable(port, root);
|
|
15
|
+
[port, startDevServer] = [result.port, result.startDevServer];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else if (devServerStatus.status === 'unrecognized') {
|
|
19
|
+
const result = await handlePortUnavailable(port, root);
|
|
20
|
+
[port, startDevServer] = [result.port, result.startDevServer];
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
port: String(port),
|
|
24
|
+
startDevServer,
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=findDevServerPort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findDevServerPort.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/findDevServerPort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,WAAmB,EACnB,IAAY,EAIX,EAAE;IACH,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,IAAI,cAAc,GAAG,IAAI,CAAC;IAE1B,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEvD,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClC,cAAc,GAAG,KAAK,CAAC;YACvB,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getDevMiddleware(reactNativePath: string): Promise<any>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire } from 'module';
|
|
2
|
+
export async function getDevMiddleware(reactNativePath) {
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
const reactNativeCommunityCliPluginPath = require.resolve('@react-native/community-cli-plugin', { paths: [reactNativePath] });
|
|
5
|
+
const devMiddlewarePath = require.resolve('@react-native/dev-middleware', {
|
|
6
|
+
paths: [reactNativeCommunityCliPluginPath],
|
|
7
|
+
});
|
|
8
|
+
return import(devMiddlewarePath);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=getDevMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDevMiddleware.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/getDevMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,eAAuB;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,iCAAiC,GAAG,OAAO,CAAC,OAAO,CACvD,oCAAoC,EACpC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,CAC7B,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,8BAA8B,EAAE;QACxE,KAAK,EAAE,CAAC,iCAAiC,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Result = {
|
|
2
|
+
start: boolean;
|
|
3
|
+
nextPort: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Increases by one the port number until it finds an available port.
|
|
7
|
+
* @param port Port number to start with.
|
|
8
|
+
* @param root Root of the project.
|
|
9
|
+
*/
|
|
10
|
+
declare const getNextPort: (port: number, root: string) => Promise<Result>;
|
|
11
|
+
export default getNextPort;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNextPort.d.ts","sourceRoot":"","sources":["../../../../src/lib/dev-server/getNextPort.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AAEH,QAAA,MAAM,WAAW,SAAgB,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAerE,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isDevServerRunning } from './isDevServerRunning.js';
|
|
2
|
+
/**
|
|
3
|
+
* Increases by one the port number until it finds an available port.
|
|
4
|
+
* @param port Port number to start with.
|
|
5
|
+
* @param root Root of the project.
|
|
6
|
+
*/
|
|
7
|
+
const getNextPort = async (port, root) => {
|
|
8
|
+
const nextPort = port + 1;
|
|
9
|
+
let start = true;
|
|
10
|
+
const result = await isDevServerRunning(nextPort);
|
|
11
|
+
const isRunning = result.status === 'running';
|
|
12
|
+
if (isRunning && result.root === root) {
|
|
13
|
+
// Found running bundler for this project, so we do not need to start dev server!
|
|
14
|
+
start = false;
|
|
15
|
+
}
|
|
16
|
+
else if (isRunning || result.status === 'unrecognized') {
|
|
17
|
+
return getNextPort(nextPort, root);
|
|
18
|
+
}
|
|
19
|
+
return { start, nextPort };
|
|
20
|
+
};
|
|
21
|
+
export default getNextPort;
|
|
22
|
+
//# sourceMappingURL=getNextPort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNextPort.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/getNextPort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D;;;;GAIG;AAEH,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAmB,EAAE;IACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;IAE9C,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACtC,iFAAiF;QACjF,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;SAAM,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getReactNativeCommunityCliPlugin(reactNativePath: string): Promise<any>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export async function getReactNativeCommunityCliPlugin(reactNativePath) {
|
|
2
|
+
const reactNativeCommunityCliPluginPath = require.resolve('@react-native/community-cli-plugin', { paths: [reactNativePath] });
|
|
3
|
+
return import(reactNativeCommunityCliPluginPath);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=getReactNativeCommunityCliPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReactNativeCommunityCliPlugin.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/getReactNativeCommunityCliPlugin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,eAAuB;IAEvB,MAAM,iCAAiC,GAAG,OAAO,CAAC,OAAO,CACvD,oCAAoC,EACpC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,CAC7B,CAAC;IAEF,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getReactNativeCommunityCliServerApi(reactNativePath: string): Promise<any>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export async function getReactNativeCommunityCliServerApi(reactNativePath) {
|
|
2
|
+
const reactNativeCommunityCliPluginPath = require.resolve('@react-native/community-cli-plugin', { paths: [reactNativePath] });
|
|
3
|
+
const devMiddlewarePath = require.resolve('@react-native-community/cli-server-api', {
|
|
4
|
+
paths: [reactNativeCommunityCliPluginPath],
|
|
5
|
+
});
|
|
6
|
+
return import(devMiddlewarePath);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getReactNativeCommunityCliServerApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReactNativeCommunityCliServerApi.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/getReactNativeCommunityCliServerApi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,mCAAmC,CAAC,eAAuB;IAC7E,MAAM,iCAAiC,GAAG,OAAO,CAAC,OAAO,CACvD,oCAAoC,EACpC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,CAC7B,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,wCAAwC,EAAE;QAClF,KAAK,EAAE,CAAC,iCAAiC,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getDevMiddleware(reactNativePath: string): Promise<any>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export async function getDevMiddleware(reactNativePath) {
|
|
2
|
+
const reactNativeCommunityCliPluginPath = require.resolve('@react-native/community-cli-plugin', { paths: [reactNativePath] });
|
|
3
|
+
const devMiddlewarePath = require.resolve('@react-native-community/cli-server-api', {
|
|
4
|
+
paths: [reactNativeCommunityCliPluginPath],
|
|
5
|
+
});
|
|
6
|
+
return import(devMiddlewarePath);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getReactNativeCommunityDevServerApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getReactNativeCommunityDevServerApi.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/getReactNativeCommunityDevServerApi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,eAAuB;IAC1D,MAAM,iCAAiC,GAAG,OAAO,CAAC,OAAO,CACvD,oCAAoC,EACpC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,CAC7B,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,wCAAwC,EAAE;QAClF,KAAK,EAAE,CAAC,iCAAiC,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlePortUnavailable.d.ts","sourceRoot":"","sources":["../../../../src/lib/dev-server/handlePortUnavailable.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,gBACnB,MAAM,eACN,MAAM,KAClB,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;CACzB,CAsBA,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import logger from '../logger.js';
|
|
2
|
+
import { promptConfirm } from '../prompts.js';
|
|
3
|
+
import getNextPort from './getNextPort.js';
|
|
4
|
+
import { logAlreadyRunningBundler } from './logAlreadyRunningBundler.js';
|
|
5
|
+
export const handlePortUnavailable = async (initialPort, projectRoot) => {
|
|
6
|
+
const { nextPort, start } = await getNextPort(initialPort, projectRoot);
|
|
7
|
+
let startDevServer = true;
|
|
8
|
+
let port = initialPort;
|
|
9
|
+
if (!start) {
|
|
10
|
+
startDevServer = false;
|
|
11
|
+
logAlreadyRunningBundler(nextPort);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const change = await askForPortChange(port, nextPort);
|
|
15
|
+
if (change) {
|
|
16
|
+
port = nextPort;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
startDevServer = false;
|
|
20
|
+
logger.info('Exiting. You can try again with a different port using "--port" flag');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return { port, startDevServer };
|
|
24
|
+
};
|
|
25
|
+
const askForPortChange = (port, nextPort) => {
|
|
26
|
+
logger.info(`Another process is running on port ${port}.`);
|
|
27
|
+
return promptConfirm({
|
|
28
|
+
message: `Use port ${nextPort} instead?`,
|
|
29
|
+
confirmLabel: 'Yes',
|
|
30
|
+
cancelLabel: 'No',
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=handlePortUnavailable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlePortUnavailable.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/handlePortUnavailable.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAmB,EACnB,WAAmB,EAIlB,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxE,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,WAAW,CAAC;IAEvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,cAAc,GAAG,KAAK,CAAC;QACvB,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEtD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,sEAAsE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;IAC1D,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;IAE3D,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,YAAY,QAAQ,WAAW;QACxC,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indicates whether or not the dev server is running. It returns a promise that
|
|
3
|
+
* returns one of these possible values:
|
|
4
|
+
* - `{status: 'running', root: string}`: the dev server is running
|
|
5
|
+
* - `{status: 'not_running'}`: the dev server nor any process is running on the expected port.
|
|
6
|
+
* - `{status: 'unrecognized'}`: one other process is running on the port we expect the dev server to be running.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isDevServerRunning(port?: string | number): Promise<{
|
|
9
|
+
status: 'running';
|
|
10
|
+
root: string;
|
|
11
|
+
} | {
|
|
12
|
+
status: 'not_running' | 'unrecognized';
|
|
13
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDevServerRunning.d.ts","sourceRoot":"","sources":["../../../../src/lib/dev-server/isDevServerRunning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,MAAM,GAAG,MAAgD,GAC9D,OAAO,CACN;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,MAAM,EAAE,aAAa,GAAG,cAAc,CAAA;CAAE,CAC7C,CAqBA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indicates whether or not the dev server is running. It returns a promise that
|
|
3
|
+
* returns one of these possible values:
|
|
4
|
+
* - `{status: 'running', root: string}`: the dev server is running
|
|
5
|
+
* - `{status: 'not_running'}`: the dev server nor any process is running on the expected port.
|
|
6
|
+
* - `{status: 'unrecognized'}`: one other process is running on the port we expect the dev server to be running.
|
|
7
|
+
*/
|
|
8
|
+
export async function isDevServerRunning(port = process.env['RCT_METRO_PORT'] || '8081') {
|
|
9
|
+
try {
|
|
10
|
+
const response = await fetch(`http://localhost:${port}/status`);
|
|
11
|
+
const data = await response.text();
|
|
12
|
+
try {
|
|
13
|
+
if (data === 'packager-status:running') {
|
|
14
|
+
return {
|
|
15
|
+
status: 'running',
|
|
16
|
+
root: response.headers.get('X-React-Native-Project-Root') ?? '',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (_error) {
|
|
21
|
+
return { status: 'unrecognized' };
|
|
22
|
+
}
|
|
23
|
+
return { status: 'unrecognized' };
|
|
24
|
+
}
|
|
25
|
+
catch (_error) {
|
|
26
|
+
return { status: 'not_running' };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=isDevServerRunning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDevServerRunning.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/isDevServerRunning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM;IAK/D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,SAAS,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACvC,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,EAAE;iBAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const logAlreadyRunningBundler: (port: number) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logAlreadyRunningBundler.d.ts","sourceRoot":"","sources":["../../../../src/lib/dev-server/logAlreadyRunningBundler.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,SAAU,MAAM,SAIpD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import logger from '../logger.js';
|
|
2
|
+
export const logAlreadyRunningBundler = (port) => {
|
|
3
|
+
logger.info(`A dev server is already running for this project on port ${port}. Pass "--port" option to use a different port`);
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=logAlreadyRunningBundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logAlreadyRunningBundler.js","sourceRoot":"","sources":["../../../../src/lib/dev-server/logAlreadyRunningBundler.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE;IACvD,MAAM,CAAC,IAAI,CACT,4DAA4D,IAAI,gDAAgD,CACjH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/lib/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,wBAAgB,UAAU,IAAI,eAAe,CAW5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/lib/env.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,oCAAoC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/lib/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAKF,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAE,gBAAqB;CAK9D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// See:
|
|
2
|
+
// - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types
|
|
3
|
+
// - https://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript
|
|
4
|
+
export class RockError extends Error {
|
|
5
|
+
constructor(message, { cause } = {}) {
|
|
6
|
+
super(message, { cause }); // Pass the cause to the Error constructor
|
|
7
|
+
this.name = this.constructor.name; // Set the error name
|
|
8
|
+
Error.captureStackTrace(this, this.constructor); // Capture stack trace
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/lib/error.ts"],"names":[],"mappings":"AAIA,OAAO;AACP,8GAA8G;AAC9G,+FAA+F;AAC/F,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe,EAAE,EAAE,KAAK,KAAuB,EAAE;QAC3D,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,0CAA0C;QACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,qBAAqB;QACxD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FingerprintSource } from '@expo/fingerprint';
|
|
2
|
+
export { DEFAULT_IGNORE_PATHS as EXPO_DEFAULT_IGNORE_PATHS } from '@expo/fingerprint';
|
|
3
|
+
export declare const DEFAULT_IGNORE_PATHS: string[];
|
|
4
|
+
export type FingerprintSources = {
|
|
5
|
+
extraSources: string[];
|
|
6
|
+
ignorePaths: string[];
|
|
7
|
+
};
|
|
8
|
+
export type FingerprintOptions = {
|
|
9
|
+
platform: 'ios' | 'android';
|
|
10
|
+
extraSources: string[];
|
|
11
|
+
ignorePaths: string[];
|
|
12
|
+
};
|
|
13
|
+
export type FingerprintResult = {
|
|
14
|
+
hash: string;
|
|
15
|
+
sources: FingerprintSource[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Calculates the fingerprint of the native parts project of the project.
|
|
19
|
+
*/
|
|
20
|
+
export declare function nativeFingerprint(path: string, options: FingerprintOptions): Promise<FingerprintResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/fingerprint/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,mBAAmB,CAAC;AAMvE,OAAO,EAAE,oBAAoB,IAAI,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAQtF,eAAO,MAAM,oBAAoB,UAYhC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAiC5B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { createFingerprintAsync } from '@expo/fingerprint';
|
|
4
|
+
import { RockError } from '../error.js';
|
|
5
|
+
import logger from '../logger.js';
|
|
6
|
+
import { spawn } from '../spawn.js';
|
|
7
|
+
import { processExtraSources } from './processExtraSources.js';
|
|
8
|
+
export { DEFAULT_IGNORE_PATHS as EXPO_DEFAULT_IGNORE_PATHS } from '@expo/fingerprint';
|
|
9
|
+
const HASH_ALGORITHM = 'sha1';
|
|
10
|
+
const EXCLUDED_SOURCES = [
|
|
11
|
+
'expoAutolinkingConfig:ios',
|
|
12
|
+
'expoAutolinkingConfig:android',
|
|
13
|
+
];
|
|
14
|
+
export const DEFAULT_IGNORE_PATHS = [
|
|
15
|
+
'android/build',
|
|
16
|
+
'android/**/build',
|
|
17
|
+
'android/**/.cxx',
|
|
18
|
+
'android/.kotlin/**',
|
|
19
|
+
'ios/DerivedData',
|
|
20
|
+
'ios/Pods',
|
|
21
|
+
'ios/tmp.xcconfig', // added by react-native-config
|
|
22
|
+
'node_modules',
|
|
23
|
+
'android/local.properties',
|
|
24
|
+
'android/.idea',
|
|
25
|
+
'android/.gradle',
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Calculates the fingerprint of the native parts project of the project.
|
|
29
|
+
*/
|
|
30
|
+
export async function nativeFingerprint(path, options) {
|
|
31
|
+
const platform = options.platform;
|
|
32
|
+
// Use stdout to avoid deprecation warnings
|
|
33
|
+
const { stdout: autolinkingConfigString } = await spawn('rock', ['config', '-p', options.platform], { cwd: path, stdio: 'pipe', preferLocal: true });
|
|
34
|
+
const autolinkingSources = parseAutolinkingSources({
|
|
35
|
+
config: JSON.parse(autolinkingConfigString),
|
|
36
|
+
reasons: ['rncoreAutolinking'],
|
|
37
|
+
contentsId: 'rncoreAutolinkingConfig',
|
|
38
|
+
});
|
|
39
|
+
const fingerprint = await createFingerprintAsync(path, {
|
|
40
|
+
platforms: [platform],
|
|
41
|
+
dirExcludes: DEFAULT_IGNORE_PATHS,
|
|
42
|
+
extraSources: [
|
|
43
|
+
...autolinkingSources,
|
|
44
|
+
...processExtraSources(options.extraSources, path, options.ignorePaths),
|
|
45
|
+
],
|
|
46
|
+
ignorePaths: options.ignorePaths,
|
|
47
|
+
});
|
|
48
|
+
// Filter out un-relevant sources as these caused hash mismatch between local and remote builds
|
|
49
|
+
const sources = fingerprint.sources.filter((source) => 'id' in source ? !EXCLUDED_SOURCES.includes(source.id) : true);
|
|
50
|
+
const hash = await hashSources(sources);
|
|
51
|
+
return { hash, sources };
|
|
52
|
+
}
|
|
53
|
+
async function hashSources(sources) {
|
|
54
|
+
let input = '';
|
|
55
|
+
for (const source of sources) {
|
|
56
|
+
if (source.hash != null) {
|
|
57
|
+
input += `${createSourceId(source)}-${source.hash}\n`;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const hasher = crypto.createHash(HASH_ALGORITHM);
|
|
61
|
+
hasher.update(input);
|
|
62
|
+
return hasher.digest('hex');
|
|
63
|
+
}
|
|
64
|
+
function createSourceId(source) {
|
|
65
|
+
switch (source.type) {
|
|
66
|
+
case 'contents':
|
|
67
|
+
return source.id;
|
|
68
|
+
case 'file':
|
|
69
|
+
return source.filePath;
|
|
70
|
+
case 'dir':
|
|
71
|
+
return source.filePath;
|
|
72
|
+
default:
|
|
73
|
+
// @ts-expect-error: we intentionally want to detect invalid types
|
|
74
|
+
throw new RockError(`Unsupported source type: ${source.type}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function toPosixPath(filePath) {
|
|
78
|
+
return filePath.replace(/\\/g, '/');
|
|
79
|
+
}
|
|
80
|
+
function parseAutolinkingSources({ config, reasons, contentsId, }) {
|
|
81
|
+
const results = [];
|
|
82
|
+
const { root } = config;
|
|
83
|
+
const autolinkingConfig = {};
|
|
84
|
+
for (const [depName, depData] of Object.entries(config.dependencies)) {
|
|
85
|
+
try {
|
|
86
|
+
stripAutolinkingAbsolutePaths(depData, root);
|
|
87
|
+
const filePath = toPosixPath(depData.root);
|
|
88
|
+
results.push({ type: 'dir', filePath, reasons });
|
|
89
|
+
autolinkingConfig[depName] = depData;
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
logger.debug(`Error adding react-native core autolinking - ${depName}.\n${e}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
results.push({
|
|
96
|
+
type: 'contents',
|
|
97
|
+
id: contentsId,
|
|
98
|
+
contents: JSON.stringify(autolinkingConfig),
|
|
99
|
+
reasons,
|
|
100
|
+
});
|
|
101
|
+
return results;
|
|
102
|
+
}
|
|
103
|
+
function stripAutolinkingAbsolutePaths(dependency, root) {
|
|
104
|
+
const dependencyRoot = dependency.root;
|
|
105
|
+
const cmakeDepRoot = process.platform === 'win32' ? toPosixPath(dependencyRoot) : dependencyRoot;
|
|
106
|
+
dependency.root = toPosixPath(path.relative(root, dependencyRoot));
|
|
107
|
+
for (const platformData of Object.values(dependency.platforms)) {
|
|
108
|
+
for (const [key, value] of Object.entries(platformData ?? {})) {
|
|
109
|
+
let newValue;
|
|
110
|
+
if (process.platform === 'win32' &&
|
|
111
|
+
['cmakeListsPath', 'cxxModuleCMakeListsPath'].includes(key)) {
|
|
112
|
+
// CMake paths on Windows are serving in slashes,
|
|
113
|
+
// we have to check startsWith with the same slashes.
|
|
114
|
+
// @todo revisit windows logic
|
|
115
|
+
newValue = value?.startsWith?.(cmakeDepRoot)
|
|
116
|
+
? toPosixPath(path.relative(root, value))
|
|
117
|
+
: value;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
newValue = value?.startsWith?.(dependencyRoot)
|
|
121
|
+
? toPosixPath(path.relative(root, value))
|
|
122
|
+
: value;
|
|
123
|
+
}
|
|
124
|
+
platformData[key] = newValue;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/fingerprint/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HashSourceContents, HashSourceDir } from '@expo/fingerprint';
|
|
2
|
+
/**
|
|
3
|
+
* Processes extra source files and directories for fingerprinting.
|
|
4
|
+
* @param extraSources Array of file paths, directory paths, or glob patterns
|
|
5
|
+
* @param projectRoot Root directory of the project
|
|
6
|
+
* @param ignorePaths Optional array of paths to ignore
|
|
7
|
+
* @returns Array of processed sources with their contents or directory information
|
|
8
|
+
*/
|
|
9
|
+
export declare function processExtraSources(extraSources: string[], projectRoot: string, ignorePaths?: string[]): (HashSourceDir | HashSourceContents)[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processExtraSources.d.ts","sourceRoot":"","sources":["../../../../src/lib/fingerprint/processExtraSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI3E;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EAAE,0CAqEvB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import glob from 'fast-glob';
|
|
4
|
+
import logger from '../logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* Processes extra source files and directories for fingerprinting.
|
|
7
|
+
* @param extraSources Array of file paths, directory paths, or glob patterns
|
|
8
|
+
* @param projectRoot Root directory of the project
|
|
9
|
+
* @param ignorePaths Optional array of paths to ignore
|
|
10
|
+
* @returns Array of processed sources with their contents or directory information
|
|
11
|
+
*/
|
|
12
|
+
export function processExtraSources(extraSources, projectRoot, ignorePaths) {
|
|
13
|
+
const processedSources = [];
|
|
14
|
+
for (const source of extraSources) {
|
|
15
|
+
try {
|
|
16
|
+
const isGlobPattern = glob.isDynamicPattern(source);
|
|
17
|
+
if (isGlobPattern) {
|
|
18
|
+
const matches = glob.sync(source, {
|
|
19
|
+
cwd: projectRoot,
|
|
20
|
+
ignore: ignorePaths ?? [],
|
|
21
|
+
});
|
|
22
|
+
for (const match of matches) {
|
|
23
|
+
const absolutePath = path.join(projectRoot, match);
|
|
24
|
+
if (fs.existsSync(absolutePath)) {
|
|
25
|
+
const stats = fs.statSync(absolutePath);
|
|
26
|
+
if (stats.isDirectory()) {
|
|
27
|
+
processedSources.push({
|
|
28
|
+
type: 'dir',
|
|
29
|
+
filePath: absolutePath,
|
|
30
|
+
reasons: ['custom-user-config'],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
processedSources.push({
|
|
35
|
+
type: 'contents',
|
|
36
|
+
id: absolutePath,
|
|
37
|
+
contents: fs.readFileSync(absolutePath, 'utf-8'),
|
|
38
|
+
reasons: ['custom-user-config'],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const absolutePath = path.isAbsolute(source)
|
|
46
|
+
? source
|
|
47
|
+
: path.join(projectRoot, source);
|
|
48
|
+
if (!fs.existsSync(absolutePath)) {
|
|
49
|
+
logger.warn(`Extra source "${absolutePath}" does not exist, skipping...`);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const stats = fs.statSync(absolutePath);
|
|
53
|
+
const relativePath = path.relative(projectRoot, absolutePath);
|
|
54
|
+
if (stats.isDirectory()) {
|
|
55
|
+
processedSources.push({
|
|
56
|
+
type: 'dir',
|
|
57
|
+
filePath: relativePath,
|
|
58
|
+
reasons: ['custom-user-config'],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
processedSources.push({
|
|
63
|
+
type: 'contents',
|
|
64
|
+
id: relativePath,
|
|
65
|
+
contents: fs.readFileSync(absolutePath, 'utf-8'),
|
|
66
|
+
reasons: ['custom-user-config'],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
logger.debug(`Error processing extra source "${source}": ${error}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return processedSources;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=processExtraSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processExtraSources.js","sourceRoot":"","sources":["../../../../src/lib/fingerprint/processExtraSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../../src/lib/hermes.ts"],"names":[],"mappings":"AAsEA,wBAAsB,SAAS,CAAC,EAC9B,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,iBA4EA"}
|