diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 9dcf81a13..6b607c6b5 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -213,8 +213,7 @@ jobs: node-version: 18 - name: Generate Release yml run: | - cp ./apps/electron/scripts/generate-yml.js . - node generate-yml.js + node ./apps/electron/scripts/generate-yml.js env: RELEASE_VERSION: ${{ needs.set-build-version.outputs.version }} - name: Create Release Draft diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index ba5e21db0..861f5541f 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -366,8 +366,7 @@ jobs: node-version: 18 - name: Generate Release yml run: | - cp ./apps/electron/scripts/generate-yml.js . - node generate-yml.js + node ./apps/electron/scripts/generate-yml.js env: RELEASE_VERSION: ${{ github.event.inputs.version || needs.before-make.outputs.RELEASE_VERSION }} - name: Create Release Draft diff --git a/.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch b/.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch new file mode 100644 index 000000000..1bf71c898 --- /dev/null +++ b/.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch @@ -0,0 +1,13 @@ +diff --git a/dist/util/forge-config.js b/dist/util/forge-config.js +index 3466ac1a340c8dfe5ea8997178961e8328457d68..cb83d7e9ee8b67896adda10dbdc0c7dae3a4004b 100644 +--- a/dist/util/forge-config.js ++++ b/dist/util/forge-config.js +@@ -130,7 +130,7 @@ exports.default = async (dir) => { + try { + // The loaded "config" could potentially be a static forge config, ESM module or async function + // eslint-disable-next-line @typescript-eslint/no-var-requires +- const loaded = require(path_1.default.resolve(dir, forgeConfig)); ++ const loaded = await import(path_1.default.resolve(dir, forgeConfig)); + const maybeForgeConfig = 'default' in loaded ? loaded.default : loaded; + forgeConfig = typeof maybeForgeConfig === 'function' ? await maybeForgeConfig() : maybeForgeConfig; + } diff --git a/apps/electron/forge.config.js b/apps/electron/forge.config.mjs similarity index 84% rename from apps/electron/forge.config.js rename to apps/electron/forge.config.mjs index 68ec86d1b..b07e5b860 100644 --- a/apps/electron/forge.config.js +++ b/apps/electron/forge.config.mjs @@ -1,23 +1,24 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +import cp from 'node:child_process'; +import { rm, symlink } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; -const path = require('node:path'); -const { rm, symlink } = require('node:fs/promises'); +import { utils } from '@electron-forge/core'; -const { - utils: { fromBuildIdentifier }, -} = require('@electron-forge/core'); - -const { +import { arch, buildType, icnsPath, - icoPath, iconPngPath, + iconUrl, + icoPath, platform, productName, - iconUrl, -} = require('./scripts/make-env'); +} from './scripts/make-env.js'; +const fromBuildIdentifier = utils.fromBuildIdentifier; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const makers = [ !process.env.SKIP_BUNDLE && platform === 'darwin' && { @@ -90,7 +91,7 @@ const makers = [ /** * @type {import('@electron-forge/shared-types').ForgeConfig} */ -module.exports = { +export default { buildIdentifier: buildType, packagerConfig: { name: productName, @@ -147,8 +148,6 @@ module.exports = { return; } - const { $ } = await import('zx'); - // TODO: right now we do not need the following // it is for octobase-node, but we dont use it for now. if (platform === 'darwin' && arch === 'arm64') { @@ -157,13 +156,17 @@ module.exports = { process.env.TARGET = 'aarch64-apple-darwin'; } - if (platform === 'win32') { - $.shell = 'powershell.exe'; - $.prefix = ''; - } - - // run yarn generate-assets - await $`yarn generate-assets`; + cp.spawnSync('yarn', ['generate-assets'], { + stdio: 'inherit', + env: { + ...process.env, + NODE_OPTIONS: (process.env.NODE_OPTIONS ?? '').replace( + '--loader ts-node/esm', + '' + ), + }, + cwd: __dirname, + }); }, }, }; diff --git a/apps/electron/package.json b/apps/electron/package.json index afb3d16e0..4f2fd6908 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -2,23 +2,23 @@ "name": "@affine/electron", "private": true, "version": "0.10.0-canary.1", - "author": "affine", + "author": "toeverything", "repository": { "url": "https://github.com/toeverything/AFFiNE", "type": "git" }, - "description": "AFFiNE App", + "description": "AFFiNE Desktop App", "homepage": "https://github.com/toeverything/AFFiNE", "scripts": { "start": "electron .", - "dev": "yarn cross-env DEV_SERVER_URL=http://localhost:8080 node scripts/dev.mjs", - "dev:prod": "yarn node scripts/dev.mjs", - "build": "NODE_ENV=production zx scripts/build-layers.mjs", - "build:dev": "NODE_ENV=development zx scripts/build-layers.mjs", - "generate-assets": "zx scripts/generate-assets.mjs", + "dev": "DEV_SERVER_URL=http://localhost:8080 yarn ts-node ./scripts/dev.ts", + "dev:prod": "yarn ts-node scripts/dev.ts", + "build": "NODE_ENV=production ts-node scripts/build-layers.ts", + "build:dev": "NODE_ENV=development ts-node scripts/build-layers.ts", + "generate-assets": "ts-node scripts/generate-assets.ts", "package": "electron-forge package", - "make": "electron-forge make", - "make-squirrel": "yarn ts-node-esm -T scripts/make-squirrel.mts" + "make": "NODE_OPTIONS=\"--loader ts-node/esm\" electron-forge make", + "make-squirrel": "yarn ts-node scripts/make-squirrel.ts" }, "config": { "forge": "./forge.config.js" @@ -51,7 +51,6 @@ "@toeverything/infra": "workspace:*", "@types/uuid": "^9.0.5", "builder-util-runtime": "^9.2.1", - "cross-env": "7.0.3", "electron": "^27.0.0", "electron-log": "^5.0.0-rc.1", "electron-squirrel-startup": "1.0.0", @@ -69,8 +68,7 @@ "uuid": "^9.0.1", "vitest": "0.34.6", "which": "^4.0.0", - "zod": "^3.22.4", - "zx": "^7.2.3" + "zod": "^3.22.4" }, "dependencies": { "async-call-rpc": "^6.3.1", @@ -89,7 +87,6 @@ } ] }, - "stableVersion": "0.5.3", "peerDependencies": { "ts-node": "*" } diff --git a/apps/electron/scripts/build-layers.mjs b/apps/electron/scripts/build-layers.ts similarity index 52% rename from apps/electron/scripts/build-layers.mjs rename to apps/electron/scripts/build-layers.ts index bd1db6d99..9b7ca95e1 100644 --- a/apps/electron/scripts/build-layers.mjs +++ b/apps/electron/scripts/build-layers.ts @@ -1,23 +1,12 @@ -#!/usr/bin/env zx -import 'zx/globals'; - import * as esbuild from 'esbuild'; -import { config } from './common.mjs'; - -const NODE_ENV = - process.env.NODE_ENV === 'development' ? 'development' : 'production'; - -if (process.platform === 'win32') { - $.shell = true; - $.prefix = ''; -} +import { config, mode } from './common'; async function buildLayers() { const common = config(); - const define = { - 'process.env.NODE_ENV': `"${NODE_ENV}"`, + const define: Record = { + 'process.env.NODE_ENV': `"${mode}"`, 'process.env.BUILD_TYPE': `"${process.env.BUILD_TYPE || 'stable'}"`, }; @@ -28,10 +17,10 @@ async function buildLayers() { } await esbuild.build({ - ...common.layers, + ...common, define: define, }); } await buildLayers(); -echo('Build layers done'); +console.log('Build layers done'); diff --git a/apps/electron/scripts/common.mjs b/apps/electron/scripts/common.mjs deleted file mode 100644 index 660811f7b..000000000 --- a/apps/electron/scripts/common.mjs +++ /dev/null @@ -1,59 +0,0 @@ -import { resolve } from 'node:path'; - -import { fileURLToPath } from 'url'; - -export const electronDir = fileURLToPath(new URL('..', import.meta.url)); - -export const rootDir = resolve(electronDir, '..', '..'); - -export const NODE_MAJOR_VERSION = 18; - -// hard-coded for now: -// fixme(xp): report error if app is not running on DEV_SERVER_URL -const DEV_SERVER_URL = process.env.DEV_SERVER_URL; - -/** @type 'production' | 'development'' */ -const mode = (process.env.NODE_ENV = process.env.NODE_ENV || 'development'); - -/** @return {{layers: import('esbuild').BuildOptions}} */ -export const config = () => { - const define = Object.fromEntries([ - ['process.env.NODE_ENV', `"${mode}"`], - ['process.env.USE_WORKER', '"true"'], - ]); - - if (DEV_SERVER_URL) { - define['process.env.DEV_SERVER_URL'] = `"${DEV_SERVER_URL}"`; - } - - return { - layers: { - entryPoints: [ - resolve(electronDir, './src/main/index.ts'), - resolve(electronDir, './src/preload/index.ts'), - resolve(electronDir, './src/helper/index.ts'), - ], - entryNames: '[dir]', - outdir: resolve(electronDir, './dist'), - bundle: true, - target: `node${NODE_MAJOR_VERSION}`, - platform: 'node', - external: [ - 'electron', - 'electron-updater', - '@toeverything/plugin-infra', - 'yjs', - 'semver', - 'tinykeys', - ], - define: define, - format: 'cjs', - loader: { - '.node': 'copy', - }, - assetNames: '[name]', - treeShaking: true, - sourcemap: 'linked', - }, - }; -}; diff --git a/apps/electron/scripts/common.ts b/apps/electron/scripts/common.ts new file mode 100644 index 000000000..c8b21e45e --- /dev/null +++ b/apps/electron/scripts/common.ts @@ -0,0 +1,57 @@ +import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import type { BuildOptions } from 'esbuild'; + +export const electronDir = fileURLToPath(new URL('..', import.meta.url)); + +export const rootDir = resolve(electronDir, '..', '..'); + +export const NODE_MAJOR_VERSION = 18; + +// hard-coded for now: +// fixme(xp): report error if app is not running on DEV_SERVER_URL +const DEV_SERVER_URL = process.env.DEV_SERVER_URL; + +export const mode = (process.env.NODE_ENV = + process.env.NODE_ENV || 'development'); + +export const config = (): BuildOptions => { + const define = Object.fromEntries([ + ['process.env.NODE_ENV', `"${mode}"`], + ['process.env.USE_WORKER', '"true"'], + ]); + + if (DEV_SERVER_URL) { + define['process.env.DEV_SERVER_URL'] = `"${DEV_SERVER_URL}"`; + } + + return { + entryPoints: [ + resolve(electronDir, './src/main/index.ts'), + resolve(electronDir, './src/preload/index.ts'), + resolve(electronDir, './src/helper/index.ts'), + ], + entryNames: '[dir]', + outdir: resolve(electronDir, './dist'), + bundle: true, + target: `node${NODE_MAJOR_VERSION}`, + platform: 'node', + external: [ + 'electron', + 'electron-updater', + '@toeverything/plugin-infra', + 'yjs', + 'semver', + 'tinykeys', + ], + define: define, + format: 'cjs', + loader: { + '.node': 'copy', + }, + assetNames: '[name]', + treeShaking: true, + sourcemap: 'linked', + }; +}; diff --git a/apps/electron/scripts/dev.mjs b/apps/electron/scripts/dev.ts similarity index 87% rename from apps/electron/scripts/dev.mjs rename to apps/electron/scripts/dev.ts index 5de488c82..28488ff3b 100644 --- a/apps/electron/scripts/dev.mjs +++ b/apps/electron/scripts/dev.ts @@ -1,10 +1,11 @@ /* eslint-disable no-async-promise-executor */ import { spawn } from 'node:child_process'; +import type { ChildProcessWithoutNullStreams } from 'child_process'; import electronPath from 'electron'; import * as esbuild from 'esbuild'; -import { config } from './common.mjs'; +import { config } from './common'; // this means we don't spawn electron windows, mainly for testing const watchMode = process.argv.includes('--watch'); @@ -17,8 +18,7 @@ const stderrFilterPatterns = [ /ExtensionLoadWarning/, ]; -/** @type {ChildProcessWithoutNullStreams | null} */ -let spawnProcess = null; +let spawnProcess: ChildProcessWithoutNullStreams | null = null; function spawnOrReloadElectron() { if (watchMode) { @@ -33,7 +33,7 @@ function spawnOrReloadElectron() { spawnProcess = spawn(String(electronPath), ['.']); spawnProcess.stdout.on('data', d => { - let str = d.toString().trim(); + const str = d.toString().trim(); if (str) { console.log(str); } @@ -53,13 +53,13 @@ function spawnOrReloadElectron() { const common = config(); async function watchLayers() { - return new Promise(async resolve => { + return new Promise(async resolve => { let initialBuild = false; const buildContext = await esbuild.context({ - ...common.layers, + ...common, plugins: [ - ...(common.layers.plugins ?? []), + ...(common.plugins ?? []), { name: 'electron-dev:reload-app-on-layers-change', setup(build) { diff --git a/apps/electron/scripts/generate-assets.mjs b/apps/electron/scripts/generate-assets.ts similarity index 78% rename from apps/electron/scripts/generate-assets.mjs rename to apps/electron/scripts/generate-assets.ts index ac2b86547..32847d8ce 100755 --- a/apps/electron/scripts/generate-assets.mjs +++ b/apps/electron/scripts/generate-assets.ts @@ -1,10 +1,13 @@ -#!/usr/bin/env zx -import 'zx/globals'; - +import { spawnSync } from 'node:child_process'; import { createRequire } from 'node:module'; import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import fs from 'fs-extra'; +import { glob } from 'glob'; const require = createRequire(import.meta.url); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const repoRootDir = path.join(__dirname, '..', '..', '..'); const electronRootDir = path.join(__dirname, '..'); @@ -32,24 +35,31 @@ if (releaseVersionEnv && electronPackageJson.version !== releaseVersionEnv) { } // copy web dist files to electron dist -if (process.platform === 'win32') { - $.shell = 'powershell.exe'; - $.prefix = ''; -} +process.env.DISTRIBUTION = 'desktop'; -$.env.DISTRIBUTION = 'desktop'; - -cd(repoRootDir); +const cwd = repoRootDir; if (!process.env.SKIP_PLUGIN_BUILD) { - await $`yarn -T run build:plugins`; + spawnSync('yarn', ['build:plugins'], { + stdio: 'inherit', + env: process.env, + cwd, + }); } -// step 1: build web (nextjs) dist +// step 1: build web dist if (!process.env.SKIP_WEB_BUILD) { - await $`yarn nx build @affine/core`; + spawnSync('yarn', ['nx', 'build', '@affine/core'], { + stdio: 'inherit', + env: process.env, + cwd, + }); - await $`yarn workspace @affine/electron build`; + spawnSync('yarn', ['workspace', '@affine/electron', 'build'], { + stdio: 'inherit', + env: process.env, + cwd, + }); // step 1.5: amend sourceMappingURL to allow debugging in devtools await glob('**/*.{js,css}', { cwd: affineCoreOutDir }).then(files => { diff --git a/apps/electron/scripts/generate-yml.js b/apps/electron/scripts/generate-yml.js index 1911fedb4..21b8ae3fe 100644 --- a/apps/electron/scripts/generate-yml.js +++ b/apps/electron/scripts/generate-yml.js @@ -1,9 +1,6 @@ -// do not run in your local machine -/* eslint-disable */ -const fs = require('node:fs'); -const path = require('node:path'); -const crypto = require('node:crypto'); -/* eslint-enable */ +import crypto from 'node:crypto'; +import fs from 'node:fs'; +import path from 'node:path'; const yml = { version: process.env.RELEASE_VERSION ?? '0.0.0', @@ -12,9 +9,9 @@ const yml = { const generateYml = platform => { const regex = new RegExp(`^affine-.*-${platform}-.*.(exe|zip|dmg|AppImage)$`); - const files = fs.readdirSync(__dirname).filter(file => regex.test(file)); + const files = fs.readdirSync(process.cwd()).filter(file => regex.test(file)); files.forEach(fileName => { - const filePath = path.join(__dirname, './', fileName); + const filePath = path.join(process.cwd(), './', fileName); try { const fileData = fs.readFileSync(filePath); const hash = crypto @@ -54,5 +51,6 @@ const generateYml = platform => { fs.writeFileSync(fileName, ymlStr); }; + generateYml('windows'); generateYml('macos'); diff --git a/apps/electron/scripts/make-env.js b/apps/electron/scripts/make-env.ts similarity index 87% rename from apps/electron/scripts/make-env.js rename to apps/electron/scripts/make-env.ts index f14f74c7b..699a75228 100644 --- a/apps/electron/scripts/make-env.js +++ b/apps/electron/scripts/make-env.ts @@ -1,11 +1,12 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; -const { z } = require('zod'); - -const path = require('node:path'); +import { z } from 'zod'; const ReleaseTypeSchema = z.enum(['stable', 'beta', 'canary', 'internal']); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + const ROOT = path.resolve(__dirname, '..'); const envBuildType = (process.env.BUILD_TYPE || 'canary').trim().toLowerCase(); @@ -39,15 +40,15 @@ const platform = ? process.argv[process.argv.indexOf('--platform') + 1] : process.platform; -module.exports = { - ROOT, +export { + arch, buildType, - productName, - icoPath, icnsPath, iconPngPath, iconUrl, - arch, + icoPath, platform, + productName, + ROOT, stableBuild, }; diff --git a/apps/electron/scripts/make-squirrel.mts b/apps/electron/scripts/make-squirrel.ts similarity index 98% rename from apps/electron/scripts/make-squirrel.mts rename to apps/electron/scripts/make-squirrel.ts index ae5123000..d85b9b2d5 100644 --- a/apps/electron/scripts/make-squirrel.mts +++ b/apps/electron/scripts/make-squirrel.ts @@ -11,7 +11,7 @@ import { platform, productName, ROOT, -} from './make-env'; +} from './make-env.js'; async function ensureDirectory(dir: string) { if (await fs.pathExists(dir)) { diff --git a/apps/electron/scripts/package.json b/apps/electron/scripts/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/apps/electron/scripts/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/apps/electron/tsconfig.node.json b/apps/electron/tsconfig.node.json index 5213fbb9c..8478961a5 100644 --- a/apps/electron/tsconfig.node.json +++ b/apps/electron/tsconfig.node.json @@ -9,7 +9,16 @@ "allowSyntheticDefaultImports": true, "noEmit": false, "outDir": "./lib/scripts", + "types": ["node"], "allowJs": true }, - "include": ["./scripts", "esbuild.main.config.ts", "esbuild.plugin.config.ts"] + "include": [ + "./scripts", + "esbuild.main.config.ts", + "esbuild.plugin.config.ts" + ], + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" + } } diff --git a/package.json b/package.json index 5a6c07387..cef91d045 100644 --- a/package.json +++ b/package.json @@ -180,6 +180,8 @@ "unbox-primitive": "npm:@nolyfill/unbox-primitive@latest", "which-boxed-primitive": "npm:@nolyfill/which-boxed-primitive@latest", "which-typed-array": "npm:@nolyfill/which-typed-array@latest", - "next-auth@^4.23.2": "patch:next-auth@npm%3A4.23.2#./.yarn/patches/next-auth-npm-4.23.2-5f0e551bc7.patch" + "next-auth@^4.23.2": "patch:next-auth@npm%3A4.23.2#./.yarn/patches/next-auth-npm-4.23.2-5f0e551bc7.patch", + "@electron-forge/core@^6.4.2": "patch:@electron-forge/core@npm%3A6.4.2#./.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch", + "@electron-forge/core@6.4.2": "patch:@electron-forge/core@npm%3A6.4.2#./.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch" } } diff --git a/yarn.lock b/yarn.lock index 758bbc683..80e696805 100644 --- a/yarn.lock +++ b/yarn.lock @@ -413,7 +413,6 @@ __metadata: "@types/uuid": ^9.0.5 async-call-rpc: ^6.3.1 builder-util-runtime: ^9.2.1 - cross-env: 7.0.3 electron: ^27.0.0 electron-log: ^5.0.0-rc.1 electron-squirrel-startup: 1.0.0 @@ -436,7 +435,6 @@ __metadata: which: ^4.0.0 yjs: ^13.6.8 zod: ^3.22.4 - zx: ^7.2.3 peerDependencies: ts-node: "*" languageName: unknown @@ -3998,7 +3996,7 @@ __metadata: languageName: node linkType: hard -"@electron-forge/core@npm:6.4.2, @electron-forge/core@npm:^6.4.2": +"@electron-forge/core@npm:6.4.2": version: 6.4.2 resolution: "@electron-forge/core@npm:6.4.2" dependencies: @@ -4040,6 +4038,48 @@ __metadata: languageName: node linkType: hard +"@electron-forge/core@patch:@electron-forge/core@npm%3A6.4.2#./.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch::locator=%40affine%2Fmonorepo%40workspace%3A.": + version: 6.4.2 + resolution: "@electron-forge/core@patch:@electron-forge/core@npm%3A6.4.2#./.yarn/patches/@electron-forge-core-npm-6.4.2-ab60c87e75.patch::version=6.4.2&hash=792119&locator=%40affine%2Fmonorepo%40workspace%3A." + dependencies: + "@electron-forge/core-utils": 6.4.2 + "@electron-forge/maker-base": 6.4.2 + "@electron-forge/plugin-base": 6.4.2 + "@electron-forge/publisher-base": 6.4.2 + "@electron-forge/shared-types": 6.4.2 + "@electron-forge/template-base": 6.4.2 + "@electron-forge/template-vite": 6.4.2 + "@electron-forge/template-vite-typescript": 6.4.2 + "@electron-forge/template-webpack": 6.4.2 + "@electron-forge/template-webpack-typescript": 6.4.2 + "@electron/get": ^2.0.0 + "@electron/rebuild": ^3.2.10 + "@malept/cross-spawn-promise": ^2.0.0 + chalk: ^4.0.0 + debug: ^4.3.1 + electron-packager: ^17.1.2 + fast-glob: ^3.2.7 + filenamify: ^4.1.0 + find-up: ^5.0.0 + fs-extra: ^10.0.0 + got: ^11.8.5 + interpret: ^3.1.1 + listr2: ^5.0.3 + lodash: ^4.17.20 + log-symbols: ^4.0.0 + node-fetch: ^2.6.7 + progress: ^2.0.3 + rechoir: ^0.8.0 + resolve-package: ^1.0.1 + semver: ^7.2.1 + source-map-support: ^0.5.13 + sudo-prompt: ^9.1.1 + username: ^5.1.0 + yarn-or-npm: ^3.0.1 + checksum: 72a0a74b0f84b848e4aa1423757a8cc5234ce45963dd6aaed92878f29234894e8d97d8270bd21d6ceedba44447409c85394f7fb75d8e239a2abe704f9f0eb214 + languageName: node + linkType: hard + "@electron-forge/maker-base@npm:6.4.2, @electron-forge/maker-base@npm:^6.0.4": version: 6.4.2 resolution: "@electron-forge/maker-base@npm:6.4.2" @@ -12887,7 +12927,7 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:^11.0.1, @types/fs-extra@npm:^11.0.2": +"@types/fs-extra@npm:^11.0.2": version: 11.0.2 resolution: "@types/fs-extra@npm:11.0.2" dependencies: @@ -13197,7 +13237,7 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.0, @types/minimist@npm:^1.2.2": +"@types/minimist@npm:^1.2.0": version: 1.2.3 resolution: "@types/minimist@npm:1.2.3" checksum: 666ea4f8c39dcbdfbc3171fe6b3902157c845cc9cb8cee33c10deb706cda5e0cc80f98ace2d6d29f6774b0dc21180c96cd73c592a1cbefe04777247c7ba0e84b @@ -13244,7 +13284,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.11.18, @types/node@npm:^18.16.3, @types/node@npm:^18.18.5": +"@types/node@npm:^18.11.18, @types/node@npm:^18.18.5": version: 18.18.5 resolution: "@types/node@npm:18.18.5" checksum: fc8c9b2bf226270cf9085a7dac76ce09dd7c3519ec9b687ee2b50385954ab3709c45ca82d002d1536e24286803cd194d7ab7008acebdcd6681b8b19d4277fa5c @@ -13327,13 +13367,6 @@ __metadata: languageName: node linkType: hard -"@types/ps-tree@npm:^1.1.2": - version: 1.1.3 - resolution: "@types/ps-tree@npm:1.1.3" - checksum: 39910838a103223a004bbd1306f9e6ab716b7df656a814bf555310ab7f6f7059fcdd4453064104b6a03b536e2c433100494328cf150d5e33379a968212ac654e - languageName: node - linkType: hard - "@types/qs@npm:*, @types/qs@npm:^6.9.5": version: 6.9.8 resolution: "@types/qs@npm:6.9.8" @@ -13576,13 +13609,6 @@ __metadata: languageName: node linkType: hard -"@types/which@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/which@npm:3.0.0" - checksum: 0dccb4b39b19dbf24e45461da581e1e6329ca06f28e467348d982d57ce4da342762c6594d3aa759682d26b9238e0a05938eb64221e7420ea890a1aaca22c2fca - languageName: node - linkType: hard - "@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5, @types/ws@npm:^8.5.7": version: 8.5.7 resolution: "@types/ws@npm:8.5.7" @@ -17450,7 +17476,7 @@ __metadata: languageName: node linkType: hard -"cross-env@npm:7.0.3, cross-env@npm:^7.0.3": +"cross-env@npm:^7.0.3": version: 7.0.3 resolution: "cross-env@npm:7.0.3" dependencies: @@ -18672,7 +18698,7 @@ __metadata: languageName: node linkType: hard -"duplexer@npm:^0.1.1, duplexer@npm:~0.1.1": +"duplexer@npm:^0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 @@ -19910,21 +19936,6 @@ __metadata: languageName: node linkType: hard -"event-stream@npm:=3.3.4": - version: 3.3.4 - resolution: "event-stream@npm:3.3.4" - dependencies: - duplexer: ~0.1.1 - from: ~0 - map-stream: ~0.1.0 - pause-stream: 0.0.11 - split: 0.3 - stream-combiner: ~0.0.4 - through: ~2.3.1 - checksum: 80b467820b6daf824d9fb4345d2daf115a056e5c104463f2e98534e92d196a27f2df5ea2aa085624db26f4c45698905499e881d13bc7c01f7a13eac85be72a22 - languageName: node - linkType: hard - "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" @@ -20826,13 +20837,6 @@ __metadata: languageName: node linkType: hard -"from@npm:~0": - version: 0.1.7 - resolution: "from@npm:0.1.7" - checksum: b85125b7890489656eb2e4f208f7654a93ec26e3aefaf3bbbcc0d496fc1941e4405834fcc9fe7333192aa2187905510ace70417bbf9ac6f6f4784a731d986939 - languageName: node - linkType: hard - "fromentries@npm:^1.2.0, fromentries@npm:^1.3.2": version: 1.3.2 resolution: "fromentries@npm:1.3.2" @@ -20994,15 +20998,6 @@ __metadata: languageName: node linkType: hard -"fx@npm:*": - version: 30.2.0 - resolution: "fx@npm:30.2.0" - bin: - fx: index.js - checksum: 55ed5ddbd1e3f411bb5af1cb115c19a185c0bc51aa4ec232bacf31d34d8b5c97a61b0e6baea37b087b24312b5be0011ab8e0688562758e182b1a5553896c6399 - languageName: node - linkType: hard - "galactus@npm:^1.0.0": version: 1.0.0 resolution: "galactus@npm:1.0.0" @@ -25592,13 +25587,6 @@ __metadata: languageName: node linkType: hard -"map-stream@npm:~0.1.0": - version: 0.1.0 - resolution: "map-stream@npm:0.1.0" - checksum: 38abbe4eb883888031e6b2fc0630bc583c99396be16b8ace5794b937b682a8a081f03e8b15bfd4914d1bc88318f0e9ac73ba3512ae65955cd449f63256ddb31d - languageName: node - linkType: hard - "markdown-to-jsx@npm:^7.1.8": version: 7.3.2 resolution: "markdown-to-jsx@npm:7.3.2" @@ -26049,7 +26037,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7, minimist@npm:^1.2.8, minimist@npm:~1.2.5": +"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7, minimist@npm:~1.2.5": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -26630,17 +26618,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:3.3.1": - version: 3.3.1 - resolution: "node-fetch@npm:3.3.1" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: 62145fd3ba4770a76110bc31fdc0054ab2f5442b5ce96e9c4b39fc9e94a3d305560eec76e1165d9259eab866e02a8eecf9301062bb5dfc9f08a4d08b69d223dd - languageName: node - linkType: hard - "node-fetch@npm:^2, node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.2, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -27915,15 +27892,6 @@ __metadata: languageName: node linkType: hard -"pause-stream@npm:0.0.11": - version: 0.0.11 - resolution: "pause-stream@npm:0.0.11" - dependencies: - through: ~2.3 - checksum: 3c4a14052a638b92e0c96eb00c0d7977df7f79ea28395250c525d197f1fc02d34ce1165d5362e2e6ebbb251524b94a76f3f0d4abc39ab8b016d97449fe15583c - languageName: node - linkType: hard - "pdf-lib@npm:^1.17.1": version: 1.17.1 resolution: "pdf-lib@npm:1.17.1" @@ -28938,17 +28906,6 @@ __metadata: languageName: node linkType: hard -"ps-tree@npm:^1.2.0": - version: 1.2.0 - resolution: "ps-tree@npm:1.2.0" - dependencies: - event-stream: =3.3.4 - bin: - ps-tree: ./bin/ps-tree.js - checksum: e635dd00f53d30d31696cf5f95b3a8dbdf9b1aeb36d4391578ce8e8cd22949b7c5536c73b0dc18c78615ea3ddd4be96101166be59ca2e3e3cb1e2f79ba3c7f98 - languageName: node - linkType: hard - "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" @@ -31257,15 +31214,6 @@ __metadata: languageName: node linkType: hard -"split@npm:0.3": - version: 0.3.3 - resolution: "split@npm:0.3.3" - dependencies: - through: 2 - checksum: 2e076634c9637cfdc54ab4387b6a243b8c33b360874a25adf6f327a5647f07cb3bf1c755d515248eb3afee4e382278d01f62c62d87263c118f28065b86f74f02 - languageName: node - linkType: hard - "sponge-case@npm:^1.0.1": version: 1.0.1 resolution: "sponge-case@npm:1.0.1" @@ -31435,15 +31383,6 @@ __metadata: languageName: node linkType: hard -"stream-combiner@npm:~0.0.4": - version: 0.0.4 - resolution: "stream-combiner@npm:0.0.4" - dependencies: - duplexer: ~0.1.1 - checksum: 844b622cfe8b9de45a6007404f613b60aaf85200ab9862299066204242f89a7c8033b1c356c998aa6cfc630f6cd9eba119ec1c6dc1f93e245982be4a847aee7d - languageName: node - linkType: hard - "stream-shift@npm:^1.0.0": version: 1.0.1 resolution: "stream-shift@npm:1.0.1" @@ -32262,7 +32201,7 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": +"through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -34025,15 +33964,6 @@ __metadata: languageName: node linkType: hard -"webpod@npm:^0": - version: 0.0.2 - resolution: "webpod@npm:0.0.2" - bin: - webpod: dist/index.js - checksum: 3c6f7376cf06804a0b68adec3c33d1aceb9a1d13854beac542b95dcdb6f6cee34cd05fbd2228e01b67c2ce48673650296976dd694bd8d0ff10920a32dbe2e30a - languageName: node - linkType: hard - "websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": version: 0.7.4 resolution: "websocket-driver@npm:0.7.4" @@ -34123,17 +34053,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^3.0.0": - version: 3.0.1 - resolution: "which@npm:3.0.1" - dependencies: - isexe: ^2.0.0 - bin: - node-which: bin/which.js - checksum: adf720fe9d84be2d9190458194f814b5e9015ae4b88711b150f30d0f4d0b646544794b86f02c7ebeec1db2029bc3e83a7ff156f542d7521447e5496543e26890 - languageName: node - linkType: hard - "which@npm:^4.0.0": version: 4.0.0 resolution: "which@npm:4.0.0" @@ -34557,7 +34476,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.1, yaml@npm:^2.2.2, yaml@npm:^2.3.1": +"yaml@npm:^2.2.1, yaml@npm:^2.3.1": version: 2.3.3 resolution: "yaml@npm:2.3.3" checksum: cdfd132e7e0259f948929efe8835923df05c013c273c02bb7a2de9b46ac3af53c2778a35b32c7c0f877cc355dc9340ed564018c0242bfbb1278c2a3e53a0e99e @@ -34733,28 +34652,3 @@ __metadata: checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f languageName: node linkType: hard - -"zx@npm:^7.2.3": - version: 7.2.3 - resolution: "zx@npm:7.2.3" - dependencies: - "@types/fs-extra": ^11.0.1 - "@types/minimist": ^1.2.2 - "@types/node": ^18.16.3 - "@types/ps-tree": ^1.1.2 - "@types/which": ^3.0.0 - chalk: ^5.2.0 - fs-extra: ^11.1.1 - fx: "*" - globby: ^13.1.4 - minimist: ^1.2.8 - node-fetch: 3.3.1 - ps-tree: ^1.2.0 - webpod: ^0 - which: ^3.0.0 - yaml: ^2.2.2 - bin: - zx: build/cli.js - checksum: 33b05e26ec3a429de6ff8db759d7b7857b947f4845025416db410bedaa8e613608a6d1916f257e129625d0192b6ba43e482356c6844ff90d15b0fd06dd9b98d2 - languageName: node - linkType: hard