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
3 changes: 2 additions & 1 deletion .cspell.json

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

24 changes: 24 additions & 0 deletions .dry-aged-deps.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"exclude": {
"@types/jest": "Pinned to jest 27.x; upgrade requires jest 29+ migration",
"cspell": "Major version upgrade; requires compatibility testing with current config",
"eslint": "Pinned to ^8; upgrade to 9+ requires flat config migration and plugin compatibility",
"eslint-config-prettier": "Major version upgrade; blocked by eslint 8.x constraint",
"eslint-import-resolver-node": "Pinned by eslint-plugin-import compatibility",
"eslint-import-resolver-typescript": "Major version upgrade; blocked by eslint 8.x constraint",
"eslint-plugin-import": "Pinned by eslint 8.x compatibility",
"eslint-plugin-no-secrets": "Major version upgrade; blocked by eslint 8.x constraint",
"eslint-plugin-prettier": "Major version upgrade; blocked by eslint 8.x constraint",
"eslint-plugin-unicorn": "Major version upgrade; blocked by eslint 8.x constraint",
"http-status-codes": "Used only in tests; minor update with no security impact",
"husky": "Major version upgrade; requires migration to new config format",
"jest": "Pinned to ^27 by projen; upgrade requires projen and ts-jest migration",
"jest-junit": "Major version upgrade; blocked by jest 27.x constraint",
"npm-check-updates": "Major version upgrade; used only for maintenance scripts",
"prettier": "Major version upgrade; may cause formatting changes across codebase",
"projen": "Pinned to ^0.58; upgrade may cause breaking changes to project config",
"ts-jest": "Pinned to jest 27.x; upgrade requires jest migration",
"ts-node": "Minor update; low priority with no security impact",
"typescript": "Major version upgrade; requires codebase compatibility verification"
}
}
1 change: 0 additions & 1 deletion .eslintignore

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

1 change: 0 additions & 1 deletion .eslintrc.json

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

1 change: 0 additions & 1 deletion .gitattributes

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

10 changes: 6 additions & 4 deletions .github/workflows/build.yml

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

12 changes: 6 additions & 6 deletions .github/workflows/release.yml

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

8 changes: 4 additions & 4 deletions .github/workflows/upgrade-main.yml

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

1 change: 0 additions & 1 deletion .gitignore

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

3 changes: 2 additions & 1 deletion .husky/pre-push

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

23 changes: 0 additions & 23 deletions .mergify.yml

This file was deleted.

1 change: 0 additions & 1 deletion .npmignore

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

2 changes: 2 additions & 0 deletions .project-words.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
Hubber
deps
mergify
yarnrc
4 changes: 4 additions & 0 deletions .projen/deps.json

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

1 change: 0 additions & 1 deletion .projen/files.json

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

2 changes: 1 addition & 1 deletion .projen/tasks.json

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

93 changes: 91 additions & 2 deletions .projenrc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const project = new TypeScriptProject({
"http-status-codes",
"@types/http-status-codes",
"@mountainpass/cool-bits-for-projen",
"dry-aged-deps",
] /* Build dependencies for this module. */,
keywords: ["problem-details", "rfc7807"],
defaultReleaseBranch: "main",
Expand All @@ -63,6 +64,7 @@ const project = new TypeScriptProject({
secret: "GITHUB_TOKEN",
},
githubOptions: {
mergify: false,
pullRequestLintOptions: {
semanticTitleOptions: {
types: [
Expand All @@ -83,12 +85,99 @@ const project = new TypeScriptProject({
},
});

new Recommended(project, {
cSpellOptions: { language: "en-GB", ignorePaths: ["docs"] },
const recommended = new Recommended(project, {
cSpellOptions: {
language: "en-GB",
ignorePaths: ["docs", ".dry-aged-deps.json"],
},
});

// Add dry-aged-deps check to the pre-push hook
recommended.husky.addHook("pre-push", "npx dry-aged-deps --check");

new CodeOfConduct(project, { contactMethod: "tom@mountain-pass.com.au" });

// Fix npm pack command for newer npm versions
const packageTask = project.tasks.tryFind("package")!;
packageTask.reset();
packageTask.exec("mkdir -p dist/js");
packageTask.exec("npm pack --pack-destination dist/js");

// Add dry-aged-deps check to the build workflow
project.buildWorkflow?.addPostBuildSteps({
name: "Check for outdated dependencies",
run: "npx dry-aged-deps --check",
});

// Upgrade deprecated GitHub Actions from v2/v3 to v4
const buildWorkflow = project.github?.tryFindWorkflow("build");
if (buildWorkflow?.file) {
buildWorkflow.file.addOverride(
"jobs.build.steps.0.uses",
"actions/checkout@v4"
);
buildWorkflow.file.addOverride(
"jobs.build.steps.5.uses",
"actions/upload-artifact@v4"
);
buildWorkflow.file.addOverride(
"jobs.self-mutation.steps.0.uses",
"actions/checkout@v4"
);
buildWorkflow.file.addOverride(
"jobs.self-mutation.steps.1.uses",
"actions/download-artifact@v4"
);
}

const releaseWorkflow = project.github?.tryFindWorkflow("release");
if (releaseWorkflow?.file) {
releaseWorkflow.file.addOverride(
"jobs.release.steps.0.uses",
"actions/checkout@v4"
);
releaseWorkflow.file.addOverride(
"jobs.release.steps.5.uses",
"actions/upload-artifact@v4"
);
releaseWorkflow.file.addOverride(
"jobs.release_github.steps.0.uses",
"actions/setup-node@v4"
);
releaseWorkflow.file.addOverride(
"jobs.release_github.steps.1.uses",
"actions/download-artifact@v4"
);
releaseWorkflow.file.addOverride(
"jobs.release_npm.steps.0.uses",
"actions/setup-node@v4"
);
releaseWorkflow.file.addOverride(
"jobs.release_npm.steps.1.uses",
"actions/download-artifact@v4"
);
}

const upgradeWorkflow = project.github?.tryFindWorkflow("upgrade-main");
if (upgradeWorkflow?.file) {
upgradeWorkflow.file.addOverride(
"jobs.upgrade.steps.0.uses",
"actions/checkout@v4"
);
upgradeWorkflow.file.addOverride(
"jobs.upgrade.steps.4.uses",
"actions/upload-artifact@v4"
);
upgradeWorkflow.file.addOverride(
"jobs.pr.steps.0.uses",
"actions/checkout@v4"
);
upgradeWorkflow.file.addOverride(
"jobs.pr.steps.1.uses",
"actions/download-artifact@v4"
);
}

gitHubber.addToProject(project);
npmReleaser.addToProject(project);
organisational.addToProject(project);
Expand Down
1 change: 1 addition & 0 deletions .yarnrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--ignore-engines true
Loading
Loading