@microwiseai/snapshot 0.4.0 → 0.5.1
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/commands/clone-all.d.ts +21 -0
- package/dist/commands/clone-all.d.ts.map +1 -0
- package/dist/commands/clone-all.js +57 -0
- package/dist/commands/clone-all.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +11 -34
- package/dist/commands/install.js.map +1 -1
- package/dist/index.js +14 -18
- package/dist/index.js.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +6 -8
- package/dist/lib/gitlab.js.map +1 -1
- package/node_modules/@gitdot/clone-lib/README.md +117 -0
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +9 -0
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +154 -0
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +21 -0
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/clone.js +228 -0
- package/node_modules/@gitdot/clone-lib/dist/clone.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +10 -0
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js +27 -0
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts +23 -0
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/git.js +134 -0
- package/node_modules/@gitdot/clone-lib/dist/git.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts +17 -0
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/index.js +35 -0
- package/node_modules/@gitdot/clone-lib/dist/index.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +24 -0
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/lock.js +97 -0
- package/node_modules/@gitdot/clone-lib/dist/lock.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +15 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +124 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +12 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +31 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +32 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +159 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +44 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +163 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +18 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +155 -0
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts +225 -0
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +1 -0
- package/node_modules/@gitdot/clone-lib/dist/types.js +9 -0
- package/node_modules/@gitdot/clone-lib/dist/types.js.map +1 -0
- package/node_modules/@gitdot/clone-lib/package.json +53 -0
- package/package.json +14 -3
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -37
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -5
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -52
- package/dist/commands/setup.js.map +0 -1
- package/dist/lib/prerequisites.d.ts +0 -33
- package/dist/lib/prerequisites.d.ts.map +0 -1
- package/dist/lib/prerequisites.js +0 -123
- package/dist/lib/prerequisites.js.map +0 -1
package/dist/lib/gitlab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAgB,MAAM,YAAY,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACnC,kCAAkC;QAClC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,iCAAiC;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,gDAAgD,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,gDAAgD,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,YAAY,KAAK,IAAI,YAAY,EAAE,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,MAAc;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;QAC5B,IAAI,YAAY,GAAoB,IAAI,CAAC;QAEzC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAe,EAAE,MAAmB,EAAE,IAAgB,EAAE,EAAE;YAC/E,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9E,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACxD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;oBACjD,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBACD,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE3B,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC1B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE9B,sCAAsC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,sBAAsB,CAAC,YAAoB,EAAE,SAAyB;IACnF,MAAM,aAAa,GAAG,SAAS,IAAI,aAAa,EAAE,IAAI,iBAAiB,EAAE,CAAC;IAE1E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B;IAEnF,8EAA8E;IAC9E,MAAM,aAAa,GAAG,OAAO,IAAI,QAAQ,CAAC;IAE1C,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,aAAa,SAAS,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,kBAAkB,YAAY,WAAW,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;IAExF,uDAAuD;IACvD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,aAAa,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# @gitdot/clone-lib
|
|
2
|
+
|
|
3
|
+
Shared **resolved-lock** library per `glpkg-workspace/RESOLVED-LOCK-SPEC.md`:
|
|
4
|
+
resolve a distribution's install closure into a resolved-lock (S2), then clone
|
|
5
|
+
that closure (S3). One schema, two resolvers, one cloner. **Dependency-free.**
|
|
6
|
+
|
|
7
|
+
> Prototype status: this lives in `gitdot-bridge-pilot/clone-lib-proto/` in a
|
|
8
|
+
> **publishable shape** (name, `exports`, `files`). Real placement under
|
|
9
|
+
> `projects/gitdot` and glpkg publish are **separate gates** — not done here.
|
|
10
|
+
|
|
11
|
+
## What it does
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
package-lock.json ─(B1 resolveLock)─┐
|
|
15
|
+
├─► resolved-lock (S2) ─(cloneFromLock, S3)─► cloned closure + CloneReport
|
|
16
|
+
snapshot.json ─(B2 resolveFromManifest)─┘
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- **B1 `resolveLock`** — from an installed project's `package-lock.json` (the flat
|
|
20
|
+
closure is already in its `packages` map). projectId comes from each `resolved`
|
|
21
|
+
tarball URL.
|
|
22
|
+
- **B2 `resolveFromManifest`** — from a `snapshot.json`-like manifest (`install`
|
|
23
|
+
set + `registry` scope→group). projectId comes from the GitLab npm **packument**.
|
|
24
|
+
- Both emit the **same** resolved-lock schema; only `source.derivedFrom` differs
|
|
25
|
+
(`package-lock.json` vs `manifest`).
|
|
26
|
+
- **`cloneFromLock`** — clones the closure the lock declares (`pinned`/`head`),
|
|
27
|
+
proxy-independent auth, structured report.
|
|
28
|
+
|
|
29
|
+
## Shared member core (B1/B2 common)
|
|
30
|
+
|
|
31
|
+
`resolve/member.js` → `resolveMember({ npmName, version, projectId, api, ... })`
|
|
32
|
+
is the **single** place that turns "npm name + version + projectId" into a fully
|
|
33
|
+
resolved member: repository-field read (path-1, `manifest-repository`), else
|
|
34
|
+
projectId→GitLab-API coordinate (path-2, `gitlab-api`), plus visibility and
|
|
35
|
+
tag→sha commit pin. B1 and B2 differ **only** in how they discover the package
|
|
36
|
+
set + projectId; everything downstream is this one function — the GAP-1/GAP-2
|
|
37
|
+
logic is never duplicated.
|
|
38
|
+
|
|
39
|
+
## API
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
const { resolveLock, resolveFromManifest, cloneFromLock, loadLock, writeLock } = require('@gitdot/clone-lib');
|
|
43
|
+
|
|
44
|
+
// B1
|
|
45
|
+
const { lock } = await resolveLock({ packageLockPath, subset, scopes, api });
|
|
46
|
+
|
|
47
|
+
// B2
|
|
48
|
+
const { lock } = await resolveFromManifest(snapshotJson, { scopes, api, subset });
|
|
49
|
+
|
|
50
|
+
// persist (deterministic 2-space + newline) / read (filename-agnostic)
|
|
51
|
+
writeLock('snapshot.lock.json', lock);
|
|
52
|
+
const same = loadLock('snapshot.lock.json');
|
|
53
|
+
|
|
54
|
+
// clone the closure
|
|
55
|
+
const report = await cloneFromLock('snapshot.lock.json', { mode: 'pinned', dest });
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`api` is a GitLab client — `createGitLabApi({ token, host })` (real, Node https)
|
|
59
|
+
or any object with `getProject` / `getTags` / `getPackument` (inject a fake in tests).
|
|
60
|
+
|
|
61
|
+
### Package entry points (`exports`)
|
|
62
|
+
|
|
63
|
+
| specifier | module |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `@gitdot/clone-lib` | full surface (resolve + clone + lock I/O) |
|
|
66
|
+
| `@gitdot/clone-lib/resolve` | just the resolvers + `createGitLabApi` |
|
|
67
|
+
|
|
68
|
+
## Sidecar schema (S2)
|
|
69
|
+
|
|
70
|
+
`skit.lock.json`, `snapshot.lock.json`, `glpkg.lock.json` are **instances of one
|
|
71
|
+
schema** — same shape, different `source` block. `loadLock(path)` reads any of
|
|
72
|
+
them **filename-agnostically** (the filename is a label, not a schema selector)
|
|
73
|
+
and validates `kind`/`lockVersion`/`members[]`; `writeLock(path, lock)` is the
|
|
74
|
+
deterministic writer used by the emitters.
|
|
75
|
+
|
|
76
|
+
## Clone semantics (S3)
|
|
77
|
+
|
|
78
|
+
- **`pinned`** — clone + `checkout` exact `commitSha`; absent/unreachable sha ⇒
|
|
79
|
+
`failed` (never a silent HEAD fallback).
|
|
80
|
+
- **`head`** — clone + stay on default-branch HEAD; records the actual HEAD sha.
|
|
81
|
+
- Flat closure iteration; clone-path `<dest>/workspace/<dotToTreePath(id)>`;
|
|
82
|
+
duplicate `cloneUrl` cloned once.
|
|
83
|
+
- Proxy-independent auth: public → no creds; private+access → cloned;
|
|
84
|
+
**private+no-access → `skipped-no-access` (expected, not an error)**;
|
|
85
|
+
`credentialsNeeded` pre-flight counts private members.
|
|
86
|
+
- Deterministic + idempotent (already at target sha ⇒ `skipped`); every member
|
|
87
|
+
lands in exactly one bucket.
|
|
88
|
+
|
|
89
|
+
## CLI (`--json` first, no TUI)
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
gitdot-resolve resolve --package-lock core/package-lock.json --subset snap --token <t> --out snapshot.lock.json
|
|
93
|
+
gitdot-resolve clone --lock snapshot.lock.json --mode pinned --dest . --json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Layout
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
src/index.js package hub (public surface)
|
|
100
|
+
src/lock.js sidecar schema: loadLock / writeLock / validateLock
|
|
101
|
+
src/clone.js cloneFromLock (S3)
|
|
102
|
+
src/dotpath.js dotToTreePath (pure id→path)
|
|
103
|
+
src/git.js real git runner (only shell-out) + error classifier
|
|
104
|
+
resolve/member.js SHARED member core (B1+B2)
|
|
105
|
+
resolve/resolve.js B1 resolveLock (package-lock)
|
|
106
|
+
resolve/manifest.js B2 resolveFromManifest (snapshot.json)
|
|
107
|
+
resolve/gitlab.js read-only GitLab client (getProject/getTags/getPackument)
|
|
108
|
+
bin/gitdot-resolve.js CLI (resolve|clone)
|
|
109
|
+
test/ unit tests (fake git + fake API, DI) + real-git integration
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Run
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
node --test # full suite
|
|
116
|
+
node examples/demo.js # pinned + head sample reports
|
|
117
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* gitdot-resolve — thin CLI mirror of the library. Two verbs:
|
|
4
|
+
* resolve (S4) — build a resolved-lock from an installed package-lock.json
|
|
5
|
+
* clone (S3) — clone the closure a resolved-lock declares
|
|
6
|
+
* --json is the primary (and only) output contract — no TUI, no decoration.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=gitdot-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitdot-resolve.d.ts","sourceRoot":"","sources":["../../src/bin/gitdot-resolve.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* gitdot-resolve — thin CLI mirror of the library. Two verbs:
|
|
5
|
+
* resolve (S4) — build a resolved-lock from an installed package-lock.json
|
|
6
|
+
* clone (S3) — clone the closure a resolved-lock declares
|
|
7
|
+
* --json is the primary (and only) output contract — no TUI, no decoration.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const clone_1 = require("../clone");
|
|
45
|
+
const index_1 = require("../resolve/index");
|
|
46
|
+
function parseArgs(argv) {
|
|
47
|
+
const args = { mode: 'pinned', dest: process.cwd(), json: false };
|
|
48
|
+
for (let i = 0; i < argv.length; i++) {
|
|
49
|
+
switch (argv[i]) {
|
|
50
|
+
case '--lock':
|
|
51
|
+
args.lock = argv[++i];
|
|
52
|
+
break;
|
|
53
|
+
case '--mode':
|
|
54
|
+
args.mode = argv[++i];
|
|
55
|
+
break;
|
|
56
|
+
case '--dest':
|
|
57
|
+
args.dest = argv[++i];
|
|
58
|
+
break;
|
|
59
|
+
case '--only':
|
|
60
|
+
args.only = argv[++i].split(',');
|
|
61
|
+
break;
|
|
62
|
+
case '--installer':
|
|
63
|
+
args.installer = argv[++i].split(',');
|
|
64
|
+
break;
|
|
65
|
+
case '--json':
|
|
66
|
+
args.json = true;
|
|
67
|
+
break;
|
|
68
|
+
default: break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return args;
|
|
72
|
+
}
|
|
73
|
+
function parseResolveArgs(argv) {
|
|
74
|
+
const args = {};
|
|
75
|
+
for (let i = 0; i < argv.length; i++) {
|
|
76
|
+
switch (argv[i]) {
|
|
77
|
+
case '--package-lock':
|
|
78
|
+
args.packageLock = argv[++i];
|
|
79
|
+
break;
|
|
80
|
+
case '--node-modules':
|
|
81
|
+
args.nodeModules = argv[++i];
|
|
82
|
+
break;
|
|
83
|
+
case '--subset':
|
|
84
|
+
args.subset = argv[++i];
|
|
85
|
+
break;
|
|
86
|
+
case '--scopes':
|
|
87
|
+
args.scopes = argv[++i].split(',');
|
|
88
|
+
break;
|
|
89
|
+
case '--token':
|
|
90
|
+
args.token = argv[++i];
|
|
91
|
+
break;
|
|
92
|
+
case '--host':
|
|
93
|
+
args.host = argv[++i];
|
|
94
|
+
break;
|
|
95
|
+
case '--out':
|
|
96
|
+
args.out = argv[++i];
|
|
97
|
+
break;
|
|
98
|
+
default: break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return args;
|
|
102
|
+
}
|
|
103
|
+
async function runResolve(rest) {
|
|
104
|
+
const a = parseResolveArgs(rest);
|
|
105
|
+
if (!a.packageLock || !a.subset) {
|
|
106
|
+
process.stderr.write('usage: gitdot-resolve resolve --package-lock <file> --subset <name> [--node-modules <dir>] [--scopes @ist,@microwiseai] [--token <t>] [--host gitlab.com] [--out <file>]\n');
|
|
107
|
+
process.exit(2);
|
|
108
|
+
}
|
|
109
|
+
const api = (0, index_1.createGitLabApi)({ token: a.token || process.env.GLPKG_TOKEN, host: a.host || 'gitlab.com' });
|
|
110
|
+
const { lock, warnings } = await (0, index_1.resolveLock)({
|
|
111
|
+
packageLockPath: a.packageLock,
|
|
112
|
+
nodeModulesDir: a.nodeModules,
|
|
113
|
+
subset: a.subset,
|
|
114
|
+
scopes: a.scopes,
|
|
115
|
+
api,
|
|
116
|
+
warn: (m) => process.stderr.write(`WARN: ${m}\n`),
|
|
117
|
+
});
|
|
118
|
+
const out = JSON.stringify(lock, null, 2) + '\n';
|
|
119
|
+
if (a.out)
|
|
120
|
+
fs.writeFileSync(a.out, out);
|
|
121
|
+
else
|
|
122
|
+
process.stdout.write(out);
|
|
123
|
+
process.stderr.write(`resolved ${lock.members.length} members, ${lock.edges.length} edges, ${warnings.length} warnings\n`);
|
|
124
|
+
process.exit(0);
|
|
125
|
+
}
|
|
126
|
+
async function main() {
|
|
127
|
+
const [verb, ...rest] = process.argv.slice(2);
|
|
128
|
+
if (verb === 'resolve')
|
|
129
|
+
return runResolve(rest);
|
|
130
|
+
if (verb !== 'clone') {
|
|
131
|
+
process.stderr.write('usage: gitdot-resolve <resolve|clone> ...\n');
|
|
132
|
+
process.exit(2);
|
|
133
|
+
}
|
|
134
|
+
const args = parseArgs(rest);
|
|
135
|
+
if (!args.lock) {
|
|
136
|
+
process.stderr.write('error: --lock <file> is required\n');
|
|
137
|
+
process.exit(2);
|
|
138
|
+
}
|
|
139
|
+
const report = await (0, clone_1.cloneFromLock)(args.lock, {
|
|
140
|
+
mode: args.mode,
|
|
141
|
+
dest: args.dest,
|
|
142
|
+
only: args.only,
|
|
143
|
+
installer: args.installer,
|
|
144
|
+
});
|
|
145
|
+
// --json is the primary contract; even without --json we emit JSON (no TUI).
|
|
146
|
+
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
147
|
+
const hardFailures = report.failed.length + report['not-found'].length;
|
|
148
|
+
process.exit(hardFailures > 0 ? 1 : 0);
|
|
149
|
+
}
|
|
150
|
+
main().catch((e) => {
|
|
151
|
+
process.stderr.write(`error: ${e.message}\n`);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
});
|
|
154
|
+
//# sourceMappingURL=gitdot-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitdot-resolve.js","sourceRoot":"","sources":["../../src/bin/gitdot-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cloneFromLock — core of the shared clone library (RESOLVED-LOCK-SPEC S3).
|
|
3
|
+
*
|
|
4
|
+
* Input: a resolved-lock file (S2) — flat, fully-resolved members[].
|
|
5
|
+
* Output: cloned repos on disk + a structured, --json-serializable CloneReport.
|
|
6
|
+
*
|
|
7
|
+
* Contract highlights (S3):
|
|
8
|
+
* - Two modes: `pinned` (clone + checkout exact commitSha; NO silent HEAD fallback)
|
|
9
|
+
* and `head` (clone + stay on default-branch HEAD; record the actual HEAD sha).
|
|
10
|
+
* - Flat closure iteration over members[] — no re-resolution, no graph walk.
|
|
11
|
+
* - Clone-path = <dest>/workspace/<dotToTreePath(id)> (pure function).
|
|
12
|
+
* - Same cloneUrl is cloned once (dedup); later duplicates land in `skipped`.
|
|
13
|
+
* - Auth is proxy-independent plain git clone. private + no access =>
|
|
14
|
+
* `skipped-no-access` (expected, NOT an error).
|
|
15
|
+
* - Pre-flight `credentialsNeeded` = count of private members to be attempted.
|
|
16
|
+
* - Deterministic + idempotent: a member already at its target sha is `skipped`.
|
|
17
|
+
* - Every member lands in exactly ONE bucket — no silent drops.
|
|
18
|
+
*/
|
|
19
|
+
import type { CloneFromLockOptions, CloneReport } from './types';
|
|
20
|
+
export declare function cloneFromLock(lockPath: string, options: CloneFromLockOptions): Promise<CloneReport>;
|
|
21
|
+
//# sourceMappingURL=clone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAa,WAAW,EAAc,MAAM,SAAS,CAAC;AAWxF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC,CA6KtB"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* cloneFromLock — core of the shared clone library (RESOLVED-LOCK-SPEC S3).
|
|
4
|
+
*
|
|
5
|
+
* Input: a resolved-lock file (S2) — flat, fully-resolved members[].
|
|
6
|
+
* Output: cloned repos on disk + a structured, --json-serializable CloneReport.
|
|
7
|
+
*
|
|
8
|
+
* Contract highlights (S3):
|
|
9
|
+
* - Two modes: `pinned` (clone + checkout exact commitSha; NO silent HEAD fallback)
|
|
10
|
+
* and `head` (clone + stay on default-branch HEAD; record the actual HEAD sha).
|
|
11
|
+
* - Flat closure iteration over members[] — no re-resolution, no graph walk.
|
|
12
|
+
* - Clone-path = <dest>/workspace/<dotToTreePath(id)> (pure function).
|
|
13
|
+
* - Same cloneUrl is cloned once (dedup); later duplicates land in `skipped`.
|
|
14
|
+
* - Auth is proxy-independent plain git clone. private + no access =>
|
|
15
|
+
* `skipped-no-access` (expected, NOT an error).
|
|
16
|
+
* - Pre-flight `credentialsNeeded` = count of private members to be attempted.
|
|
17
|
+
* - Deterministic + idempotent: a member already at its target sha is `skipped`.
|
|
18
|
+
* - Every member lands in exactly ONE bucket — no silent drops.
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.cloneFromLock = cloneFromLock;
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const dotpath_1 = require("./dotpath");
|
|
57
|
+
const git_1 = require("./git");
|
|
58
|
+
const lock_1 = require("./lock");
|
|
59
|
+
const VALID_MODES = new Set(['pinned', 'head']);
|
|
60
|
+
function errKind(e) {
|
|
61
|
+
return e instanceof git_1.GitError ? e.kind : 'failed';
|
|
62
|
+
}
|
|
63
|
+
function errMsg(e) {
|
|
64
|
+
return e instanceof Error ? e.message : String(e);
|
|
65
|
+
}
|
|
66
|
+
async function cloneFromLock(lockPath, options) {
|
|
67
|
+
const { mode = 'pinned', dest, only, installer, git = (0, git_1.createGitRunner)(), workspaceDir = 'workspace', } = options || {};
|
|
68
|
+
if (!VALID_MODES.has(mode)) {
|
|
69
|
+
throw new Error(`cloneFromLock: invalid mode "${mode}" (expected "pinned" | "head")`);
|
|
70
|
+
}
|
|
71
|
+
if (!dest || typeof dest !== 'string') {
|
|
72
|
+
throw new Error('cloneFromLock: options.dest (workspace root) is required');
|
|
73
|
+
}
|
|
74
|
+
// Filename-agnostic: skit/snapshot/glpkg.lock.json are one schema (S2).
|
|
75
|
+
const lock = (0, lock_1.loadLock)(lockPath);
|
|
76
|
+
const members = lock.members;
|
|
77
|
+
const onlySet = Array.isArray(only) && only.length ? new Set(only) : null;
|
|
78
|
+
const installerSet = Array.isArray(installer) && installer.length ? new Set(installer) : null;
|
|
79
|
+
const report = {
|
|
80
|
+
mode,
|
|
81
|
+
credentialsNeeded: 0,
|
|
82
|
+
cloned: [],
|
|
83
|
+
skipped: [],
|
|
84
|
+
'skipped-no-access': [],
|
|
85
|
+
'not-found': [],
|
|
86
|
+
failed: [],
|
|
87
|
+
closureSize: members.length,
|
|
88
|
+
};
|
|
89
|
+
// First pass: attempted set (post-filter) + pre-flight credential count.
|
|
90
|
+
const attempted = members.filter((m) => {
|
|
91
|
+
if (onlySet && !onlySet.has(m.id))
|
|
92
|
+
return false;
|
|
93
|
+
if (installerSet && !installerSet.has(m.installer))
|
|
94
|
+
return false;
|
|
95
|
+
return true;
|
|
96
|
+
});
|
|
97
|
+
report.credentialsNeeded = attempted.filter((m) => m.visibility === 'private').length;
|
|
98
|
+
// cloneUrl -> id that first claimed it (dedup: clone each URL once).
|
|
99
|
+
const seenUrls = new Map();
|
|
100
|
+
for (const member of members) {
|
|
101
|
+
const id = member.id;
|
|
102
|
+
// --- filters -> skipped ------------------------------------------------
|
|
103
|
+
if (onlySet && !onlySet.has(id)) {
|
|
104
|
+
report.skipped.push({ id, reason: 'filtered out by only' });
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (installerSet && !installerSet.has(member.installer)) {
|
|
108
|
+
report.skipped.push({ id, reason: `filtered out by installer (${member.installer})` });
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// --- lock-integrity gates -> failed (S2/S3 pinning rules) --------------
|
|
112
|
+
if (!member.gitlabGroup) {
|
|
113
|
+
report.failed.push({
|
|
114
|
+
id,
|
|
115
|
+
reason: 'member has no gitlabGroup (lock violates per-member group pinning rule S2)',
|
|
116
|
+
});
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const cloneUrl = member.repoCoordinate && member.repoCoordinate.cloneUrl;
|
|
120
|
+
if (!cloneUrl) {
|
|
121
|
+
report.failed.push({ id, reason: 'member has no repoCoordinate.cloneUrl (unfinished lock)' });
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (mode === 'pinned' && !member.commitSha) {
|
|
125
|
+
report.failed.push({ id, reason: 'commitSha absent in pinned mode (no silent HEAD fallback)' });
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
// --- dedup by cloneUrl -> skipped --------------------------------------
|
|
129
|
+
if (seenUrls.has(cloneUrl)) {
|
|
130
|
+
report.skipped.push({
|
|
131
|
+
id,
|
|
132
|
+
reason: `duplicate cloneUrl (already cloned as "${seenUrls.get(cloneUrl)}")`,
|
|
133
|
+
});
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
seenUrls.set(cloneUrl, id);
|
|
137
|
+
const relPath = path.posix.join(workspaceDir, (0, dotpath_1.dotToTreePath)(id));
|
|
138
|
+
const absPath = path.join(dest, workspaceDir, (0, dotpath_1.dotToTreePath)(id));
|
|
139
|
+
const visibility = member.visibility || 'unknown';
|
|
140
|
+
const provenance = member.provenance ?? null;
|
|
141
|
+
// --- idempotency -------------------------------------------------------
|
|
142
|
+
if (git.exists(absPath)) {
|
|
143
|
+
if (!git.isRepo(absPath)) {
|
|
144
|
+
report.failed.push({ id, reason: `destination exists and is not a git repo: ${relPath}` });
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (mode === 'pinned') {
|
|
148
|
+
let current;
|
|
149
|
+
try {
|
|
150
|
+
current = git.headSha(absPath);
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
report.failed.push({ id, reason: `could not read HEAD: ${errMsg(e)}` });
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (current === member.commitSha) {
|
|
157
|
+
report.skipped.push({ id, reason: 'already at target sha (idempotent)' });
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// Repo present but on the wrong sha: re-pin in place (no re-clone).
|
|
161
|
+
try {
|
|
162
|
+
git.checkout(absPath, member.commitSha);
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
report.failed.push({
|
|
166
|
+
id,
|
|
167
|
+
reason: `commitSha unreachable in existing clone: ${member.commitSha} (${errMsg(e)})`,
|
|
168
|
+
});
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
report.cloned.push({
|
|
172
|
+
id,
|
|
173
|
+
sha: member.commitSha,
|
|
174
|
+
path: relPath,
|
|
175
|
+
coordinate: cloneUrl,
|
|
176
|
+
visibility,
|
|
177
|
+
provenance,
|
|
178
|
+
});
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// head mode: an existing clone is treated as satisfied (idempotent).
|
|
182
|
+
report.skipped.push({ id, reason: 'already cloned (idempotent, head mode)' });
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
// --- clone -------------------------------------------------------------
|
|
186
|
+
try {
|
|
187
|
+
git.clone(cloneUrl, absPath);
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
const kind = errKind(e);
|
|
191
|
+
if (kind === 'not-found') {
|
|
192
|
+
report['not-found'].push({ id, reason: 'cloneUrl 404 / repo does not exist at coordinate' });
|
|
193
|
+
}
|
|
194
|
+
else if (kind === 'no-access') {
|
|
195
|
+
// Expected multi-tenant outcome, not a hard failure.
|
|
196
|
+
report['skipped-no-access'].push({ id, visibility, reason: 'private repo; caller has no access' });
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
report.failed.push({ id, reason: `clone failed: ${errMsg(e)}` });
|
|
200
|
+
}
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// --- post-clone: pin (pinned) or record HEAD (head) --------------------
|
|
204
|
+
let sha;
|
|
205
|
+
if (mode === 'pinned') {
|
|
206
|
+
try {
|
|
207
|
+
git.checkout(absPath, member.commitSha);
|
|
208
|
+
sha = member.commitSha;
|
|
209
|
+
}
|
|
210
|
+
catch (e) {
|
|
211
|
+
report.failed.push({ id, reason: `commitSha unreachable: ${member.commitSha} (${errMsg(e)})` });
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
try {
|
|
217
|
+
sha = git.headSha(absPath);
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
report.failed.push({ id, reason: `could not read HEAD after clone: ${errMsg(e)}` });
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
report.cloned.push({ id, sha, path: relPath, coordinate: cloneUrl, visibility, provenance });
|
|
225
|
+
}
|
|
226
|
+
return report;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dotToTreePath — the pure identity->path function reused from SUBSET-MANIFEST.
|
|
3
|
+
* A gitdot dot-identity ("ist.tda", "microwiseai.skit") maps 1:1 to a tree path
|
|
4
|
+
* ("ist/tda", "microwiseai/skit"). Pure, deterministic, no I/O.
|
|
5
|
+
*
|
|
6
|
+
* @param id declared dot-identity
|
|
7
|
+
* @returns POSIX-style relative tree path
|
|
8
|
+
*/
|
|
9
|
+
export declare function dotToTreePath(id: string): string;
|
|
10
|
+
//# sourceMappingURL=dotpath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotpath.d.ts","sourceRoot":"","sources":["../src/dotpath.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAchD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dotToTreePath = dotToTreePath;
|
|
4
|
+
/**
|
|
5
|
+
* dotToTreePath — the pure identity->path function reused from SUBSET-MANIFEST.
|
|
6
|
+
* A gitdot dot-identity ("ist.tda", "microwiseai.skit") maps 1:1 to a tree path
|
|
7
|
+
* ("ist/tda", "microwiseai/skit"). Pure, deterministic, no I/O.
|
|
8
|
+
*
|
|
9
|
+
* @param id declared dot-identity
|
|
10
|
+
* @returns POSIX-style relative tree path
|
|
11
|
+
*/
|
|
12
|
+
function dotToTreePath(id) {
|
|
13
|
+
if (typeof id !== 'string' || id.length === 0) {
|
|
14
|
+
throw new Error('dotToTreePath: id must be a non-empty string');
|
|
15
|
+
}
|
|
16
|
+
// Segments are separated by dots. Reject empty segments (".."/leading/trailing dot)
|
|
17
|
+
// so a malformed id can never escape the workspace root.
|
|
18
|
+
const segments = id.split('.');
|
|
19
|
+
if (segments.some((s) => s.length === 0)) {
|
|
20
|
+
throw new Error(`dotToTreePath: malformed id "${id}" (empty segment)`);
|
|
21
|
+
}
|
|
22
|
+
if (segments.some((s) => s === '.' || s === '..' || s.includes('/') || s.includes('\\'))) {
|
|
23
|
+
throw new Error(`dotToTreePath: unsafe segment in id "${id}"`);
|
|
24
|
+
}
|
|
25
|
+
return segments.join('/');
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dotpath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotpath.js","sourceRoot":"","sources":["../src/dotpath.ts"],"names":[],"mappings":";;AAQA,sCAcC;AAtBD;;;;;;;GAOG;AACH,SAAgB,aAAa,CAAC,EAAU;IACtC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,oFAAoF;IACpF,yDAAyD;IACzD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
|