{"_id":"@drunk-pulumi/intune-components","_rev":"5-7b12317da0a3cadcfa53842cf84a2c28","name":"@drunk-pulumi/intune-components","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@drunk-pulumi/intune-components","version":"0.0.1","keywords":[],"author":{"name":"Steven Hoang"},"license":"MIT","_id":"@drunk-pulumi/intune-components@0.0.1","maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"homepage":"https://github.com/baoduy/drunk-pulumi-intune-components#readme","bugs":{"url":"https://github.com/baoduy/drunk-pulumi-intune-components/issues"},"dist":{"shasum":"868b3ab0604fd52426a6467bac55a0b91a4e875c","tarball":"https://registry.npmjs.org/@drunk-pulumi/intune-components/-/intune-components-0.0.1.tgz","fileCount":55,"integrity":"sha512-8CSzQjPagTWDcA+qPP/ZLzMyanCvLC7YB5X3JqwG3BG0SiK94mVGrtjGH/otSwCoGkrSB4lL1n0JNfAC7vx9WQ==","signatures":[{"sig":"MEYCIQChdEknxHQ9N/BROpSOZJfdgiBgiS57RLlE79hrBhbWIQIhAKAw64JyexV0+XLMZBNkkg8E5cc3ePskqaIll4x41csQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157993},"main":"index.js","_from":"file:drunk-pulumi-intune-components-0.0.1.tgz","types":"index.d.ts","pulumi":{"name":"@drunk-pulumi/intune-components","resource":false},"_npmUser":{"name":"baoduy2412","email":"drunkcoding@outlook.com"},"prettier":{"semi":true,"tabWidth":2,"printWidth":120,"singleQuote":true,"trailingComma":"all"},"_resolved":"/tmp/3bad4afcac7d4d4eb53d4dfefa6a6d65/drunk-pulumi-intune-components-0.0.1.tgz","_integrity":"sha512-8CSzQjPagTWDcA+qPP/ZLzMyanCvLC7YB5X3JqwG3BG0SiK94mVGrtjGH/otSwCoGkrSB4lL1n0JNfAC7vx9WQ==","repository":{"url":"git+https://github.com/baoduy/drunk-pulumi-intune-components.git","type":"git"},"_npmVersion":"10.8.2","description":"The custom components for Pulumi Microsoft Intune resources.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"lodash":"^4.17.21","@pulumi/pulumi":"^3.215.0","@azure/identity":"^4.13.0","@microsoft/microsoft-graph-types-beta":"0.44.0-preview"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/intune-components_0.0.1_1768381465688_0.0940941061850955","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@drunk-pulumi/intune-components","version":"0.0.3","keywords":[],"author":{"name":"Steven Hoang"},"license":"MIT","_id":"@drunk-pulumi/intune-components@0.0.3","maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"homepage":"https://github.com/baoduy/drunk-pulumi-intune-components#readme","bugs":{"url":"https://github.com/baoduy/drunk-pulumi-intune-components/issues"},"dist":{"shasum":"36ddb8c83a890205c19a4510e59f5eb72217f67f","tarball":"https://registry.npmjs.org/@drunk-pulumi/intune-components/-/intune-components-0.0.3.tgz","fileCount":55,"integrity":"sha512-aCLJHlhBQtt2nHRTI9zpTCb+QvMnXEFI5ZGCH4qMTA4KAEMEcoAnTGWvkLZoNyV37BB/YXRyYseaM3rI4VuU9w==","signatures":[{"sig":"MEYCIQC4CKObLH8gGNE+N/GKdT50ZL2e5icagHZ/gTs6KiyqTQIhALJIqXtR9wklkmUkE0kN3Mvf30bO2liZfh5aJW7kWoe8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160763},"main":"index.js","_from":"file:drunk-pulumi-intune-components-0.0.3.tgz","types":"index.d.ts","pulumi":{"name":"@drunk-pulumi/intune-components","resource":false},"_npmUser":{"name":"baoduy2412","email":"drunkcoding@outlook.com"},"prettier":{"semi":true,"tabWidth":2,"printWidth":120,"singleQuote":true,"trailingComma":"all"},"_resolved":"/tmp/87b4dfbc99cd708e57c0e2eebf1b5661/drunk-pulumi-intune-components-0.0.3.tgz","_integrity":"sha512-aCLJHlhBQtt2nHRTI9zpTCb+QvMnXEFI5ZGCH4qMTA4KAEMEcoAnTGWvkLZoNyV37BB/YXRyYseaM3rI4VuU9w==","repository":{"url":"git+https://github.com/baoduy/drunk-pulumi-intune-components.git","type":"git"},"_npmVersion":"10.8.2","description":"The custom components for Pulumi Microsoft Intune resources.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"lodash":"^4.18.1","@pulumi/pulumi":"^3.235.0","@azure/identity":"^4.13.1","@microsoft/microsoft-graph-types-beta":"0.44.0-preview"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/intune-components_0.0.3_1778045648157_0.5768060169563021","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@drunk-pulumi/intune-components","version":"0.0.4","keywords":[],"author":"Steven Hoang","license":"MIT","_id":"@drunk-pulumi/intune-components@0.0.4","maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"dist":{"shasum":"9ac1bbe93b51508c70d180cda8ea09131a9acf52","tarball":"https://registry.npmjs.org/@drunk-pulumi/intune-components/-/intune-components-0.0.4.tgz","fileCount":56,"integrity":"sha512-5pSZoibY1GX8decZNsE8LzSgV+AdM+UMbRyrucp0SAjo8Zlml9D2GTJWH48d70gTvpcAvBqD8g+kej89d0ITcg==","signatures":[{"sig":"MEUCIFQQu1GYq9rskJo5dOImC6rbzU6uixYaji2rvgItjuocAiEA6oFpW7EtaEHR03v6+IALm/dKrGnWZmJGKKv33zPgLX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161859},"main":"index.js","types":"index.d.ts","pulumi":{"name":"@drunk-pulumi/intune-components","resource":false},"_npmUser":{"name":"baoduy2412","email":"drunkcoding@outlook.com"},"prettier":{"semi":true,"tabWidth":2,"printWidth":120,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"https://github.com/baoduy/drunk-pulumi-intune-components.git","type":"git"},"description":"The custom components for Pulumi Microsoft Intune resources.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"lodash":"^4.18.1","typescript":"6.0.3","@pulumi/pulumi":"^3.243.0","@azure/identity":"^4.13.1","@microsoft/microsoft-graph-types-beta":"0.44.0-preview"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/intune-components_0.0.4_1779779035431_0.5082020811146695","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@drunk-pulumi/intune-components","version":"0.0.5","keywords":[],"author":"Steven Hoang","license":"MIT","_id":"@drunk-pulumi/intune-components@0.0.5","maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"dist":{"shasum":"1dcf71ad160037207408881c228392463a32b963","tarball":"https://registry.npmjs.org/@drunk-pulumi/intune-components/-/intune-components-0.0.5.tgz","fileCount":56,"integrity":"sha512-Zt3hBEzP4TGwJyI6a7rOB/SFlokCXGy6cNjzBNMuMNo+vfnuW+7xeRZ5nMlFu7ItiyZZ+yxp2d5w2Hjt/iXCOw==","signatures":[{"sig":"MEUCIH2EmYocFGv/AyIOT5KtvKloP8MCEh+qvU/1769x+R+tAiEAt6gxxmM+sWumi72gDZA9cNYGJ/jq+thqxLdqpq/LwXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162155},"main":"index.js","types":"index.d.ts","pulumi":{"name":"@drunk-pulumi/intune-components","resource":false},"_npmUser":{"name":"baoduy2412","email":"drunkcoding@outlook.com"},"prettier":{"semi":true,"tabWidth":2,"printWidth":120,"singleQuote":true,"trailingComma":"all"},"repository":{"url":"https://github.com/baoduy/drunk-pulumi-intune-components.git","type":"git"},"description":"The custom components for Pulumi Microsoft Intune resources.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"lodash":"^4.18.1","typescript":"6.0.3","@pulumi/pulumi":"^3.253.0","@azure/identity":"^4.13.1","@microsoft/microsoft-graph-types-beta":"0.44.0-preview"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/intune-components_0.0.5_1784191933967_0.5380710756696956","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@drunk-pulumi/intune-components","version":"0.0.8","description":"The custom components for Pulumi Microsoft Intune resources.","main":"index.js","types":"index.d.ts","pulumi":{"resource":false,"name":"@drunk-pulumi/intune-components"},"repository":{"type":"git","url":"https://github.com/baoduy/drunk-pulumi-intune-components.git"},"keywords":[],"author":"Steven Hoang","license":"MIT","dependencies":{"@azure/identity":"^4.13.1","@microsoft/microsoft-graph-types-beta":"0.44.0-preview","@pulumi/pulumi":"^3.257.0","lodash":"^4.18.1","typescript":"6.0.3"},"prettier":{"semi":true,"trailingComma":"all","singleQuote":true,"printWidth":120,"tabWidth":2},"_nodeVersion":"22.23.2","_id":"@drunk-pulumi/intune-components@0.0.8","dist":{"integrity":"sha512-Zu0cc0W7VV6Hv1bY2UQggmC7xMbuI4LnWMbENcNYbINR84HX8r7KqFuN5ygdUQzst4dn3EdCsGmGfo5dCdrjsw==","shasum":"50bc76f33775b8e953990a12776e30c35639a2a9","tarball":"https://registry.npmjs.org/@drunk-pulumi/intune-components/-/intune-components-0.0.8.tgz","fileCount":56,"unpackedSize":170143,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@drunk-pulumi%2fintune-components@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDjPa1QynDcFiOOwqtsKPEsRwSOBS5V2SXmi3gzQkCBOAiBVljK725iNffsKIm/RKUCE58LKGKAZDh6hqVX1rla1kA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b1628cb-a61b-40dd-945e-6f97dcb87df8"}},"directories":{},"maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/intune-components_0.0.8_1789023840248_0.33354757191763906"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-14T09:04:25.589Z","modified":"2026-09-10T07:04:00.803Z","0.0.1":"2026-01-14T09:04:25.849Z","0.0.3":"2026-05-06T05:34:08.306Z","0.0.4":"2026-05-26T07:03:55.578Z","0.0.5":"2026-07-16T08:52:14.126Z","0.0.8":"2026-09-10T07:04:00.374Z"},"author":"Steven Hoang","license":"MIT","keywords":[],"repository":{"type":"git","url":"https://github.com/baoduy/drunk-pulumi-intune-components.git"},"description":"The custom components for Pulumi Microsoft Intune resources.","maintainers":[{"name":"baoduy2412","email":"drunkcoding@outlook.com"}],"readme":"# drunk-pulumi-intune-components\n\nThe Microsoft Intune Pulumi Components - A TypeScript library for managing Microsoft Intune resources with Pulumi.\n\n## Overview\n\nThis library provides custom Pulumi components for managing Microsoft Intune resources using infrastructure as code. It enables programmatic configuration of device management policies, compliance settings, and corporate device identifiers through the Microsoft Graph API.\n\n## Features\n\n- **IntuneManagement Component**: Orchestrate macOS device policies, compliance, and security settings\n- **Device Policies**: Configure compliance policies, antivirus, disk encryption, and firewall settings\n- **Custom Configurations**: Import and deploy custom .mobileconfig profiles\n- **Policy Assignments**: Flexible group-based policy targeting\n- **TypeScript Support**: Full type safety with TypeScript definitions\n- **Base Components**: Reusable abstractions for building custom Intune resources\n\n## Installation\n\n```bash\nnpm install @drunk-pulumi/intune-components\n# or\npnpm add @drunk-pulumi/intune-components\n```\n\n## Quick Start\n\n```typescript\nimport { IntuneManagement } from '@drunk-pulumi/intune-components';\n\nconst intune = new IntuneManagement('corporate-intune', {\n  macOs: {\n    compliancePolicy: {\n      displayName: 'Corporate macOS Compliance',\n      passwordRequired: true,\n      passwordMinimumLength: 12,\n      storageRequireEncryption: true,\n      assignments: {\n        includeAllDevices: true\n      }\n    }\n  }\n});\n\nexport const outputs = intune.getOutputs();\n```\n\n## Authentication\n\nGraph API calls support two credential shapes:\n\n- **Explicit client secret** — set all three `INTUNE_AZURE_TENANT_ID`, `INTUNE_AZURE_CLIENT_ID` and\n  `INTUNE_AZURE_CLIENT_SECRET` together, and all three must be non-empty.\n- **Identity-based (preferred)** — set none of the `INTUNE_AZURE_*` vars and let `DefaultAzureCredential`\n  resolve the identity, including via OIDC federation (GitHub Actions / Azure Pipelines) or managed\n  identity in CI, so the stack needs no long-lived application secret.\n\n**Upgrade note:** credential selection now requires all three `INTUNE_AZURE_*` variables together — a mixed\ncombination (e.g. `INTUNE_AZURE_TENANT_ID` alongside an unprefixed `AZURE_CLIENT_SECRET`) now resolves\nthrough `DefaultAzureCredential` instead. A consumer relying on that mix will stop authenticating on\nupgrade and must move fully to one shape or the other.\n\n## Documentation\n\n### GitHub Copilot Skills\n\nThis repository includes comprehensive GitHub Copilot skills in the [`Skills/`](./Skills) folder to help you work effectively with the library:\n\n- **[Library Overview](./Skills/library-overview.md)** - Architecture, base components, and project structure\n- **[Component Usage](./Skills/component-usage.md)** - How to use IntuneManagement and individual components\n- **[Development Workflow](./Skills/development-workflow.md)** - Building, testing, and publishing the library\n- **[Intune Management](./Skills/intune-management.md)** - Detailed IntuneManagement component reference\n- **[Device Policies](./Skills/device-policies.md)** - Comprehensive policy configuration guide\n- **[Best Practices](./Skills/best-practices.md)** - Security, testing, and deployment best practices\n- **[Troubleshooting](./Skills/troubleshooting.md)** - Common issues and debugging tips\n\nThese skills are designed to work with GitHub Copilot to provide context-aware assistance when developing with this library.\n\n## Development\n\n### Prerequisites\n\n- Node.js 16+ (tested with Node.js 20)\n- pnpm or npm\n- TypeScript\n\n### Setup\n\n```bash\n# Install dependencies\npnpm install\n\n# Build the library\npnpm run build\n\n# Run tests\npnpm run test\n\n# Type check\nnpx tsc --noEmit\n```\n\n### Project Structure\n\n```\nsrc/\n  IntuneManagement.ts        # Main orchestration component\n  base/                      # Base classes\n  devices/                   # Device-specific components\n  helpers.ts                 # Graph API utilities\n  types.ts                   # Shared TypeScript types\n```\n\n## Examples\n\nSee the [`pulumi-test/`](./pulumi-test) directory for working examples.\n\n## Contributing\n\nContributions are welcome! Please read the Skills documentation to understand the project structure and best practices.\n\n## License\n\nMIT\n\n## Author\n\nSteven Hoang\n","readmeFilename":""}