1#!/usr/bin/env node
2
3import glob from 'glob';
4import { execa } from 'execa';
5
6import {
7 getPackageManifest,
8 updatePackageManifest,
9 listPackages,
10} from '../actions/lib/packages.mjs';
11import { updateJsr } from './jsr.mjs';
12
13const versionRe = /^\d+\.\d+\.\d+/i;
14const execaOpts = { stdio: 'inherit' };
15
16await execa('changeset', ['version'], execaOpts);
17await execa('pnpm', ['install', '--lockfile-only'], execaOpts);
18
19const packages = (await listPackages()).reduce((map, dir) => {
20 const manifest = getPackageManifest(dir);
21 const versionMatch = manifest.version.match(versionRe);
22 if (versionMatch) {
23 const { name } = manifest;
24 const version = `^${versionMatch[0]}`;
25 map[name] = version;
26 }
27 return map;
28}, {});
29
30const examples = (await glob('./examples/*/')).filter(
31 x => !/node_modules$/.test(x)
32);
33for (const example of examples) {
34 let hadMatch = false;
35
36 const manifest = getPackageManifest(example);
37
38 if (manifest.dependencies) {
39 for (const name in manifest.dependencies) {
40 hadMatch = hadMatch || !!packages[name];
41 if (packages[name] && packages[name] !== manifest.dependencies)
42 manifest.dependencies[name] = packages[name];
43 }
44 }
45
46 if (manifest.devDependencies) {
47 for (const name in manifest.devDependencies) {
48 hadMatch = hadMatch || !!packages[name];
49 if (packages[name] && packages[name] !== manifest.devDependencies)
50 manifest.devDependencies[name] = packages[name];
51 }
52 }
53
54 if (
55 hadMatch &&
56 !(manifest.devDependencies || {})['@urql/core'] &&
57 !(manifest.dependencies || {})['@urql/core']
58 ) {
59 (manifest.dependencies || manifest.devDependencies || {})['@urql/core'] =
60 packages['@urql/core'];
61 }
62
63 await updatePackageManifest(example, manifest);
64}
65
66await updateJsr();