docs-cache 0.4.3 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +13 -13
- package/dist/esm/api.d.ts +14 -0
- package/dist/esm/api.mjs +14 -0
- package/dist/esm/cache/cache-layout.d.ts +1 -0
- package/dist/esm/cache/cache-layout.mjs +12 -0
- package/dist/esm/cache/lock.d.ts +21 -0
- package/dist/esm/cache/lock.mjs +91 -0
- package/dist/esm/cache/manifest.d.ts +11 -0
- package/dist/esm/cache/manifest.mjs +68 -0
- package/dist/esm/cache/materialize.d.ts +26 -0
- package/dist/esm/cache/materialize.mjs +442 -0
- package/dist/esm/cache/targets.d.ts +19 -0
- package/dist/esm/cache/targets.mjs +67 -0
- package/dist/esm/cache/toc.d.ts +12 -0
- package/dist/esm/cache/toc.mjs +167 -0
- package/dist/esm/cli/exit-code.d.ts +11 -0
- package/dist/esm/cli/exit-code.mjs +5 -0
- package/dist/esm/cli/index.d.ts +5 -0
- package/dist/esm/cli/index.mjs +345 -0
- package/dist/esm/cli/live-output.d.ts +12 -0
- package/dist/esm/cli/live-output.mjs +30 -0
- package/dist/esm/cli/parse-args.d.ts +13 -0
- package/dist/esm/cli/parse-args.mjs +295 -0
- package/dist/esm/cli/run.d.ts +1 -0
- package/dist/esm/cli/run.mjs +2 -0
- package/dist/esm/cli/task-reporter.d.ts +32 -0
- package/dist/esm/cli/task-reporter.mjs +122 -0
- package/dist/esm/cli/types.d.ts +51 -0
- package/dist/esm/cli/types.mjs +0 -0
- package/dist/esm/cli/ui.d.ts +21 -0
- package/dist/esm/cli/ui.mjs +64 -0
- package/dist/esm/commands/add.d.ts +20 -0
- package/dist/esm/commands/add.mjs +81 -0
- package/dist/esm/commands/clean-git-cache.d.ts +10 -0
- package/dist/esm/commands/clean-git-cache.mjs +48 -0
- package/dist/esm/commands/clean.d.ts +10 -0
- package/dist/esm/commands/clean.mjs +27 -0
- package/dist/esm/commands/init.d.ts +19 -0
- package/dist/esm/commands/init.mjs +179 -0
- package/dist/esm/commands/prune.d.ts +11 -0
- package/dist/esm/commands/prune.mjs +52 -0
- package/dist/esm/commands/remove.d.ts +12 -0
- package/dist/esm/commands/remove.mjs +87 -0
- package/dist/esm/commands/status.d.ts +16 -0
- package/dist/esm/commands/status.mjs +78 -0
- package/dist/esm/commands/sync.d.ts +33 -0
- package/dist/esm/commands/sync.mjs +730 -0
- package/dist/esm/commands/verify.d.ts +11 -0
- package/dist/esm/commands/verify.mjs +120 -0
- package/dist/esm/config/index.d.ts +15 -0
- package/dist/esm/config/index.mjs +196 -0
- package/dist/esm/config/io.d.ts +30 -0
- package/dist/esm/config/io.mjs +112 -0
- package/dist/esm/config/schema.d.ts +171 -0
- package/dist/esm/config/schema.mjs +69 -0
- package/dist/esm/errors.d.ts +3 -0
- package/dist/esm/errors.mjs +2 -0
- package/dist/esm/git/cache-dir.d.ts +16 -0
- package/dist/esm/git/cache-dir.mjs +23 -0
- package/dist/esm/git/fetch-source.d.ts +19 -0
- package/dist/esm/git/fetch-source.mjs +477 -0
- package/dist/esm/git/redact.d.ts +1 -0
- package/dist/esm/git/redact.mjs +4 -0
- package/dist/esm/git/resolve-remote.d.ts +15 -0
- package/dist/esm/git/resolve-remote.mjs +87 -0
- package/dist/esm/git/resolve-repo.d.ts +5 -0
- package/dist/esm/git/resolve-repo.mjs +52 -0
- package/dist/esm/gitignore.d.ts +18 -0
- package/dist/esm/gitignore.mjs +80 -0
- package/dist/esm/paths.d.ts +8 -0
- package/dist/esm/paths.mjs +34 -0
- package/dist/esm/source-id.d.ts +1 -0
- package/dist/esm/source-id.mjs +29 -0
- package/dist/esm/types/sync.d.ts +25 -0
- package/dist/esm/types/sync.mjs +0 -0
- package/package.json +51 -7
- package/dist/chunks/add.mjs +0 -3
- package/dist/chunks/clean-git-cache.mjs +0 -2
- package/dist/chunks/clean.mjs +0 -2
- package/dist/chunks/init.mjs +0 -3
- package/dist/chunks/prune.mjs +0 -2
- package/dist/chunks/remove.mjs +0 -3
- package/dist/chunks/status.mjs +0 -2
- package/dist/chunks/sync.mjs +0 -9
- package/dist/chunks/verify.mjs +0 -2
- package/dist/shared/docs-cache.BOr9BnyP.mjs +0 -5
- package/dist/shared/docs-cache.BSvQNKuf.mjs +0 -2
- package/dist/shared/docs-cache.CQiaFDb_.mjs +0 -7
- package/dist/shared/docs-cache.CaOcl4OS.mjs +0 -3
- package/dist/shared/docs-cache.kK1DPQIQ.mjs +0 -2
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{writeFile as I,readFile as T,access as z}from"node:fs/promises";import w from"node:path";import{z as t}from"zod";import{r as L}from"./docs-cache.CQiaFDb_.mjs";const x=t.enum(["symlink","copy"]),M=t.enum(["materialize"]),F=t.enum(["tree","compressed"]),U=t.object({type:t.enum(["commit","manifest"]),value:t.string().nullable()}).strict(),_=t.object({ref:t.string().min(1),mode:M,include:t.array(t.string().min(1)).min(1),exclude:t.array(t.string().min(1)).optional(),targetMode:x.optional(),required:t.boolean(),maxBytes:t.number().min(1),maxFiles:t.number().min(1).optional(),ignoreHidden:t.boolean(),allowHosts:t.array(t.string().min(1)).min(1),toc:t.union([t.boolean(),F]).optional(),unwrapSingleRootDir:t.boolean().optional()}).strict(),P=t.object({id:t.string().min(1),repo:t.string().min(1),targetDir:t.string().min(1).optional(),targetMode:x.optional(),ref:t.string().min(1).optional(),mode:M.optional(),include:t.array(t.string().min(1)).optional(),exclude:t.array(t.string().min(1)).optional(),required:t.boolean().optional(),maxBytes:t.number().min(1).optional(),maxFiles:t.number().min(1).optional(),ignoreHidden:t.boolean().optional(),integrity:U.optional(),toc:t.union([t.boolean(),F]).optional(),unwrapSingleRootDir:t.boolean().optional()}).strict(),J=t.object({$schema:t.string().min(1).optional(),cacheDir:t.string().min(1).optional(),targetMode:x.optional(),defaults:_.partial().optional(),sources:t.array(P)}).strict(),G=/^[a-zA-Z0-9_-]+$/,V=new Set([".","..","CON","PRN","AUX","NUL","COM1","LPT1"]),H=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string.`);if(e.length>200)throw new Error(`${r} exceeds maximum length of 200.`);if(!G.test(e))throw new Error(`${r} must contain only alphanumeric characters, hyphens, and underscores.`);if(V.has(e.toUpperCase()))throw new Error(`${r} uses reserved name '${e}'.`);return e},j="docs.config.json",v=".docs",A="package.json",X=process.platform==="win32"?"copy":"symlink",f={cacheDir:v,defaults:{ref:"HEAD",mode:"materialize",include:["**/*.{md,mdx,markdown,mkd,txt,rst,adoc,asciidoc}"],exclude:[],targetMode:X,required:!0,maxBytes:2e8,ignoreHidden:!1,allowHosts:["github.com","gitlab.com","visualstudio.com"],toc:!0,unwrapSingleRootDir:!1},sources:[]},Z=(e,r)=>!e||!r?e===r:e.length!==r.length?!1:e.every((o,a)=>o===r[a]),C=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),R=(e,r)=>{const o={};for(const[a,i]of Object.entries(e)){const d=r[a];if(Array.isArray(i)&&Array.isArray(d)){Z(i,d)||(o[a]=i);continue}if(C(i)&&C(d)){const s=R(i,d);Object.keys(s).length>0&&(o[a]=s);continue}i!==d&&(o[a]=i)}return o},K=e=>{const r={...f,$schema:e.$schema,defaults:{...f.defaults,...e.targetMode?{targetMode:e.targetMode}:void 0}},o=R(e,r),a={$schema:o.$schema,cacheDir:o.cacheDir,targetMode:o.targetMode,defaults:o.defaults,sources:e.sources};return(!a.defaults||Object.keys(a.defaults).length===0)&&delete a.defaults,a},y=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),m=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string.`);return e},g=(e,r)=>{if(typeof e!="boolean")throw new Error(`${r} must be a boolean.`);return e},Q=(e,r)=>{if(typeof e!="number"||Number.isNaN(e))throw new Error(`${r} must be a number.`);return e},h=(e,r)=>{const o=Q(e,r);if(o<1)throw new Error(`${r} must be greater than zero.`);return o},p=(e,r)=>{if(!Array.isArray(e)||e.length===0)throw new Error(`${r} must be a non-empty array of strings.`);for(const o of e)if(typeof o!="string"||o.length===0)throw new Error(`${r} must contain non-empty strings.`);return e},k=(e,r)=>{const o=m(e,r);if(o!=="symlink"&&o!=="copy")throw new Error(`${r} must be "symlink" or "copy".`);return o},q=(e,r)=>{if(e!=="materialize")throw new Error(`${r} must be "materialize".`);return e},W=(e,r)=>{if(!y(e))throw new Error(`${r} must be an object.`);const o=e.type;if(o!=="commit"&&o!=="manifest")throw new Error(`${r}.type must be "commit" or "manifest".`);const a=e.value;if(typeof a!="string"&&a!==null)throw new Error(`${r}.value must be a string or null.`);return{type:o,value:a}},B=e=>{if(!y(e))throw new Error("Config must be a JSON object.");const r=J.safeParse(e);if(!r.success){const n=r.error.issues.map(c=>`${c.path.join(".")||"config"} ${c.message}`).join("; ");throw new Error(`Config does not match schema: ${n}.`)}const o=r.data,a=o.cacheDir?m(o.cacheDir,"cacheDir"):v,i=o.defaults,d=o.targetMode!==void 0?k(o.targetMode,"targetMode"):void 0,s=f.defaults;let l=s;if(i!==void 0){if(!y(i))throw new Error("defaults must be an object.");l={ref:i.ref!==void 0?m(i.ref,"defaults.ref"):s.ref,mode:i.mode!==void 0?q(i.mode,"defaults.mode"):s.mode,include:i.include!==void 0?p(i.include,"defaults.include"):s.include,exclude:i.exclude!==void 0?p(i.exclude,"defaults.exclude"):s.exclude,targetMode:i.targetMode!==void 0?k(i.targetMode,"defaults.targetMode"):d??s.targetMode,required:i.required!==void 0?g(i.required,"defaults.required"):s.required,maxBytes:i.maxBytes!==void 0?h(i.maxBytes,"defaults.maxBytes"):s.maxBytes,maxFiles:i.maxFiles!==void 0?h(i.maxFiles,"defaults.maxFiles"):s.maxFiles,ignoreHidden:i.ignoreHidden!==void 0?g(i.ignoreHidden,"defaults.ignoreHidden"):s.ignoreHidden,allowHosts:i.allowHosts!==void 0?p(i.allowHosts,"defaults.allowHosts"):s.allowHosts,toc:i.toc!==void 0?i.toc:s.toc,unwrapSingleRootDir:i.unwrapSingleRootDir!==void 0?g(i.unwrapSingleRootDir,"defaults.unwrapSingleRootDir"):s.unwrapSingleRootDir}}else d!==void 0&&(l={...s,targetMode:d});const E=o.sources.map((n,c)=>{if(!y(n))throw new Error(`sources[${c}] must be an object.`);const u={id:H(n.id,`sources[${c}].id`),repo:m(n.repo,`sources[${c}].repo`)};if(n.targetDir!==void 0&&(u.targetDir=m(n.targetDir,`sources[${c}].targetDir`)),n.targetMode!==void 0){const b=m(n.targetMode,`sources[${c}].targetMode`);if(b!=="symlink"&&b!=="copy")throw new Error(`sources[${c}].targetMode must be "symlink" or "copy".`);u.targetMode=b}return n.ref!==void 0&&(u.ref=m(n.ref,`sources[${c}].ref`)),n.mode!==void 0&&(u.mode=q(n.mode,`sources[${c}].mode`)),n.include!==void 0&&(u.include=p(n.include,`sources[${c}].include`)),n.exclude!==void 0&&(u.exclude=p(n.exclude,`sources[${c}].exclude`)),n.required!==void 0&&(u.required=g(n.required,`sources[${c}].required`)),n.maxBytes!==void 0&&(u.maxBytes=h(n.maxBytes,`sources[${c}].maxBytes`)),n.maxFiles!==void 0&&(u.maxFiles=h(n.maxFiles,`sources[${c}].maxFiles`)),n.ignoreHidden!==void 0&&(u.ignoreHidden=g(n.ignoreHidden,`sources[${c}].ignoreHidden`)),n.integrity!==void 0&&(u.integrity=W(n.integrity,`sources[${c}].integrity`)),n.toc!==void 0&&(u.toc=n.toc),n.unwrapSingleRootDir!==void 0&&(u.unwrapSingleRootDir=g(n.unwrapSingleRootDir,`sources[${c}].unwrapSingleRootDir`)),u}),S=new Set,$=[];for(const n of E)S.has(n.id)&&$.push(n.id),S.add(n.id);if($.length>0)throw new Error(`Duplicate source IDs found: ${$.join(", ")}. Each source must have a unique ID.`);return{cacheDir:a,targetMode:d,defaults:l,sources:E}},Y=e=>{const r=e.defaults??f.defaults;return e.sources.map(o=>({id:o.id,repo:o.repo,targetDir:o.targetDir,targetMode:o.targetMode??r.targetMode,ref:o.ref??r.ref,mode:o.mode??r.mode,include:o.include??r.include,exclude:o.exclude??r.exclude,required:o.required??r.required,maxBytes:o.maxBytes??r.maxBytes,maxFiles:o.maxFiles??r.maxFiles,ignoreHidden:o.ignoreHidden??r.ignoreHidden,integrity:o.integrity,toc:o.toc??r.toc,unwrapSingleRootDir:o.unwrapSingleRootDir??r.unwrapSingleRootDir}))},N=e=>e?w.resolve(e):w.resolve(process.cwd(),j),ee=()=>w.resolve(process.cwd(),A),O=async e=>{try{return await z(e),!0}catch{return!1}},D=async(e,r)=>{let o;try{o=await T(e,"utf8")}catch(s){const l=s instanceof Error?s.message:String(s);throw new Error(`Failed to read config at ${e}: ${l}`)}let a;try{a=JSON.parse(o)}catch(s){const l=s instanceof Error?s.message:String(s);throw new Error(`Invalid JSON in ${e}: ${l}`)}const i=r==="package"?a?.["docs-cache"]:a;if(r==="package"&&i===void 0)throw new Error(`Missing docs-cache config in ${e}.`);const d=B(i);for(const s of d.sources)s.targetDir&&L(e,s.targetDir);return{config:d,resolvedPath:e,sources:Y(d)}},re=async(e,r)=>{const o=`${JSON.stringify(r,null,2)}
|
|
2
|
-
`;await I(e,o,"utf8")},oe=async e=>{const r=N(e),o=w.basename(r)===A;if(e)return D(r,o?"package":"config");if(await O(r))return D(r,"config");const a=ee();if(await O(a))try{return await D(a,"package")}catch{}throw new Error(`No docs.config.json found at ${r} and no docs-cache config in ${a}.`)};export{f as D,H as a,v as b,j as c,oe as l,N as r,K as s,B as v,re as w};
|
|
3
|
-
//# sourceMappingURL=docs-cache.CaOcl4OS.mjs.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{access as s}from"node:fs/promises";import{homedir as a}from"node:os";import e from"node:path";const c=()=>{const r=a();switch(process.platform){case"darwin":return e.join(r,"Library","Caches");case"win32":return process.env.LOCALAPPDATA||e.join(r,"AppData","Local");default:return process.env.XDG_CACHE_HOME||e.join(r,".cache")}},t=()=>process.env.DOCS_CACHE_GIT_DIR||e.join(c(),"docs-cache-git"),o=async r=>{try{return await s(r),!0}catch{return!1}};export{o as e,t as r};
|
|
2
|
-
//# sourceMappingURL=docs-cache.kK1DPQIQ.mjs.map
|