diff --git a/README.md b/README.md index 8fafe4d..42d3e3e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,16 @@ +# @haskou/value-objects + [![CI](https://github.com/haskou/value-objects/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/haskou/value-objects/actions/workflows/ci.yml?query=branch%3Amaster) [![codecov](https://codecov.io/gh/haskou/value-objects/branch/master/graph/badge.svg)](https://codecov.io/gh/haskou/value-objects) [![npm version](https://img.shields.io/npm/v/@haskou/value-objects.svg)](https://www.npmjs.com/package/@haskou/value-objects) +[![Renovate](https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovatebot)](https://docs.renovatebot.com/) [![license](https://img.shields.io/npm/l/@haskou/value-objects.svg)](LICENSE.txt) +A TypeScript library for validated, immutable primitive wrappers and small utility value objects. + +It provides ready-to-use objects for strings, numbers, identifiers, dates, coordinates, hashes, media, collections, and cryptographic payload helpers. Validation happens when an object is created, so code receiving one of these objects can rely on its shape. + + ## Documentation Full documentation is available at **https://haskou.github.io/value-objects/**. @@ -11,11 +19,6 @@ The documentation includes installation, quick start, examples, error handling, Reusable agent instructions and engineering skills are available at **https://github.com/haskou/ddd-engineer-skills**. -# Value Objects - -A TypeScript library for validated, immutable primitive wrappers and small utility value objects. - -It provides ready-to-use objects for strings, numbers, identifiers, dates, coordinates, hashes, media, collections, and cryptographic payload helpers. Validation happens when an object is created, so code receiving one of these objects can rely on its shape. ## Installation diff --git a/package.json b/package.json index fd687d2..92c64b0 100644 --- a/package.json +++ b/package.json @@ -72,9 +72,9 @@ "tslib": "^2.8.1" }, "devDependencies": { - "@haskou/eslint-config": "^0.1.1", + "@haskou/eslint-config": "^0.1.2", "@types/jest": "^30.0.0", - "@types/node": "^25.9.3", + "@types/node": "^26.0.1", "eslint": "^10.5.0", "jest": "^30.4.2", "jest-extended": "^7.0.0", @@ -82,6 +82,6 @@ "ts-jest": "^29.4.11", "typescript": "^6.0.3", "vitepress": "^1.6.4", - "vue": "^3.5.22" + "vue": "^3.5.39" } } diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..e2dca33 --- /dev/null +++ b/renovate.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended", ":dependencyDashboard", ":semanticCommits"], + "labels": ["dependencies"], + "rangeStrategy": "bump", + "semanticCommitType": "chore", + "semanticCommitScope": "deps", + "commitMessageAction": "⬆️ update", + "packageRules": [ + { + "groupName": "non-major dependencies", + "matchUpdateTypes": ["minor", "patch"] + } + ] +} diff --git a/yarn.lock b/yarn.lock index 0dfd0b5..eb6e2be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -636,10 +636,10 @@ "@eslint/core" "^1.2.1" levn "^0.4.1" -"@haskou/eslint-config@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@haskou/eslint-config/-/eslint-config-0.1.1.tgz#81233418a57d11f8fb723693615591a320cb266f" - integrity sha512-NZfhdAAenWpW+I9mzLl9F/lbNcyZsBpFigUhueDblFKOFS8LOaO5ViGhgQNhgThK7rNjetMEQBJ20X9MUQqPyA== +"@haskou/eslint-config@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@haskou/eslint-config/-/eslint-config-0.1.2.tgz#eff66c5d4e5ec9d2842af91f1940ffa9a9ddb170" + integrity sha512-FgiSiQGBwqMBxrU0uedkZg+4LJr+dUPv0H8zm/WExhlV01ZGt+HKp++h7abwFEKo6wmpd/lYVDHp7Wm8Y0rmQg== dependencies: "@eslint/js" "^10.0.1" "@typescript-eslint/eslint-plugin" "8.61.0" @@ -1331,13 +1331,20 @@ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== -"@types/node@*", "@types/node@^25.9.3": +"@types/node@*": version "25.9.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.3.tgz#11dfe7a33e68fa5c560f0aa76cc5595621ef26b9" integrity sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg== dependencies: undici-types ">=7.24.0 <7.24.7" +"@types/node@^26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.1.tgz#4a60e2c7a6d68bd261e265f8983bfe1601263ce3" + integrity sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw== + dependencies: + undici-types "~8.3.0" + "@types/stack-utils@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -1601,6 +1608,17 @@ estree-walker "^2.0.2" source-map-js "^1.2.1" +"@vue/compiler-core@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.39.tgz#3b6ea2b95f3c0ed4048efd87d71c468e4021951d" + integrity sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw== + dependencies: + "@babel/parser" "^7.29.7" + "@vue/shared" "3.5.39" + entities "^7.0.1" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + "@vue/compiler-dom@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.38.tgz#10ad73a70399a4c09dedf45ff6a93d42eadc861f" @@ -1609,6 +1627,14 @@ "@vue/compiler-core" "3.5.38" "@vue/shared" "3.5.38" +"@vue/compiler-dom@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.39.tgz#d4261672233442762bee1709dcc34ceefc1ae873" + integrity sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg== + dependencies: + "@vue/compiler-core" "3.5.39" + "@vue/shared" "3.5.39" + "@vue/compiler-sfc@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.38.tgz#2b02036f89c7db0a688534a2eb0d42728c7f09c1" @@ -1624,6 +1650,21 @@ postcss "^8.5.15" source-map-js "^1.2.1" +"@vue/compiler-sfc@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.39.tgz#3eb13950e7442bc86eeebe73287ecbc6bf1678f5" + integrity sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg== + dependencies: + "@babel/parser" "^7.29.7" + "@vue/compiler-core" "3.5.39" + "@vue/compiler-dom" "3.5.39" + "@vue/compiler-ssr" "3.5.39" + "@vue/shared" "3.5.39" + estree-walker "^2.0.2" + magic-string "^0.30.21" + postcss "^8.5.15" + source-map-js "^1.2.1" + "@vue/compiler-ssr@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.38.tgz#23975aa9643752c78c0625277ffa86f58600300d" @@ -1632,6 +1673,14 @@ "@vue/compiler-dom" "3.5.38" "@vue/shared" "3.5.38" +"@vue/compiler-ssr@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.39.tgz#50e44c9ec591e419e83ebc6d3bcedcbaa3f70805" + integrity sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw== + dependencies: + "@vue/compiler-dom" "3.5.39" + "@vue/shared" "3.5.39" + "@vue/devtools-api@^7.7.0": version "7.7.9" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.7.9.tgz#999dbea50da6b00cf59a1336f11fdc2b43d9e063" @@ -1666,6 +1715,13 @@ dependencies: "@vue/shared" "3.5.38" +"@vue/reactivity@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.39.tgz#e07513ae382cd8eb796bea06d046d3c34ddc12ef" + integrity sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog== + dependencies: + "@vue/shared" "3.5.39" + "@vue/runtime-core@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.38.tgz#26560a876b9c0251e57f7a05f9263e623f244f9c" @@ -1674,6 +1730,14 @@ "@vue/reactivity" "3.5.38" "@vue/shared" "3.5.38" +"@vue/runtime-core@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.39.tgz#ee70cb5c837112a93e477195fa2a2a0469373338" + integrity sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw== + dependencies: + "@vue/reactivity" "3.5.39" + "@vue/shared" "3.5.39" + "@vue/runtime-dom@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.38.tgz#7aec70bd013e43166e9ccecd4a1f096fd8ca11fb" @@ -1684,6 +1748,16 @@ "@vue/shared" "3.5.38" csstype "^3.2.3" +"@vue/runtime-dom@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.39.tgz#44a5c147fe2c2687da9cc0c7382ad21873aa476d" + integrity sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww== + dependencies: + "@vue/reactivity" "3.5.39" + "@vue/runtime-core" "3.5.39" + "@vue/shared" "3.5.39" + csstype "^3.2.3" + "@vue/server-renderer@3.5.38": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.38.tgz#5d24a5305e776a53038fc772fbd9d1205c236588" @@ -1692,11 +1766,24 @@ "@vue/compiler-ssr" "3.5.38" "@vue/shared" "3.5.38" +"@vue/server-renderer@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.39.tgz#23978ecd5810b2422ca2f666e57c38fc1862b150" + integrity sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw== + dependencies: + "@vue/compiler-ssr" "3.5.39" + "@vue/shared" "3.5.39" + "@vue/shared@3.5.38", "@vue/shared@^3.5.13": version "3.5.38" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.38.tgz#6c4be4defd86cdc35bfa2b7dd45d7b11a5d51101" integrity sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug== +"@vue/shared@3.5.39": + version "3.5.39" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.39.tgz#694bdae9d47381c2fcfedc6d5274f2450068c1ec" + integrity sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA== + "@vueuse/core@12.8.2", "@vueuse/core@^12.4.0": version "12.8.2" resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-12.8.2.tgz#007c6dd29a7d1f6933e916e7a2f8ef3c3f968eaa" @@ -4004,6 +4091,11 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91" integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== +undici-types@~8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809" + integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ== + unist-util-is@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" @@ -4147,7 +4239,7 @@ vitepress@^1.6.4: vite "^5.4.14" vue "^3.5.13" -vue@^3.5.13, vue@^3.5.22: +vue@^3.5.13: version "3.5.38" resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.38.tgz#8a6d52f1768e197545e937920d6c197fe76fc2db" integrity sha512-vAMKHfImQlYSy0C+PBue4s3ERZ2xGKfgZg5GXAsLInq1dyh2H78ILVP5sK0KPFPVW4kv+OGCIvBEondcjpZp7A== @@ -4158,6 +4250,17 @@ vue@^3.5.13, vue@^3.5.22: "@vue/server-renderer" "3.5.38" "@vue/shared" "3.5.38" +vue@^3.5.39: + version "3.5.39" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.39.tgz#0bb8d63bf2a75860e282bc054d19e625f5834224" + integrity sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA== + dependencies: + "@vue/compiler-dom" "3.5.39" + "@vue/compiler-sfc" "3.5.39" + "@vue/runtime-dom" "3.5.39" + "@vue/server-renderer" "3.5.39" + "@vue/shared" "3.5.39" + walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"