{"_id":"@agape/util","_rev":"5-0f734c9135a9007a8d9fc5d19bf0426a","name":"@agape/util","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.1":{"name":"@agape/util","version":"0.1.1","keywords":["agape","util","i18n","internationalization"],"author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","_id":"@agape/util@0.1.1","maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"homepage":"https://agape.dev","bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"dist":{"shasum":"434ef2d3b14f62544507e3eb6983afc1e0872777","tarball":"https://registry.npmjs.org/@agape/util/-/util-0.1.1.tgz","fileCount":8,"integrity":"sha512-y4acMQ+RXt9EgE5Rqd5WfRjjsYc8JQGlRjYI94LBpnsnykQyQutnb9Iy4ksyEM9Z9cqw2/9q5HaryKGolMok3Q==","signatures":[{"sig":"MEUCIDiIi5Wk9VcQwFhpJeJz1lEI7VwO1J+ltATZnDRPir6kAiEA7VOmZZj+msgrCpx4GfDmnmfA0kzgblQBcgb1uXYawX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29420},"main":"./cjs/index.js","types":"./cjs/index.d.ts","es2020":"./es2020/index.js","module":"./es2020/index.js","exports":{".":{"node":"./cjs/index.js","es2020":"./es2020/index.js","import":"./es2020/index.js","default":"./es2020/index.js","require":"./cjs/index.js"},"./package.json":{"default":"./package.json"}},"gitHead":"8d6c05c4ddd7b9071b87fe3a07bf2365156a9e21","_npmUser":{"name":"maverik.minett","email":"maverik.minett@gmail.com"},"repository":{"url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git","type":"git"},"_npmVersion":"11.6.0","description":"util management utilities with global state","directories":{},"_nodeVersion":"24.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/util_0.1.1_1758203303815_0.07925540152602806","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agape/util","version":"0.1.2","keywords":["agape","util","utlity","pick","omit","object"],"author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","_id":"@agape/util@0.1.2","maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"homepage":"https://agape.dev","bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"dist":{"shasum":"d09dbb42ae0d686c561a700851f10afd19451eec","tarball":"https://registry.npmjs.org/@agape/util/-/util-0.1.2.tgz","fileCount":38,"integrity":"sha512-5+G3gA8fGBLmtL29cUMhjtIkobQjNM1oy0zAuNBt5VHnl3YpUXQQnQsM0KmwtFItqsCuygBTJdoqLrRAX6weTg==","signatures":[{"sig":"MEYCIQCYUeabHvEemrPjAEL0zAfVLD8AWX/5xDG1rtqN8byC7AIhAOo+v4gtbls07xPLMPYT9BTZbxr6nADujUzZsY1VN1Ch","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32656},"main":"./cjs/index.js","types":"./cjs/index.d.ts","es2020":"./es2020/index.js","module":"./es2020/index.js","exports":{".":{"node":"./cjs/index.js","es2020":"./es2020/index.js","import":"./es2020/index.js","default":"./es2020/index.js","require":"./cjs/index.js"},"./package.json":{"default":"./package.json"}},"gitHead":"dc61780b0c1ff76f3019372fa504e49c960a0d10","_npmUser":{"name":"maverik.minett","email":"maverik.minett@gmail.com"},"repository":{"url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git","type":"git"},"_npmVersion":"11.6.0","description":"util management utilities with global state","directories":{},"_nodeVersion":"24.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/util_0.1.2_1758308381431_0.4176194173856893","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@agape/util","version":"0.2.0","keywords":["agape","util","utlity","pick","omit","object"],"author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","_id":"@agape/util@0.2.0","maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"homepage":"https://agape.dev","bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"dist":{"shasum":"1f79e69808c9f56e03a367764c0df01dac71498e","tarball":"https://registry.npmjs.org/@agape/util/-/util-0.2.0.tgz","fileCount":38,"integrity":"sha512-+P7GNcEEAl9XolRQSdDxB8mfCaaRLkDqAS0lC6rsnNG4qsyAcey4Zh7KNDGyHVCNJDttaSV57izW6OaV4ZK2Cg==","signatures":[{"sig":"MEQCICSAgfSFwklXOQJXnBibTh3L1hoV5O55/LlVZgMX6jEmAiBOw5MsjdyH58BZ1GDywnXwogjQCGFFX0+45BWJE1x3EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33684},"main":"./cjs/index.js","types":"./cjs/index.d.ts","es2020":"./es2020/index.js","module":"./es2020/index.js","exports":{".":{"node":"./cjs/index.js","es2020":"./es2020/index.js","import":"./es2020/index.js","default":"./es2020/index.js","require":"./cjs/index.js"},"./package.json":{"default":"./package.json"}},"gitHead":"bd21414672e636fe59216026184ef5b079cdcdca","_npmUser":{"name":"maverik.minett","email":"maverik.minett@gmail.com"},"repository":{"url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git","type":"git"},"_npmVersion":"11.6.0","description":"util management utilities with global state","directories":{},"_nodeVersion":"24.8.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/util_0.2.0_1758844509412_0.3714296821066232","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@agape/util","version":"0.3.0","keywords":["agape","util","utlity","pick","omit","object"],"author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","_id":"@agape/util@0.3.0","maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"homepage":"https://agape.dev","bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"dist":{"shasum":"0e3114d7d803b7c2e803fc804cdbadccb1d1893a","tarball":"https://registry.npmjs.org/@agape/util/-/util-0.3.0.tgz","fileCount":32,"integrity":"sha512-F+WyPJ0V8+uzSw5BVrhzJ02NsrZIHBbd6TN2rnt+mL/Ee0kxoMGZlji0+fKY2+dWZZlH/Vyd3y70z5OoqTJkkg==","signatures":[{"sig":"MEYCIQDDxOdwXeACzKDl66o2Hk+coYuVXi93rMDWO1cwpnkvXgIhAKvEMGGa/2gCCrm2LyfChj9odTlUc1qGq93sgJn6CFrU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25222},"main":"./cjs/index.js","types":"./cjs/index.d.ts","es2020":"./es2020/index.js","module":"./es2020/index.js","exports":{".":{"node":"./cjs/index.js","es2020":"./es2020/index.js","import":"./es2020/index.js","default":"./es2020/index.js","require":"./cjs/index.js"},"./package.json":{"default":"./package.json"}},"gitHead":"c1289c7a4725569e2b9868894b2a65ce40d0d9b2","_npmUser":{"name":"maverik.minett","email":"maverik.minett@gmail.com"},"repository":{"url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git","type":"git"},"_npmVersion":"11.6.0","description":"util management utilities with global state","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@agape/types":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/util_0.3.0_1758936816078_0.509941037466138","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@agape/util","version":"0.3.1","description":"util management utilities with global state","main":"./cjs/index.js","module":"./es2020/index.js","author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","publishConfig":{"access":"public"},"homepage":"https://agape.dev","repository":{"type":"git","url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git"},"keywords":["agape","util","utlity","pick","omit","object"],"dependencies":{"@agape/types":"^2.0.2"},"es2020":"./es2020/index.js","exports":{"./package.json":{"default":"./package.json"},".":{"es2020":"./es2020/index.js","node":"./cjs/index.js","default":"./es2020/index.js","require":"./cjs/index.js","import":"./es2020/index.js"}},"_id":"@agape/util@0.3.1","gitHead":"bb631eb7fbdf1fb1fd7c9aba37039ca3d7801b57","types":"./cjs/index.d.ts","bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-G4kmVa3cdS88nZNLcokJnEYbp6R/snrFoEJxAQ3HNoAkLfKF8H2JX4kzrb6Y5EvXwcmGlbnktgKLZemjwkBRRQ==","shasum":"f417b03d2e2c8e57e3a4d1977a0e9d93c35d7133","tarball":"https://registry.npmjs.org/@agape/util/-/util-0.3.1.tgz","fileCount":32,"unpackedSize":24980,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQt/PAidC8WlXFQzWCOmDcZjcB8/TICxM4NFKF0DpELwIgclcS+O3soka+evowBIuvqaey8+L566dBSkCs3odogtI="}]},"_npmUser":{"name":"maverik.minett","email":"maverik.minett@gmail.com"},"directories":{},"maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/util_0.3.1_1758937409680_0.5320086611590915"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-18T13:48:23.678Z","modified":"2025-09-27T01:43:30.052Z","0.1.1":"2025-09-18T13:48:24.003Z","0.1.2":"2025-09-19T18:59:41.649Z","0.2.0":"2025-09-25T23:55:09.628Z","0.3.0":"2025-09-27T01:33:36.274Z","0.3.1":"2025-09-27T01:43:29.852Z"},"bugs":{"url":"https://github.com/AgapeToolkit/AgapeToolkit/issues"},"author":{"name":"Maverik Minett","email":"maverik.minett@gmail.com"},"license":"MIT","homepage":"https://agape.dev","keywords":["agape","util","utlity","pick","omit","object"],"repository":{"type":"git","url":"git+https://github.com/AgapeToolkit/AgapeToolkit.git"},"description":"util management utilities with global state","maintainers":[{"name":"maverik.minett","email":"maverik.minett@gmail.com"}],"readme":"# @agape/util\n\nEssential utility functions for object manipulation and data validation.\n\n## ✨ Functions\n\n### `pick(instance, keys)`\nCreates a new object by picking only the specified properties from the original object.\n\n### `omit(instance, keys)`\nCreates a new object by omitting specified properties from the original object.\n\n### `properties(instance)`\nCreates a new object containing only the non-function properties from the original object.\n\n### `isPresent(value)`\nChecks if a value is present (not empty) and provides TypeScript type narrowing.\n\nA value is considered present if it is NOT:\n- `undefined`\n- `null` \n- An empty string `''`\n\n---\n\n## 🚀 Examples\n\n### `pick(instance, keys)`\n\n```ts\nimport { pick } from '@agape/util';\n\nconst user = { id: 1, name: 'John', email: 'john@example.com' };\n\npick(user, ['id', 'name']);\n// Result: { id: 1, name: 'John' }\n```\n\n### `omit(instance, keys)`\n\n```ts\nimport { omit } from '@agape/util';\n\nconst user = { id: 1, name: 'John', email: 'john@example.com', password: 'secret' };\n\nomit(user, ['password']);\n// Result: { id: 1, name: 'John', email: 'john@example.com' }\n```\n\n### `properties(instance)`\n\n```ts\nimport { properties } from '@agape/util';\n\nconst employee = {\n  id: 1,\n  name: 'John',\n  getFullName() { return this.name; }\n};\n\nproperties(employee);\n// Result: { id: 1, name: 'John' }\n```\n\n### `isPresent(value)`\n\n```ts\nimport { isPresent } from '@agape/util';\n\nisPresent('hello'); // true\nisPresent(''); // false\nisPresent(null); // false\nisPresent(undefined); // false\n```\n\nThis function acts as a type guard, allowing TypeScript to narrow types in conditional statements.\n\n```ts\nfunction processValue(value: number | undefined) {\n  if (isPresent(value)) {\n    // TypeScript knows value is definitely a number here\n    return value + 1; // ✅ No type errors\n  }\n  // TypeScript knows value is undefined here\n}\n```\n---\n\n## 📚 Documentation\n\nSee the full API documentation at [agape.dev/api](https://agape.dev/api).\n\n## 📦 Agape Toolkit\n\nThis package is part of the [Agape Toolkit](https://github.com/AgapeToolkit/AgapeToolkit) - a comprehensive collection of TypeScript utilities and libraries for modern web development.\n","readmeFilename":"README.md"}