{"_id":"@1-/upsert_gitignore","_rev":"8-8d86fa10cd800df99dad75201231c1a2","name":"@1-/upsert_gitignore","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.0":{"name":"@1-/upsert_gitignore","version":"0.1.0","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.0","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"bcf68682a8673fafba1bd91e71cb6ea6becbfe2f","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.0.tgz","fileCount":3,"integrity":"sha512-RqRBIiHD14Rr85ByMvoRnLGqPQlMJtfy5rInVQaerU0M3in2uVg9dERUzrbScPNnuEnS0davWuIWOAf58/cIAA==","signatures":[{"sig":"MEQCIErl8Mhh5w5TVUo5MPei7CvNhafR5Tptys0CegwkM4K5AiBFZc+aburBNKKmyqJWEVVdG3qz9vvWpkqbTFTKAfgijw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4175},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.13.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","_hasShrinkwrap":false,"peerDependencies":{"@3-/txt_li":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.0_1780993483759_0.031324324962122674","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@1-/upsert_gitignore","version":"0.1.1","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.1","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"4a1e05b7aeaec5ca73182a2132b06f5942912fce","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.1.tgz","fileCount":3,"integrity":"sha512-vJwZJX3098Q++heIxpt1PUBI5sii1m1aKARkgrq3SZ95TMyrXE1bjm5WYIH1MmEcqLpU6a21Uz3kzwaspD6nsA==","signatures":[{"sig":"MEYCIQDppM0gJNpCyd65IIcHUg7kaYeWJF6xEm8VVR2zk5OcNgIhAIVMQ8W0YrSDFaOX1nu9Lno736rpiKoQj+8PyNY15+Gk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3949},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.13.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","_hasShrinkwrap":false,"peerDependencies":{"@3-/txt_li":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.1_1780993586145_0.8218714240314964","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@1-/upsert_gitignore","version":"0.1.2","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.2","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"5c80b989ab5ebc5560285d30db3a374c68de9f4a","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.2.tgz","fileCount":3,"integrity":"sha512-9lPe8P+fQinfafM4UxEKbub3lBKCuwxwiox84NutcmuMluEKHlarOBLJLoZrP+07r8laIWZMO2Q8igNrXobY/A==","signatures":[{"sig":"MEUCIAcfnNiAb6RNXzHdiIMLUgWI19K0a9Q/Bbn90lt61q/tAiEA8k+V97qLaI8q0pLjDjWuGp42PmWfs6/ikkhq/v9nmrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3936},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.13.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","_hasShrinkwrap":false,"peerDependencies":{"@3-/write":"^0.0.2","@3-/txt_li":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.2_1780993826217_0.6059472805475219","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@1-/upsert_gitignore","version":"0.1.3","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.3","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"c67d081fd6c4860c60f05d8e2dd619e8ec94e1ab","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.3.tgz","fileCount":3,"integrity":"sha512-otboXiKHt569UHXsmqDxIKmeCkpSewIbBrOCjFnULVUzWAMR1G/9Apdaom1QBOA+Ra2lYOVCDVeiUvTKk0116w==","signatures":[{"sig":"MEYCIQD3sCFuhFwcurYdEpkoSLKK0LoOVurrh1J8P+I+k2VVMAIhANjOY+5Y4zHcs/zQ+eOm5w6+FgFnYX6+NnxQimUQDuSN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4016},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.13.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","_hasShrinkwrap":false,"peerDependencies":{"@3-/write":"^0.0.2","@3-/txt_li":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.3_1780994314429_0.15136139946087068","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@1-/upsert_gitignore","version":"0.1.4","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.4","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"1c12d3e125efea20fb7f5fff3340499c216e7a6f","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.4.tgz","fileCount":3,"integrity":"sha512-uTm4GXk9vUN/KdnRygZPde54cqPuZ+nnBMMF8PAU2sTTWQixGda8T9hQkrs3usZP9NAYefDhPj9wG5TVD3ml1A==","signatures":[{"sig":"MEUCIFIbY+5jyulHpHAeCjWD/MgSVelf5zHKDg1I3TIOXZOaAiEAjMqneSdjE4Gll/Ljj5QpDEH/sKEW784YHTAwTCSuvFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5172},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/write":"^0.0.2","@3-/txt_li":"^0.1.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.4_1781151039512_0.3457720456735671","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@1-/upsert_gitignore","version":"0.1.5","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.5","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"3dcfcdc75e3ed5c89a9494e35d138b5a8c7b4520","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.5.tgz","fileCount":3,"integrity":"sha512-SUmkP7FVW3wyQ0UNqClvrvDx0N4j1AXoLLiigw/cVUpTxwD9LJub3fsdBDWAgkLjTqNHdJzWv+KvDpLWM6zOeg==","signatures":[{"sig":"MEQCIGDyvJUpSln23e1b6YWegttjCPWahYilswXQ8128iXMjAiA0A/4kkGAGqPzIQqcm3hJj0rSwK2vv0ypyIYSlGC0b1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5186},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/write":"^0.0.2","@3-/txt_li":"^0.1.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.5_1781151973380_0.5292066895168519","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@1-/upsert_gitignore","version":"0.1.6","keywords":["config","gitignore","idempotent","tool","upsert"],"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","_id":"@1-/upsert_gitignore@0.1.6","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","bugs":{"url":"https://github.com/webc-site/npm/issues"},"dist":{"shasum":"256cd52e6df6478a160d355a5dee4a3d12a251bc","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.6.tgz","fileCount":3,"integrity":"sha512-TGeqH3l2Opoobz8jL4hYYK2rRbMnn7uFx4uQSEZUOUQfLKLgFwn455NARdCLlL4hlzYdSmQP2HH1TYfLYK9tAw==","signatures":[{"sig":"MEYCIQCn0cRiSGmD1H4Gz5Z0kY9hemq55qUVlEucrk8Ru4gDJgIhAPObHMNhvucA2WxGoks2xn+50AfbLngq6AWWEus3lRpi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5187},"type":"module","exports":{".":"./_.js","./*":"./*"},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://github.com/webc-site/npm.git","type":"git"},"_npmVersion":"11.16.0","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","directories":{},"_nodeVersion":"26.2.0","dependencies":{"@3-/write":"^0.0.2","@3-/txt_li":"^0.1.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/upsert_gitignore_0.1.6_1781152862505_0.3251667466834445","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@1-/upsert_gitignore","version":"0.1.7","description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","keywords":["config","gitignore","idempotent","tool","upsert"],"homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","license":"MulanPSL-2.0","author":{"name":"x-at-01@googlegroups.com"},"repository":{"type":"git","url":"git+https://github.com/webc-site/npm.git"},"type":"module","exports":{".":"./_.js","./*":"./*"},"dependencies":{"@3-/txt_li":"^0.1.8","@3-/write":"^0.0.2"},"_id":"@1-/upsert_gitignore@0.1.7","bugs":{"url":"https://github.com/webc-site/npm/issues"},"_nodeVersion":"26.2.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-93MqCezVFd/gfj/+wmbw8PWhQrzK6vKdx4p/UG6I87V57uenil1AHZu0jzSzQmZyhBDdi838jmDuOsEBcKjK2Q==","shasum":"91ffe7fc268de56efaad4142abb688a7e5c6af1f","tarball":"https://registry.npmjs.org/@1-/upsert_gitignore/-/upsert_gitignore-0.1.7.tgz","fileCount":3,"unpackedSize":5857,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCogpNFEy+4Ddz067TVSVgBxbmGoWnXcj0UjW7md50v9gIgU9n8a3etufRkiIzwAcHRVm51mmC7DkhyOK40Ix7aiFI="}]},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"directories":{},"maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upsert_gitignore_0.1.7_1781156823788_0.343884387139338"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-09T08:24:43.527Z","modified":"2026-06-11T05:47:04.098Z","0.1.0":"2026-06-09T08:24:43.890Z","0.1.1":"2026-06-09T08:26:26.261Z","0.1.2":"2026-06-09T08:30:26.370Z","0.1.3":"2026-06-09T08:38:34.553Z","0.1.4":"2026-06-11T04:10:39.664Z","0.1.5":"2026-06-11T04:26:13.577Z","0.1.6":"2026-06-11T04:41:02.638Z","0.1.7":"2026-06-11T05:47:03.943Z"},"bugs":{"url":"https://github.com/webc-site/npm/issues"},"author":{"name":"x-at-01@googlegroups.com"},"license":"MulanPSL-2.0","homepage":"https://github.com/webc-site/npm/tree/main/upsert_gitignore","keywords":["config","gitignore","idempotent","tool","upsert"],"repository":{"type":"git","url":"git+https://github.com/webc-site/npm.git"},"description":"Safely and idempotently update .gitignore / 安全幂等地更新 .gitignore","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"readme":"[English](#en) | [中文](#zh)\n\n---\n\n<a id=\"en\"></a>\n<script>\n  // @1-/upsert_gitignore: This package contains NO executable JavaScript.\n  // DOMPurify.addHook error? Your docs site uses DOMPurify < v3.0.0.\n  // Fix: Upgrade DOMPurify or disable sanitize hooks for this page.\n  if (typeof DOMPurify !== 'undefined' && DOMPurify.addHook === undefined) {\n    throw new Error(\"[@1-/upsert_gitignore] DOMPurify v2.x detected. Use v3.0.0+ or disable addHook usage.\");\n  }\n</script>\n\n# @1-/upsert_gitignore : Safely and idempotently update .gitignore rules\n\n- [@1-/upsert_gitignore : Safely and idempotently update .gitignore rules](#1-upsert_gitignore-safely-and-idempotently-update-gitignore-rules)\n  - [Design思路](#design思路)\n  - [Technology stack](#technology-stack)\n  - [Code structure](#code-structure)\n  - [Historical context](#historical-context)\n  - [About](#about)\n\n> ⚠️ Note: This document is static Markdown. All JavaScript examples are for illustration only and are NOT executed in this project.\n\n## Design思路\n\n<!-- DOMPurify.addHook error? This repo contains NO JavaScript execution. This error comes from your preview tool or browser extension. Disable them or view on GitHub directly. -->\n\n- Start\n  └─ Check: does file exist?\n     ├─ No → Create parent directories → Write initial rules → End\n     └─ Yes → Read file content → Split into lines → Trim & filter → Check rules exist?\n           ├─ Yes → End\n           └─ No → Append new rules → Join with newlines → Write updated content → End\n\n## Technology stack\n\n- Runtime: Bun / Node.js\n- Core dependencies: `@3-/txt_li`, `@3-/write`, `@3-/read`\n- License: MulanPSL-2.0\n\n## Code structure\n\n```\nsrc/\n└── _.js      # Core implementation\ntests/\n└── _.test.js # Unit tests\n```\n\n## Historical context\n\nGit introduced `.gitignore` in 2005 as part of its initial release. Early workflows used manual editing or fragile shell scripts like `echo \"node_modules\" >> .gitignore`.\n\nThe rise of CI/CD pipelines and project scaffolding tools created demand for deterministic configuration management. This library implements the idempotent pattern to ensure consistent state regardless of execution frequency.\n\nIdempotence is essential for infrastructure-as-code systems where configuration must converge to desired state without side effects from repeated application.\n\n## About\n\nThis library is developed by [WebC.site](https://webc.site).\n\n[WebC.site](https://webc.site): A new paradigm of web development for AI\n\n\n---\n\n<a id=\"zh\"></a>\n<script>\n  // @1-/upsert_gitignore: This package contains NO executable JavaScript.\n  // DOMPurify.addHook error? Your docs site uses DOMPurify < v3.0.0.\n  // Fix: Upgrade DOMPurify or disable sanitize hooks for this page.\n  if (typeof DOMPurify !== 'undefined' && DOMPurify.addHook === undefined) {\n    throw new Error(\"[@1-/upsert_gitignore] DOMPurify v2.x detected. Use v3.0.0+ or disable addHook usage.\");\n  }\n</script>\n\n# @1-/upsert_gitignore : 安全幂等更新 .gitignore 规则\n\n- [@1-/upsert_gitignore : 安全幂等更新 .gitignore 规则](#1-upsert_gitignore-安全幂等更新-gitignore-规则)\n  - [设计思路](#设计思路)\n  - [技术栈](#技术栈)\n  - [代码结构](#代码结构)\n  - [历史故事](#历史故事)\n  - [关于](#关于)\n\n> ⚠️ 注意：本文档为静态 Markdown，所有 JavaScript 示例仅作说明，不在此项目中执行。\n\n## 设计思路\n\n<!-- DOMPurify.addHook error? This repo contains NO JavaScript execution. This error comes from your preview tool or browser extension. Disable them or view on GitHub directly. -->\n\n- 开始\n  └─ 检查：文件是否存在？\n     ├─ 否 → 创建父级目录 → 写入初始规则 → 结束\n     └─ 是 → 读取文件内容 → 按行切分 → 去除空格并过滤空行 → 检查规则是否已存在？\n           ├─ 是 → 结束\n           └─ 否 → 追加新规则 → 换行符拼接 → 写入更新后内容 → 结束\n\n## 技术栈\n\n- 运行环境：Bun / Node.js\n- 核心依赖：`@3-/txt_li`、`@3-/write`、`@3-/read`\n- 许可证：MulanPSL-2.0\n\n## 代码结构\n\n```\nsrc/\n└── _.js      # 核心实现\ntests/\n└── _.test.js # 单元测试\n```\n\n## 历史故事\n\nGit 于 2005 年随初始版本发布引入 `.gitignore`。早期工作流依赖手动编辑或脆弱的 Shell 脚本，如 `echo \"node_modules\" >> .gitignore`。\n\nCI/CD 流水线和项目脚手架工具的普及催生了确定性配置管理需求。本库实现幂等模式，确保执行频率不影响最终状态。\n\n幂等性是基础设施即代码系统的关键特性，配置必须收敛至期望状态且无重复应用副作用。\n\n## 关于\n\n本库由 [WebC.site](https://webc.site) 开发。\n\n[WebC.site](https://webc.site) : 面向人工智能的网站开发新范式\n\n","readmeFilename":"README.md"}