diff --git a/.eslintrc.js b/.eslintrc.js index 540858f..ae39c28 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -73,6 +73,7 @@ module.exports = { rules: { 'react/jsx-uses-react': 'error', 'react/jsx-uses-vars': 'error', + 'tsdoc/syntax': 'off', }, parser: 'espree', parserOptions: { diff --git a/compatibility-tests/scripts/utils.mjs b/compatibility-tests/scripts/utils.mjs index 890d873..aa335dc 100644 --- a/compatibility-tests/scripts/utils.mjs +++ b/compatibility-tests/scripts/utils.mjs @@ -109,7 +109,7 @@ const packagesToPublish = [ * @param {string} hash - Hash of the latest commit (or any other string) * @returns {Promise<() => void>} - An async function that restores the package.json files to their original version */ -async function assignVersions(workspacesListObjects, hash) { +async function writeVersionsToPackageJSONs(workspacesListObjects, hash) { /** * An array of functions each of which restores a certain package.json to its original state * @type {Array<() => void>} @@ -181,7 +181,10 @@ async function releaseToVerdaccio() { .filter(Boolean) .map((x) => JSON.parse(x)) - const restorePackages = await assignVersions(workspacesListObjects, version) + const restorePackages = await writeVersionsToPackageJSONs( + workspacesListObjects, + version, + ) process.on('SIGINT', async function cleanup(a) { restorePackages() diff --git a/packages/browser-bundles/devEnv/build.ts b/packages/browser-bundles/devEnv/build.ts index e64126b..eb87eb0 100644 --- a/packages/browser-bundles/devEnv/build.ts +++ b/packages/browser-bundles/devEnv/build.ts @@ -4,6 +4,9 @@ import type {Plugin} from 'esbuild' const definedGlobals = { global: 'window', + 'process.env.THEATRE_VERSION': JSON.stringify( + require('../package.json').version, + ), } function createBundles(watch: boolean) { diff --git a/packages/r3f/devEnv/bundle.ts b/packages/r3f/devEnv/bundle.ts index 2b7eb84..f68a3bc 100644 --- a/packages/r3f/devEnv/bundle.ts +++ b/packages/r3f/devEnv/bundle.ts @@ -2,7 +2,9 @@ import path = require('path') import {build} from 'esbuild' const definedGlobals = { - 'process.env.version': JSON.stringify(require('../package.json').version), + 'process.env.THEATRE_VERSION': JSON.stringify( + require('../package.json').version, + ), 'process.env.NODE_ENV': JSON.stringify('production'), } diff --git a/scripts/prerelease.mjs b/scripts/prerelease.mjs index 3c534af..185742e 100644 --- a/scripts/prerelease.mjs +++ b/scripts/prerelease.mjs @@ -61,13 +61,17 @@ function getNewVersionName(packageName, commitHash) { } /** - * Assigns the new versions to the packages + * Assigns the latest version names ({@link getNewVersionName}) to the packages' `package.json`s * * @param {{name: string, location: string}[]} workspacesListObjects - An Array of objects containing information about the workspaces * @param {string} latestCommitHash - Hash of the latest commit * @returns {Promise>} - A record of {[packageId]: assignedVersion} */ -async function assignVersions(workspacesListObjects, latestCommitHash) { +async function writeVersionsToPackageJSONs( + workspacesListObjects, + latestCommitHash, +) { + /** @type {Record} */ const assignedVersionByPackageName = {} for (const workspaceData of workspacesListObjects) { const pathToPackage = path.resolve( @@ -130,6 +134,11 @@ async function assignVersions(workspacesListObjects, latestCommitHash) { const fakeMergeCommitHashLength = (await $`git log -1 --pretty=format:%h`) .stdout.length + if (!process.env.GITHUB_SHA) + throw new Error( + 'expected `process.env.GITHUB_SHA` to be defined but it was not', + ) + const latestCommitHash = process.env.GITHUB_SHA.slice( 0, fakeMergeCommitHashLength, @@ -142,7 +151,7 @@ async function assignVersions(workspacesListObjects, latestCommitHash) { .filter(Boolean) .map((x) => JSON.parse(x)) - const assignedVersionByPackageName = await assignVersions( + const assignedVersionByPackageName = await writeVersionsToPackageJSONs( workspacesListObjects, latestCommitHash, ) diff --git a/scripts/release.mjs b/scripts/release.mjs index 2281c14..6c1985e 100644 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -134,7 +134,7 @@ const packagesWhoseVersionsShouldBump = [ const skipTypescriptEmit = argv['skip-ts'] === true console.log('Assigning versions') - await assignVersions(version) + await writeVersionsToPackageJSONs(version) console.log('Building all packages') await Promise.all( @@ -163,7 +163,7 @@ const packagesWhoseVersionsShouldBump = [ $.verbose = true - await assignVersions(version) + await writeVersionsToPackageJSONs(version) console.log('Committing/tagging') @@ -188,7 +188,7 @@ const packagesWhoseVersionsShouldBump = [ })() /** @param {string} monorepoVersion */ -async function assignVersions(monorepoVersion) { +async function writeVersionsToPackageJSONs(monorepoVersion) { for (const packagePathRelativeFromRoot of packagesWhoseVersionsShouldBump) { const pathToPackage = path.resolve( __dirname, diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index cab8557..fc0b96d 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -5,12 +5,7 @@ "checkJs": true, "noEmit": true, "resolveJsonModule": true, - "types": [ - "zx" - ] + "types": ["zx", "node"] }, - "include": [ - "*.mjs", - "**/*.mjs", - ] -} \ No newline at end of file + "include": ["*.mjs", "**/*.mjs"] +} diff --git a/theatre/core/src/CoreBundle.ts b/theatre/core/src/CoreBundle.ts index 47cd948..a12364c 100644 --- a/theatre/core/src/CoreBundle.ts +++ b/theatre/core/src/CoreBundle.ts @@ -18,7 +18,7 @@ export default class CoreBundle { } get version() { - return process.env.version + return process.env.THEATRE_VERSION } getBitsForStudio(studio: Studio, callback: (bits: CoreBits) => void) { diff --git a/theatre/core/src/index.ts b/theatre/core/src/index.ts index c4521f9..10e7177 100644 --- a/theatre/core/src/index.ts +++ b/theatre/core/src/index.ts @@ -30,8 +30,10 @@ function registerCoreBundle() { if (typeof window == 'undefined') return // another core bundle may already be registered - // @ts-ignore ignore - const existingBundle = window[globalVariableNames.coreBundle] + + const existingBundle: CoreBundle | undefined = + // @ts-ignore ignore + window[globalVariableNames.coreBundle] if (typeof existingBundle !== 'undefined') { if ( diff --git a/theatre/devEnv/buildUtils.ts b/theatre/devEnv/buildUtils.ts index ab17fae..a48f3e1 100644 --- a/theatre/devEnv/buildUtils.ts +++ b/theatre/devEnv/buildUtils.ts @@ -2,7 +2,7 @@ import path from 'path' import {build} from 'esbuild' export const definedGlobals = { - 'process.env.version': JSON.stringify( + 'process.env.THEATRE_VERSION': JSON.stringify( require('../studio/package.json').version, ), // json-touch-patch (an unmaintained package) reads this value. We patch it to just 'Set', becauce diff --git a/theatre/globals.d.ts b/theatre/globals.d.ts index c5dcc60..fed1867 100644 --- a/theatre/globals.d.ts +++ b/theatre/globals.d.ts @@ -11,7 +11,7 @@ interface NodeModule { interface ProcessEnv { NODE_ENV: 'development' | 'production' | 'test' - version: string + THEATRE_VERSION: string } declare module '*.svg' { diff --git a/theatre/studio/src/checkForUpdates.ts b/theatre/studio/src/checkForUpdates.ts index 1e488dd..0d8dff7 100644 --- a/theatre/studio/src/checkForUpdates.ts +++ b/theatre/studio/src/checkForUpdates.ts @@ -26,7 +26,7 @@ export default async function checkForUpdates() { try { const response = await fetch( new Request( - `https://updates.theatrejs.com/updates/${process.env.version}`, + `https://updates.theatrejs.com/updates/${process.env.THEATRE_VERSION}`, ), ) if (response.ok) { diff --git a/theatre/studio/src/toolbars/MoreMenu/MoreMenu.tsx b/theatre/studio/src/toolbars/MoreMenu/MoreMenu.tsx index b208863..dc063dd 100644 --- a/theatre/studio/src/toolbars/MoreMenu/MoreMenu.tsx +++ b/theatre/studio/src/toolbars/MoreMenu/MoreMenu.tsx @@ -104,7 +104,7 @@ const UpdateDot = styled.div` border-radius: 50%; ` -const version: string = process.env.version ?? '0.4.0' +const version: string = process.env.THEATRE_VERSION ?? '0.4.0' const untaggedVersion: string = version.match(/^[^\-]+/)![0]