@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.
Files changed (110) hide show
  1. package/README.md +7 -0
  2. package/dist/src/index.d.ts +19 -0
  3. package/dist/src/index.d.ts.map +1 -0
  4. package/dist/src/index.js +20 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/lib/build-cache/common.d.ts +79 -0
  7. package/dist/src/lib/build-cache/common.d.ts.map +1 -0
  8. package/dist/src/lib/build-cache/common.js +44 -0
  9. package/dist/src/lib/build-cache/common.js.map +1 -0
  10. package/dist/src/lib/build-cache/fetchCachedBuild.d.ts +12 -0
  11. package/dist/src/lib/build-cache/fetchCachedBuild.d.ts.map +1 -0
  12. package/dist/src/lib/build-cache/fetchCachedBuild.js +128 -0
  13. package/dist/src/lib/build-cache/fetchCachedBuild.js.map +1 -0
  14. package/dist/src/lib/build-cache/getBinaryPath.d.ts +10 -0
  15. package/dist/src/lib/build-cache/getBinaryPath.d.ts.map +1 -0
  16. package/dist/src/lib/build-cache/getBinaryPath.js +60 -0
  17. package/dist/src/lib/build-cache/getBinaryPath.js.map +1 -0
  18. package/dist/src/lib/build-cache/localBuildCache.d.ts +8 -0
  19. package/dist/src/lib/build-cache/localBuildCache.d.ts.map +1 -0
  20. package/dist/src/lib/build-cache/localBuildCache.js +50 -0
  21. package/dist/src/lib/build-cache/localBuildCache.js.map +1 -0
  22. package/dist/src/lib/cacheManager.d.ts +15 -0
  23. package/dist/src/lib/cacheManager.d.ts.map +1 -0
  24. package/dist/src/lib/cacheManager.js +63 -0
  25. package/dist/src/lib/cacheManager.js.map +1 -0
  26. package/dist/src/lib/color.d.ts +3 -0
  27. package/dist/src/lib/color.d.ts.map +1 -0
  28. package/dist/src/lib/color.js +6 -0
  29. package/dist/src/lib/color.js.map +1 -0
  30. package/dist/src/lib/dev-server/findDevServerPort.d.ts +4 -0
  31. package/dist/src/lib/dev-server/findDevServerPort.d.ts.map +1 -0
  32. package/dist/src/lib/dev-server/findDevServerPort.js +27 -0
  33. package/dist/src/lib/dev-server/findDevServerPort.js.map +1 -0
  34. package/dist/src/lib/dev-server/getDevMiddleware.d.ts +1 -0
  35. package/dist/src/lib/dev-server/getDevMiddleware.js +10 -0
  36. package/dist/src/lib/dev-server/getDevMiddleware.js.map +1 -0
  37. package/dist/src/lib/dev-server/getNextPort.d.ts +11 -0
  38. package/dist/src/lib/dev-server/getNextPort.d.ts.map +1 -0
  39. package/dist/src/lib/dev-server/getNextPort.js +22 -0
  40. package/dist/src/lib/dev-server/getNextPort.js.map +1 -0
  41. package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.d.ts +1 -0
  42. package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.js +5 -0
  43. package/dist/src/lib/dev-server/getReactNativeCommunityCliPlugin.js.map +1 -0
  44. package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.d.ts +1 -0
  45. package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.js +8 -0
  46. package/dist/src/lib/dev-server/getReactNativeCommunityCliServerApi.js.map +1 -0
  47. package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.d.ts +1 -0
  48. package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.js +8 -0
  49. package/dist/src/lib/dev-server/getReactNativeCommunityDevServerApi.js.map +1 -0
  50. package/dist/src/lib/dev-server/handlePortUnavailable.d.ts +4 -0
  51. package/dist/src/lib/dev-server/handlePortUnavailable.d.ts.map +1 -0
  52. package/dist/src/lib/dev-server/handlePortUnavailable.js +33 -0
  53. package/dist/src/lib/dev-server/handlePortUnavailable.js.map +1 -0
  54. package/dist/src/lib/dev-server/isDevServerRunning.d.ts +13 -0
  55. package/dist/src/lib/dev-server/isDevServerRunning.d.ts.map +1 -0
  56. package/dist/src/lib/dev-server/isDevServerRunning.js +29 -0
  57. package/dist/src/lib/dev-server/isDevServerRunning.js.map +1 -0
  58. package/dist/src/lib/dev-server/logAlreadyRunningBundler.d.ts +1 -0
  59. package/dist/src/lib/dev-server/logAlreadyRunningBundler.d.ts.map +1 -0
  60. package/dist/src/lib/dev-server/logAlreadyRunningBundler.js +5 -0
  61. package/dist/src/lib/dev-server/logAlreadyRunningBundler.js.map +1 -0
  62. package/dist/src/lib/env.d.ts +2 -0
  63. package/dist/src/lib/env.d.ts.map +1 -0
  64. package/dist/src/lib/env.js +11 -0
  65. package/dist/src/lib/env.js.map +1 -0
  66. package/dist/src/lib/error.d.ts +6 -0
  67. package/dist/src/lib/error.d.ts.map +1 -0
  68. package/dist/src/lib/error.js +11 -0
  69. package/dist/src/lib/error.js.map +1 -0
  70. package/dist/src/lib/fingerprint/index.d.ts +20 -0
  71. package/dist/src/lib/fingerprint/index.d.ts.map +1 -0
  72. package/dist/src/lib/fingerprint/index.js +128 -0
  73. package/dist/src/lib/fingerprint/index.js.map +1 -0
  74. package/dist/src/lib/fingerprint/processExtraSources.d.ts +9 -0
  75. package/dist/src/lib/fingerprint/processExtraSources.d.ts.map +1 -0
  76. package/dist/src/lib/fingerprint/processExtraSources.js +76 -0
  77. package/dist/src/lib/fingerprint/processExtraSources.js.map +1 -0
  78. package/dist/src/lib/hermes.d.ts +4 -0
  79. package/dist/src/lib/hermes.d.ts.map +1 -0
  80. package/dist/src/lib/hermes.js +141 -0
  81. package/dist/src/lib/hermes.js.map +1 -0
  82. package/dist/src/lib/isInteractive.d.ts +8 -0
  83. package/dist/src/lib/isInteractive.d.ts.map +1 -0
  84. package/dist/src/lib/isInteractive.js +10 -0
  85. package/dist/src/lib/isInteractive.js.map +1 -0
  86. package/dist/src/lib/logger.d.ts +11 -0
  87. package/dist/src/lib/logger.d.ts.map +1 -0
  88. package/dist/src/lib/logger.js +58 -0
  89. package/dist/src/lib/logger.js.map +1 -0
  90. package/dist/src/lib/parse-args.d.ts +1 -0
  91. package/dist/src/lib/parse-args.d.ts.map +1 -0
  92. package/dist/src/lib/parse-args.js +5 -0
  93. package/dist/src/lib/parse-args.js.map +1 -0
  94. package/dist/src/lib/path.d.ts +4 -0
  95. package/dist/src/lib/path.d.ts.map +1 -0
  96. package/dist/src/lib/path.js +36 -0
  97. package/dist/src/lib/path.js.map +1 -0
  98. package/dist/src/lib/project.d.ts +9 -0
  99. package/dist/src/lib/project.d.ts.map +1 -0
  100. package/dist/src/lib/project.js +33 -0
  101. package/dist/src/lib/project.js.map +1 -0
  102. package/dist/src/lib/prompts.d.ts +25 -0
  103. package/dist/src/lib/prompts.d.ts.map +1 -0
  104. package/dist/src/lib/prompts.js +106 -0
  105. package/dist/src/lib/prompts.js.map +1 -0
  106. package/dist/src/lib/spawn.d.ts +4 -0
  107. package/dist/src/lib/spawn.d.ts.map +1 -0
  108. package/dist/src/lib/spawn.js +43 -0
  109. package/dist/src/lib/spawn.js.map +1 -0
  110. package/package.json +39 -0
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # @rock-js/tools
2
+
3
+ Development tools and utilities for Rock (Rock). This package is part of the Rock ecosystem.
4
+
5
+ ## Documentation
6
+
7
+ For detailed documentation about Rock and its tools, visit [Rock Documentation](https://rockjs.dev)
@@ -0,0 +1,19 @@
1
+ export * from './lib/prompts.js';
2
+ export * from './lib/env.js';
3
+ export * from './lib/error.js';
4
+ export { default as logger } from './lib/logger.js';
5
+ export * from './lib/fingerprint/index.js';
6
+ export { default as cacheManager } from './lib/cacheManager.js';
7
+ export * from './lib/parse-args.js';
8
+ export * from './lib/path.js';
9
+ export * from './lib/project.js';
10
+ export * from './lib/build-cache/common.js';
11
+ export * from './lib/build-cache/localBuildCache.js';
12
+ export { getBinaryPath } from './lib/build-cache/getBinaryPath.js';
13
+ export { findDevServerPort } from './lib/dev-server/findDevServerPort.js';
14
+ export { isDevServerRunning } from './lib/dev-server/isDevServerRunning.js';
15
+ export { isInteractive } from './lib/isInteractive.js';
16
+ export { spawn, SubprocessError } from './lib/spawn.js';
17
+ export { color, colorLink } from './lib/color.js';
18
+ export { runHermes } from './lib/hermes.js';
19
+ export { fetchCachedBuild, handleDownloadResponse, handleUploadResponse, } from './lib/build-cache/fetchCachedBuild.js';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,20 @@
1
+ export * from './lib/prompts.js';
2
+ export * from './lib/env.js';
3
+ export * from './lib/error.js';
4
+ export { default as logger } from './lib/logger.js';
5
+ export * from './lib/fingerprint/index.js';
6
+ export { default as cacheManager } from './lib/cacheManager.js';
7
+ export * from './lib/parse-args.js';
8
+ export * from './lib/path.js';
9
+ export * from './lib/project.js';
10
+ export * from './lib/build-cache/common.js';
11
+ export * from './lib/build-cache/localBuildCache.js';
12
+ export { getBinaryPath } from './lib/build-cache/getBinaryPath.js';
13
+ export { findDevServerPort } from './lib/dev-server/findDevServerPort.js';
14
+ export { isDevServerRunning } from './lib/dev-server/isDevServerRunning.js';
15
+ export { isInteractive } from './lib/isInteractive.js';
16
+ export { spawn, SubprocessError } from './lib/spawn.js';
17
+ export { color, colorLink } from './lib/color.js';
18
+ export { runHermes } from './lib/hermes.js';
19
+ export { fetchCachedBuild, handleDownloadResponse, handleUploadResponse, } from './lib/build-cache/fetchCachedBuild.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { FingerprintSources } from '../fingerprint/index.js';
2
+ export declare const BUILD_CACHE_DIR = "remote-build";
3
+ export type SupportedRemoteCacheProviders = 'github-actions';
4
+ export type RemoteArtifact = {
5
+ name: string;
6
+ url: string;
7
+ id?: string;
8
+ };
9
+ export type LocalArtifact = {
10
+ name: string;
11
+ };
12
+ /**
13
+ * Interface for implementing remote build cache providers.
14
+ * Remote cache providers allow storing and retrieving native build artifacts (e.g. APK, IPA)
15
+ * from remote storage like S3, GitHub Artifacts etc.
16
+ */
17
+ export interface RemoteBuildCache {
18
+ /** Unique identifier for this cache provider, will be displayed in logs */
19
+ name: string;
20
+ /**
21
+ * List available artifacts matching the given name pattern
22
+ * @param artifactName - Passed after fingerprinting the build, e.g. `rock-android-debug-1234567890` for android in debug variant
23
+ * @param limit - Optional maximum number of artifacts to return
24
+ * @returns Array of matching remote artifacts, or empty array if none found
25
+ */
26
+ list({ artifactName, limit, }: {
27
+ artifactName: string | undefined;
28
+ limit?: number;
29
+ }): Promise<RemoteArtifact[]>;
30
+ /**
31
+ * Download a remote artifact to local storage
32
+ * @param artifactName - Name of the artifact to download, e.g. `rock-android-debug-1234567890` for android in debug variant
33
+ * @returns Response object from fetch, which will be used to download the artifact
34
+ */
35
+ download({ artifactName }: {
36
+ artifactName: string;
37
+ }): Promise<Response>;
38
+ /**
39
+ * Delete a remote artifact
40
+ * @param artifactName - Name of the artifact to delete, e.g. `rock-android-debug-1234567890` for android in debug variant
41
+ * @param limit - Optional maximum number of artifacts to delete
42
+ * @param skipLatest - Optional flag to skip the latest artifact, helpful when deleting all but the latest artifact
43
+ * @returns Array of deleted artifacts
44
+ * @throws {Error} Throws if artifact is not found or deletion fails
45
+ */
46
+ delete({ artifactName, limit, skipLatest, }: {
47
+ artifactName: string;
48
+ limit?: number;
49
+ skipLatest?: boolean;
50
+ }): Promise<RemoteArtifact[]>;
51
+ /**
52
+ * Upload a local artifact stored in build cache to remote storage
53
+ * @param artifactName - Name of the artifact to upload, e.g. `rock-android-debug-1234567890` for android in debug variant
54
+ * @param uploadArtifactName - Name of the artifact to upload, e.g. `ad-hoc/rock-ios-device-Release-1234567890/YourApp.ipa` for ad-hoc distribution
55
+ * @returns Remote artifact info with response function for upload control
56
+ * @throws {Error} Throws if upload fails
57
+ */
58
+ upload({ artifactName, uploadArtifactName, }: {
59
+ artifactName: string;
60
+ uploadArtifactName?: string;
61
+ }): Promise<RemoteArtifact & {
62
+ getResponse: (buffer: Buffer | ((baseUrl: string) => Buffer), contentType?: string) => Response;
63
+ }>;
64
+ }
65
+ /**
66
+ * Used formats:
67
+ * - rock-android-debug-1234567890
68
+ * - rock-ios-simulator-debug-1234567890
69
+ * - rock-ios-device-debug-1234567890
70
+ */
71
+ export declare function formatArtifactName({ platform, traits, root, fingerprintOptions, raw, }: {
72
+ platform?: 'ios' | 'android';
73
+ traits?: string[];
74
+ root: string;
75
+ fingerprintOptions: FingerprintSources;
76
+ raw?: boolean;
77
+ }): Promise<string>;
78
+ export declare function getLocalArtifactPath(artifactName: string): string;
79
+ export declare function getLocalBinaryPath(artifactPath: string): string | null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/lib/build-cache/common.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAMlE,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAE9C,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,IAAI,CAAC,EACH,YAAY,EACZ,KAAK,GACN,EAAE;QACD,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE;;;;;;;OAOG;IACH,MAAM,CAAC,EACL,YAAY,EACZ,KAAK,EACL,UAAU,GACX,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,MAAM,CAAC,EACL,YAAY,EACZ,MAAM,GACP,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAE5B;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,EACZ,YAAY,EACZ,UAAU,EACV,KAAK,GACN,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,kBAAkB,EAClB,GAAG,GACJ,EAAE;IACD,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBlB;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,UAExD;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,iBAKtD"}
@@ -0,0 +1,44 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { color } from '../color.js';
4
+ import { nativeFingerprint } from '../fingerprint/index.js';
5
+ import { isInteractive } from '../isInteractive.js';
6
+ import { getCacheRootPath } from '../project.js';
7
+ import { spinner } from '../prompts.js';
8
+ export const BUILD_CACHE_DIR = 'remote-build';
9
+ /**
10
+ * Used formats:
11
+ * - rock-android-debug-1234567890
12
+ * - rock-ios-simulator-debug-1234567890
13
+ * - rock-ios-device-debug-1234567890
14
+ */
15
+ export async function formatArtifactName({ platform, traits, root, fingerprintOptions, raw, }) {
16
+ if (!platform || !traits) {
17
+ return '';
18
+ }
19
+ if (raw || !isInteractive()) {
20
+ const { hash } = await nativeFingerprint(root, {
21
+ ...fingerprintOptions,
22
+ platform,
23
+ });
24
+ return `rock-${platform}-${traits.join('-')}-${hash}`;
25
+ }
26
+ const loader = spinner();
27
+ loader.start('Calculating project fingerprint');
28
+ const { hash } = await nativeFingerprint(root, {
29
+ ...fingerprintOptions,
30
+ platform,
31
+ });
32
+ loader.stop(`Calculated project fingerprint: ${color.bold(color.magenta(hash))}`);
33
+ return `rock-${platform}-${traits.join('-')}-${hash}`;
34
+ }
35
+ export function getLocalArtifactPath(artifactName) {
36
+ return path.join(getCacheRootPath(), BUILD_CACHE_DIR, artifactName);
37
+ }
38
+ export function getLocalBinaryPath(artifactPath) {
39
+ const files = fs.readdirSync(artifactPath);
40
+ // Get the first non-hidden file as the binary
41
+ const binaryName = files.find((file) => file && !file.startsWith('.'));
42
+ return binaryName ? path.join(artifactPath, binaryName) : null;
43
+ }
44
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/lib/build-cache/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAqF9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,kBAAkB,EAClB,GAAG,GAOJ;IACC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;YAC7C,GAAG,kBAAkB;YACrB,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,QAAQ,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;QAC7C,GAAG,kBAAkB;QACrB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CACT,mCAAmC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CACrE,CAAC;IACF,OAAO,QAAQ,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3C,8CAA8C;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type RemoteBuildCache } from './common.js';
2
+ import type { LocalBuild } from './localBuildCache.js';
3
+ type FetchCachedBuildOptions = {
4
+ artifactName: string;
5
+ remoteCacheProvider: undefined | null | {
6
+ (): RemoteBuildCache;
7
+ };
8
+ };
9
+ export declare function fetchCachedBuild({ artifactName, remoteCacheProvider, }: FetchCachedBuildOptions): Promise<LocalBuild | undefined>;
10
+ export declare function handleDownloadResponse(response: Response, localArtifactPath: string, onProgress: (progress: string, totalMB: string) => void): Promise<void>;
11
+ export declare function handleUploadResponse(getResponse: (buffer: Buffer) => Response, buffer: Buffer, onProgress: (progress: string, totalMB: string) => void): Promise<void>;
12
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchCachedBuild.d.ts","sourceRoot":"","sources":["../../../../src/lib/build-cache/fetchCachedBuild.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,KAAK,uBAAuB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,SAAS,GAAG,IAAI,GAAG;QAAE,IAAI,gBAAgB,CAAA;KAAE,CAAC;CAClE,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,EACZ,mBAAmB,GACpB,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAkD3D;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,iBA+CpC"}
@@ -0,0 +1,128 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import AdmZip from 'adm-zip';
4
+ import * as tar from 'tar';
5
+ import { color, colorLink } from '../color.js';
6
+ import { RockError } from '../error.js';
7
+ import logger from '../logger.js';
8
+ import { relativeToCwd } from '../path.js';
9
+ import { spinner } from '../prompts.js';
10
+ import { getLocalArtifactPath, getLocalBinaryPath, } from './common.js';
11
+ export async function fetchCachedBuild({ artifactName, remoteCacheProvider, }) {
12
+ if (remoteCacheProvider === null) {
13
+ return undefined;
14
+ }
15
+ if (remoteCacheProvider === undefined) {
16
+ logger.warn(`No remote cache provider set. You won't be able to access reusable builds from e.g. GitHub Actions.
17
+ To configure it, set the "remoteCacheProvider" key in ${colorLink('rock.config.mjs')} file. For example:
18
+
19
+ import { providerGitHub } from '@rock-js/provider-github';
20
+ export default {
21
+ // ...
22
+ remoteCacheProvider: providerGitHub()
23
+ }
24
+
25
+ To disable this warning, set the provider to null:
26
+ {
27
+ remoteCacheProvider: null
28
+ }`);
29
+ return undefined;
30
+ }
31
+ const loader = spinner();
32
+ const localArtifactPath = getLocalArtifactPath(artifactName);
33
+ const remoteBuildCache = remoteCacheProvider();
34
+ const response = await remoteBuildCache.download({ artifactName });
35
+ loader.start(`Downloading cached build from ${color.bold(remoteBuildCache.name)}`);
36
+ await handleDownloadResponse(response, localArtifactPath, (progress, totalMB) => {
37
+ loader.message(`Downloading cached build from ${color.bold(remoteBuildCache.name)} (${progress}% of ${totalMB} MB)`);
38
+ });
39
+ await extractArtifactTarballIfNeeded(localArtifactPath);
40
+ const binaryPath = getLocalBinaryPath(localArtifactPath);
41
+ if (!binaryPath) {
42
+ loader.stop(`No binary found for ${color.bold(artifactName)}.`);
43
+ return undefined;
44
+ }
45
+ loader.stop(`Downloaded cached build to: ${colorLink(relativeToCwd(localArtifactPath))}`);
46
+ return {
47
+ name: artifactName,
48
+ artifactPath: localArtifactPath,
49
+ binaryPath,
50
+ };
51
+ }
52
+ async function trackProgressFromStream(response, onProgress) {
53
+ const contentLength = response.headers.get('content-length');
54
+ if (!contentLength || !response.body) {
55
+ return response;
56
+ }
57
+ const totalBytes = parseInt(contentLength, 10);
58
+ const totalMB = (totalBytes / 1024 / 1024).toFixed(2);
59
+ let processedBytes = 0;
60
+ const reader = response.body.getReader();
61
+ const stream = new ReadableStream({
62
+ async start(controller) {
63
+ while (true) {
64
+ const { done, value } = await reader.read();
65
+ if (done) {
66
+ break;
67
+ }
68
+ processedBytes += value.length;
69
+ const progress = ((processedBytes / totalBytes) * 100).toFixed(0);
70
+ onProgress(progress, totalMB);
71
+ controller.enqueue(value);
72
+ }
73
+ controller.close();
74
+ },
75
+ });
76
+ return new Response(stream);
77
+ }
78
+ export async function handleDownloadResponse(response, localArtifactPath, onProgress) {
79
+ try {
80
+ fs.mkdirSync(localArtifactPath, { recursive: true });
81
+ if (!response.ok || !response.body) {
82
+ throw new Error(`Failed to download artifact: ${response.statusText}`);
83
+ }
84
+ const responseWithProgress = await trackProgressFromStream(response, onProgress);
85
+ const zipPath = localArtifactPath + '.zip';
86
+ const buffer = await responseWithProgress.arrayBuffer();
87
+ fs.writeFileSync(zipPath, new Uint8Array(buffer));
88
+ unzipFile(zipPath, localArtifactPath);
89
+ fs.unlinkSync(zipPath);
90
+ }
91
+ catch (error) {
92
+ throw new RockError(`Unexpected error`, { cause: error });
93
+ }
94
+ }
95
+ export async function handleUploadResponse(getResponse, buffer, onProgress) {
96
+ try {
97
+ const response = getResponse(buffer);
98
+ if (!response.body) {
99
+ throw new Error('Response body is empty');
100
+ }
101
+ const responseWithProgress = await trackProgressFromStream(response, onProgress);
102
+ await responseWithProgress.arrayBuffer();
103
+ }
104
+ catch (error) {
105
+ throw new RockError(`Unexpected error during upload`, { cause: error });
106
+ }
107
+ }
108
+ function unzipFile(zipPath, targetPath) {
109
+ const zip = new AdmZip(zipPath);
110
+ zip.extractAllTo(targetPath, true);
111
+ }
112
+ async function extractArtifactTarballIfNeeded(artifactPath) {
113
+ const tarPath = path.join(artifactPath, 'app.tar.gz');
114
+ // If the tarball is not found, it means the artifact is already unpacked.
115
+ if (!fs.existsSync(tarPath)) {
116
+ return;
117
+ }
118
+ // iOS simulator build artifact (*.app directory) is packed in .tar.gz file to
119
+ // preserve execute file permission.
120
+ // See: https://github.com/actions/upload-artifact?tab=readme-ov-file#permission-loss
121
+ await tar.extract({
122
+ file: tarPath,
123
+ cwd: artifactPath,
124
+ gzip: true,
125
+ });
126
+ fs.unlinkSync(tarPath);
127
+ }
128
+ //# sourceMappingURL=fetchCachedBuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchCachedBuild.js","sourceRoot":"","sources":["../../../../src/lib/build-cache/fetchCachedBuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type FingerprintSources } from '../fingerprint/index.js';
2
+ import type { RemoteBuildCache } from './common.js';
3
+ export declare function getBinaryPath({ artifactName, binaryPathFlag, localFlag, remoteCacheProvider, fingerprintOptions, sourceDir, }: {
4
+ artifactName: string;
5
+ binaryPathFlag?: string;
6
+ localFlag?: boolean;
7
+ remoteCacheProvider: null | (() => RemoteBuildCache) | undefined;
8
+ fingerprintOptions: FingerprintSources;
9
+ sourceDir: string;
10
+ }): Promise<string | undefined>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBinaryPath.d.ts","sourceRoot":"","sources":["../../../../src/lib/build-cache/getBinaryPath.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,wBAAsB,aAAa,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,GACV,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,IAAI,GAAG,CAAC,MAAM,gBAAgB,CAAC,GAAG,SAAS,CAAC;IACjE,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB,+BAiCA"}
@@ -0,0 +1,60 @@
1
+ import { color, colorLink } from '../color.js';
2
+ import { DEFAULT_IGNORE_PATHS, EXPO_DEFAULT_IGNORE_PATHS, } from '../fingerprint/index.js';
3
+ import logger from '../logger.js';
4
+ import { spawn } from '../spawn.js';
5
+ import { fetchCachedBuild } from './fetchCachedBuild.js';
6
+ import { getLocalBuildCacheBinaryPath } from './localBuildCache.js';
7
+ export async function getBinaryPath({ artifactName, binaryPathFlag, localFlag, remoteCacheProvider, fingerprintOptions, sourceDir, }) {
8
+ // 1. First check if the binary path is provided
9
+ let binaryPath = binaryPathFlag;
10
+ // 2. If not, check if the local build is requested
11
+ if (!binaryPath && !localFlag) {
12
+ binaryPath = getLocalBuildCacheBinaryPath(artifactName);
13
+ }
14
+ // 3. If not, check if the remote cache is requested
15
+ if (!binaryPath && !localFlag) {
16
+ try {
17
+ const cachedBuild = await fetchCachedBuild({
18
+ artifactName,
19
+ remoteCacheProvider,
20
+ });
21
+ if (cachedBuild) {
22
+ binaryPath = cachedBuild.binaryPath;
23
+ }
24
+ }
25
+ catch (error) {
26
+ const message = error.message;
27
+ const cause = error.cause;
28
+ logger.warn(`Failed to fetch cached build for ${artifactName}: \n${message}`, cause ? `\nCause: ${cause.toString()}` : '');
29
+ await warnIgnoredFiles(fingerprintOptions, sourceDir);
30
+ logger.debug('Remote cache failure error:', error);
31
+ logger.info('Continuing with local build');
32
+ }
33
+ }
34
+ return binaryPath;
35
+ }
36
+ async function warnIgnoredFiles(fingerprintOptions, sourceDir) {
37
+ const ignorePaths = [
38
+ ...(fingerprintOptions?.ignorePaths ?? []),
39
+ ...EXPO_DEFAULT_IGNORE_PATHS,
40
+ ...DEFAULT_IGNORE_PATHS,
41
+ ];
42
+ const { output } = await spawn('git', [
43
+ 'clean',
44
+ '-fdx',
45
+ '--dry-run',
46
+ sourceDir,
47
+ ...ignorePaths.flatMap((path) => ['-e', `${path}`]),
48
+ ]);
49
+ const ignoredFiles = output
50
+ .split('\n')
51
+ .map((line) => line.replace('Would remove ', ''))
52
+ .filter((line) => line !== '');
53
+ if (ignoredFiles.length > 0) {
54
+ logger.warn(`There are files that likely affect fingerprint:
55
+ ${ignoredFiles.map((file) => `- ${color.bold(file)}`).join('\n')}
56
+ Consider removing them or update ${color.bold('fingerprint.ignorePaths')} in ${colorLink('rock.config.mjs')}:
57
+ Read more: ${colorLink('https://www.rockjs.dev/docs/configuration#fingerprint-configuration')}`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=getBinaryPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBinaryPath.js","sourceRoot":"","sources":["../../../../src/lib/build-cache/getBinaryPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type LocalBuild = {
2
+ name: string;
3
+ artifactPath: string;
4
+ binaryPath: string;
5
+ };
6
+ export declare function queryLocalBuildCache(artifactName: string): LocalBuild | null;
7
+ export declare function saveLocalBuildCache(artifactName: string, binaryPath: string): void;
8
+ export declare function getLocalBuildCacheBinaryPath(artifactName: string): string | undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localBuildCache.d.ts","sourceRoot":"","sources":["../../../../src/lib/build-cache/localBuildCache.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAc5E;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAsB3E;AAED,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CASpB"}
@@ -0,0 +1,50 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { color, colorLink } from '../color.js';
4
+ import logger from '../logger.js';
5
+ import { relativeToCwd } from '../path.js';
6
+ import { getLocalArtifactPath, getLocalBinaryPath } from './common.js';
7
+ export function queryLocalBuildCache(artifactName) {
8
+ const artifactPath = getLocalArtifactPath(artifactName);
9
+ if (!fs.statSync(artifactPath, { throwIfNoEntry: false })?.isDirectory()) {
10
+ return null;
11
+ }
12
+ const binaryPath = getLocalBinaryPath(artifactPath);
13
+ if (binaryPath == null || !fs.existsSync(binaryPath)) {
14
+ return null;
15
+ }
16
+ return {
17
+ name: artifactName,
18
+ artifactPath,
19
+ binaryPath,
20
+ };
21
+ }
22
+ export function saveLocalBuildCache(artifactName, binaryPath) {
23
+ try {
24
+ const cachePath = getLocalArtifactPath(artifactName);
25
+ if (!fs.existsSync(cachePath)) {
26
+ fs.mkdirSync(cachePath, { recursive: true });
27
+ }
28
+ if (fs.statSync(binaryPath).isDirectory()) {
29
+ fs.cpSync(binaryPath, path.join(cachePath, path.basename(binaryPath)), {
30
+ recursive: true,
31
+ });
32
+ }
33
+ else {
34
+ fs.copyFileSync(binaryPath, path.join(cachePath, path.basename(binaryPath)));
35
+ }
36
+ logger.debug(`Saved build cache to: ${colorLink(relativeToCwd(cachePath))}`);
37
+ }
38
+ catch (error) {
39
+ logger.debug('Failed to copy binary to local build cache', error);
40
+ }
41
+ }
42
+ export function getLocalBuildCacheBinaryPath(artifactName) {
43
+ const localBuild = queryLocalBuildCache(artifactName);
44
+ if (localBuild) {
45
+ logger.log(`Found build cache for: ${color.bold(color.blue(localBuild.name))}`);
46
+ return localBuild.binaryPath;
47
+ }
48
+ return undefined;
49
+ }
50
+ //# sourceMappingURL=localBuildCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localBuildCache.js","sourceRoot":"","sources":["../../../../src/lib/build-cache/localBuildCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQvE,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,UAAU,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB,EAAE,UAAkB;IAC1E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1C,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;gBACrE,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,YAAY,CACb,UAAU,EACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAChD,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,KAAK,CACV,yBAAyB,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,YAAoB;IAEpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CACR,0BAA0B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CACpE,CAAC;QACF,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { getCacheRootPath } from './project.js';
2
+ type CacheKey = string;
3
+ export declare function getCacheFile(): string;
4
+ declare function removeProjectCache(): void;
5
+ declare function get(key: CacheKey): string | undefined;
6
+ declare function set(key: CacheKey, value: string): void;
7
+ declare function remove(key: CacheKey): void;
8
+ declare const _default: {
9
+ get: typeof get;
10
+ set: typeof set;
11
+ remove: typeof remove;
12
+ removeProjectCache: typeof removeProjectCache;
13
+ getCacheRootPath: typeof getCacheRootPath;
14
+ };
15
+ export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../../../src/lib/cacheManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,KAAK,QAAQ,GAAG,MAAM,CAAC;AAGvB,wBAAgB,YAAY,WAE3B;AAwBD,iBAAS,kBAAkB,SAc1B;AAED,iBAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAG9C;AAED,iBAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAIxC;AAED,iBAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,QAI5B;;;;;;;;AAED,wBAME"}
@@ -0,0 +1,63 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { colorLink } from './color.js';
4
+ import { RockError } from './error.js';
5
+ import logger from './logger.js';
6
+ import { getCacheRootPath } from './project.js';
7
+ const CACHE_FILE_NAME = 'project.json';
8
+ export function getCacheFile() {
9
+ return path.join(getCacheRootPath(), CACHE_FILE_NAME);
10
+ }
11
+ function loadCache() {
12
+ try {
13
+ const cachePath = path.resolve(getCacheFile());
14
+ if (!fs.existsSync(cachePath)) {
15
+ logger.debug(`No cache found at: ${cachePath}`);
16
+ return {};
17
+ }
18
+ const content = fs.readFileSync(cachePath, 'utf8');
19
+ return JSON.parse(content);
20
+ }
21
+ catch (error) {
22
+ logger.warn('Failed to load cache', error);
23
+ return {};
24
+ }
25
+ }
26
+ function saveCache(cache) {
27
+ const cachePath = path.resolve(getCacheFile());
28
+ fs.mkdirSync(path.dirname(cachePath), { recursive: true });
29
+ fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2));
30
+ }
31
+ function removeProjectCache() {
32
+ try {
33
+ const cachePath = path.resolve(getCacheFile());
34
+ if (fs.existsSync(cachePath)) {
35
+ fs.rmSync(cachePath, { recursive: true });
36
+ }
37
+ }
38
+ catch (error) {
39
+ throw new RockError(`Failed to remove cache for ${name}. If you experience any issues when running freshly initialized project, please remove the "${colorLink(path.join(getCacheFile()))}" folder manually.`, { cause: error });
40
+ }
41
+ }
42
+ function get(key) {
43
+ const cache = loadCache();
44
+ return cache[key];
45
+ }
46
+ function set(key, value) {
47
+ const cache = loadCache();
48
+ cache[key] = value;
49
+ saveCache(cache);
50
+ }
51
+ function remove(key) {
52
+ const cache = loadCache();
53
+ delete cache[key];
54
+ saveCache(cache);
55
+ }
56
+ export default {
57
+ get,
58
+ set,
59
+ remove,
60
+ removeProjectCache,
61
+ getCacheRootPath,
62
+ };
63
+ //# sourceMappingURL=cacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../src/lib/cacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import color from 'picocolors';
2
+ export { color };
3
+ export declare function colorLink(text: string): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/lib/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAErC"}
@@ -0,0 +1,6 @@
1
+ import color from 'picocolors';
2
+ export { color };
3
+ export function colorLink(text) {
4
+ return color.cyan(color.underline(color.bold(text)));
5
+ }
6
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/lib/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const findDevServerPort: (initialPort: number, root: string) => Promise<{
2
+ port: string;
3
+ startDevServer: boolean;
4
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findDevServerPort.d.ts","sourceRoot":"","sources":["../../../../src/lib/dev-server/findDevServerPort.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,gBACf,MAAM,QACb,MAAM,KACX,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;CACzB,CAuBA,CAAC"}