@alfacapital-tech/c4builder 0.3.0-rc.1 → 0.3.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,15 @@
1
1
  import fs from 'node:fs';
2
2
  import zlib from 'node:zlib';
3
- // makeDirectory намеренно резолвится и при ошибке mkdir (легаси-поведение — не чинить).
4
- const makeDirectory = (path) => new Promise((resolve) => {
5
- fs.mkdir(path, () => {
6
- return resolve();
7
- });
8
- });
9
- // type не передаётся ни одним вызовом → encoding отсутствует → data приходит Buffer'ом;
10
- // сохраняем union из оверлоада fs (потребители зовут .toString()/шаблоны).
11
- const readFile = (path, type) => new Promise((resolve, reject) => {
12
- fs.readFile(path, type, (err, data) => {
13
- if (err)
14
- return reject(err);
15
- return resolve(data);
16
- });
17
- });
18
- const writeFile = (path, data) => new Promise((resolve, reject) => {
19
- // res опционален: fs.writeFile отдаёт NoParamCallback, второй аргумент — всегда undefined.
20
- fs.writeFile(path, data, (err, res) => {
21
- if (err)
22
- return reject(err);
23
- return resolve(res);
24
- });
25
- });
26
- // _fn игнорируется (легаси-заглушка — не чинить).
27
- const writeOnSameLine = async (message, _fn) => {
3
+ // mkdir -p: недостающие родители создаются, существующий каталог — не ошибка.
4
+ // Реальные сбои (EACCES/EROFS) пробрасываются — раньше глотались молча, и сборка
5
+ // падала позже невнятной ошибкой записи в несуществующий каталог.
6
+ const makeDirectory = async (path) => {
7
+ await fs.promises.mkdir(path, { recursive: true });
8
+ };
9
+ // Кодировка не передаётся ни одним вызовом → всегда Buffer (потребители зовут .toString()).
10
+ const readFile = (path) => fs.promises.readFile(path);
11
+ const writeFile = (path, data) => fs.promises.writeFile(path, data);
12
+ const writeOnSameLine = async (message) => {
28
13
  process.stdout.write(`${message}\r`);
29
14
  };
30
15
  const encodeURIPath = (path) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfacapital-tech/c4builder",
3
- "version": "0.3.0-rc.1",
3
+ "version": "0.3.0-rc.3",
4
4
  "description": "A CLI tool designed to compile a folder structure of markdowns and plant uml files into a site, single file markdown or a collection of markdowns with links",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,6 +10,8 @@
10
10
  "files": [
11
11
  "dist/",
12
12
  "template/",
13
+ "!template/docs",
14
+ "!template/.c4builder",
13
15
  "vendor/",
14
16
  "README.MD",
15
17
  "license"
@@ -34,6 +36,8 @@
34
36
  "check": "biome ci .",
35
37
  "pretest": "npm run build",
36
38
  "test": "vitest run",
39
+ "pretest:unit": "npm run build",
40
+ "test:unit": "vitest run --exclude \"**/golden.test.mjs\"",
37
41
  "test:golden": "npm run build && vitest run test/golden.test.mjs",
38
42
  "test:golden:update": "npm run build && UPDATE_GOLDEN=1 vitest run test/golden.test.mjs"
39
43
  },
Binary file
@@ -1,17 +1,20 @@
1
1
  # Вендорные шрифты
2
2
 
3
- ## Liberation Sans
3
+ ## Nimbus Sans
4
4
 
5
- `LiberationSans-{Regular,Bold,Italic,BoldItalic}.ttf`
5
+ `NimbusSans-{Regular,Bold,Italic,BoldItalic}.otf`
6
6
 
7
7
  - **Назначение:** детерминизм метрик текста в SVG. Ширина текста (`textLength`)
8
8
  считается PlantUML из AWT-метрик шрифта; системный `sans-serif` резолвится
9
9
  по-разному на разных машинах. Шрифт отдаётся JVM через
10
- `-Dsun.java2d.fontpath=prepend:` + `-SdefaultFontName=Liberation Sans`, чтобы
11
- метрики не зависели от машины (см. `build.js`).
12
- - **Происхождение:** пакет `ttf-liberation` / `fonts-liberation`, версия 2.1.5
13
- (font version 2.1). Метрически совместим с Arial; та же версия поставляется на
14
- CI-раннере `ubuntu-24.04`.
15
- - **Лицензия:** SIL Open Font License 1.1 (разрешает вендоринг и распространение).
16
- Полный текст: <https://openfontlicense.org/> · апстрим:
17
- <https://github.com/liberationfonts/liberation-fonts>.
10
+ `-Dsun.java2d.fontpath=prepend:` + `-SdefaultFontName=Nimbus Sans` и resvg через
11
+ `fontDirs` (см. `src/core/render/fonts.ts`). Пин снимается ключом `useSystemFonts`
12
+ в `.c4builder` / флагом `--system-fonts` — тогда рендер идёт системным шрифтом и
13
+ перестаёт быть машинонезависимым.
14
+ - **Происхождение:** URW base35 (Artifex), релиз 20200910 — файлы побайтно совпадают
15
+ с пакетом `gsfonts` этой версии. Метрически совместим с Helvetica, содержит
16
+ кириллицу и греческий. Апстрим:
17
+ <https://github.com/ArtifexSoftware/urw-base35-fonts>.
18
+ - **Лицензия:** AGPL-3.0-only с шрифтовым исключением
19
+ (`PS-or-PDF-font-exception-20170817`): встраивание шрифта в документы не делает их
20
+ производными работами. Полный текст — в апстрим-репозитории (`LICENSE`).