Skip to content

clear http only cookies on logout #267

clear http only cookies on logout

clear http only cookies on logout #267

name: Package Preview Publish
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
publish-preview:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Enable corepack
run: corepack enable
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
registry-url: "https://registry.npmjs.org"
- name: Update npm
run: npm install -g npm@latest
- name: Install dependencies
run: npm install
- name: Build package
run: npm run build
- name: Generate preview package name and version
id: preview_info
run: |
PR_NUMBER="${{ github.event.number }}"
COMMIT_HASH="${{ github.sha }}"
SHORT_COMMIT="${COMMIT_HASH:0:7}"
# Get current version from package.json
BASE_VERSION=$(node -p "require('./package.json').version")
if [ ! -z "$PR_NUMBER" ]; then
# Format: 0.3.0-pr.123.abc1234 (valid semver prerelease)
PREVIEW_VERSION="$BASE_VERSION-pr.$PR_NUMBER.$SHORT_COMMIT"
else
# Format: 0.3.0-dev.abc1234 (valid semver prerelease)
PREVIEW_VERSION="$BASE_VERSION-dev.$SHORT_COMMIT"
fi
echo "version=$PREVIEW_VERSION" >> $GITHUB_OUTPUT
echo "package_name=@base44-preview/sdk" >> $GITHUB_OUTPUT
echo "full_package=@base44-preview/sdk@$PREVIEW_VERSION" >> $GITHUB_OUTPUT
- name: Update package.json for preview
run: |
# Create a backup of original package.json
cp package.json package.json.bak
# Get the official package name for safety checks
OFFICIAL_PACKAGE=$(node -p "require('./package.json').name")
PREVIEW_PACKAGE="${{ steps.preview_info.outputs.package_name }}"
echo "Official package: $OFFICIAL_PACKAGE"
echo "Preview package: $PREVIEW_PACKAGE"
# Safety check: Ensure we're not accidentally using the official package name
if [ "$PREVIEW_PACKAGE" = "$OFFICIAL_PACKAGE" ]; then
echo "❌ ERROR: Preview package name matches official package name!"
echo "This would overwrite the official package. Aborting."
exit 1
fi
# Update name with error handling
if ! npm pkg set name="$PREVIEW_PACKAGE"; then
echo "❌ ERROR: Failed to set package name to $PREVIEW_PACKAGE"
exit 1
fi
# Update version with error handling
if ! npm pkg set version="${{ steps.preview_info.outputs.version }}"; then
echo "❌ ERROR: Failed to set package version to ${{ steps.preview_info.outputs.version }}"
exit 1
fi
echo "✅ Package.json updated successfully"
- name: Final safety check before publish
run: |
# Double-check package name one more time before publishing
CURRENT_PACKAGE_NAME=$(node -p "require('./package.json').name")
OFFICIAL_PACKAGE=$(jq -r '.name' package.json.bak)
echo "About to publish: $CURRENT_PACKAGE_NAME"
if [ "$CURRENT_PACKAGE_NAME" = "$OFFICIAL_PACKAGE" ]; then
echo "❌ CRITICAL ERROR: About to publish to official package name!"
echo "This is not allowed. Check the workflow configuration."
exit 1
fi
echo "✅ Safety check passed. Package name is safe to publish."
- name: Publish preview package
run: |
if npm publish --tag preview; then
echo "✅ Package published successfully"
else
echo "❌ Package publish failed"
exit 1
fi
- name: Restore original package.json
if: always()
run: |
if [ -f package.json.bak ]; then
mv package.json.bak package.json
echo "✅ Original package.json restored"
else
echo "❌ WARNING: Backup file package.json.bak not found"
echo "This could indicate an earlier step failed"
fi
- name: Comment PR with install instructions
uses: actions/github-script@v6
with:
script: |
const fullPackage = '${{ steps.preview_info.outputs.full_package }}';
const installCmd = `npm i ${fullPackage}`;
const aliasInstallCmd = `npm i "@base44/sdk@npm:${fullPackage}"`;
const body = `### 🚀 Package Preview Available!
---
**Install this PR's preview build with npm:**
\`\`\`sh
${installCmd}
\`\`\`
**Prefer not to change any import paths? Install using npm alias so your code still imports \`@base44/sdk\`:**
\`\`\`sh
${aliasInstallCmd}
\`\`\`
Or add it to your \`package.json\` dependencies:
\`\`\`json
{
"dependencies": {
"@base44/sdk": "npm:${fullPackage}"
}
}
\`\`\`
- 📦 **Preview Package**: \`${fullPackage}\`
- 🔗 [View this commit on GitHub](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
---
<sub>Preview published to npm registry — try new features instantly!</sub>`;
const botCommentIdentifier = '### 🚀 Package Preview Available!';
async function findBotComment(issueNumber) {
if (!issueNumber) return null;
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
});
return comments.data.find((comment) =>
comment.body.includes(botCommentIdentifier)
);
}
async function createOrUpdateComment(issueNumber) {
if (!issueNumber) {
console.log('No issue number provided. Cannot post or update comment.');
return;
}
const existingComment = await findBotComment(issueNumber);
if (existingComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existingComment.id,
body: body,
});
} else {
await github.rest.issues.createComment({
issue_number: issueNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: body,
});
}
}
if (context.eventName === 'pull_request') {
if (context.issue.number) {
await createOrUpdateComment(context.issue.number);
}
}
permissions:
contents: read
pull-requests: write
id-token: write