| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @module | 
					
						
							| 
									
										
										
										
											2024-12-22 15:45:54 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  |  * The nightly version works uses the version described in `package.json`, just like any release. | 
					
						
							|  |  |  |  * The problem with this approach is that production builds have a very aggressive cache, and | 
					
						
							|  |  |  |  * usually running the nightly with this cached version of the application will mean that the | 
					
						
							|  |  |  |  * user might run into module not found errors or styling errors caused by an old cache. | 
					
						
							| 
									
										
										
										
											2024-12-22 15:45:54 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  |  * This script is supposed to be run in the CI, which will update locally the version field of | 
					
						
							| 
									
										
										
										
											2024-11-02 11:04:16 +02:00
										 |  |  |  * `package.json` to contain the date. For example, `0.90.9-beta` will become `0.90.9-test-YYMMDD-HHMMSS`. | 
					
						
							| 
									
										
										
										
											2024-12-22 15:45:54 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { fileURLToPath } from "url"; | 
					
						
							|  |  |  | import { dirname, join } from "path"; | 
					
						
							|  |  |  | import fs from "fs"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function processVersion(version) { | 
					
						
							|  |  |  |     // Remove the beta suffix if any.
 | 
					
						
							|  |  |  |     version = version.replace("-beta", ""); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Add the nightly suffix, plus the date.
 | 
					
						
							| 
									
										
										
										
											2025-01-09 18:07:02 +02:00
										 |  |  |     const referenceDate = new Date().toISOString().substring(2, 19).replace(/[-:]*/g, "").replace("T", "-"); | 
					
						
							| 
									
										
										
										
											2024-11-02 11:04:16 +02:00
										 |  |  |     version = `${version}-test-${referenceDate}`; | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return version; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-18 16:41:41 +03:00
										 |  |  | function patchPackageJson(packageJsonPath) { | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  |     // Read the version from package.json and process it.
 | 
					
						
							|  |  |  |     const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); | 
					
						
							|  |  |  |     const currentVersion = packageJson.version; | 
					
						
							|  |  |  |     const adjustedVersion = processVersion(currentVersion); | 
					
						
							|  |  |  |     console.log("Current version is", currentVersion); | 
					
						
							|  |  |  |     console.log("Adjusted version is", adjustedVersion); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Write the adjusted version back in.
 | 
					
						
							|  |  |  |     packageJson.version = adjustedVersion; | 
					
						
							| 
									
										
										
										
											2024-12-22 15:45:54 +02:00
										 |  |  |     const formattedJson = JSON.stringify(packageJson, null, 4); | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  |     fs.writeFileSync(packageJsonPath, formattedJson); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-18 16:41:41 +03:00
										 |  |  | function main() { | 
					
						
							|  |  |  |     const scriptDir = dirname(fileURLToPath(import.meta.url)); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     const rootPackageJson = join(scriptDir, "..", "package.json"); | 
					
						
							|  |  |  |     patchPackageJson(rootPackageJson); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     for (const app of ["server", "client"]) { | 
					
						
							|  |  |  |         const appPackageJsonPath = join(scriptDir, "..", "apps", app, "package.json"); | 
					
						
							|  |  |  |         patchPackageJson(appPackageJsonPath); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-02 09:47:31 +02:00
										 |  |  | main(); |