{"_id":"@alexisbaud/slice-common","_rev":"5-ec68d661452f0ce4527385e6c63da32b","name":"@alexisbaud/slice-common","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@alexisbaud/slice-common","version":"0.1.0","license":"ISC","_id":"@alexisbaud/slice-common@0.1.0","maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"dist":{"shasum":"b1504967865cee9f52b580e0d7ed796f5452f3f8","tarball":"https://registry.npmjs.org/@alexisbaud/slice-common/-/slice-common-0.1.0.tgz","fileCount":8,"integrity":"sha512-uxdU3i9Gw8PXdOwH4vWBCYGSh7dzmDpQtkYsEdhc+TR3f+QdZGEBRTJ4Wovni+Z9vl7tqPi9GY6+CqtQl1hMNA==","signatures":[{"sig":"MEYCIQDcY3T508yDIJ9yz9fOSMKBYdvHzkYJose0MMLMRmkqvgIhAP8Av9OrUD6ezMGq79H29E0hId+xAxAjHlTymlXMOUDn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22185},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"gitHead":"0ee4a51d9ec27a4bd9163df48e41e3ed271aa874","scripts":{"lint":"eslint src --ext .ts","build":"tsup src/index.ts --format esm,cjs --dts --clean","format":"prettier --write \"src/**/*.ts\" \"*.{js,json,md}\" --ignore-path .gitignore","lint:fix":"eslint src --ext .ts --fix","check-types":"tsc --noEmit"},"_npmUser":{"name":"alexisbaud","email":"alexisbaud104@gmail.com"},"_npmVersion":"10.9.2","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","eslint":"^8.56.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.20","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","@typescript-eslint/eslint-plugin":"^7.1.0"},"peerDependencies":{"eslint":">=8.0.0","prettier":">=3.0.0"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true},"@typescript-eslint/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/slice-common_0.1.0_1746957350502_0.24978410877446677","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alexisbaud/slice-common","version":"0.1.1","license":"ISC","_id":"@alexisbaud/slice-common@0.1.1","maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"dist":{"shasum":"62f272ac826f6bdd0c1ad062818aee4dd984018a","tarball":"https://registry.npmjs.org/@alexisbaud/slice-common/-/slice-common-0.1.1.tgz","fileCount":8,"integrity":"sha512-rI0fbPC4iNG1slEWVgRxQ+gmHK3UXHWuOgtSvliu+kikmRvaI8DHF3nbkC19F6hPJAY0TecWFzE5lLq8ZmJlIw==","signatures":[{"sig":"MEQCIBzDmLF4zhs/YSBnhDTKJwTvMm8iCU8NptnaiPViU4PHAiA6E8IXscrW6m58zZ9LVQPFV7lGmiXrrt6mCjM5pnx8Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22339},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"gitHead":"0ee4a51d9ec27a4bd9163df48e41e3ed271aa874","scripts":{"lint":"eslint src --ext .ts","build":"tsup src/index.ts --format esm,cjs --dts --clean","format":"prettier --write \"src/**/*.ts\" \"*.{js,json,md}\" --ignore-path .gitignore","lint:fix":"eslint src --ext .ts --fix","check-types":"tsc --noEmit"},"_npmUser":{"name":"alexisbaud","email":"alexisbaud104@gmail.com"},"_npmVersion":"10.9.2","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","eslint":"^8.56.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.20","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","@typescript-eslint/eslint-plugin":"^7.1.0"},"peerDependencies":{"eslint":">=8.0.0","prettier":">=3.0.0"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true},"@typescript-eslint/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/slice-common_0.1.1_1746967307186_0.024599757221993812","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alexisbaud/slice-common","version":"0.1.3","license":"ISC","_id":"@alexisbaud/slice-common@0.1.3","maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"dist":{"shasum":"14d0620c60060d5e7453a104d6f6e8337a8b4105","tarball":"https://registry.npmjs.org/@alexisbaud/slice-common/-/slice-common-0.1.3.tgz","fileCount":8,"integrity":"sha512-675dgGMPxLZ4wHz9XjpKaGrxYdo3T+mZpbhUuM8JE8+O1bD0oWkhGYBsB+1Rp4ey42Z3JRpkGD5E/AA9rkgH7A==","signatures":[{"sig":"MEUCIQCF1b7l3iIwSEz2MM4sl6hGS2lWtqPTdyfYIWAKzVuNRwIgfXcYX40mJiH4Qk19836nwT3f5jH3/4KhB0Az4VbF3Hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20496},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"gitHead":"831009cd780c595abb7d9008ce5e1a6c6c78c9ae","scripts":{"lint":"eslint src --ext .ts","build":"tsup src/index.ts --format esm,cjs --dts --clean","format":"prettier --write \"src/**/*.ts\" \"*.{js,json,md}\" --ignore-path .gitignore","lint:fix":"eslint src --ext .ts --fix","check-types":"tsc --noEmit"},"_npmUser":{"name":"alexisbaud","email":"alexisbaud104@gmail.com"},"_npmVersion":"10.9.2","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","eslint":"^8.56.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.20","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","@typescript-eslint/eslint-plugin":"^7.1.0"},"peerDependencies":{"eslint":">=8.0.0","prettier":">=3.0.0"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true},"@typescript-eslint/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/slice-common_0.1.3_1746974739713_0.5796851124260485","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alexisbaud/slice-common","version":"0.1.5","license":"ISC","_id":"@alexisbaud/slice-common@0.1.5","maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"dist":{"shasum":"acce540871365110165c68809b5f61eba93d4613","tarball":"https://registry.npmjs.org/@alexisbaud/slice-common/-/slice-common-0.1.5.tgz","fileCount":8,"integrity":"sha512-FCa9DeFpHJfdb2gKDbMQ5EJEB+8YJuVExvoWF/VZNB5HQYQyTGSbf/2PDcBe1SevnIXcNyIUkJftW9wZ1dlKdA==","signatures":[{"sig":"MEUCIQDXvaeXkEkISA6A0iq3kKzb09Zhjm8R1kvA7Bkg4tB8RAIgeE7RK9KXFe0fUUBsN7oK+2eofW23Ec/WmFtJeLrzUA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20496},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"gitHead":"82c29a77d1154a53e8a156889b10f690a13f4c64","scripts":{"lint":"eslint src --ext .ts","build":"tsup src/index.ts --format esm,cjs --dts --clean","format":"prettier --write \"src/**/*.ts\" \"*.{js,json,md}\" --ignore-path .gitignore","lint:fix":"eslint src --ext .ts --fix","check-types":"tsc --noEmit"},"_npmUser":{"name":"alexisbaud","email":"alexisbaud104@gmail.com"},"_npmVersion":"10.9.2","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","eslint":"^8.56.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.20","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.1.0","@typescript-eslint/eslint-plugin":"^7.1.0"},"peerDependencies":{"eslint":">=8.0.0","prettier":">=3.0.0"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true},"@typescript-eslint/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/slice-common_0.1.5_1746988561419_0.15412257929252204","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@alexisbaud/slice-common","version":"0.1.6","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","format":"prettier --write \"src/**/*.ts\" \"*.{js,json,md}\" --ignore-path .gitignore","check-types":"tsc --noEmit"},"peerDependencies":{"eslint":">=8.0.0","prettier":">=3.0.0"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true},"@typescript-eslint/eslint-plugin":{"optional":true}},"devDependencies":{"@types/node":"^20.11.20","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","prettier":"^3.2.5","tsup":"^8.0.2","typescript":"^5.3.3"},"license":"ISC","publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"_id":"@alexisbaud/slice-common@0.1.6","gitHead":"a914564b2a2bf9af4d359aa5476850027225c892","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-PuMHOCiVCaSZV2K8uxf6BelkB3PZXwwKgwKbX8q9tZueWNfTNfnBMmxXaXylyGldjCwWsD/mOs3rvzywRw/pRg==","shasum":"344e4ca79e54317cf6bd2c545dba391d29797f2f","tarball":"https://registry.npmjs.org/@alexisbaud/slice-common/-/slice-common-0.1.6.tgz","fileCount":8,"unpackedSize":21266,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH2uamEZpaZt4ZFuKdDcXH7kNCzdFdaU0CaFDpvsTvj+AiBDrqlE90RNRWAHsrBBAriISnQ2TKrG+hQ36mBqDFZa3g=="}]},"_npmUser":{"name":"alexisbaud","email":"alexisbaud104@gmail.com"},"directories":{},"maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/slice-common_0.1.6_1746989362954_0.3693528089640985"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-11T09:55:50.404Z","modified":"2025-05-11T18:49:23.350Z","0.1.0":"2025-05-11T09:55:50.698Z","0.1.1":"2025-05-11T12:41:47.382Z","0.1.3":"2025-05-11T14:45:39.892Z","0.1.5":"2025-05-11T18:36:01.648Z","0.1.6":"2025-05-11T18:49:23.174Z"},"license":"ISC","description":"Shared TypeScript types, event definitions, helpers, and configs for Slice microservices.","maintainers":[{"name":"alexisbaud","email":"alexisbaud104@gmail.com"}],"readme":"# @alexisbaud/slice-common\n\nThis package provides shared TypeScript types, event definitions, helper functions, and base ESLint/Prettier configurations for Slice microservices.\n\n## Version\n\n`0.1.0` (See `package.json` for the latest version)\n\n## Installation\n\nInstall the package in your microservice project using your preferred package manager:\n\n```bash\nnpm install @alexisbaud/slice-common\n# or\nyarn add @alexisbaud/slice-common\n# or\npnpm add @alexisbaud/slice-common\n```\n\n## Contents\n\n### 1. Types\n\nLocated in `dist/types/` (after build) and defined in `src/types/`:\n\n-   **`AuthCredentials`**, **`AuthTokens`** (from `auth.ts`): Interfaces for authentication request and response data.\n-   **`UserProfile`** (from `user.ts`): Interface for user profile information.\n-   **`AuthUserRegisteredEvent`**, **`AuthUserDeletedEvent`** (from `auth.ts`): Interfaces for authentication event payloads.\n\n**Example Usage (TypeScript):**\n\n```typescript\nimport { UserProfile, AuthCredentials, AuthTokens, AuthUserRegisteredEvent } from '@alexisbaud/slice-common';\n\nconst user: UserProfile = {\n  id: 'user-uuid-123',\n  email: 'test@example.com',\n  isActive: true,\n  isVerified: false,\n  createdAt: new Date(),\n  updatedAt: new Date(),\n  // username, firstName, lastName are optional\n};\n\nconst credentials: AuthCredentials = {\n  email: 'login@example.com',\n  password: 'securePassword123',\n};\n\n// Example of an event payload\nconst eventPayload: AuthUserRegisteredEvent = {\n  id: 'user-uuid-123',\n  email: 'newuser@example.com',\n  timestamp: new Date().toISOString(),\n};\n```\n\n### 2. Helper Functions\n\nLocated in `dist/helpers/` (after build) and defined in `src/helpers/`:\n\n-   **`formatDate(date: Date, locale?: string, options?: Intl.DateTimeFormatOptions): string`**: Formats a Date object into a human-readable string.\n-   **`slugify(text: unknown): string`**: Converts a string into a URL-friendly slug.\n-   **`genUUIDReadable(segments?: number, segmentLength?: number): string`**: Generates a human-readable, non-cryptographic pseudo-UUID.\n\n**Example Usage (TypeScript):**\n\n```typescript\nimport { formatDate, slugify, genUUIDReadable } from '@alexisbaud/slice-common';\n\nconsole.log(formatDate(new Date())); // e.g., \"01/25/2024, 10:30:00\" (output depends on locale)\nconsole.log(slugify('My Awesome Slice Title!')); // \"my-awesome-slice-title\"\nconsole.log(genUUIDReadable()); // e.g., \"xzy1-abc2-qwe3\"\n```\n\n### 3. ESLint Configuration\n\nA base ESLint configuration is provided in `eslint/index.js`. To use it in your microservice:\n\n1.  **Install Peer Dependencies**: Ensure your service has `eslint`, `@typescript-eslint/parser`, `@typescript-eslint/eslint-plugin`, `prettier`, `eslint-config-prettier`, and `eslint-plugin-prettier` installed as development dependencies.\n\n    ```bash\n    npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier\n    # or\n    yarn add --dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier\n    ```\n\n2.  **Extend the Configuration**: Create or update your service's `.eslintrc.js` (or `.eslintrc.json`, `.yaml`) file:\n\n    ```javascript\n    // your-service/.eslintrc.js\n    module.exports = {\n      root: true,\n      extends: [\n        require.resolve('@alexisbaud/slice-common/eslint'),\n        // Add any project-specific ESLint rules or plugins here\n      ],\n      parserOptions: {\n        // Important: Point to your service's tsconfig.json\n        project: ['./tsconfig.json'], \n        tsconfigRootDir: __dirname,\n      },\n      // Add or override rules specific to this service\n      rules: {\n        // Example: 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',\n      },\n    };\n    ```\n\n### 4. Prettier Configuration\n\nA base Prettier configuration is provided in `prettier/index.js`. To use it in your microservice:\n\n1.  **Install Prettier**: Ensure `prettier` is a dev dependency in your service.\n\n    ```bash\n    npm install --save-dev prettier\n    # or\n    yarn add --dev prettier\n    ```\n\n2.  **Use the Configuration**: You have a few options:\n\n    *   **Via `package.json` (recommended for simplicity):**\n\n        ```json\n        // your-service/package.json\n        {\n          // ...\n          \"prettier\": \"@alexisbaud/slice-common/prettier\"\n          // ...\n        }\n        ```\n\n    *   **Via a local `.prettierrc.js` file:**\n\n        ```javascript\n        // your-service/.prettierrc.js\n        module.exports = {\n          ...require('@alexisbaud/slice-common/prettier'),\n          // Add any project-specific Prettier overrides here\n        };\n        ```\n\n## Development of `@alexisbaud/slice-common`\n\n### Build\n\nThis package is built using `tsup`. To build it locally after cloning:\n\n```bash\nnpm run build\n```\n\nThis command cleans the `dist/` directory and then generates ESM, CJS, and TypeScript declaration files from `src/index.ts`.\n\n### Linting & Formatting\n\n-   Lint files: `npm run lint`\n-   Fix linting issues: `npm run lint:fix`\n-   Format files with Prettier: `npm run format`\n\n### Type Checking\n\n-   Check for TypeScript errors: `npm run check-types`\n\n## Contribution\n\nWhen making changes:\n\n1.  Update types, helpers, or configs in the `src/` directory.\n2.  Ensure all exports are correctly managed through `src/index.ts` if applicable.\n3.  Update this `README.md` if public APIs or usage instructions change.\n4.  Run `npm run format` and `npm run lint:fix`.\n5.  Ensure `npm run build` and `npm run check-types` pass without errors.\n6.  Increment the version in `package.json` according to Semantic Versioning (SemVer) if your changes are breaking, a new feature, or a bugfix. ","readmeFilename":"README.md"}