Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
b6d2e85
chore: migrate monorepo to pnpm workspaces + changesets
May 7, 2026
5ad67fe
chore: scaffold TypeScript, ESLint flat config, Mocha/c8 and CI
May 7, 2026
d4f07ec
refactor(naming.cell.pattern-parser)!: migrate to TypeScript ESM
May 7, 2026
d5954b2
refactor(naming.entity.stringify, naming.presets)!: migrate to TypeSc…
May 7, 2026
bdf6ddd
refactor(import-notation)!: migrate to TypeScript ESM
May 7, 2026
46ed7da
refactor(bemjson-node)!: migrate to TypeScript ESM
May 7, 2026
b717cfd
refactor(keyset)!: migrate to TypeScript ESM
May 7, 2026
79068ed
refactor(config)!: migrate to TypeScript ESM
May 7, 2026
6bfa82b
chore: tighten typecheck — include .d.ts and verify test files
May 8, 2026
7456f4f
refactor(naming.cell.stringify)!: migrate to TypeScript ESM
May 8, 2026
6a4b1b3
refactor(entity-name)!: migrate to TypeScript ESM
May 8, 2026
670a68b
refactor(naming.entity.parse)!: migrate to TypeScript ESM
May 8, 2026
22ec60f
refactor(cell)!: migrate to TypeScript ESM
May 8, 2026
eb101dc
refactor(file)!: migrate to TypeScript ESM
May 8, 2026
bae5762
refactor(naming.file.stringify)!: migrate to TypeScript ESM
May 8, 2026
10c3c72
refactor(bemjson-to-jsx)!: migrate to TypeScript ESM
May 8, 2026
4d093ac
refactor(decl)!: migrate to TypeScript ESM
May 8, 2026
93526f7
refactor(naming.cell.match)!: migrate to TypeScript ESM
May 8, 2026
fc0d4c5
refactor(naming.entity)!: migrate to TypeScript ESM
May 8, 2026
1a8a0e5
refactor(bemjson-to-decl)!: migrate to TypeScript ESM
May 8, 2026
750d3d2
refactor(bundle)!: migrate to TypeScript ESM
May 8, 2026
8fac87b
refactor(graph)!: migrate to TypeScript ESM
May 8, 2026
c8a5c4e
refactor(walk)!: migrate to TypeScript ESM
May 8, 2026
c5d34fc
refactor(deps)!: migrate to TypeScript ESM
May 8, 2026
51ae8ab
chore: tighten lint config and clean up small offenders
May 8, 2026
5ed33b6
docs: refresh README + CONTRIBUTING for pnpm + Node 20 toolchain
May 8, 2026
9336ae2
docs(naming.cell.pattern-parser): refresh README for ESM/TS API
May 8, 2026
75e871c
docs(entity-name): refresh README for ESM/TS API
May 8, 2026
b906971
docs(cell): refresh README for ESM/TS API
May 8, 2026
ea6493d
docs(file): refresh README for ESM/TS API
May 8, 2026
c48ec55
docs(naming.entity): refresh README for ESM/TS API
May 8, 2026
8427b6f
docs(naming.entity.parse): refresh README for ESM/TS API
May 8, 2026
a1a4c80
docs(naming.entity.stringify): refresh README for ESM/TS API
May 8, 2026
527ad48
docs(naming.presets): refresh README for ESM/TS API
May 8, 2026
08970fd
docs(naming.cell.match): refresh README for ESM/TS API
May 8, 2026
5dbf7a6
docs(naming.cell.stringify): refresh README for ESM/TS API
May 8, 2026
533fde6
docs(naming.file.stringify): refresh README for ESM/TS API
May 8, 2026
8d052a8
docs(bemjson-node): refresh README for ESM/TS API
May 8, 2026
d582bb2
docs(bemjson-to-decl): refresh README for ESM/TS API
May 8, 2026
ba1958b
docs(bemjson-to-jsx): refresh README for ESM/TS API
May 8, 2026
4fb04e5
docs(bundle): refresh README for ESM/TS API
May 8, 2026
e118555
docs(decl): refresh README for ESM/TS API
May 8, 2026
84fb690
docs(deps): refresh README for ESM/TS API
May 8, 2026
67d1c25
docs(graph): refresh README for ESM/TS API
May 8, 2026
12e7951
docs(import-notation): refresh README for ESM/TS API
May 8, 2026
165571d
docs(keyset): refresh README for ESM/TS API
May 8, 2026
ca35e1d
docs(walk): refresh README for ESM/TS API
May 8, 2026
3062f58
docs(config): refresh README for ESM/TS API
May 8, 2026
fcc4e05
chore(release): version packages
May 8, 2026
2857100
chore(release): enable npm provenance + add MIGRATION guide
May 8, 2026
6074479
chore: add scripts/verify-old-issues.mjs
May 8, 2026
da7e738
fix(naming.cell.match): allow hyphens in pattern variables (closes #385)
May 8, 2026
89e2627
fix(entity-name): key-value mod belongs to its boolean form (closes #…
May 8, 2026
586ffcc
fix(walk): canonicalize level paths via realpath (closes #335)
May 8, 2026
27d5df6
feat(keyset): add Keyset.merge and LangKeys.merge (closes #350)
May 8, 2026
1cd5c7d
feat(deps): add parseSync alongside parse (closes #301)
May 8, 2026
3c24ada
feat(import-notation): stringifyFull resolves short notation against …
May 16, 2026
7373dcb
feat(config): levelByPath + absolute cwd validation (closes #277, #268)
May 16, 2026
11bffb7
feat(config): verbose sets + library layer refs (closes #246, #262)
May 16, 2026
09069b4
fix(bemjson-to-jsx): trim whitespace in styleToObj (closes #241)
May 16, 2026
84fbdbd
fix: move type-only @bem/sdk peer deps into prod dependencies
May 16, 2026
2a66de5
docs(bemjson-to-decl): restore typed API signatures in README
May 16, 2026
7d2158a
refactor(walk): use Readable.toArray() and document scan ordering
May 16, 2026
fee5359
test(bundle): restore granular test files from 0.x
May 16, 2026
a623645
test(graph): port mixed-graph-get-subgraph test to public API
May 16, 2026
f2ce5a7
docs(config,decl,deps,entity-name,file): restore typed API signatures
May 16, 2026
281c50e
docs(graph,import-notation,keyset,walk): restore typed API signatures
May 16, 2026
15eef17
docs(naming.*): restore typed API signatures in READMEs
May 16, 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
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .c8rc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"reporter": ["text", "lcov", "html"],
"include": ["packages/*/src/**/*.ts"],
"exclude": [
"**/*.test.ts",
"**/*.spec.ts",
"**/dist/**",
"**/node_modules/**",
"**/test/**",
"**/spec/**",
"**/types/**"
],
"all": true,
"extension": [".ts"]
}
18 changes: 18 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Changesets

Используется для управления версиями и публикации пакетов в монорепо.

## Как добавить запись

```sh
pnpm changeset
```

Команда задаст вопросы про затронутые пакеты, тип bump (major/minor/patch) и описание.

## Как выпустить релиз

```sh
pnpm version # bump версий по changeset-файлам
pnpm release # build + publish в npm
```
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "master",
"updateInternalDependencies": "patch",
"ignore": []
}
9 changes: 0 additions & 9 deletions .eslintignore

This file was deleted.

44 changes: 0 additions & 44 deletions .eslintrc.js

This file was deleted.

42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CI

on:
push:
branches: [master]
pull_request:
branches: [master]

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

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [20, 22, 24]
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: pnpm

- run: pnpm install --frozen-lockfile

- run: pnpm typecheck

- run: pnpm lint

- run: pnpm test:cover

- if: matrix.node == 22
uses: actions/upload-artifact@v4
with:
name: coverage
path: coverage/
50 changes: 50 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Release

on:
push:
branches: [master]

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

permissions:
contents: write
pull-requests: write
id-token: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
registry-url: https://registry.npmjs.org

- run: pnpm install --frozen-lockfile

- run: pnpm -r build

- run: pnpm typecheck

- run: pnpm test

- id: changesets
uses: changesets/action@v1
with:
publish: pnpm release
version: pnpm version
commit: 'chore(release): version packages'
title: 'chore(release): version packages'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
14 changes: 11 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
.nyc_output
coverage

node_modules
.pnpm-store
.pnpm-debug.log
npm-debug.log
lerna-debug.log

.nyc_output
coverage

dist
*.tsbuildinfo

.worktrees
.DS_Store
8 changes: 8 additions & 0 deletions .mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extension": ["ts"],
"spec": "packages/*/src/**/*.{test,spec}.ts",
"node-option": ["import=tsx"],
"reporter": "spec",
"timeout": 5000,
"ui": "bdd"
}
1 change: 0 additions & 1 deletion .npmrc

This file was deleted.

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

This file was deleted.

58 changes: 50 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,58 @@ email, or any other method with the owners of this repository before making a ch

Please note we have a code of conduct, please follow it in all your interactions with the project.

## Local development

Requirements:

- **Node.js >= 20** (CI matrix: 20, 22, 24).
- **pnpm 11**, installed via [Corepack](https://nodejs.org/api/corepack.html):

```sh
corepack enable
```

Setup:

```sh
pnpm install
pnpm typecheck # tsc --build (production) + tsc on test files
pnpm lint # ESLint 10 flat config
pnpm test # Mocha 11 + Chai 6 + tsx (TypeScript ESM)
pnpm test:cover # c8 coverage
```

Project layout:

- `packages/*` — independent published packages, each ESM-only TypeScript.
- `pnpm-workspace.yaml` — workspace + version catalog.
- `tsconfig.base.json` — strict TS baseline (NodeNext, ES2023, composite).
- `eslint.config.js` — flat config.
- `.mocharc.json` — mocha config rooted at `packages/*/src/**/*.test.ts`.
- `.changeset/` — pending changesets (each one PR-able).
- `.github/workflows/` — CI (Node 20/22/24 matrix) and changesets-driven release.

## Pull Request Process

1. Ensure any install or build dependencies are removed before the end of the layer when doing a
build.
2. Update the README.md with details of changes to the interface, this includes new environment
variables, exposed ports, useful file locations and container parameters.
3. Increase the version numbers in any examples files and the README.md to the new version that this
Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
do not have permission to do that, you may request the second reviewer to merge it for you.
1. Add a changeset describing your change:

```sh
pnpm changeset
```

Pick the affected package(s), the bump level (major/minor/patch) and write a
one-paragraph explanation of the user-visible change. The file lands under
`.changeset/` and gets committed together with your code.

2. Make sure `pnpm typecheck`, `pnpm lint` and `pnpm test` are all green
locally — these are the same checks CI runs.

3. Update the package's README if the public API changed (entry name, options,
types, etc.).

4. Open the PR. CI is required to pass before merge. Releases are produced
automatically by the `changesets/action` workflow when the changeset PR
is merged into `master`.

## Code of Conduct

Expand Down
Loading
Loading