{"_id":"@sigyn/pattern","_rev":"3-00f89b58f8963e54998941ad45fedab0","name":"@sigyn/pattern","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@sigyn/pattern","version":"1.0.0","description":"Loki pattern in JavaScript","main":"./dist/pattern.js","module":"./dist/pattern.mjs","types":"./dist/pattern.d.ts","exports":{".":{"require":"./dist/pattern.js","import":"./dist/pattern.mjs","types":"./dist/pattern.d.ts"}},"engines":{"node":">=18"},"scripts":{"build":"tsup src/pattern.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build","test:tsd":"npm run build && tsd","test:runner":"glob -c \"tsx --test\" \"./test/*.spec.ts\"","test":"npm run test:runner && npm run test:tsd","coverage":"c8 -r html npm test","lint":"cross-env eslint src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/MyUnisoft/sigyn.git","directory":"src/pattern"},"bugs":{"url":"https://github.com/MyUnisoft/sigyn/issues"},"homepage":"https://github.com/MyUnisoft/sigyn/blob/main/src/logql/README.md","keywords":["grafana","loki","pattern","log","logs"],"tsd":{"directory":"/test/types"},"author":{"name":"GENTILHOMME Thomas","email":"gentilhomme.thomas@gmail.com"},"license":"MIT","devDependencies":{"tsd":"^0.29.0"},"_id":"@sigyn/pattern@1.0.0","gitHead":"e4600344a9769d37b106f52005a2e6f6d009a4b7","_nodeVersion":"21.0.0","_npmVersion":"10.2.0","dist":{"integrity":"sha512-87GOtkYiEcN3qWtHpL8rBLJHErC0xkU7Ym/BOZB/6LWh3CkRVxcgSNfpUSaR1rVxSGLJbIUK4Ns4ZbUajFnFsg==","shasum":"022e7a2127a63227f7aaeb9c55a95d85ed39c567","tarball":"https://registry.npmjs.org/@sigyn/pattern/-/pattern-1.0.0.tgz","fileCount":6,"unpackedSize":10430,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuDV69oxhbme7BIlXcDdub2IqBei0Hs8BJGeCjIY06dAIhAJDZMdilj+txupX7RE81SkJI2VIRBT7+nEiTGI4MqHih"}]},"_npmUser":{"name":"pierred","email":"pierredemailly.pro@gmail.com"},"directories":{},"maintainers":[{"name":"pierred","email":"pierredemailly.pro@gmail.com"},{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pattern_1.0.0_1700772584851_0.42225814052273747"},"_hasShrinkwrap":false},"1.0.1":{"name":"@sigyn/pattern","version":"1.0.1","description":"Loki pattern in JavaScript","main":"./dist/pattern.js","module":"./dist/pattern.mjs","types":"./dist/pattern.d.ts","exports":{".":{"require":"./dist/pattern.js","import":"./dist/pattern.mjs","types":"./dist/pattern.d.ts"}},"engines":{"node":">=18"},"scripts":{"build":"tsup src/pattern.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build","test:tsd":"npm run build && tsd","test:runner":"glob -c \"tsx --test\" \"./test/*.spec.ts\"","test":"npm run test:runner && npm run test:tsd","coverage":"c8 -r html npm test","lint":"cross-env eslint src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/MyUnisoft/sigyn.git","directory":"src/pattern"},"bugs":{"url":"https://github.com/MyUnisoft/sigyn/issues"},"homepage":"https://github.com/MyUnisoft/sigyn/blob/main/src/logql/README.md","keywords":["grafana","loki","pattern","log","logs"],"tsd":{"directory":"/test/types"},"author":{"name":"GENTILHOMME Thomas","email":"gentilhomme.thomas@gmail.com"},"license":"MIT","devDependencies":{"tsd":"^0.30.3"},"_id":"@sigyn/pattern@1.0.1","gitHead":"dfada18bdacd3b9e72cfdaaa93beed685d21f3fa","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-jj90wPBmHq7aLlJQQJ9ZvUb6njVlIu9ibUSgwPUnGryVH2+Fw8B/4nnXqvwKZR9FeFKwhhx7zgPF1qG0i71s/A==","shasum":"eb82d4ed3ac6978fd75f46cba2fcf5075ce02c8c","tarball":"https://registry.npmjs.org/@sigyn/pattern/-/pattern-1.0.1.tgz","fileCount":6,"unpackedSize":10777,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9Y2UT9Jeq0W6O3uYuSot46KV28VWJOFPfNPakBhXDoQIhAKDrTk6rTI6F0fQyKaAcWLbT0hygVvWhnrigLWc8ZCh2"}]},"_npmUser":{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"},"directories":{},"maintainers":[{"name":"pierred","email":"pierredemailly.pro@gmail.com"},{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pattern_1.0.1_1707771335008_0.06984725721542295"},"_hasShrinkwrap":false},"1.0.2":{"name":"@sigyn/pattern","version":"1.0.2","description":"Loki pattern in JavaScript","main":"./dist/pattern.js","module":"./dist/pattern.mjs","types":"./dist/pattern.d.ts","exports":{".":{"require":"./dist/pattern.js","import":"./dist/pattern.mjs","types":"./dist/pattern.d.ts"}},"engines":{"node":">=18"},"scripts":{"build":"tsup src/pattern.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build","test:tsd":"npm run build && tsd","test:runner":"glob -c \"tsx --test\" \"./test/*.spec.ts\"","test":"npm run test:runner && npm run test:tsd","coverage":"c8 -r html npm test","lint":"cross-env eslint src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/MyUnisoft/sigyn.git","directory":"src/pattern"},"bugs":{"url":"https://github.com/MyUnisoft/sigyn/issues"},"homepage":"https://github.com/MyUnisoft/sigyn/blob/main/src/logql/README.md","keywords":["grafana","loki","pattern","log","logs"],"tsd":{"directory":"/test/types"},"author":{"name":"GENTILHOMME Thomas","email":"gentilhomme.thomas@gmail.com"},"license":"MIT","devDependencies":{"tsd":"^0.30.3"},"_id":"@sigyn/pattern@1.0.2","gitHead":"17bca47321d2f8adc33bf93fbef077a773bdab10","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-a5+2coYR4BW6x9sB6xwQvTdhFKKnCt7JulAaO7cAPajRX0e6Zaw579t+t7b82dOpRVjaEVVc+YxwTl002z7gjA==","shasum":"20fb5b09800eb87d3912f82dd60b5d554e5ba961","tarball":"https://registry.npmjs.org/@sigyn/pattern/-/pattern-1.0.2.tgz","fileCount":6,"unpackedSize":10817,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWDiVJAQnP2ANkEq8jwMadtZhEA6cseHxqYGapvotOOAiBLpoz+XUb7FwakqVwUDkVhomqqVHA2pxw2Hlf9O0zO2w=="}]},"_npmUser":{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"},"directories":{},"maintainers":[{"name":"pierred","email":"pierredemailly.pro@gmail.com"},{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pattern_1.0.2_1707773305444_0.0016433513464559901"},"_hasShrinkwrap":false},"1.1.0":{"name":"@sigyn/pattern","version":"1.1.0","description":"Loki pattern in JavaScript","main":"./dist/pattern.js","module":"./dist/pattern.mjs","types":"./dist/pattern.d.ts","exports":{".":{"require":"./dist/pattern.js","import":"./dist/pattern.mjs","types":"./dist/pattern.d.ts"}},"engines":{"node":">=18"},"scripts":{"build":"tsup src/pattern.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build","test:tsd":"npm run build && tsd","test:runner":"glob -c \"tsx --test\" \"./test/*.spec.ts\"","test":"npm run test:runner && npm run test:tsd","coverage":"c8 -r html npm test","lint":"cross-env eslint src/**/*.ts"},"repository":{"type":"git","url":"git+https://github.com/MyUnisoft/sigyn.git","directory":"src/pattern"},"bugs":{"url":"https://github.com/MyUnisoft/sigyn/issues"},"homepage":"https://github.com/MyUnisoft/sigyn/blob/main/src/logql/README.md","keywords":["grafana","loki","pattern","log","logs"],"tsd":{"directory":"/test/types"},"author":{"name":"GENTILHOMME Thomas","email":"gentilhomme.thomas@gmail.com"},"license":"MIT","devDependencies":{"tsd":"^0.30.4"},"_id":"@sigyn/pattern@1.1.0","gitHead":"c3873fba26725ad46e4b8172b2af2aa0e2e07632","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-SziEUoB0I0/6C9+oPUFYXDdB35RuZniwBv0auFrvI6YEKn4oGIBmEaAJDFxbrZTdp3/rcjnbmzm7xKQ3RMyyiA==","shasum":"1b87ad12420e6bf070bebaecbb91d8e8a68d95db","tarball":"https://registry.npmjs.org/@sigyn/pattern/-/pattern-1.1.0.tgz","fileCount":6,"unpackedSize":10728,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFBNcQ3+4pjsTxzvi2zu1Z0EputREzQirHXrJvOt9GAQIhAIyJnoOCHL2W9x9PFS5x1DV/1un27Qz8glM88O/i34od"}]},"_npmUser":{"name":"pierred","email":"pierredemailly.pro@gmail.com"},"directories":{},"maintainers":[{"name":"pierred","email":"pierredemailly.pro@gmail.com"},{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pattern_1.1.0_1710540640924_0.43651434844238346"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-23T20:49:44.754Z","1.0.0":"2023-11-23T20:49:45.036Z","modified":"2024-03-15T22:10:41.508Z","1.0.1":"2024-02-12T20:55:35.168Z","1.0.2":"2024-02-12T21:28:25.623Z","1.1.0":"2024-03-15T22:10:41.065Z"},"maintainers":[{"name":"pierred","email":"pierredemailly.pro@gmail.com"},{"name":"fraxken","email":"gentilhomme.thomas@gmail.com"}],"description":"Loki pattern in JavaScript","homepage":"https://github.com/MyUnisoft/sigyn/blob/main/src/logql/README.md","keywords":["grafana","loki","pattern","log","logs"],"repository":{"type":"git","url":"git+https://github.com/MyUnisoft/sigyn.git","directory":"src/pattern"},"author":{"name":"GENTILHOMME Thomas","email":"gentilhomme.thomas@gmail.com"},"bugs":{"url":"https://github.com/MyUnisoft/sigyn/issues"},"license":"MIT","readme":"<p align=\"center\"><h1 align=\"center\">\n  Pattern\n</h1></p>\n\n<p align=\"center\">\n  Loki pattern in JavaScript/TypeScript\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/MyUnisoft/sigyn/src/pattern\">\n    <img src=\"https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/pattern?style=for-the-badge&label=version\" alt=\"npm version\">\n  </a>\n  <a href=\"https://github.com/MyUnisoft/sigyn/src/pattern\">\n    <img src=\"https://img.shields.io/bundlephobia/min/@sigyn/pattern?style=for-the-badge\" alt=\"size\">\n  </a>\n    <img src=\"https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge\" alt=\"ossf scorecard\">\n  </a>\n  <a href=\"https://github.com/MyUnisoft/sigyn/tree/main/src/pattern\">\n    <img src=\"https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/pattern.yml?style=for-the-badge\">\n  </a>\n  <a href=\"https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE\">\n    <img src=\"https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge\" alt=\"license\">\n  </a>\n</p>\n\n## 🚧 Requirements\n\n- [Node.js](https://nodejs.org/en/) version 18 or higher\n\n## 🚀 Getting Started\n\nThis package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)\n\n```bash\n$ npm i @sigyn/pattern\n# or\n$ yarn add @sigyn/pattern\n```\n\n## 📚 Usage\n\n```ts\nimport { Pattern } from \"@sigyn/pattern\";\n\nconst parser = new Pattern(\"HTTP <verb> <_> <endpoint>\");\n\nconst parsedLogs = parser.executeOnLogs([\n  \"HTTP POST 200 /api/v1/dowork\",\n  \"HTTP GET 200 /api/v1/dowork\"\n]);\n\n// Automatically infer types \nfor (const { verb, endpoint } of parsedLogs) {\n  console.log(verb, endpoint);\n}\n```\n\nYou can also provide an Array to Pattern constructor (quite helpful with long or multipart patterns).\n\n```ts\nnew Pattern([\n  \"[schema: <id>|type: <user_type>]\",\n  \"HTTP <verb> <_> <endpoint>\"\n] as const)\n```\n\n> [!TIP]\n> Use `as const` to benefit from type inference\n\n## 🌐 API\n\n- [Pattern](./docs/Pattern.md)\n- [NoopPattern](./docs/NoopPattern.md)\n\n### Shape\n\n<em>Pattern</em> and <em>NoopPattern</em> both implement the same Shape using `PatternShape` interface.\n\n```ts\ntype LokiPatternType = string | Array<string> | ReadonlyArray<string>;\n\ninterface PatternShape<T extends LokiPatternType = string> {\n  compile(): (log: string) => [] | [log: LokiLiteralPattern<T>];\n  executeOnLogs(logs: Array<string>): LokiLiteralPattern<T>[];\n}\n```\n\n## License\nMIT\n","readmeFilename":"README.md"}