{"_id":"@adartem/adlib-devtools","_rev":"3-a0522efaf0341bd8c470ec0d1f3b31dd","name":"@adartem/adlib-devtools","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@adartem/adlib-devtools","version":"0.1.0","keywords":["adlib","adartem","devtools","debug","x-ray","tooling"],"license":"MIT","_id":"@adartem/adlib-devtools@0.1.0","maintainers":[{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"}],"homepage":"https://adartem.fr","bugs":{"url":"https://github.com/adartem/adlib/support"},"dist":{"shasum":"4691cda737ba5ea9102f7b94e3ff2f8e3656aaa3","tarball":"https://registry.npmjs.org/@adartem/adlib-devtools/-/adlib-devtools-0.1.0.tgz","fileCount":6,"integrity":"sha512-CJnFLQE+VnlyYAJS2P36Jkiuf3xJhqY9n/gjxT1HlnpVvcLPXCMRYN2/MbFYDo6Cw4RtWwBTqYjyXmGVIU3S+Q==","signatures":[{"sig":"MEUCICtYLdcc0Rit/FS0PJym14sZBjb0XMO8dXsIJPSvqOoOAiEAnaZE3QcRs4Rn7nkAfNTxogAJLZ/q3EcreyLLOwUcjHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258856},"type":"module","_from":"file:adartem-adlib-devtools-0.1.0.tgz","types":"./src/index.ts","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"private":false,"scripts":{"dev":"cross-env NODE_ENV=development node ./bin/build.js","lint":"eslint ./src && prettier --check ./src","test":"vitest run -c ../../vitest.config.ts","build":"cross-env NODE_ENV=production node ./bin/build.js","lint:fix":"eslint ./src --fix && prettier --write ./src","typecheck":"tsc --noEmit","docs:check":"tsx scripts/check-doc-links.ts"},"_npmUser":{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"},"_resolved":"/tmp/426e7c2a3e30c8b845787985d880197e/adartem-adlib-devtools-0.1.0.tgz","_integrity":"sha512-CJnFLQE+VnlyYAJS2P36Jkiuf3xJhqY9n/gjxT1HlnpVvcLPXCMRYN2/MbFYDo6Cw4RtWwBTqYjyXmGVIU3S+Q==","repository":{"url":"git+https://github.com/adartem/adlib.git","type":"git","directory":"packages/adlib-devtools"},"_npmVersion":"10.8.2","description":"DevTools modulaire pour AdLib — inspection, debug et outils de documentation.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"just-debounce":"^1.1.0","@floating-ui/dom":"^1.7.5","@adartem/adlib-utils":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.2","cross-env":"^10.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adlib-devtools_0.1.0_1771222029499_0.35537982069830387","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adartem/adlib-devtools","version":"0.1.1","keywords":["adlib","adartem","devtools","debug","x-ray","tooling"],"license":"MIT","_id":"@adartem/adlib-devtools@0.1.1","maintainers":[{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"}],"homepage":"https://adartem.fr","bugs":{"url":"https://github.com/adartem/adlib/support"},"dist":{"shasum":"500d23e939ddfd3809a58e2734dd10fdcbd230b9","tarball":"https://registry.npmjs.org/@adartem/adlib-devtools/-/adlib-devtools-0.1.1.tgz","fileCount":6,"integrity":"sha512-Prsjk7GozMdgqRMcyIEJlFv0gggmSkG/7QwxPOkkRdHl3fOOZmcLYObfg99jSumPWmTsRCOm/0vllPvFKorBNg==","signatures":[{"sig":"MEQCIBDZVUL3yDfZHs1fG99+Cm0JPOqMdLzLsVnFUMfDJg9HAiBgqN8Q1m6+8RilcoWrlSwOAj/Q92pN97abOQkEiOcNEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258876},"type":"module","_from":"file:adartem-adlib-devtools-0.1.1.tgz","types":"./src/index.ts","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"private":false,"scripts":{"dev":"cross-env NODE_ENV=development node ./bin/build.js","lint":"eslint ./src && prettier --check ./src","test":"vitest run -c ../../vitest.config.ts","build":"cross-env NODE_ENV=production node ./bin/build.js","lint:fix":"eslint ./src --fix && prettier --write ./src","typecheck":"tsc --noEmit","docs:check":"tsx scripts/check-doc-links.ts"},"_npmUser":{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"},"_resolved":"/tmp/aa62862746aa90374f1e580095f553fc/adartem-adlib-devtools-0.1.1.tgz","_integrity":"sha512-Prsjk7GozMdgqRMcyIEJlFv0gggmSkG/7QwxPOkkRdHl3fOOZmcLYObfg99jSumPWmTsRCOm/0vllPvFKorBNg==","repository":{"url":"git+https://github.com/adartem/adlib.git","type":"git","directory":"packages/adlib-devtools"},"_npmVersion":"10.8.2","description":"DevTools modulaire pour AdLib — inspection, debug et outils de documentation.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"just-debounce":"^1.1.0","@floating-ui/dom":"^1.7.5","@adartem/adlib-utils":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.2","cross-env":"^10.1.0"},"_npmOperationalInternal":{"tmp":"tmp/adlib-devtools_0.1.1_1771223535552_0.2836790477310751","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adartem/adlib-devtools","version":"0.1.2","description":"DevTools modulaire pour AdLib — inspection, debug et outils de documentation.","private":false,"publishConfig":{"access":"public"},"license":"MIT","type":"module","types":"./src/index.ts","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"}},"homepage":"https://adartem.fr","repository":{"type":"git","url":"git+https://github.com/adartem/adlib.git","directory":"packages/adlib-devtools"},"bugs":{"url":"https://github.com/adartem/adlib/support"},"keywords":["adlib","adartem","devtools","debug","x-ray","tooling"],"dependencies":{"@floating-ui/dom":"^1.7.5","just-debounce":"^1.1.0","@adartem/adlib-utils":"0.1.0"},"devDependencies":{"cross-env":"^10.1.0","esbuild":"^0.27.2"},"scripts":{"build":"cross-env NODE_ENV=production node ./bin/build.js","dev":"cross-env NODE_ENV=development node ./bin/build.js","typecheck":"tsc --noEmit","lint":"eslint ./src && prettier --check ./src","lint:fix":"eslint ./src --fix && prettier --write ./src","test":"vitest run -c ../../vitest.config.ts","docs:check":"tsx scripts/check-doc-links.ts"},"_id":"@adartem/adlib-devtools@0.1.2","_integrity":"sha512-1myfCzOx3BDU2qL26s3huFc4+UegKQCsFryNCUtqApJ4NCgCBU3vQEHDNdW4ANlphSOh/+sc+MT/PcdfTtIqHg==","_resolved":"/tmp/79e0c4ba0c68e21d43c0302c57059563/adartem-adlib-devtools-0.1.2.tgz","_from":"file:adartem-adlib-devtools-0.1.2.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-1myfCzOx3BDU2qL26s3huFc4+UegKQCsFryNCUtqApJ4NCgCBU3vQEHDNdW4ANlphSOh/+sc+MT/PcdfTtIqHg==","shasum":"5cc2c11144694588108fd250660ccc353f018c9d","tarball":"https://registry.npmjs.org/@adartem/adlib-devtools/-/adlib-devtools-0.1.2.tgz","fileCount":6,"unpackedSize":259047,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBvWnnXZK/S2DPRx36HXrJiDnIWG/9eTL58jKWHlBT7jAiEA0udMNUDP/4v4nMX1P6L+GZzgmRMbZBaH7quHSIlhaZI="}]},"_npmUser":{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"},"directories":{},"maintainers":[{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adlib-devtools_0.1.2_1771224912434_0.16496469777310363"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T06:07:09.416Z","modified":"2026-02-16T06:55:12.735Z","0.1.0":"2026-02-16T06:07:09.666Z","0.1.1":"2026-02-16T06:32:15.730Z","0.1.2":"2026-02-16T06:55:12.599Z"},"bugs":{"url":"https://github.com/adartem/adlib/support"},"license":"MIT","homepage":"https://adartem.fr","keywords":["adlib","adartem","devtools","debug","x-ray","tooling"],"repository":{"type":"git","url":"git+https://github.com/adartem/adlib.git","directory":"packages/adlib-devtools"},"description":"DevTools modulaire pour AdLib — inspection, debug et outils de documentation.","maintainers":[{"name":"joshua-divialle","email":"divialle.joshua2@gmail.com"}],"readme":"# @adartem/adlib-devtools\n\nDevTools modulaire pour **AdLib** — inspection, debug et outils de documentation.\n\n`@adartem/adlib-devtools` fournit un kit d'outils extensible pour inspecter et\ndebugger les modules AdLib sur n'importe quelle page.\n\n---\n\n## Architecture\n\nLe package suit une architecture **kernel + features** :\n\n- **Kernel** : registre de features, gestion CSS, scanner DOM, event bus, config, lifecycle\n- **Features** : modules autonomes qui s'enregistrent dans le kernel (x-ray, copy, etc.)\n\nChaque feature recoit un `FeatureContext` avec les services partages (CSS, scanner, bus, config, cleanup).\n\n---\n\n## Features incluses\n\n| Feature   | Fichier            | Role                                            |\n| --------- | ------------------ | ----------------------------------------------- |\n| **X-Ray** | `dist/x-ray.js`   | Inspection visuelle des attributs `ad-*`        |\n| **Copy**  | `dist/copy.js`    | Boutons de copie pour les snippets de code      |\n\nLe bundle combine `dist/devtools.js` inclut toutes les features.\n\n---\n\n## Installation\n\n### Via CDN (bundle combine)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@adartem/adlib-devtools@latest/dist/devtools.js\"\n  adlib-doc-xray=\"true\"\n  adlib-doc-copy=\"true\"\n></script>\n```\n\n#### Options du bundle combine\n\n| Attribut         | Description                      | Valeurs                          |\n| ---------------- | -------------------------------- | -------------------------------- |\n| `adlib-doc-xray` | Active l'inspection visuelle     | `true`, `false`, `1`, `0`, `\"\"` |\n| `adlib-doc-copy` | Active les boutons de copie      | `true`, `false`, `1`, `0`, `\"\"` |\n\nSi une option n'est pas precisee, le comportement par defaut (**desactive**) est applique.\n\n```html\n<!-- Exemple : uniquement x-ray, sans copy -->\n<script src=\"https://cdn.jsdelivr.net/npm/@adartem/adlib-devtools@latest/dist/devtools.js\"\n  adlib-doc-xray=\"true\"\n></script>\n```\n\n### Via CDN (features individuelles)\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@adartem/adlib-devtools@latest/dist/x-ray.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/@adartem/adlib-devtools@latest/dist/copy.js\"></script>\n```\n\n### Via npm\n\n```bash\npnpm add @adartem/adlib-devtools\n```\n\n---\n\n## API programmatique\n\n### window.AdLibDevTools\n\nQuand charge via CDN, l'instance DevTools est exposee sur `window.AdLibDevTools` :\n\n```javascript\n// Statut des features\nwindow.AdLibDevTools.status();\n// { 'x-ray': 'active', 'copy': 'active' }\n\n// Desactiver / reactiver une feature\nwindow.AdLibDevTools.disable('x-ray');\nwindow.AdLibDevTools.enable('x-ray');\n\n// Detruire tout (SPA navigation)\nwindow.AdLibDevTools.destroy();\n\n// Configurer une feature a runtime\nwindow.AdLibDevTools.configure('x-ray', { 'background-color': '#ff0000' });\n```\n\n### Import ESM\n\n```typescript\nimport { createDevTools, xrayFeature, copyFeature } from '@adartem/adlib-devtools';\n\nconst devtools = createDevTools({\n  features: [xrayFeature, copyFeature],\n});\n\nawait devtools.init();\n\n// Plus tard :\ndevtools.destroy();\n```\n\n---\n\n## Creer une feature custom\n\n```typescript\nimport type { FeatureDefinition } from '@adartem/adlib-devtools';\n\nconst myFeature: FeatureDefinition = {\n  id: 'my-tool',\n  label: 'Mon Outil',\n  defaults: { color: 'red' },\n\n  init(ctx) {\n    // Injecter du CSS scope\n    const removeStyle = ctx.css.inject('my-tool', '.highlight { outline: 2px solid red; }');\n    ctx.cleanup.add(removeStyle);\n\n    // Scanner les elements ad-*\n    const { elements } = ctx.scanner.scan();\n\n    // Reagir aux mutations DOM\n    const unsub = ctx.scanner.onMutation((added, removed) => {\n      // ...\n    });\n    ctx.cleanup.add(unsub);\n\n    // Communiquer avec d'autres features\n    ctx.bus.emit('my-tool:ready');\n  },\n\n  destroy() {\n    // Nettoyage supplementaire si necessaire\n  },\n\n  disable() {\n    // Masquer sans detruire\n  },\n\n  enable(ctx) {\n    // Reactiver\n  },\n};\n\n// Enregistrer via l'API window\nwindow.AdLibDevTools.register(myFeature);\nwindow.AdLibDevTools.init('my-tool');\n```\n\n---\n\n## X-Ray\n\nInspection visuelle des elements porteurs d'attributs `ad-*`.\n\n### Fonctionnement\n\n1. Au chargement, scanne le DOM pour les elements avec attributs `ad-*`.\n2. Ajoute une classe CSS (`x-ray` par defaut) qui affiche un outline colore.\n3. Au survol, affiche un **tooltip** listant les attributs `ad-*` de l'element.\n4. Surveille le DOM via **MutationObserver** pour detecter les changements dynamiques.\n\n### Configuration\n\nVia attributs sur le `<script>` (bundles standalone) :\n\n```html\n<script\n  src=\".../dist/x-ray.js\"\n  text-color=\"#003238\"\n  background-color=\"#00e4ff\"\n  animation=\"fade\"\n  easing=\"ease-in-out\"\n  duration=\"150\"\n  key=\"?\"\n  target-class=\"x-ray\"\n></script>\n```\n\n| Attribut           | Defaut        | Description                                   |\n| ------------------ | ------------- | --------------------------------------------- |\n| `text-color`       | `#003238`     | Couleur du texte du tooltip                   |\n| `background-color` | `#00e4ff`     | Couleur de fond du tooltip et de l'outline    |\n| `animation`        | `fade`        | Type d'animation                              |\n| `easing`           | `ease-in-out` | Fonction d'easing                             |\n| `duration`         | `150`         | Duree de l'animation en ms                    |\n| `key`              | `?`           | Touche clavier pour le toggle                 |\n| `target-class`     | `x-ray`       | Classe CSS appliquee aux elements detectes    |\n\n### Toggle clavier\n\nAppuyer sur `?` (configurable) active/desactive le mode x-ray.\n\n### Ignore\n\n```html\n<div ad-accordion x-ray=\"ignore\">Cet element ne sera pas surligne</div>\n```\n\n---\n\n## Copy\n\nCopie dans le presse-papiers via des attributs declaratifs.\n\n### Pattern trigger / target\n\n```html\n<pre ad-docs-copy=\"target\">console.log('Hello AdLib');</pre>\n<button ad-docs-copy=\"trigger\">Copier</button>\n```\n\n### Instance scoping\n\n```html\n<pre ad-docs-copy=\"target\" ad-docs-instance=\"alpha\">Code A</pre>\n<button ad-docs-copy=\"trigger\" ad-docs-instance=\"alpha\">Copier A</button>\n```\n\n### Copie directe\n\n```html\n<button ad-docs-copy=\"text-content\">npm install @adartem/adlib-attributes</button>\n```\n\n---\n\n## Compatibilite\n\n- ES2020 / ESM\n- Backward compatible : `dist/x-ray.js` et `dist/copy.js` fonctionnent sans changement\n- Fonctionne sur DOM statique et dynamique (MutationObserver)\n- Lifecycle complet : `init()` / `disable()` / `enable()` / `destroy()`\n\n---\n\n## Developpement\n\n```bash\n# Build (production)\npnpm --filter @adartem/adlib-devtools build\n\n# Dev (watch + serveur port 3001)\npnpm --filter @adartem/adlib-devtools dev\n\n# Qualite\npnpm --filter @adartem/adlib-devtools lint\npnpm --filter @adartem/adlib-devtools typecheck\npnpm --filter @adartem/adlib-devtools test\n```\n\n### Tests\n\n- `tests/core/` — 6 suites pour le kernel (registry, config, css-manager, dom-scanner, event-bus, devtools)\n- `tests/features/` — tests unitaires pour chaque feature\n- `tests/integration/` — tests lifecycle complet multi-features\n\n---\n\n## Documentation de reference\n\nCe package heberge egalement la documentation normative d'AdLib :\n\n- [Specifications](src/reference/index.md) — Runtime, Loader, Module Contract\n- [Standards](src/standards/index.md) — API Stability, Compatibility, Definition of Done\n- [Getting Started](src/getting-started/cdn-quickstart.md)\n- [Conventions de documentation](DOCS_CONVENTIONS.md)\n\n---\n\n## Licence\n\nMIT (c) [ADARTEM](https://adartem.fr)\n","readmeFilename":"README.md"}