Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions .github/scripts/prepareForNpmPublishing.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// SPDX-License-Identifier: LGPL-3.0-only
//
// This file is provided WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)

const WORKSPACE_ROOT = path.join(__dirname, '..', '..')

interface Package {
name: string
path: string
}

interface PackageJson {
name: string
version: string
dependencies?: Record<string, string>
devDependencies?: Record<string, string>
peerDependencies?: Record<string, string>
[key: string]: any
}

const PACKAGES: Package[] = [
{ name: '@enclave-e3/wasm', path: 'crates/wasm' },
{ name: '@enclave-e3/config', path: 'packages/enclave-config' },
{ name: '@enclave-e3/contracts', path: 'packages/enclave-contracts' },
{ name: '@enclave-e3/sdk', path: 'packages/enclave-sdk' },
{ name: '@enclave-e3/react', path: 'packages/enclave-react' },
]

console.log('🔧 Preparing packages for npm publishing...\n')

// Build a map of package names to versions
const packageVersions = new Map<string, string>()
PACKAGES.forEach(({ name, path: pkgPath }) => {
const pkgJsonPath = path.join(WORKSPACE_ROOT, pkgPath, 'package.json')
const pkgJson: PackageJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'))
packageVersions.set(name, pkgJson.version)
console.log(`📦 Found ${name}@${pkgJson.version}`)
})

console.log('\n🔄 Replacing workspace:* dependencies...\n')

// Replace workspace:* with actual versions
PACKAGES.forEach(({ name, path: pkgPath }) => {
const pkgJsonPath = path.join(WORKSPACE_ROOT, pkgPath, 'package.json')
const pkg: PackageJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'))

let hasChanges = false

const replaceWorkspaceDeps = (deps: Record<string, string> | undefined, depType: string): void => {
if (!deps) return

for (const [depName, version] of Object.entries(deps)) {
if (version.startsWith('workspace:')) {
const actualVersion = packageVersions.get(depName)
if (actualVersion) {
deps[depName] = `^${actualVersion}`
console.log(` ✓ ${name} ${depType}: ${depName}: ${version} → ^${actualVersion}`)
hasChanges = true
} else {
console.warn(` ⚠️ Warning: Could not find version for ${depName}`)
}
}
}
}

replaceWorkspaceDeps(pkg.dependencies, 'dependencies')
replaceWorkspaceDeps(pkg.devDependencies, 'devDependencies')
replaceWorkspaceDeps(pkg.peerDependencies, 'peerDependencies')

if (hasChanges) {
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + '\n')
console.log(` ✅ Updated ${pkgPath}/package.json\n`)
} else {
console.log(` ⏭️ No workspace dependencies in ${name}\n`)
}
})

console.log('✨ All packages prepared for npm publishing!\n')
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,7 @@ jobs:
else
BRANCH="${{ github.ref_name }}"
fi
enclave init mycitest --template=${{ github.server_url }}/${{ github.repository }}.git#${BRANCH}:templates/default
enclave init mycitest --verbose --template=${{ github.server_url }}/${{ github.repository }}.git#${BRANCH}:templates/default

contrib-readme-job:
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,9 @@ jobs:
- name: Build packages
run: pnpm build:ts

- name: Prepare packages for npm publishing
run: pnpm prepare-publish

- name: Determine npm tag
id: npm_tag
run: |
Expand Down
1,778 changes: 1,778 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

64 changes: 32 additions & 32 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading