Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
e011f15
feat: contractual pivot - schema lifecycle orchestrator (#14)
omermorad Mar 12, 2026
91ed06b
feat: commands major refactor (#16)
omermorad Mar 14, 2026
541f2c6
fix: remove provenance from packages before publishing to Verdaccio
omermorad Mar 14, 2026
2d44ffb
fix(e2e): use scoped package name for npx commands
omermorad Mar 14, 2026
8c6e6cd
fix(cli): update diff JSON output format to use contracts object
omermorad Mar 14, 2026
a18dcec
chore(*): version packages [skip ci]
omermorad Mar 27, 2026
4963cb0
fix(governance): use correct openapi-diff version
omermorad Apr 2, 2026
f829878
test(e2e): fix diff command tests to match new JSON format
omermorad Apr 2, 2026
cb3d62c
chore(*): version packages [skip ci]
omermorad Apr 2, 2026
e6f3883
feat: add openapi 3.1 support and extract shared differ core
omermorad Apr 3, 2026
9370397
chore(*): version packages [skip ci]
omermorad Apr 3, 2026
57184c3
fix(differs.openapi): handle circular $ref schemas without stack over…
omermorad Apr 3, 2026
99ad70f
chore(*): version packages [skip ci]
omermorad Apr 3, 2026
6a8c464
chore(*): align all packages to 0.1.0-dev.3 [skip ci]
omermorad Apr 3, 2026
57ffe1f
chore(*): version packages [skip ci]
omermorad Apr 5, 2026
807d5aa
fix(differs.openapi): optional param non-breaking, detect description…
omermorad Apr 7, 2026
c3562d2
fix(differs.core): format OpenAPI structural changes, decode JSON Poi…
omermorad Apr 13, 2026
f66c15c
chore(*): version packages [skip ci]
omermorad Apr 13, 2026
9a0bfe3
fix(differs.core): add message formatters for composition change types
omermorad Apr 14, 2026
de318c0
chore(*): version packages [skip ci]
omermorad Apr 14, 2026
6299962
Revert "chore(*): version packages [skip ci]"
omermorad Apr 14, 2026
8e6b939
chore(*): version packages [skip ci]
omermorad Apr 14, 2026
2d599e0
fix(differs.core): decode JSON Pointer segments individually to avoid…
omermorad Apr 29, 2026
03684be
chore(*): version packages [skip ci]
omermorad Apr 29, 2026
db5231b
fix(changesets): survive malformed YAML when syncing spec version
omermorad Jun 18, 2026
53d3a39
chore(*): version packages [skip ci]
omermorad Jun 18, 2026
2466cd3
fix(*): address security findings on next (#19)
omermorad Sep 29, 2026
361ad40
fix(*): prepare next workflow and release safeguards (#17)
omermorad Sep 29, 2026
ee6d9a3
fix(*): remediate dependency and code scanning vulnerabilities (#18)
omermorad Sep 29, 2026
8c95785
ci: bump the actions group with 4 updates (#20)
dependabot[bot] Sep 29, 2026
e67033c
fix(*): bump @inquirer/prompts from 8.5.2 to 8.7.2 (#21)
dependabot[bot] Sep 29, 2026
bfc3d22
fix(*): bump chalk from 5.6.2 to 6.0.0 (#22)
dependabot[bot] Sep 29, 2026
d8930e9
fix(*): bump rimraf from 5.0.10 to 6.1.3 (#23)
dependabot[bot] Sep 29, 2026
3eeb7e9
fix(*): bump ora from 8.2.0 to 9.4.1 (#25)
dependabot[bot] Sep 29, 2026
45c00a0
fix(*): mitigate glob parsing and update vulnerable dependencies (#32)
omermorad Oct 8, 2026
0adfd56
fix(*): align beta workflows and update vulnerable dependencies (#31)
omermorad Oct 8, 2026
414fe00
chore(*): version packages (#33)
omermorad Oct 8, 2026
bbf6530
fix(*): apply approved expiring publishing audit exceptions (#34)
omermorad Oct 8, 2026
476fb6d
fix(differs.openapi): classify response requiredness by direction (#42)
omermorad Oct 28, 2026
9e5ddc6
chore: resolve dependency audit failures on next (#44)
omermorad Oct 29, 2026
93ac6a2
chore(*): prepare beta packages [skip ci] (#45)
omermorad Oct 29, 2026
f9a8b04
fix: check npm publishing permissions per package [skip ci] (#46)
omermorad Oct 29, 2026
16d6db8
fix: use npm Trusted Publishing for beta releases [skip ci] (#47)
omermorad Oct 30, 2026
d1c5062
fix: resolve dependency advisories blocking publication (#48)
omermorad Oct 31, 2026
9d335ac
chore(*): version packages [skip ci] (#49)
omermorad Oct 31, 2026
674d47e
feat: sign all release package tags with lerna [skip ci] (#50)
omermorad Oct 31, 2026
77504b2
fix: publish independently versioned packages safely [skip ci] (#51)
omermorad Oct 31, 2026
edf0b41
fix: wait for npm publication visibility before verification [skip ci…
omermorad Oct 31, 2026
ded8ef7
fix(openapi): classify response enums by output compatibility
omermorad Nov 8, 2026
a89e95c
Merge pull request #59 from codotech/fix/response-enum-compatibility
omermorad Nov 8, 2026
8a18a74
docs: install CLI from beta dist-tag [skip ci] (#58)
omermorad Nov 8, 2026
be669cf
fix(differs.openapi): account for enum constraint interactions (#60)
omermorad Nov 9, 2026
90c5cd6
chore(*): prepare beta packages (#61)
github-actions[bot] Nov 9, 2026
b63fd34
fix(differs.openapi): account for property addition constraints (#63)
omermorad Nov 10, 2026
ea95db2
chore(*): prepare beta packages (#64)
github-actions[bot] Nov 10, 2026
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
7 changes: 0 additions & 7 deletions .eslintignore

This file was deleted.

80 changes: 0 additions & 80 deletions .eslintrc

This file was deleted.

28 changes: 28 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
# The default branch is next. Omit target-branch so security groups apply too.
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
commit-message:
prefix: "fix(*)"
groups:
security:
applies-to: security-updates
patterns: ["*"]
development:
dependency-type: development
update-types: [minor, patch]
versioning-strategy: increase
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
commit-message:
prefix: ci
groups:
actions:
patterns: ["*"]
11 changes: 11 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Change

Describe the problem and resulting behavior. Target `next` and use a Conventional Commit title, for example `fix(cli): handle missing snapshots`.

## Validation

List the relevant checks and their results.

## Release impact

Describe any compatibility change. Tagging or publishing requires Omer's explicit approval; a PR is not release approval.
143 changes: 30 additions & 113 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,126 +1,43 @@
name: Continuous Integration
on: [pull_request]

on:
pull_request:
branches: [next]
push:
branches: [next]
permissions:
id-token: write
contents: read
checks: write

concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build
verify:
name: Verify (Node ${{ matrix.node }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [18.x, 20.x, 22.x]
node: [22, 24, 26]
steps:
- name: Checkout
uses: actions/checkout@v4


- name: Use Node ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v4
- uses: actions/checkout@v7
- uses: pnpm/action-setup@v6
with:
version: 9.15.4
- uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}

- name: PNPM
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm run build

lint:
name: Lint
- uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node }}
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm lint
- run: pnpm test
- run: pnpm test:e2e
ci:
name: CI
if: always()
needs: [verify]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22.x'
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.4

- uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}

- name: PNPM
run: pnpm install --frozen-lockfile

- name: Lint
run: pnpm run lint

- name: Validate Packages
run: pnpm manypkg check

test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
project: ['doubles.jest', 'doubles.sinon', 'core.unit', 'doubles.vitest', 'di.nestjs', 'di.inversify', 'unit']
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22.x'
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.4

- uses: actions/cache@v2
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/pnpm-lock.yaml') }}

- name: PNPM
run: pnpm install --frozen-lockfile

- name: Create Coverage Directory
run: mkdir -p ${{ github.workspace }}/coverage

- name: Test
run: pnpm --filter @contractual/${{ matrix.project }} run test
- name: Require every verification job
env:
JEST_JUNIT_OUTPUT_NAME: ${{ matrix.project }}.xml
JEST_JUNIT_OUTPUT_DIR: ${{ github.workspace }}/test-reports
JUNIT_OUTPUT_NAME: ${{ matrix.project }}
JUNIT_OUTPUT_DIR: ${{ github.workspace }}/test-reports
COVERAGE_DIR: ${{ github.workspace }}/coverage
COVERAGE_FILE: coverage-${{ matrix.project }}.xml

- name: Tests Results
uses: dorny/test-reporter@v1
if: always()
with:
reporter: 'jest-junit'
name: Tests Results (${{ matrix.project }})
path: ${{ github.workspace }}/test-reports/${{ matrix.project }}.xml
fail-on-error: false

# - name: Upload Report to Codecov
# uses: codecov/codecov-action@v3
# with:
# name: codecov-umbrella
# flags: ${{ matrix.project }}
# token: ${{ secrets.CODECOV_TOKEN }}
# fail_ci_if_error: true
# files: ${{ github.workspace }}/coverage/coverage-${{ matrix.project }}.xml
# verbose: true
RESULT: ${{ needs.verify.result }}
run: test "$RESULT" = success
Loading
Loading