From 8e119e744434ab87e58d0b23d935a5215bc5270a Mon Sep 17 00:00:00 2001 From: Stinobe Date: Fri, 15 May 2026 17:05:03 +0200 Subject: [PATCH] Reduce pacakge size Moved from `yaml` to `js-yaml` --- .changeset/wide-colts-pick.md | 5 ++++ package.json | 3 ++- pnpm-lock.yaml | 47 +++++++++++++++++------------------ src/frontmatter.ts | 2 +- tests/frontmatter.ts | 6 ++--- 5 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 .changeset/wide-colts-pick.md diff --git a/.changeset/wide-colts-pick.md b/.changeset/wide-colts-pick.md new file mode 100644 index 0000000..d730fc1 --- /dev/null +++ b/.changeset/wide-colts-pick.md @@ -0,0 +1,5 @@ +--- +"@stinobe/mattr": minor +--- + +Moved from `yaml` to `js-yaml` to reduce package size diff --git a/package.json b/package.json index 7322868..39cf283 100644 --- a/package.json +++ b/package.json @@ -56,12 +56,13 @@ "node": ">=18" }, "dependencies": { - "yaml": "^2.8.4" + "js-yaml": "^4.1.1" }, "devDependencies": { "@changesets/cli": "^2.31.0", "@eslint/js": "^10.0.1", "@eslint/markdown": "^8.0.1", + "@types/js-yaml": "^4.0.9", "@types/node": "^25.6.2", "@vitest/coverage-v8": "^4.1.6", "eslint": "^10.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05e96ce..5ee40c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -207,9 +207,9 @@ importers: .: dependencies: - yaml: - specifier: ^2.8.4 - version: 2.8.4 + js-yaml: + specifier: ^4.1.1 + version: 4.1.1 devDependencies: '@changesets/cli': specifier: ^2.31.0 @@ -220,6 +220,9 @@ importers: '@eslint/markdown': specifier: ^8.0.1 version: 8.0.1 + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 '@types/node': specifier: ^25.6.2 version: 25.6.2 @@ -237,7 +240,7 @@ importers: version: 2.7.0 tsup: specifier: ^8.5.1 - version: 8.5.1(jiti@2.7.0)(postcss@8.5.14)(typescript@6.0.3)(yaml@2.8.4) + version: 8.5.1(jiti@2.7.0)(postcss@8.5.14)(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 @@ -246,7 +249,7 @@ importers: version: 8.59.3(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) vitest: specifier: ^4.1.6 - version: 4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4)) + version: 4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)) zod: specifier: ^4.4.3 version: 4.4.3 @@ -877,6 +880,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2109,11 +2115,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - yaml@2.8.4: - resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==} - engines: {node: '>= 14.6'} - hasBin: true - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2663,6 +2664,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/js-yaml@4.0.9': {} + '@types/json-schema@7.0.15': {} '@types/katex@0.16.8': {} @@ -2784,7 +2787,7 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4)) + vitest: 4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)) '@vitest/expect@4.1.6': dependencies: @@ -2795,13 +2798,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.6(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4))': + '@vitest/mocker@4.1.6(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0))': dependencies: '@vitest/spy': 4.1.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0) '@vitest/pretty-format@4.1.6': dependencies: @@ -3746,13 +3749,12 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.14)(yaml@2.8.4): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.14): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 postcss: 8.5.14 - yaml: 2.8.4 postcss@8.5.14: dependencies: @@ -3928,7 +3930,7 @@ snapshots: tslib@2.8.1: optional: true - tsup@8.5.1(jiti@2.7.0)(postcss@8.5.14)(typescript@6.0.3)(yaml@2.8.4): + tsup@8.5.1(jiti@2.7.0)(postcss@8.5.14)(typescript@6.0.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -3939,7 +3941,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.14)(yaml@2.8.4) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.14) resolve-from: 5.0.0 rollup: 4.60.3 source-map: 0.7.6 @@ -4007,7 +4009,7 @@ snapshots: dependencies: punycode: 2.3.1 - vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4): + vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -4019,12 +4021,11 @@ snapshots: esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.7.0 - yaml: 2.8.4 - vitest@4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4)): + vitest@4.1.6(@types/node@25.6.2)(@vitest/coverage-v8@4.1.6)(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)): dependencies: '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4)) + '@vitest/mocker': 4.1.6(vite@8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)) '@vitest/pretty-format': 4.1.6 '@vitest/runner': 4.1.6 '@vitest/snapshot': 4.1.6 @@ -4041,7 +4042,7 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0)(yaml@2.8.4) + vite: 8.0.11(@types/node@25.6.2)(esbuild@0.27.7)(jiti@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.6.2 @@ -4060,8 +4061,6 @@ snapshots: word-wrap@1.2.5: {} - yaml@2.8.4: {} - yocto-queue@0.1.0: {} zod@4.4.3: {} diff --git a/src/frontmatter.ts b/src/frontmatter.ts index 745c578..667b3ea 100644 --- a/src/frontmatter.ts +++ b/src/frontmatter.ts @@ -1,4 +1,4 @@ -import { parse as parseYaml } from "yaml"; +import { load as parseYaml } from "js-yaml"; import { MattrParseError } from "@lib/errors"; import { EMPTY_OBJECT, FRONTMATTER_DELIMITTER } from "@lib/constants"; import type { MattrAllowedTypes, MattrData } from "./types"; diff --git a/tests/frontmatter.ts b/tests/frontmatter.ts index c920cd0..47f3dcf 100644 --- a/tests/frontmatter.ts +++ b/tests/frontmatter.ts @@ -32,7 +32,7 @@ describe("default usage", () => { }); it("returns empty object when `parseYaml` returns null", async () => { - vi.doMock("yaml", () => ({ parse: vi.fn(() => null) })); + vi.doMock("js-yaml", () => ({ load: vi.fn(() => null) })); const { parseFrontmatter } = await import("@lib/frontmatter"); const parsed = parseFrontmatter(markdown); expect(parsed).toEqual({ @@ -55,8 +55,8 @@ describe("error handeling", () => { }); it("should throw an error when Yaml is invalid", async () => { - vi.doMock("yaml", () => ({ - parse: vi.fn(() => { + vi.doMock("js-yaml", () => ({ + load: vi.fn(() => { throw new Error("Failde from Yaml"); }), }));