{"_id":"@benjos/cookware","_rev":"5-35f2e2d9d3b1888120c7b0376537667e","name":"@benjos/cookware","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@benjos/cookware","version":"1.0.0","keywords":["utils","tools","typescript"],"author":{"name":"benjos"},"license":"ISC","_id":"@benjos/cookware@1.0.0","maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"dist":{"shasum":"cabcfa4083028c609b5c44c7c2eea71a1ae258f2","tarball":"https://registry.npmjs.org/@benjos/cookware/-/cookware-1.0.0.tgz","fileCount":8,"integrity":"sha512-7l0EOcJ9WlaOxWaCkqHXB685u6zJyzjHOqOH87k6UIBpqi+LlJcg4d8qRaLFIJ9bxD74bxox52uAD7bvg2j1fA==","signatures":[{"sig":"MEUCID9xH6n4u6iaMFBtK8OodQ57FOYrNeY3JitdWBOr50NAAiEA1OqGaBGXI2oGk0GK0qj3KgcFhGhzb5mZYL2XCnQy0AY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6834},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"gitHead":"13281328df694b77ed962b9aaa3dd5249d729503","scripts":{},"_npmUser":{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"},"_npmVersion":"11.6.2","description":"Collection of TypeScript tools and utilities for personal projects","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"peerDependencies":{"typescript":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cookware_1.0.0_1766873462135_0.016353791101639814","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@benjos/cookware","version":"1.0.1","keywords":["utils","tools","typescript"],"author":{"name":"benjos"},"license":"ISC","_id":"@benjos/cookware@1.0.1","maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"homepage":"https://github.com/LeBenjos/cookware#readme","bugs":{"url":"https://github.com/LeBenjos/cookware/issues"},"dist":{"shasum":"54bdcc3650e406081af9cbf91569ab7402e774ad","tarball":"https://registry.npmjs.org/@benjos/cookware/-/cookware-1.0.1.tgz","fileCount":12,"integrity":"sha512-AGJRwCxyqGwmMSPe1n1kOz7PH1bdAnXJ+rmC1sOYHN7Oo4BdnAWJ9b0vtTcPZigC792eauCseLsANi7FViy/Jg==","signatures":[{"sig":"MEUCIGD8/ykbgPRcsLqLjr+QnqTvujmExUw69Hi5wYKofJjgAiEAwMsnjUN3UUCz3P3kSEZObonGY3ebPIVk2d9+AzXrDEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18356},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"gitHead":"4417071a468246a49cedb92322a2f79c4ae5c3d4","scripts":{},"_npmUser":{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"},"repository":{"url":"git+https://github.com/LeBenjos/cookware.git","type":"git"},"_npmVersion":"11.6.2","description":"Collection of TypeScript tools and utilities for personal projects","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"peerDependencies":{"typescript":">=5.0.0","@benjos/spices":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/cookware_1.0.1_1766942578167_0.6493517359577914","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@benjos/cookware","version":"1.0.2","keywords":["utils","tools","typescript"],"author":{"name":"benjos"},"license":"ISC","_id":"@benjos/cookware@1.0.2","maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"homepage":"https://github.com/LeBenjos/cookware#readme","bugs":{"url":"https://github.com/LeBenjos/cookware/issues"},"dist":{"shasum":"45202a8ffc8faa9835ba0a8e2c7179fa9c7d251f","tarball":"https://registry.npmjs.org/@benjos/cookware/-/cookware-1.0.2.tgz","fileCount":13,"integrity":"sha512-Ht8/0RiXivvN3CES2dUTC08TRe7gQMZtDKrDaK8I9VH4KGWTkJOU9VnwuJi53BXwA+URZxFJifFk+DhqNPn5HQ==","signatures":[{"sig":"MEUCIEsa0mFfIG0800gwGLp777KFFlXA7VDneUcnv5mu45KPAiEA0qS7DubP3gjQ+AS2gKuDNvV6PFQpDUpDo4vg4VEVOYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19429},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"gitHead":"706813bc1c83d96ab688816625cb5f70ea907f65","scripts":{},"_npmUser":{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"},"repository":{"url":"git+https://github.com/LeBenjos/cookware.git","type":"git"},"_npmVersion":"11.6.2","description":"Collection of TypeScript managers, tools and utilities for personal projects","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"peerDependencies":{"typescript":">=5.0.0","@benjos/spices":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/cookware_1.0.2_1767633866438_0.5642873829481097","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@benjos/cookware","version":"1.0.3","keywords":["utils","tools","typescript"],"author":{"name":"benjos"},"license":"ISC","_id":"@benjos/cookware@1.0.3","maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"homepage":"https://github.com/LeBenjos/cookware#readme","bugs":{"url":"https://github.com/LeBenjos/cookware/issues"},"dist":{"shasum":"d4fabcc84591cb0ba6a238354e89cfb65b72847b","tarball":"https://registry.npmjs.org/@benjos/cookware/-/cookware-1.0.3.tgz","fileCount":13,"integrity":"sha512-kuXDNoDOGpHMrzJRz/6jdmcw4tFBo9V6MiqojqYqnPeClgq1lPJqr62pfKjl3HdfWqfVgZj6tq9EodjwSHReBQ==","signatures":[{"sig":"MEYCIQCrkbV57+YlmnMkWOzg2Jxon1JWfQarWYT6iFRT1JLXEQIhANEVTan6e3UokNdJ8KCjpcy/6RuBLWk4YTseZtn/qQMG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19732},"main":"./src/index.ts","type":"module","types":"./src/index.ts","exports":{".":"./src/index.ts"},"gitHead":"706813bc1c83d96ab688816625cb5f70ea907f65","scripts":{},"_npmUser":{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"},"repository":{"url":"git+https://github.com/LeBenjos/cookware.git","type":"git"},"_npmVersion":"11.6.2","description":"Collection of TypeScript managers, tools and utilities for personal projects","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"peerDependencies":{"typescript":">=5.0.0","@benjos/spices":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/cookware_1.0.3_1767692754640_0.5657613333301348","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@benjos/cookware","version":"1.0.4","description":"Collection of TypeScript managers, tools and utilities for personal projects","main":"./src/index.ts","types":"./src/index.ts","type":"module","exports":{".":"./src/index.ts"},"scripts":{},"repository":{"type":"git","url":"git+https://github.com/LeBenjos/cookware.git"},"keywords":["utils","tools","typescript"],"author":{"name":"benjos"},"license":"ISC","peerDependencies":{"@benjos/spices":"^1.0.1","typescript":">=5.0.0"},"bugs":{"url":"https://github.com/LeBenjos/cookware/issues"},"homepage":"https://github.com/LeBenjos/cookware#readme","gitHead":"e6f0560138e18807c15eec258c2600da759994f3","_id":"@benjos/cookware@1.0.4","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-JlhZD6p2mgIbyq4S9syqrPAYkCDuRazA2EEd+WYVlfzo13/2M5awlPaD7kuT+yXdkpWniqQBQyVjD/uFZXxPkA==","shasum":"39514d640a72c7c8d445bd5736ac1fb4b22deb36","tarball":"https://registry.npmjs.org/@benjos/cookware/-/cookware-1.0.4.tgz","fileCount":13,"unpackedSize":19700,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBdcaF8IQo6FxIHDDkcSLNJRPk1lPtDU1QCjdzfi6myOAiA4eWHQSIMH+DFh0Zag/ToA0wIPiIIFPJzmHzPwZLL6Dg=="}]},"_npmUser":{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"},"directories":{},"maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cookware_1.0.4_1767872461546_0.39076273666225503"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-27T22:11:01.951Z","modified":"2026-01-08T11:41:01.879Z","1.0.0":"2025-12-27T22:11:02.287Z","1.0.1":"2025-12-28T17:22:58.316Z","1.0.2":"2026-01-05T17:24:26.592Z","1.0.3":"2026-01-06T09:45:54.793Z","1.0.4":"2026-01-08T11:41:01.683Z"},"bugs":{"url":"https://github.com/LeBenjos/cookware/issues"},"author":{"name":"benjos"},"license":"ISC","homepage":"https://github.com/LeBenjos/cookware#readme","keywords":["utils","tools","typescript"],"repository":{"type":"git","url":"git+https://github.com/LeBenjos/cookware.git"},"description":"Collection of TypeScript managers, tools and utilities for personal projects","maintainers":[{"name":"benjos","email":"benjamin.schinkel01@outlook.fr"}],"readme":"# @benjos/cookware\n\nCollection of TypeScript tools and utilities for my personal projects.\n\n## Installation\n\n```bash\nnpm install @benjos/cookware\n```\n\n**Requirements:**\n- TypeScript ≥ 5.0.0\n- @benjos/spices ^ 1.0.1\n\n\n## Managers (Singletons)\n\n### DomKeyboardManager\n\nHandles global keyboard events and exposes actions for key management.\n\n```typescript\nimport { DomKeyboardManager } from '@benjos/cookware';\n\nDomKeyboardManager.init();\nDomKeyboardManager.onKeyDown.add((e) => console.log('Key down:', e.key));\nDomKeyboardManager.onKeyUp.add((e) => console.log('Key up:', e.key));\n```\n\n#### Extra\n\n- `DomKeyboardManager.isKeyDown(name: string): boolean` — Check if a key (by name or code) is pressed.\n- `DomKeyboardManager.isAnyKeyDown(names: string[]): boolean` — Check if at least one key in the list is pressed.\n- `DomKeyboardManager.areAllKeysDown(names: string[]): boolean` — Check if all keys in the list are pressed.\n\n### DomPointerManager\n\nUnified pointer event management (mouse, touch, pen), exposes pointer position and actions for interactions using Pointer Events.\n\n```typescript\nimport { DomPointerManager } from '@benjos/cookware';\n\nDomPointerManager.init();\nDomPointerManager.onPointerMove.add(() => {\n  // Use DomPointerManager.x, y, normalizedX, normalizedY, etc.\n});\nDomPointerManager.onPointerDown.add(() => {\n  // Pointer down event\n});\nDomPointerManager.onPointerUp.add(() => {\n  // Pointer up event\n});\n```\n\n#### Extra\n\n- `DomPointerManager.x`, `y` — Pointer position in pixels.\n- `DomPointerManager.normalizedX`, `normalizedY` — Normalized position (0-1).\n- `DomPointerManager.centralX`, `centralY` — Centered position (-1 to 1).\n- Uses Pointer Events (`PointerEvent`) for unified input handling.\n\n### DomResizeManager\n\nDetects window resize events and exposes actions and useful getters.\n\n```typescript\nimport { DomResizeManager } from '@benjos/cookware';\n\nDomResizeManager.init();\nDomResizeManager.onResize.add(() => {\n  console.log('New size:', DomResizeManager.width, DomResizeManager.height);\n});\n```\n\n### PoolManager\n\nCentralized management of reusable object pools (object pool pattern).\n\n```typescript\nimport { PoolManager } from '@benjos/cookware';\n\nPoolManager.init();\nPoolManager.add(MyClass, 5); // Pre-fills the pool with 5 instances\nconst obj = PoolManager.get(MyClass); // Gets an instance (calls obj.init())\nPoolManager.release(obj); // Returns the object to the pool (calls obj.reset())\n```\n\nYour class must implement the `init()` and `reset()` methods.\n\n### TickerManager\n\nAnimation loop manager based on `requestAnimationFrame`, allows adding callbacks executed every frame.\n\n```typescript\nimport { TickerManager } from '@benjos/cookware';\n\nTickerManager.init();\nTickerManager.add((dt) => {\n  // dt = delta time in seconds\n});\n```\n\n#### Advanced options\n\n- `TickerManager.add(callback, { alwaysActive: true })`: the callback is called even if the loop is paused.\n- Methods: `start()`, `stop()`, `pause()`, `play()` to control the loop.\n- Getters: `startTime`, `currentTime`, `elapsedTime`, `deltaTime`.\n\n## Tools (Classes to instantiate)\n\n### Action\n\nEvent system for handling callbacks.\n\n```typescript\nimport { Action } from '@benjos/cookware';\n\nconst onUserLogin = new Action<[string, number]>();\nonUserLogin.add((username, id) => console.log(`${username} logged in with ID ${id}`));\nonUserLogin.execute('John', 42);\n```\n\n### Point\n\n3D point class with manipulation methods.\n\n```typescript\nimport { Point } from '@benjos/cookware';\n\nconst point = new Point(10, 20, 30);\nconst clone = point.clone();\npoint.set(5, 15, 25);\n```\n\n### Pool\n\nObject pool pattern for reusing instances.\n\n```typescript\nimport { Pool, Point } from '@benjos/cookware';\n\nclass PointPool extends Pool<Point> {\n  constructor() {\n    super(Point, 10); // Pre-populate with 10 instances\n  }\n}\n\nconst pool = new PointPool();\nconst point = pool.get();\n// Use point...\npool.release(point);\n\nclass MyClass{\n  public pool = new Pool(Point, 10) // Pre-populate with 10 instances\n}\nconst myClass = new MyClass();\nmyClass.pool.get();\n```\n\n\n## Utils (Singletons ready to use)\n\n### AssetUtils\n\nManage asset paths with configurable base path.\n\n```typescript\nimport { AssetUtils } from '@benjos/cookware';\n\n// Optional: set custom base path\nAssetUtils.Init('./myAssetsFolder/');\n\nconst imagePath = AssetUtils.GetPath('logo.png'); // \"./myAssetsFolder/logo.png\"\n```\n\n### DomUtils\n\nDOM manipulation helpers.\n\n```typescript\nimport { DomUtils } from '@benjos/cookware';\n\nconst app = DomUtils.GetApp();       // Gets or creates #app or #root\nconst loader = DomUtils.GetLoader(); // Gets or creates #loader\n```\n\n\n## License\n\nISC\n","readmeFilename":"README.md"}