Skip to content

Commit 9de2198

Browse files
Remove @semantic-release/exec, adjust how next version is acquired
1 parent fa177aa commit 9de2198

File tree

8 files changed

+59
-88
lines changed

8 files changed

+59
-88
lines changed

.releaserc.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,6 @@
7171
}
7272
}
7373
],
74-
[
75-
"@semantic-release/exec",
76-
{
77-
"prepareCmd": "NEXT_VERSION=${nextRelease.version} npm run build"
78-
}
79-
],
8074
[
8175
"@semantic-release/changelog",
8276
{

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@
185185
"@ladle/react": "^0.16.0",
186186
"@playwright/test": "^1.42.1",
187187
"@semantic-release/changelog": "^6.0.3",
188-
"@semantic-release/exec": "^7.0.3",
189188
"@semantic-release/git": "^10.0.1",
190189
"@stream-io/stream-chat-css": "^5.7.2",
191190
"@testing-library/dom": "^10.4.0",
@@ -220,7 +219,6 @@
220219
"dotenv": "^8.6.0",
221220
"emoji-mart": "^5.5.2",
222221
"esbuild": "^0.23.1",
223-
"esbuild-plugin-replace": "^1.4.0",
224222
"eslint": "^9.16.0",
225223
"eslint-plugin-import": "^2.31.0",
226224
"eslint-plugin-jest": "^28.11.0",
@@ -271,7 +269,8 @@
271269
"e2e-fixtures": "node e2e/fixtures/fixtures.mjs",
272270
"e2e-container": "./e2e/scripts/run_in_container.sh",
273271
"docs:copy-css-docs": "scripts/merge-stream-chat-css-docs.sh node_modules/@stream-io/stream-chat-css/docs",
274-
"docs:run": "yarn docs:copy-css-docs && stream-chat-docusaurus -s"
272+
"docs:run": "yarn docs:copy-css-docs && stream-chat-docusaurus -s",
273+
"prepack": "yarn build"
275274
},
276275
"resolutions": {
277276
"ast-types": "^0.14.0",

scripts/bundle-cjs.mjs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import { dirname, resolve } from 'node:path';
44
import { fileURLToPath } from 'node:url';
55
import * as esbuild from 'esbuild';
6-
import { replace } from 'esbuild-plugin-replace';
7-
import getPackageVersion from './getPackageVersion.mjs';
6+
import getPackageVersion from './get-package-version.mjs';
87
import packageJson from '../package.json' with { type: 'json' };
98

109
// import.meta.dirname is not available before Node 20
@@ -34,7 +33,12 @@ const external = deps.filter((dep) => !bundledDeps.includes(dep));
3433

3534
/** @type esbuild.BuildOptions */
3635
const cjsBundleConfig = {
37-
entryPoints: [sdkEntrypoint, emojiEntrypoint, mp3EncoderEntrypoint, experimentalEntrypoint],
36+
entryPoints: [
37+
sdkEntrypoint,
38+
emojiEntrypoint,
39+
mp3EncoderEntrypoint,
40+
experimentalEntrypoint,
41+
],
3842
bundle: true,
3943
format: 'cjs',
4044
target: 'es2020',
@@ -52,11 +56,9 @@ const bundles = ['browser', 'node'].map((platform) =>
5256
...cjsBundleConfig,
5357
entryNames: `[dir]/[name].${platform}`,
5458
platform,
55-
plugins: [
56-
replace({
57-
__STREAM_CHAT_REACT_VERSION__: getPackageVersion(),
58-
}),
59-
],
59+
define: {
60+
'process.env.STREAM_CHAT_REACT_VERSION': JSON.stringify(getPackageVersion()),
61+
},
6062
}),
6163
);
6264
await Promise.all(bundles);

scripts/bundle-esm.mjs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,32 @@ import { exec } from 'node:child_process';
44
import { readFile, writeFile } from 'node:fs/promises';
55
import glob from 'glob';
66
import { promisify } from 'node:util';
7-
import getPackageVersion from "./getPackageVersion.mjs";
7+
import getPackageVersion from './get-package-version.mjs';
88

99
const execAsync = promisify(exec);
1010

1111
const version = getPackageVersion();
1212

1313
const bundleEsm = async () => {
14-
// Run TypeScript compiler
15-
console.log('Running TypeScript compiler...');
16-
await execAsync('tsc');
14+
// Run TypeScript compiler
15+
console.log('Running TypeScript compiler...');
16+
await execAsync('tsc');
1717

18-
// Replace version string in generated files
19-
console.log('Replacing version strings...');
20-
const files = glob.glob.sync('dist/**/*.js');
21-
await Promise.all(
22-
files.map(async (file) => {
23-
const content = await readFile(file, 'utf8');
24-
const newContent = content.replace(/__STREAM_CHAT_REACT_VERSION__/g, version);
25-
await writeFile(file, newContent);
26-
})
27-
);
18+
// Replace version string in generated files
19+
console.log('Replacing version strings...');
20+
const files = glob.glob.sync('dist/**/*.js');
21+
await Promise.all(
22+
files.map(async (file) => {
23+
const content = await readFile(file, 'utf8');
24+
const newContent = content.replace(
25+
/process.env.STREAM_CHAT_REACT_VERSION/g,
26+
JSON.stringify(version),
27+
);
28+
await writeFile(file, newContent);
29+
}),
30+
);
2831

29-
console.log('ESM build complete');
32+
console.log('ESM build complete');
3033
};
3134

32-
bundleEsm().catch(console.error);
35+
bundleEsm().catch(console.error);

scripts/get-package-version.mjs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { execSync } from 'node:child_process';
2+
import packageJson from '../package.json' with { type: 'json' };
3+
4+
// get the latest version so that "__STREAM_CHAT_REACT_VERSION__" can be replaced with it in the source code (used for reporting purposes), see bundle-cjs.mjs/bundle-esm.mjs for source
5+
export default function getPackageVersion() {
6+
// "build" script ("prepack" hook) gets invoked when semantic-release runs "npm publish", at that point package.json#version already contains updated next version which we can use
7+
let version = packageJson.version;
8+
9+
// if it fails (loads a default), try pulling version from git
10+
if (version === '0.0.0-development') {
11+
try {
12+
version = execSync('git describe --tags --abbrev=0').toString().trim();
13+
} catch (error) {
14+
console.error(error);
15+
console.warn(
16+
'Could not get latest version from git tags, falling back to package.json',
17+
);
18+
version = packageJson.version;
19+
}
20+
}
21+
22+
console.log(`Determined the build package version to be ${version}`);
23+
24+
return version;
25+
}

scripts/getPackageVersion.mjs

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/components/Chat/hooks/useChat.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,13 @@ export const useChat = <
6666
useEffect(() => {
6767
if (!client) return;
6868

69+
const version = process.env.STREAM_CHAT_REACT_VERSION;
70+
6971
const userAgent = client.getUserAgent();
7072
if (!userAgent.includes('stream-chat-react')) {
7173
// result looks like: 'stream-chat-react-2.3.2-stream-chat-javascript-client-browser-2.2.2'
7274
// the upper-case text between double underscores is replaced with the actual semantic version of the library
73-
client.setUserAgent(`stream-chat-react-__STREAM_CHAT_REACT_VERSION__-${userAgent}`);
75+
client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
7476
}
7577

7678
client.threads.registerSubscriptions();

yarn.lock

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2277,18 +2277,6 @@
22772277
resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-4.0.0.tgz#692810288239637f74396976a9340fbc0aa9f6f9"
22782278
integrity sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==
22792279

2280-
"@semantic-release/exec@^7.0.3":
2281-
version "7.0.3"
2282-
resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-7.0.3.tgz#be0b2d8e7e2bcf05076fc48914a643b939c2c151"
2283-
integrity sha512-uNWwPNtWi3WTcTm3fWfFQEuj8otOvwoS5m9yo2jSVHuvqdZNsOWmuL0/FqcVyZnCI32fxyYV0G7PPb/TzCH6jw==
2284-
dependencies:
2285-
"@semantic-release/error" "^4.0.0"
2286-
aggregate-error "^3.0.0"
2287-
debug "^4.0.0"
2288-
execa "^9.0.0"
2289-
lodash-es "^4.17.21"
2290-
parse-json "^8.0.0"
2291-
22922280
"@semantic-release/git@^10.0.1":
22932281
version "10.0.1"
22942282
resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-10.0.1.tgz#c646e55d67fae623875bf3a06a634dd434904498"
@@ -5397,13 +5385,6 @@ [email protected]:
53975385
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz#e99f8cdc63f1628747b63edd124d53cf7796468d"
53985386
integrity sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==
53995387

5400-
esbuild-plugin-replace@^1.4.0:
5401-
version "1.4.0"
5402-
resolved "https://registry.yarnpkg.com/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz#2051eb35e21699e41dcf75630f613bdaa5039be6"
5403-
integrity sha512-lP3ZAyzyRa5JXoOd59lJbRKNObtK8pJ/RO7o6vdjwLi71GfbL32NR22ZuS7/cLZkr10/L1lutoLma8E4DLngYg==
5404-
dependencies:
5405-
magic-string "^0.25.7"
5406-
54075388
54085389
version "0.14.27"
54095390
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz#8611d825bcb8239c78d57452e83253a71942f45c"
@@ -8834,13 +8815,6 @@ lz-string@^1.5.0:
88348815
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
88358816
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
88368817

8837-
magic-string@^0.25.7:
8838-
version "0.25.9"
8839-
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
8840-
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
8841-
dependencies:
8842-
sourcemap-codec "^1.4.8"
8843-
88448818
make-dir@^2.0.0, make-dir@^2.1.0:
88458819
version "2.1.0"
88468820
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -12022,11 +11996,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
1202211996
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1202311997
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1202411998

12025-
sourcemap-codec@^1.4.8:
12026-
version "1.4.8"
12027-
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
12028-
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
12029-
1203011999
space-separated-tokens@^2.0.0:
1203112000
version "2.0.2"
1203212001
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f"

0 commit comments

Comments
 (0)