Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
8b34b21
chore(repo): pin toolchain to node 22 + pnpm 8.15.9
nartc Jun 19, 2026
c923748
chore(repo): migrate nx 15 -> 16
nartc Jun 19, 2026
1cc02ff
chore(repo): migrate nx 16 -> 19, TypeScript 4.9 -> 5.4
nartc Jun 19, 2026
0df9e70
chore(repo): migrate nx 19 -> 22 + replace bundler with tsdown
nartc Jun 19, 2026
a0fb384
chore(repo): per-package tsdown build targets, drop @nx/rollup
nartc Jun 19, 2026
fc11170
perf(core): rewrite set() as index-walk, drop per-level alloc
nartc Jun 19, 2026
c313fa8
perf(core): remove dead hasNullMetadata scan in map()
nartc Jun 19, 2026
89eb581
fix(core): guard isDateConstructor against nullish input
nartc Jun 19, 2026
21a0f28
perf(core): compute shouldRunImplicitMap lazily in mapMember
nartc Jun 19, 2026
ca3dbb8
chore(benchmark): add packages/benchmark-core workspace package
nartc Jun 20, 2026
9f468e8
chore(benchmark): add classes strategy + align reflect-metadata to 0.2.2
nartc Jun 20, 2026
dec3438
chore(release): 9.0.0-alpha.0 — versions, engines >=20, peer ranges
nartc Jun 20, 2026
08e95fe
chore(tsconfig): modernize base — es2022 target/lib, bundler resolution
nartc Jun 20, 2026
4c3564d
chore(deps): typescript 5.4 -> 5.9 (latest 5.x)
nartc Jun 20, 2026
ed9839e
fix(core): green lint — no-prototype-builtins + unused imports
nartc Jun 20, 2026
b2fd6c1
ci: modern workflow + package-contract gate (goals #4, #7)
nartc Jun 20, 2026
a28d021
feat(core): typed errors + circular-safe member error (goal #5)
nartc Jun 20, 2026
22d7ae7
docs(core): fix misleading comments (goal #10)
nartc Jun 20, 2026
90d476c
chore(release): publish to 'alpha' dist-tag
nartc Jun 20, 2026
72edd19
perf(core): cache assertUnmappedProperties writable-keys + Set lookup…
nartc Jun 20, 2026
2bfef38
perf(core): memoize per-member identifier predicates (Kyle Phase B)
nartc Jun 20, 2026
49bfbf0
perf(core): replace mapper Proxy with a plain object (code #2 / Kyle …
nartc Jun 20, 2026
bb30e06
feat(nestjs): support NestJS 11 (goal #9)
nartc Jun 20, 2026
00d341c
feat(mikro): support MikroORM 6 (goal #9)
nartc Jun 20, 2026
065066a
chore(release): nx release with conventional commits + npm provenance…
nartc Jun 20, 2026
1459c7a
test: migrate Jest/ts-jest to Vitest + unplugin-swc (goal #5)
nartc Jun 20, 2026
93bdf6a
build: drop CommonJS — 9.0 is ESM-only
nartc Jun 20, 2026
811d31a
fix(core): mapAsync honestly awaits async before/after callbacks (cod…
nartc Jun 20, 2026
375bab4
refactor(core): tighten extraArguments to unknown; document intention…
nartc Jun 20, 2026
00cc035
feat(zod): real Zod 4 integration replacing the stub (goal #9)
nartc Jun 20, 2026
ce68348
refactor(core): label the transformation tuples as named tuples (code…
nartc Jun 20, 2026
cb772ac
perf(core): compile a cached per-mapping plan (code #1 / Kyle Phase C)
nartc Jun 20, 2026
c668112
build: upgrade to TypeScript 6.0 (goal #2, final modernization item)
nartc Jun 20, 2026
b72add0
feat(core): TRUE async map — await async member resolvers (goal)
nartc Jun 21, 2026
038d14d
perf(core): build compiled mapping plan eagerly at createMap
nartc Jun 21, 2026
dabf047
perf(core): compile mappings to per-property step closures
nartc Jun 21, 2026
f487c20
fix(core): address mapper migration followups
nartc Jun 22, 2026
30d1c6a
fix(core): restore synchronous map() fast path after async-sequencing…
nartc Jun 22, 2026
d2a4540
chore(core): clean up followups leftovers
nartc Jun 22, 2026
8146f66
perf(core,classes): optimize synchronous map() hot path and createMap…
kylecannon Jun 23, 2026
a17295d
feat!: remove @automapper/zod package
nartc Jun 23, 2026
37cafca
fix(mikro): drop forbidden @mikro-orm/core/typings subpath import
nartc Jun 23, 2026
44ab30c
build: adopt @nx/js/typescript inferred typecheck via project references
nartc Jun 23, 2026
233851d
build: resolve @automapper/* via pnpm workspace; drop tsconfig paths …
nartc Jun 23, 2026
c404038
fix(integration-test): correct spec type errors surfaced by spec type…
nartc Jun 23, 2026
91a64e1
build: typecheck spec/test files via composite spec configs
nartc Jun 23, 2026
71be873
ci: gate typecheck + sync:check in CI
nartc Jun 23, 2026
fe61c61
chore(nestjs): narrow peer range to nestjs 10 || 11
nartc Jun 23, 2026
54daf72
build: add default condition + package.json export to dist manifests
nartc Jun 23, 2026
849295f
build: sync pnpm-lock.yaml after nestjs peer narrow
nartc Jun 23, 2026
95d8f2d
ci: add nestjs 10 compatibility job
nartc Jun 23, 2026
33c11b8
docs: add redesign spec
nartc Jun 23, 2026
a5e669a
chore: ignore superpowers artifacts
nartc Jun 23, 2026
20220bd
chore: ignore agent artifacts
nartc Jun 23, 2026
360a6f8
docs: remove unused duplicate documentation package
nartc Jun 23, 2026
bcf40c8
feat(core): improve logger configuration
nartc Jun 24, 2026
196c62b
ci: add nx agents workflow
nartc Jun 26, 2026
15800dd
feat(nx-cloud): setup nx cloud workspace (#634)
nartc Jun 26, 2026
d226089
ci: remove nxcloudaccess token
nartc Jun 26, 2026
82f06df
ci: add agent resolution diagnostics
nartc Jun 26, 2026
29e8cec
ci: move resolution diagnostic to compat job
nartc Jun 26, 2026
5740106
ci: add vitest resolution diagnostics
nartc Jun 26, 2026
d9b404e
ci: prefer workspace packages in compat job
nartc Jun 26, 2026
cfd5907
ci: avoid lazy imports in diagnostics
nartc Jun 26, 2026
edd59f7
ci: remove resolution diagnostics
nartc Jun 26, 2026
bb7c30b
ci: DPE helped me out
nartc Jun 26, 2026
802f082
ci: goated DPE
nartc Jun 26, 2026
a546b7a
ci: another change
nartc Jun 26, 2026
a297dc7
ci: bust the cache
nartc Jun 26, 2026
b1540d2
ci: CTA
nartc Jun 26, 2026
4f14c86
ci: bust
nartc Jun 26, 2026
b36ab9f
Merge branch 'chore/nx-agents-ci' into chore/9.0-migrate
nartc Jun 26, 2026
8a68ff9
chore: migrate to typescript 7
nartc Jul 10, 2026
e0a276a
test: stabilize vitest in ci
nartc Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .cz-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ module.exports = {
description: 'AutoMapper classes strategy',
},
{ name: 'pojos', description: 'AutoMapper pojos strategy' },
{ name: 'zod', description: 'AutoMapper zod strategy' },
{
name: 'nestjs',
description: 'AutoMapper nestjs integration))',
Expand Down
14 changes: 10 additions & 4 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"plugins": ["@nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nrwl/nx/enforce-module-boundaries": [
"@nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
Expand All @@ -23,13 +23,19 @@
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"extends": ["plugin:@nx/typescript"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"extends": ["plugin:@nx/javascript"],
"rules": {}
},
{
"files": ["**/vitest.config.ts", "vitest.shared.ts"],
"rules": {
"@nx/enforce-module-boundaries": "off"
}
}
]
}
89 changes: 75 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,81 @@ name: CI

on:
push:
branches:
- main
branches: [main]
pull_request:

env:
NX_VERBOSE_LOGGING: 'true'
NX_CLOUD_CONTINUOUS_ASSIGNMENT: 'true'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
main:
name: Nx Cloud - Main Job
uses: nrwl/ci/.github/workflows/nx-cloud-main.yml@v0.8
with:
parallel-commands-on-agents: |
pnpm exec nx affected --target=test --parallel=3 --ci --code-coverage
# pnpm exec nx affected --target=package --parallel=2
agents:
name: Nx Cloud - Agents
uses: nrwl/ci/.github/workflows/nx-cloud-agents.yml@v0.8
with:
number-of-agents: 3
verify:
name: sync · lint · typecheck · build · test (node ${{ matrix.node }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: ['20', '22']
env:
NX_CI_EXECUTION_ENV: 'node ${{ matrix.node }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
filter: tree:0
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: corepack enable
- run: pnpm install --frozen-lockfile
- name: Start Nx Agents
run: >-
pnpm nx start-ci-run
--distribute-on="3 linux-medium-node${{ matrix.node }}"
--stop-agents-after=lint,typecheck,package,test
# fail fast if tsconfig project references drift from the graph
- run: pnpm nx record -- nx sync:check
- run: pnpm nx run-many -t lint,typecheck,package,test

package-contract:
name: publint + attw
runs-on: ubuntu-latest
env:
NX_CI_EXECUTION_ENV: 'publint + attw'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: corepack enable
- run: pnpm install --frozen-lockfile
- run: pnpm run package
- run: pnpm nx record -- pnpm run check:packages

# The main verify job runs against nestjs 11 (the installed version). This job
# certifies the lower bound of @automapper/nestjs's `^10 || ^11` peer range by
# downgrading the @nestjs runtime to v10 and running the DI integration specs.
nestjs-compat:
name: nestjs 10 compat
runs-on: ubuntu-latest
env:
NX_CI_EXECUTION_ENV: 'nestjs-compat'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: corepack enable
- run: pnpm install --frozen-lockfile
# downgrade only the @nestjs runtime; rxjs/reflect-metadata span both majors
- run: pnpm --config.prefer-workspace-packages=true add -w @nestjs/common@^10 @nestjs/core@^10 @nestjs/testing@^10 @nestjs/platform-express@^10
- name: Start Nx Agents
run: >-
pnpm nx start-ci-run
--distribute-on="3 linux-medium-node22"
--stop-agents-after=test
- run: pnpm nx run integration-test:test
36 changes: 21 additions & 15 deletions .github/workflows/docusaurus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,39 +8,45 @@
- 'packages/documentations/docusaurus.config.js'
- 'packages/documentations/sidebars.js'
- 'packages/documentations/*.json'
- 'packages/documentations/pnpm-lock.yaml'
- 'packages/documentations/docs/**/*.md'
- 'packages/documentations/docs/**/*.mdx'
- 'packages/documentations/static/**/*.*'
- 'packages/documentations/static/**/*'
- 'packages/documentations/src/**/*.js'
- 'packages/documentations/src/**/*.css'
- 'packages/*/src/**/*.ts'
- 'packages/*/tsconfig*.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'tsconfig.base.json'
jobs:
build-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo

- uses: pnpm/action-setup@v2.1.0
- uses: actions/setup-node@v4
with:
version: latest
run_install: false
node-version: '20'

- uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'pnpm'
- run: corepack enable

# TypeDoc reads the library sources through their workspace links.
- name: Install workspace dependencies
run: pnpm install --frozen-lockfile

# docs are not a workspace member (the workspace is scoped to the
# publishable libs), so install them standalone.
- name: Install dependencies
run: |
pnpm install
pnpm --filter "./packages/documentations" install
working-directory: packages/documentations
run: pnpm install --ignore-workspace --frozen-lockfile

- name: Create local build artifacts
run: |
echo 'Building documentations...'
pnpm exec nx build documentations
working-directory: packages/documentations
run: pnpm build

- name: Create local changes and commit
run: |
Expand All @@ -52,7 +58,7 @@
git commit -m "docs: build docs" -a

- name: Push changes
uses: ad-m/github-push-action@master

Check failure on line 61 in .github/workflows/docusaurus.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use full commit SHA hash for this dependency.

See more on https://sonarcloud.io/project/issues?id=nartc_mapper&issues=AZ9NBDuj1sKQ6MLEjI_e&open=AZ9NBDuj1sKQ6MLEjI_e&pullRequest=635
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: docs
Expand Down
59 changes: 59 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Release

on:
workflow_dispatch:
inputs:
first-release:
description: 'First release using the {projectName}@{version} tag scheme (no prior tags to diff against)'
type: boolean
default: false
dry-run:
description: 'Compute versions/changelogs without writing, tagging, or publishing'
type: boolean
default: false

concurrency:
group: release
cancel-in-progress: false

permissions:
contents: write # push version-bump commit + tags, create GitHub releases
id-token: write # npm provenance / OIDC trusted publishing

jobs:
release:
name: nx release (alpha)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # full history is required for conventional-commit version analysis
- uses: actions/setup-node@v4
with:
node-version: '22'
registry-url: 'https://registry.npmjs.org'
- run: corepack enable
- run: pnpm install --frozen-lockfile

# 1. bump versions, write changelogs, tag, create GitHub releases — but do not publish yet
- name: Version + changelog + tag
run: >-
pnpm exec nx release
${{ inputs.first-release && '--first-release' || '' }}
${{ inputs.dry-run && '--dry-run' || '' }}
--skip-publish --yes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# 2. build the dist artifacts with the freshly-bumped versions
- name: Build packages
if: ${{ !inputs.dry-run }}
run: pnpm run package

# 3. publish the built dist to npm under the alpha dist-tag with provenance
- name: Publish (alpha, provenance)
if: ${{ !inputs.dry-run }}
run: pnpm exec nx release publish --tag=alpha
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: true
43 changes: 0 additions & 43 deletions .github/workflows/unit-test.yml

This file was deleted.

14 changes: 13 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
/out-tsc

# dependencies
/node_modules
node_modules
# per-package dist (per-package builds / workspace)
packages/*/dist

# IDEs and editors
/.idea
Expand Down Expand Up @@ -40,3 +42,13 @@ Thumbs.db

old
.env

.nx/cache
.nx/workspace-data
.claude/worktrees
.nx/polygraph
.nx/self-healing

# local agent planning and visual brainstorming artifacts
.superpowers/
docs/superpowers/
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
public-hoist-pattern[]=@nestjs/platform-express
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22
30 changes: 30 additions & 0 deletions .nx/workflows/agents.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
launch-templates:
linux-medium-node20:
resource-class: 'docker_linux_amd64/medium'
image: 'ubuntu22.04-node24.14-v1'
init-steps:
- name: Checkout
uses: 'nrwl/nx-cloud-workflows/v6/workflow-steps/checkout/main.yaml'

- name: Install Node 20
uses: 'nrwl/nx-cloud-workflows/v6/workflow-steps/install-node/main.yaml'
inputs:
node_version: '20'

- name: Install Node Nodules
uses: 'nrwl/nx-cloud-workflows/v4/workflow-steps/install-node-modules/main.yaml'

linux-medium-node22:
resource-class: 'docker_linux_amd64/medium'
image: 'ubuntu22.04-node24.14-v1'
init-steps:
- name: Checkout
uses: 'nrwl/nx-cloud-workflows/v6/workflow-steps/checkout/main.yaml'

- name: Install Node 22
uses: 'nrwl/nx-cloud-workflows/v6/workflow-steps/install-node/main.yaml'
inputs:
node_version: '22'

- name: Install Node Nodules
uses: 'nrwl/nx-cloud-workflows/v4/workflow-steps/install-node-modules/main.yaml'
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@

/dist
/coverage

/.nx/cache
/.nx/workspace-data
.nx/self-healing
5 changes: 0 additions & 5 deletions jest.config.ts

This file was deleted.

Loading
Loading