Phase 2 (#74): the hardened in-memory ZIP reader and the .gcode.3mf
adapter. In-memory only, zero dependencies, never writes files, never
fetches. Depends only on @chestnutlabs/toolpath-core; the parser consumes
it through its structural ContainerAdapterLike type (worker entries compose).
canonicalName(rawName:string):null|string
Canonicalize an entry name for duplicate detection and selection sanity:
backslashes → slashes, case-folded, collapsed slashes. Returns null for
HOSTILE names (traversal segments, absolute paths, drive letters, NUL).
@chestnutlabs/gcode-containers — safe container extraction (DD-005 §4.4/§7).
Phase 2 (#74): the hardened in-memory ZIP reader and the
.gcode.3mfadapter. In-memory only, zero dependencies, never writes files, never fetches. Depends only on @chestnutlabs/toolpath-core; the parser consumes it through its structural ContainerAdapterLike type (worker entries compose).