From b74e32e9a5aa4671baf703849ee23d1056579b8f Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 10:59:35 +0000 Subject: [PATCH 1/3] Resolve nested relative loads against each source's own directory (Go parity with TS) A relative reference inside a loaded source now resolves against that source's own directory rather than the top-level opts.Path, matching the canonical TypeScript @jsonic/multisource. Each loaded source's full path is threaded through ctx.Meta["multisource"]["path"] (with the enclosing chain in "parents"); JsonicProcessor passes this meta into the nested parse via ParseMeta, and resolveSource derives the base directory from it. The parent parse context is copied, not mutated, so arbitrary nesting depth works and sibling loads stay independent. - go/plugin.go: thread ctx through resolveSource; derive base from the enclosing source's directory; add metaSourcePath/sourceDir/childMeta helpers. - go/multisource.go: Processor now receives *jsonic.Context; JsonicProcessor uses ParseMeta to thread meta into nested parses. - go/nested_test.go: cross-directory (a->b->c), per-directory sibling, flat in-memory, and meta-threading tests. - ts: explicit nested-relative-dirs and nested-relative-sibling-dirs tests. - docs: drop the closed base-path gap from CLAUDE.md; document nested relative resolution in both doc/ files. https://claude.ai/code/session_01Y8AZKH4bFM9WcDh5eXNp5U --- CLAUDE.md | 12 ++- doc/multisource-go.md | 40 ++++++-- doc/multisource-ts.md | 13 +++ go/multisource.go | 27 ++++- go/multisource_test.go | 2 +- go/nested_test.go | 145 +++++++++++++++++++++++++++ go/plugin.go | 97 +++++++++++++++++- ts/dist-test/multisource.test.js | 33 ++++++ ts/dist-test/multisource.test.js.map | 2 +- ts/test/multisource.test.ts | 47 +++++++++ 10 files changed, 397 insertions(+), 21 deletions(-) create mode 100644 go/nested_test.go diff --git a/CLAUDE.md b/CLAUDE.md index b78a1ba..69c15d5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -87,10 +87,14 @@ The ports are not line-for-line identical. Current intentional/known gaps: (used by tests via `memfs`); the Go resolvers use the OS filesystem directly. - **No `.js` processor in Go.** Executing JavaScript modules is Node-specific. -- **Base-path resolution.** The Go plugin resolves a reference against - `opts.Path` once, before calling the resolver; it does not yet track each - parent file's directory for relative nested includes the way the TS - `resolvePathSpec` does via `ctx.meta.multisource.path`. + +Nested relative includes have parity: like TS, the Go plugin threads each +loaded source's full path through `ctx.Meta["multisource"]["path"]`, so a +relative reference inside a loaded source resolves against *that* source's own +directory (a → b → c, at any depth), and sibling loads are independent. The +base path for a top-level parse is still `opts.Path` (Go's equivalent of +seeding `ctx.meta.multisource.path` in TS); from there each nested source's +directory is tracked automatically. If you close any of these gaps, update this list and both `doc/` files. diff --git a/doc/multisource-go.md b/doc/multisource-go.md index af403e4..c8b1c0a 100644 --- a/doc/multisource-go.md +++ b/doc/multisource-go.md @@ -139,7 +139,7 @@ Processors fill in `res.Val` from `res.Src`. Register them under the kind j := multisource.MakeJsonic(multisource.MultiSourceOptions{ Resolver: multisource.MakeMemResolver(files), Processor: map[string]multisource.Processor{ - "yaml": func(res *multisource.Resolution, _ *multisource.MultiSourceOptions, _ *jsonic.Jsonic) { + "yaml": func(res *multisource.Resolution, _ *multisource.MultiSourceOptions, _ *jsonic.Context, _ *jsonic.Jsonic) { res.Val = parseYAML(res.Src) }, }, @@ -186,16 +186,37 @@ All added alternates share the `multisource` group tag, supplied via the 1. The directive action reads the reference — a string, or a map with a `path` key. -2. `ResolvePathSpec` normalises the string into a `PathSpec` (kind, base, +2. The base directory is chosen: `opts.Path` for a top-level parse, or the + directory of the enclosing source for a nested reference (see below). +3. `ResolvePathSpec` normalises the string into a `PathSpec` (kind, base, full, abs). -3. The configured `Resolver` attempts to load the source, optionally +4. The configured `Resolver` attempts to load the source, optionally trying implicit extensions and `index.` variants. -4. A `Processor` is selected from `Processor[kind]` (or the default +5. A `Processor` is selected from `Processor[kind]` (or the default processor for unknown kinds) and converts the source string to a Go value. -5. The value is spliced into the surrounding parse tree; at pair level, +6. The value is spliced into the surrounding parse tree; at pair level, a map value is merged into the parent. +### Nested relative references + +When a loaded source itself contains references, each relative reference +resolves against the directory of the source that contains it — not against the +top-level `opts.Path`. This mirrors the canonical TypeScript plugin. + +The mechanism: before processing a loaded source, the plugin records that +source's full path in `ctx.Meta["multisource"]["path"]` (and pushes the +previous path onto `ctx.Meta["multisource"]["parents"]`). `JsonicProcessor` +threads this meta into the nested parse via `ParseMeta`, so when the nested +parse encounters a reference, the base directory is taken from the enclosing +source's path. The parent parse context is copied rather than mutated, so this +works at any nesting depth and sibling loads remain independent. + +For example, with `main.jsonic` containing `child:@"./sub/child.jsonic"` and +`sub/child.jsonic` containing `grand:@"./grand.jsonic"`, the `./grand.jsonic` +reference resolves to `sub/grand.jsonic` (relative to `child.jsonic`), not to a +top-level `grand.jsonic`. + ## Reference @@ -288,5 +309,12 @@ type Resolution struct { type Resolver func(spec PathSpec, opts *MultiSourceOptions) Resolution -type Processor func(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) +type Processor func(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) ``` + +`ctx.Meta` carries the parse metadata for the current load, including a +`"multisource"` entry whose `"path"` is the full path of the source being +processed and whose `"parents"` is the chain of enclosing source paths. A +processor that re-parses source (as `JsonicProcessor` does, via `ParseMeta`) +must thread `ctx.Meta` through so that relative references inside the source +resolve against the source's own directory. diff --git a/doc/multisource-ts.md b/doc/multisource-ts.md index 02f7477..2dcb532 100644 --- a/doc/multisource-ts.md +++ b/doc/multisource-ts.md @@ -161,6 +161,19 @@ When a reference has no explicit extension, the resolver walks the `path/index + ext`. The first existing source wins; the detected kind determines which processor is used. +### Nested relative references + +When a loaded source itself contains references, each relative reference +resolves against the directory of the source that contains it — not against the +top-level `path` option. The plugin records each loaded source's full path in +`ctx.meta.multisource.path` (and the chain of enclosing paths in +`ctx.meta.multisource.parents`); the jsonic processor threads this meta into +the nested parse (`jsonic(res.src, ctx.meta)`), and `resolvePathSpec` uses the +enclosing source's directory as the base. So with `main.jsonic` containing +`child:@"./sub/child.jsonic"` and `sub/child.jsonic` containing +`grand:@"./grand.jsonic"`, the `./grand.jsonic` reference resolves to +`sub/grand.jsonic` (relative to `child.jsonic`), at any nesting depth. + ### Directive-level grammar multisource registers three grammar tweaks under the `multisource` group diff --git a/go/multisource.go b/go/multisource.go index 976770e..516c947 100644 --- a/go/multisource.go +++ b/go/multisource.go @@ -44,18 +44,25 @@ type Resolution struct { type Resolver func(spec PathSpec, opts *MultiSourceOptions) Resolution // Processor converts resolved source content into a value. -type Processor func(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) +// +// The ctx carries the parse metadata for this load (ctx.Meta), including the +// multisource entry whose "path" is the full path of the source being +// processed. Processors that re-parse source (see JsonicProcessor) must thread +// ctx.Meta through so that nested relative references resolve against this +// source's own directory. This mirrors the TypeScript Processor, which +// receives the parse Context. +type Processor func(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) // NONE represents an unknown or missing extension. const NONE = "" // DefaultProcessor returns the raw source string as the value. -func DefaultProcessor(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) { +func DefaultProcessor(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) { res.Val = res.Src } // JSONProcessor parses JSON source content. -func JSONProcessor(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) { +func JSONProcessor(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) { if res.Src == "" { res.Val = nil return @@ -69,12 +76,22 @@ func JSONProcessor(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) } // JsonicProcessor parses source content using jsonic. -func JsonicProcessor(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) { +// +// It threads ctx.Meta (which records this source's full path under the +// multisource entry) into the nested parse via ParseMeta, so that relative +// references inside res.Src resolve against this source's own directory rather +// than the top-level base path. Mirrors the canonical TypeScript jsonic +// processor, which calls jsonic(res.src, ctx.meta). +func JsonicProcessor(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) { if res.Src == "" { res.Val = nil return } - val, err := j.Parse(res.Src) + var meta map[string]any + if ctx != nil { + meta = ctx.Meta + } + val, err := j.ParseMeta(res.Src, meta) if err != nil { res.Val = res.Src return diff --git a/go/multisource_test.go b/go/multisource_test.go index 6cc8c95..9a8dde3 100644 --- a/go/multisource_test.go +++ b/go/multisource_test.go @@ -250,7 +250,7 @@ func TestCustomProcessor(t *testing.T) { "data.csv": "a,b,c", } - csvProc := func(res *Resolution, opts *MultiSourceOptions, j *jsonic.Jsonic) { + csvProc := func(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) { parts := make([]any, 0) for _, s := range splitCSV(res.Src) { parts = append(parts, s) diff --git a/go/nested_test.go b/go/nested_test.go new file mode 100644 index 0000000..5f69963 --- /dev/null +++ b/go/nested_test.go @@ -0,0 +1,145 @@ +/* Copyright (c) 2025 Richard Rodger, MIT License */ + +package multisource + +import ( + "os" + "path/filepath" + "strings" + "testing" + + jsonic "github.com/jsonicjs/jsonic/go" +) + +// writeNested writes content to p, creating parent directories. +func writeNested(t *testing.T, p, content string) { + t.Helper() + if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(p, []byte(content), 0o644); err != nil { + t.Fatal(err) + } +} + +// TestNestedRelativeLoad checks that a relative reference *inside* a loaded +// file resolves against that file's own directory (a -> b -> c, across +// directories), mirroring the canonical TypeScript behaviour. +func TestNestedRelativeLoad(t *testing.T) { + dir := t.TempDir() + sub := filepath.Join(dir, "sub") + + writeNested(t, filepath.Join(dir, "main.jsonic"), `{top:1, child:@"./sub/child.jsonic"}`) + writeNested(t, filepath.Join(sub, "child.jsonic"), `{mid:2, grand:@"./grand.jsonic"}`) + writeNested(t, filepath.Join(sub, "grand.jsonic"), `{v:99}`) + + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), Path: dir}) + r, err := j.Parse(`@"./main.jsonic"`) + if err != nil { + t.Fatal(err) + } + assert(t, "nested-relative", r, map[string]any{ + "top": float64(1), + "child": map[string]any{ + "mid": float64(2), + "grand": map[string]any{ + "v": float64(99), + }, + }, + }) +} + +// TestNestedRelativeSiblingDirs checks that two references loaded from the same +// parent each resolve their *own* relative references against their own +// directory. Both children load "./inner.jsonic", but from different +// directories, so they must pick up different files. This proves the base path +// is tracked per-source and that resolving one reference does not leak into a +// sibling (the parent context is copied, not mutated). +func TestNestedRelativeSiblingDirs(t *testing.T) { + dir := t.TempDir() + + writeNested(t, filepath.Join(dir, "main.jsonic"), `{a:@"./aa/a.jsonic", b:@"./bb/b.jsonic"}`) + writeNested(t, filepath.Join(dir, "aa", "a.jsonic"), `{x:@"./inner.jsonic"}`) + writeNested(t, filepath.Join(dir, "aa", "inner.jsonic"), `{n:11}`) + writeNested(t, filepath.Join(dir, "bb", "b.jsonic"), `{y:@"./inner.jsonic"}`) + writeNested(t, filepath.Join(dir, "bb", "inner.jsonic"), `{n:22}`) + + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), Path: dir}) + r, err := j.Parse(`@"./main.jsonic"`) + if err != nil { + t.Fatal(err) + } + assert(t, "sibling-dirs", r, map[string]any{ + "a": map[string]any{"x": map[string]any{"n": float64(11)}}, + "b": map[string]any{"y": map[string]any{"n": float64(22)}}, + }) +} + +// TestNestedRelativeMemFlat checks that nested references through flat (no +// directory) in-memory keys keep resolving as bare keys (a -> b -> c). Mirrors +// the TypeScript "deps" test. This guards the in-memory resolver against a +// directory-stripping regression: a parent key like "a.jsc" must yield an +// empty base (not "."), so a bare nested reference like "@b.jsc" still matches. +func TestNestedRelativeMemFlat(t *testing.T) { + files := map[string]string{ + "a.jsc": `a:1,b:@b.jsc,x:99`, + "b.jsc": `b:2,c:@c`, + "c/index.jsc": `c:3`, + } + + j := MakeJsonic(MultiSourceOptions{Resolver: MakeMemResolver(files)}) + r, err := j.Parse(`@a`) + if err != nil { + t.Fatal(err) + } + assert(t, "mem-flat-nested", r, map[string]any{ + "a": float64(1), + "b": map[string]any{ + "b": float64(2), + "c": map[string]any{"c": float64(3)}, + }, + "x": float64(99), + }) +} + +// TestNestedSourcePathMeta checks that the full path of the source being +// processed, and the chain of enclosing parents, are threaded through ctx.Meta +// (under the "multisource" entry), mirroring the canonical TypeScript +// ctx.meta.multisource.{path,parents}. A custom processor inspects the meta it +// receives. +func TestNestedSourcePathMeta(t *testing.T) { + dir := t.TempDir() + + writeNested(t, filepath.Join(dir, "main.jsonic"), `{child:@"./sub/c.probe"}`) + writeNested(t, filepath.Join(dir, "sub", "c.probe"), `probe-content`) + + var gotPath string + var gotParents []string + probe := func(res *Resolution, _ *MultiSourceOptions, ctx *jsonic.Context, _ *jsonic.Jsonic) { + if ms, ok := ctx.Meta["multisource"].(map[string]any); ok { + gotPath, _ = ms["path"].(string) + gotParents, _ = ms["parents"].([]string) + } + res.Val = res.Src + } + + j := MakeJsonic(MultiSourceOptions{ + Resolver: MakeFileResolver(), + Path: dir, + Processor: map[string]Processor{ + NONE: DefaultProcessor, + "jsonic": JsonicProcessor, + "probe": probe, + }, + }) + if _, err := j.Parse(`@"./main.jsonic"`); err != nil { + t.Fatal(err) + } + + if !strings.HasSuffix(filepath.ToSlash(gotPath), "sub/c.probe") { + t.Fatalf("threaded path: want suffix sub/c.probe, got %q", gotPath) + } + if len(gotParents) != 1 || !strings.HasSuffix(filepath.ToSlash(gotParents[0]), "main.jsonic") { + t.Fatalf("threaded parents: want [.../main.jsonic], got %#v", gotParents) + } +} diff --git a/go/plugin.go b/go/plugin.go index 014e8b0..5e49cdf 100644 --- a/go/plugin.go +++ b/go/plugin.go @@ -4,6 +4,7 @@ package multisource import ( "fmt" + "strings" directive "github.com/jsonicjs/directive/go" jsonic "github.com/jsonicjs/jsonic/go" @@ -54,7 +55,7 @@ func MultiSource(j *jsonic.Jsonic, pluginOpts map[string]any) error { } } - res := resolveSource(pathStr, opts, j) + res := resolveSource(pathStr, opts, ctx, j) from := "" if rule.Parent != nil && rule.Parent != jsonic.NoRule { @@ -131,16 +132,104 @@ func MultiSource(j *jsonic.Jsonic, pluginOpts map[string]any) error { } // resolveSource resolves a multisource path and returns the processed value. -func resolveSource(pathStr string, opts *MultiSourceOptions, j *jsonic.Jsonic) any { - spec := ResolvePathSpec(pathStr, opts.Path) +// +// Relative references resolve against the directory of the *current* source. +// For a top-level parse that is opts.Path; for a reference loaded from inside +// another source it is that source's own directory. The current source's full +// path is threaded through ctx.Meta["multisource"]["path"], mirroring the +// canonical TypeScript @jsonic/multisource (ctx.meta.multisource.path). This +// makes nested loads (a -> b -> c) resolve each relative reference against the +// source that contains it, at any nesting depth, without mutating the shared +// options. Sibling loads are unaffected because the parent context is copied, +// not modified. +func resolveSource(pathStr string, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) any { + base := opts.Path + if parent := metaSourcePath(ctx); parent != "" { + base = sourceDir(parent) + } + + spec := ResolvePathSpec(pathStr, base) res := opts.Resolver(spec, opts) if !res.Found { return nil } + // Process in a child context whose meta records this source's full path, so + // any relative references inside res.Src resolve against this source's + // directory. The parent context (and its meta) are left unmodified. + childCtx := *ctx + childCtx.Meta = childMeta(ctx.Meta, &res) + proc := getProcessor(res.Kind, opts.Processor) - proc(&res, opts, j) + proc(&res, opts, &childCtx, j) return res.Val } + +// metaSourcePath returns the full path of the source currently being parsed, +// as threaded through ctx.Meta["multisource"]["path"]. It is empty for a +// top-level parse (no enclosing source). +func metaSourcePath(ctx *jsonic.Context) string { + if ctx == nil || ctx.Meta == nil { + return "" + } + ms, ok := ctx.Meta["multisource"].(map[string]any) + if !ok { + return "" + } + p, _ := ms["path"].(string) + return p +} + +// sourceDir returns the directory portion of a source path, used as the base +// for relative references found inside that source. A path with no separator +// (an in-memory resolver key such as "a.jsonic") yields "", so bare nested +// references resolve plainly — matching the TypeScript mem resolvefolder. A +// path that contains separators yields everything up to the last one (its +// containing directory), matching the TypeScript file/pkg resolvefolder for a +// loaded file. +func sourceDir(p string) string { + i := strings.LastIndexAny(p, `/\`) + if i < 0 { + return "" + } + if i == 0 { + return p[:1] // filesystem root: keep the separator + } + return p[:i] +} + +// childMeta returns a copy of the parent parse meta with the multisource entry +// updated to record path (the full path of the source about to be processed) +// and parents (the chain of enclosing source paths). The parent map is not +// mutated. Mirrors the meta construction in the TypeScript plugin action. +func childMeta(parent map[string]any, res *Resolution) map[string]any { + child := make(map[string]any, len(parent)+1) + for k, v := range parent { + child[k] = v + } + + var prevMS map[string]any + if m, ok := parent["multisource"].(map[string]any); ok { + prevMS = m + } + + var parents []string + if ps, ok := prevMS["parents"].([]string); ok { + parents = append(parents, ps...) + } + if prev, ok := prevMS["path"].(string); ok && prev != "" { + parents = append(parents, prev) + } + + ms := make(map[string]any, len(prevMS)+2) + for k, v := range prevMS { + ms[k] = v + } + ms["path"] = res.Full + ms["parents"] = parents + + child["multisource"] = ms + return child +} diff --git a/ts/dist-test/multisource.test.js b/ts/dist-test/multisource.test.js index ef49d76..057e661 100644 --- a/ts/dist-test/multisource.test.js +++ b/ts/dist-test/multisource.test.js @@ -560,5 +560,38 @@ const path_1 = require("@jsonic/path"); }); node_assert_1.default.deepEqual(filemap, {}); }); + (0, node_test_1.test)('nested-relative-dirs', () => { + // A relative reference *inside* a loaded file resolves against that file's + // own directory (main -> sub/child -> sub/grand), across directories. + const { fs } = (0, memfs_1.memfs)({ + 'main.jsonic': '{top:1, child:@"./sub/child.jsonic"}', + sub: { + 'child.jsonic': '{mid:2, grand:@"./grand.jsonic"}', + 'grand.jsonic': '{v:99}', + }, + }); + const j = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { resolver: (0, file_1.makeFileResolver)() }); + node_assert_1.default.deepEqual(j('@"./main.jsonic"', { fs, multisource: { path: '/' } }), { top: 1, child: { mid: 2, grand: { v: 99 } } }); + }); + (0, node_test_1.test)('nested-relative-sibling-dirs', () => { + // Two references loaded from the same parent each resolve their own + // relative reference against their own directory. Both children load + // "./inner.jsonic" but from different directories, so they pick up + // different files — proving the base is tracked per-source and a sibling + // load is unaffected. + const { fs } = (0, memfs_1.memfs)({ + 'main.jsonic': '{a:@"./aa/a.jsonic", b:@"./bb/b.jsonic"}', + aa: { + 'a.jsonic': '{x:@"./inner.jsonic"}', + 'inner.jsonic': '{n:11}', + }, + bb: { + 'b.jsonic': '{y:@"./inner.jsonic"}', + 'inner.jsonic': '{n:22}', + }, + }); + const j = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { resolver: (0, file_1.makeFileResolver)() }); + node_assert_1.default.deepEqual(j('@"./main.jsonic"', { fs, multisource: { path: '/' } }), { a: { x: { n: 11 } }, b: { y: { n: 22 } } }); + }); }); //# sourceMappingURL=multisource.test.js.map \ No newline at end of file diff --git a/ts/dist-test/multisource.test.js.map b/ts/dist-test/multisource.test.js.map index 98021d0..0baf9a3 100644 --- a/ts/dist-test/multisource.test.js.map +++ b/ts/dist-test/multisource.test.js.map @@ -1 +1 @@ -{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ts/test/multisource.test.ts b/ts/test/multisource.test.ts index b78f442..78c2549 100644 --- a/ts/test/multisource.test.ts +++ b/ts/test/multisource.test.ts @@ -763,4 +763,51 @@ describe('multisource', () => { assert.deepEqual(filemap, {}) }) + + test('nested-relative-dirs', () => { + // A relative reference *inside* a loaded file resolves against that file's + // own directory (main -> sub/child -> sub/grand), across directories. + const { fs } = memfs({ + 'main.jsonic': '{top:1, child:@"./sub/child.jsonic"}', + sub: { + 'child.jsonic': '{mid:2, grand:@"./grand.jsonic"}', + 'grand.jsonic': '{v:99}', + }, + }) + + const j = Jsonic.make().use(MultiSource, { resolver: makeFileResolver() }) + + assert.deepEqual( + j('@"./main.jsonic"', { fs, multisource: { path: '/' } }), + { top: 1, child: { mid: 2, grand: { v: 99 } } } + ) + }) + + + test('nested-relative-sibling-dirs', () => { + // Two references loaded from the same parent each resolve their own + // relative reference against their own directory. Both children load + // "./inner.jsonic" but from different directories, so they pick up + // different files — proving the base is tracked per-source and a sibling + // load is unaffected. + const { fs } = memfs({ + 'main.jsonic': '{a:@"./aa/a.jsonic", b:@"./bb/b.jsonic"}', + aa: { + 'a.jsonic': '{x:@"./inner.jsonic"}', + 'inner.jsonic': '{n:11}', + }, + bb: { + 'b.jsonic': '{y:@"./inner.jsonic"}', + 'inner.jsonic': '{n:22}', + }, + }) + + const j = Jsonic.make().use(MultiSource, { resolver: makeFileResolver() }) + + assert.deepEqual( + j('@"./main.jsonic"', { fs, multisource: { path: '/' } }), + { a: { x: { n: 11 } }, b: { y: { n: 22 } } } + ) + }) + }) From bb2e9a6345f56198d2c23f508690df1dd5e3b44b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 12:11:04 +0000 Subject: [PATCH 2/3] Add injectable io/fs.FS for the Go file and pkg resolvers (parity with TS ctx.meta.fs) The file and pkg resolvers can now read from an injected filesystem instead of the OS, mirroring the TypeScript ctx.meta.fs injection point. The filesystem is supplied via MultiSourceOptions.FS (instance-level) or ctx.Meta["fs"] (per-parse, like TS's j('...', { fs })); the OS remains the default. Reads route through a small vfs view (osVFS for the OS, ioVFS for an io/fs.FS), so the resolver logic stays uniform. Note: an io/fs.FS uses relative, slash-separated paths (fs.ValidPath), so references under an injected FS resolve relative to the FS root rather than as absolute paths. The Resolver signature now also receives *jsonic.Context, matching the TypeScript resolver and letting resolvers read the per-parse fs. - go/resolver.go: vfs abstraction (osVFS/ioVFS), resolveVFS precedence, fsClean; file + pkg resolvers read via the vfs; signatures gain ctx. - go/multisource.go: add MultiSourceOptions.FS; Resolver/MakeMemResolver gain ctx. - go/plugin.go: pass ctx to the resolver. - go/fs_test.go: fs-injection tests (opts.FS, ctx.Meta fs, pkg sub-path/index/main, walk-up). - go/nested_test.go: nested/file tests converted to testing/fstest.MapFS (hermetic), one OS-backed nested test retained. - docs: update the virtual-filesystem note in CLAUDE.md; document FS + the in-memory how-to in doc/multisource-go.md. https://claude.ai/code/session_01Y8AZKH4bFM9WcDh5eXNp5U --- CLAUDE.md | 11 ++- doc/multisource-go.md | 37 ++++++++++- go/fs_test.go | 127 +++++++++++++++++++++++++++++++++++ go/multisource.go | 24 +++++-- go/nested_test.go | 88 +++++++++++++++--------- go/plugin.go | 2 +- go/resolver.go | 151 ++++++++++++++++++++++++++++++++++-------- 7 files changed, 369 insertions(+), 71 deletions(-) create mode 100644 go/fs_test.go diff --git a/CLAUDE.md b/CLAUDE.md index 69c15d5..0683ffb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -83,9 +83,14 @@ The ports are not line-for-line identical. Current intentional/known gaps: `"main"` for bare references, and tries implicit extensions / index files. It does not implement Node's full module-resolution algorithm (e.g. conditional `"exports"`). -- **No virtual filesystem in Go.** The TS resolvers accept a `ctx.meta.fs` - (used by tests via `memfs`); the Go resolvers use the OS filesystem - directly. +- **Virtual filesystem injection differs in shape.** Both ports let the + file/pkg resolvers read from an injected filesystem instead of the OS (the + default in both). TS uses `ctx.meta.fs` — a `node:fs` subset (e.g. `memfs`) + keyed by absolute paths. Go uses `MultiSourceOptions.FS` or `ctx.Meta["fs"]` + — an `io/fs.FS` (e.g. `testing/fstest.MapFS`) keyed by relative, + slash-separated paths (`fs.ValidPath`). Because an `io/fs.FS` is rooted and + relative, a Go reference under an injected FS resolves relative to the FS + root, not as an absolute path. - **No `.js` processor in Go.** Executing JavaScript modules is Node-specific. Nested relative includes have parity: like TS, the Go plugin threads each diff --git a/doc/multisource-go.md b/doc/multisource-go.md index c8b1c0a..7d565b0 100644 --- a/doc/multisource-go.md +++ b/doc/multisource-go.md @@ -119,7 +119,7 @@ Implement the `Resolver` function type. It must populate `Resolution.Found` and — if found — `Src` and `Full`: ```go -httpResolver := func(spec multisource.PathSpec, _ *multisource.MultiSourceOptions) multisource.Resolution { +httpResolver := func(spec multisource.PathSpec, _ *multisource.MultiSourceOptions, _ *jsonic.Context) multisource.Resolution { body := httpGet(spec.Full) return multisource.Resolution{ PathSpec: spec, @@ -130,6 +130,34 @@ httpResolver := func(spec multisource.PathSpec, _ *multisource.MultiSourceOption j := multisource.MakeJsonic(multisource.MultiSourceOptions{Resolver: httpResolver}) ``` +### Resolve from an in-memory filesystem (hermetic tests) + +The file and pkg resolvers read from the OS by default. Supply an `io/fs.FS` +(for example `testing/fstest.MapFS`) via `FS` to read from memory instead — handy +for hermetic tests, mirroring the `ctx.meta.fs` injection used by the TypeScript +tests. Paths under an injected FS are relative and slash-separated (see +`fs.ValidPath`), so they resolve relative to the FS root: + +```go +fsys := fstest.MapFS{ + "main.jsonic": &fstest.MapFile{Data: []byte(`{child:@"./sub/child.jsonic"}`)}, + "sub/child.jsonic": &fstest.MapFile{Data: []byte(`{v:99}`)}, +} +j := multisource.MakeJsonic(multisource.MultiSourceOptions{ + Resolver: multisource.MakeFileResolver(), + FS: fsys, +}) +out, _ := j.Parse(`@"./main.jsonic"`) +// out == map[string]any{"child": map[string]any{"v": float64(99)}} +``` + +A per-parse override can also be passed as `ctx.Meta["fs"]` via `ParseMeta`, +matching the TypeScript `j('...', { fs })` form: + +```go +out, _ := j.ParseMeta(`@"./main.jsonic"`, map[string]any{"fs": fsys}) +``` + ### Register a processor for a new file kind Processors fill in `res.Val` from `res.Src`. Register them under the kind @@ -254,6 +282,7 @@ Convenience wrapper around `MakeJsonic().Parse(src)`. | `MarkChar` | `string` | `"@"` | Directive open character. | | `Processor` | `map[string]Processor` | `json`, `jsonic`, `jsc`, default | Per-kind source transformers. | | `ImplicitExt` | `[]string` | `[".jsonic", ".jsc", ".json"]` | Extensions tried when omitted. | +| `FS` | `fs.FS` | `nil` (OS filesystem) | Filesystem for file/pkg resolvers. | ### Resolvers and processors @@ -307,11 +336,15 @@ type Resolution struct { Search []string } -type Resolver func(spec PathSpec, opts *MultiSourceOptions) Resolution +type Resolver func(spec PathSpec, opts *MultiSourceOptions, ctx *jsonic.Context) Resolution type Processor func(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Context, j *jsonic.Jsonic) ``` +The `ctx` passed to a `Resolver` lets it read a per-parse filesystem from +`ctx.Meta["fs"]` (an `io/fs.FS`); resolvers fall back to `opts.FS` and then the +OS filesystem. + `ctx.Meta` carries the parse metadata for the current load, including a `"multisource"` entry whose `"path"` is the full path of the source being processed and whose `"parents"` is the chain of enclosing source paths. A diff --git a/go/fs_test.go b/go/fs_test.go new file mode 100644 index 0000000..ae1628a --- /dev/null +++ b/go/fs_test.go @@ -0,0 +1,127 @@ +/* Copyright (c) 2025 Richard Rodger, MIT License */ + +package multisource + +import ( + "testing" + "testing/fstest" +) + +// mapFS builds an in-memory fs.FS (testing/fstest.MapFS) from a path -> content +// map. It is the Go counterpart to the memfs used by the TypeScript tests. +func mapFS(files map[string]string) fstest.MapFS { + m := make(fstest.MapFS, len(files)) + for k, v := range files { + m[k] = &fstest.MapFile{Data: []byte(v)} + } + return m +} + +// TestFileResolverFS checks that the file resolver reads from an injected +// io/fs.FS (via MultiSourceOptions.FS) instead of the OS, covering explicit +// extensions, implicit extensions, index files, JSON, and a sub-directory base. +func TestFileResolverFS(t *testing.T) { + fsys := mapFS(map[string]string{ + "a.jsonic": `{a:1}`, + "b.jsonic": `{b:2}`, + "mod/index.jsonic": `{m:3}`, + "data/cfg.json": `{"k":4}`, + }) + + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), FS: fsys}) + + cases := []struct { + src string + want any + }{ + {`{x:@a.jsonic}`, map[string]any{"a": float64(1)}}, // explicit ext + {`{x:@b}`, map[string]any{"b": float64(2)}}, // implicit ext + {`{x:@mod}`, map[string]any{"m": float64(3)}}, // index file + {`{x:@"data/cfg.json"}`, map[string]any{"k": float64(4)}}, // json, sub-dir + } + for _, c := range cases { + r, err := j.Parse(c.src) + if err != nil { + t.Fatalf("%s: %v", c.src, err) + } + m, _ := r.(map[string]any) + assert(t, c.src, m["x"], c.want) + } +} + +// TestFileResolverFSViaMeta checks the per-parse filesystem override passed as +// ctx.Meta["fs"], mirroring the TypeScript j('...', { fs }). The fs must also +// propagate to nested loads (threaded through the copied parse meta). +func TestFileResolverFSViaMeta(t *testing.T) { + fsys := mapFS(map[string]string{ + "main.jsonic": `{child:@"./sub/c.jsonic"}`, + "sub/c.jsonic": `{v:7}`, + }) + + // No instance-level FS: the filesystem comes from the parse meta only. + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver()}) + + r, err := j.ParseMeta(`@"./main.jsonic"`, map[string]any{"fs": fsys}) + if err != nil { + t.Fatal(err) + } + assert(t, "fs-via-meta", r, map[string]any{ + "child": map[string]any{"v": float64(7)}, + }) +} + +// TestPkgResolverFS checks that the pkg resolver reads from an injected +// io/fs.FS, covering a sub-path reference, an index file, and package.json +// "main". +func TestPkgResolverFS(t *testing.T) { + fsys := mapFS(map[string]string{ + "node_modules/mypkg/zed.jsonic": `{zed:99}`, + "node_modules/idxpkg/index.jsonic": `{i:5}`, + "node_modules/mainpkg/package.json": `{"main":"main.jsonic"}`, + "node_modules/mainpkg/main.jsonic": `{z:11}`, + }) + + j := MakeJsonic(MultiSourceOptions{ + Resolver: MakePkgResolver(PkgResolverOptions{Paths: []string{"."}}), + FS: fsys, + }) + + cases := []struct { + src string + want any + }{ + {`{c:@"mypkg/zed.jsonic"}`, map[string]any{"zed": float64(99)}}, // sub-path + {`{c:@"idxpkg"}`, map[string]any{"i": float64(5)}}, // index + {`{c:@"mainpkg"}`, map[string]any{"z": float64(11)}}, // "main" + } + for _, c := range cases { + r, err := j.Parse(c.src) + if err != nil { + t.Fatalf("%s: %v", c.src, err) + } + m, _ := r.(map[string]any) + assert(t, c.src, m["c"], c.want) + } +} + +// TestPkgResolverFSWalkUp checks that, with an injected filesystem, the pkg +// resolver still walks up parent directories to find node_modules. +func TestPkgResolverFSWalkUp(t *testing.T) { + fsys := mapFS(map[string]string{ + "node_modules/mypkg/zed.jsonic": `{zed:99}`, + // The reference is resolved from a nested starting directory. + "a/b/c/.keep": ``, + }) + + j := MakeJsonic(MultiSourceOptions{ + Resolver: MakePkgResolver(PkgResolverOptions{Paths: []string{"a/b/c"}}), + FS: fsys, + }) + + r, err := j.Parse(`{c:@"mypkg/zed.jsonic"}`) + if err != nil { + t.Fatal(err) + } + m, _ := r.(map[string]any) + assert(t, "pkg-fs-walkup", m["c"], map[string]any{"zed": float64(99)}) +} diff --git a/go/multisource.go b/go/multisource.go index 516c947..777f017 100644 --- a/go/multisource.go +++ b/go/multisource.go @@ -4,6 +4,7 @@ package multisource import ( "encoding/json" + "io/fs" "path" "strings" @@ -20,6 +21,17 @@ type MultiSourceOptions struct { MarkChar string Processor map[string]Processor ImplicitExt []string + + // FS is an optional filesystem for the file and pkg resolvers to read + // from. When nil, the OS filesystem is used. Supplying an in-memory + // implementation (for example testing/fstest.MapFS) makes resolution + // hermetic. A per-parse override may also be passed as ctx.Meta["fs"], + // mirroring the TypeScript ctx.meta.fs injection point. + // + // Note: an io/fs.FS uses relative, slash-separated paths (see fs.ValidPath), + // so when FS is set the base Path and references resolve relative to the + // FS root rather than as absolute OS paths. + FS fs.FS } // PathSpec represents a normalized path to a source. @@ -40,8 +52,11 @@ type Resolution struct { Search []string // List of searched paths. } -// Resolver finds source content for a given path spec. -type Resolver func(spec PathSpec, opts *MultiSourceOptions) Resolution +// Resolver finds source content for a given path spec. The ctx carries the +// parse metadata (ctx.Meta); resolvers may read ctx.Meta["fs"] for a per-parse +// filesystem override. Mirrors the TypeScript Resolver, which receives the +// parse Context. +type Resolver func(spec PathSpec, opts *MultiSourceOptions, ctx *jsonic.Context) Resolution // Processor converts resolved source content into a value. // @@ -99,9 +114,10 @@ func JsonicProcessor(res *Resolution, opts *MultiSourceOptions, ctx *jsonic.Cont res.Val = val } -// MakeMemResolver creates a resolver that looks up paths in a map. +// MakeMemResolver creates a resolver that looks up paths in a map. It reads +// from its own in-memory map and ignores ctx / opts.FS. func MakeMemResolver(files map[string]string) Resolver { - return func(spec PathSpec, opts *MultiSourceOptions) Resolution { + return func(spec PathSpec, opts *MultiSourceOptions, ctx *jsonic.Context) Resolution { res := Resolution{ PathSpec: spec, Found: false, diff --git a/go/nested_test.go b/go/nested_test.go index 5f69963..f3f9c69 100644 --- a/go/nested_test.go +++ b/go/nested_test.go @@ -11,29 +11,18 @@ import ( jsonic "github.com/jsonicjs/jsonic/go" ) -// writeNested writes content to p, creating parent directories. -func writeNested(t *testing.T, p, content string) { - t.Helper() - if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil { - t.Fatal(err) - } - if err := os.WriteFile(p, []byte(content), 0o644); err != nil { - t.Fatal(err) - } -} - // TestNestedRelativeLoad checks that a relative reference *inside* a loaded // file resolves against that file's own directory (a -> b -> c, across -// directories), mirroring the canonical TypeScript behaviour. +// directories), mirroring the canonical TypeScript behaviour. Uses an in-memory +// fs.FS so the test is hermetic (cf. the memfs-based TS test). func TestNestedRelativeLoad(t *testing.T) { - dir := t.TempDir() - sub := filepath.Join(dir, "sub") - - writeNested(t, filepath.Join(dir, "main.jsonic"), `{top:1, child:@"./sub/child.jsonic"}`) - writeNested(t, filepath.Join(sub, "child.jsonic"), `{mid:2, grand:@"./grand.jsonic"}`) - writeNested(t, filepath.Join(sub, "grand.jsonic"), `{v:99}`) + fsys := mapFS(map[string]string{ + "main.jsonic": `{top:1, child:@"./sub/child.jsonic"}`, + "sub/child.jsonic": `{mid:2, grand:@"./grand.jsonic"}`, + "sub/grand.jsonic": `{v:99}`, + }) - j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), Path: dir}) + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), FS: fsys}) r, err := j.Parse(`@"./main.jsonic"`) if err != nil { t.Fatal(err) @@ -56,15 +45,15 @@ func TestNestedRelativeLoad(t *testing.T) { // is tracked per-source and that resolving one reference does not leak into a // sibling (the parent context is copied, not mutated). func TestNestedRelativeSiblingDirs(t *testing.T) { - dir := t.TempDir() - - writeNested(t, filepath.Join(dir, "main.jsonic"), `{a:@"./aa/a.jsonic", b:@"./bb/b.jsonic"}`) - writeNested(t, filepath.Join(dir, "aa", "a.jsonic"), `{x:@"./inner.jsonic"}`) - writeNested(t, filepath.Join(dir, "aa", "inner.jsonic"), `{n:11}`) - writeNested(t, filepath.Join(dir, "bb", "b.jsonic"), `{y:@"./inner.jsonic"}`) - writeNested(t, filepath.Join(dir, "bb", "inner.jsonic"), `{n:22}`) + fsys := mapFS(map[string]string{ + "main.jsonic": `{a:@"./aa/a.jsonic", b:@"./bb/b.jsonic"}`, + "aa/a.jsonic": `{x:@"./inner.jsonic"}`, + "aa/inner.jsonic": `{n:11}`, + "bb/b.jsonic": `{y:@"./inner.jsonic"}`, + "bb/inner.jsonic": `{n:22}`, + }) - j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), Path: dir}) + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), FS: fsys}) r, err := j.Parse(`@"./main.jsonic"`) if err != nil { t.Fatal(err) @@ -108,10 +97,10 @@ func TestNestedRelativeMemFlat(t *testing.T) { // ctx.meta.multisource.{path,parents}. A custom processor inspects the meta it // receives. func TestNestedSourcePathMeta(t *testing.T) { - dir := t.TempDir() - - writeNested(t, filepath.Join(dir, "main.jsonic"), `{child:@"./sub/c.probe"}`) - writeNested(t, filepath.Join(dir, "sub", "c.probe"), `probe-content`) + fsys := mapFS(map[string]string{ + "main.jsonic": `{child:@"./sub/c.probe"}`, + "sub/c.probe": `probe-content`, + }) var gotPath string var gotParents []string @@ -125,7 +114,7 @@ func TestNestedSourcePathMeta(t *testing.T) { j := MakeJsonic(MultiSourceOptions{ Resolver: MakeFileResolver(), - Path: dir, + FS: fsys, Processor: map[string]Processor{ NONE: DefaultProcessor, "jsonic": JsonicProcessor, @@ -143,3 +132,38 @@ func TestNestedSourcePathMeta(t *testing.T) { t.Fatalf("threaded parents: want [.../main.jsonic], got %#v", gotParents) } } + +// TestNestedRelativeLoadOSFiles is the on-disk counterpart of +// TestNestedRelativeLoad: it exercises nested relative resolution against real +// OS files (absolute paths from filepath.Abs), confirming the directory +// tracking works for the default OS filesystem as well as an injected fs.FS. +func TestNestedRelativeLoadOSFiles(t *testing.T) { + dir := t.TempDir() + sub := filepath.Join(dir, "sub") + if err := os.MkdirAll(sub, 0o755); err != nil { + t.Fatal(err) + } + write := func(p, s string) { + if err := os.WriteFile(p, []byte(s), 0o644); err != nil { + t.Fatal(err) + } + } + write(filepath.Join(dir, "main.jsonic"), `{top:1, child:@"./sub/child.jsonic"}`) + write(filepath.Join(sub, "child.jsonic"), `{mid:2, grand:@"./grand.jsonic"}`) + write(filepath.Join(sub, "grand.jsonic"), `{v:99}`) + + j := MakeJsonic(MultiSourceOptions{Resolver: MakeFileResolver(), Path: dir}) + r, err := j.Parse(`@"./main.jsonic"`) + if err != nil { + t.Fatal(err) + } + assert(t, "nested-relative-os", r, map[string]any{ + "top": float64(1), + "child": map[string]any{ + "mid": float64(2), + "grand": map[string]any{ + "v": float64(99), + }, + }, + }) +} diff --git a/go/plugin.go b/go/plugin.go index 5e49cdf..39059a1 100644 --- a/go/plugin.go +++ b/go/plugin.go @@ -149,7 +149,7 @@ func resolveSource(pathStr string, opts *MultiSourceOptions, ctx *jsonic.Context } spec := ResolvePathSpec(pathStr, base) - res := opts.Resolver(spec, opts) + res := opts.Resolver(spec, opts, ctx) if !res.Found { return nil diff --git a/go/resolver.go b/go/resolver.go index 510e7cf..cabfec0 100644 --- a/go/resolver.go +++ b/go/resolver.go @@ -4,8 +4,13 @@ package multisource import ( "encoding/json" + "io/fs" "os" + "path" "path/filepath" + "strings" + + jsonic "github.com/jsonicjs/jsonic/go" ) // FileResolverOptions configures MakeFileResolver. @@ -18,17 +23,23 @@ type FileResolverOptions struct { // MakeFileResolver creates a resolver that loads sources from the filesystem. // -// It mirrors the TypeScript makeFileResolver: the reference is resolved to an -// absolute path; when the path has no extension, implicit extensions and index +// It mirrors the TypeScript makeFileResolver: the reference is resolved to a +// canonical path; when the path has no extension, implicit extensions and index // files are tried; and a preload map (full path -> content) is consulted before -// touching disk. +// touching the filesystem. +// +// By default sources are read from the OS filesystem and references resolve to +// absolute paths. When a filesystem is supplied (via MultiSourceOptions.FS or +// ctx.Meta["fs"]) sources are read from it instead, with references resolved as +// relative, slash-separated paths under the filesystem root — mirroring the +// TypeScript ctx.meta.fs injection point. func MakeFileResolver(opts ...FileResolverOptions) Resolver { var o FileResolverOptions if len(opts) > 0 { o = opts[0] } - return func(spec PathSpec, mopts *MultiSourceOptions) Resolution { + return func(spec PathSpec, mopts *MultiSourceOptions, ctx *jsonic.Context) Resolution { // A pathfinder transforms the raw reference before resolution. if o.PathFinder != nil { spec = ResolvePathSpec(o.PathFinder(spec.Path), spec.Base) @@ -39,10 +50,9 @@ func MakeFileResolver(opts ...FileResolverOptions) Resolver { return res } - full := spec.Full - if abs, err := filepath.Abs(full); err == nil { - full = abs - } + v := resolveVFS(mopts, ctx) + + full := v.canon(spec.Full) res.Full = full potentials := buildPotentials(full, mopts.ImplicitExt) @@ -56,7 +66,7 @@ func MakeFileResolver(opts ...FileResolverOptions) Resolver { res.Found = true return res } - if src, ok := loadFile(p); ok { + if src, ok := v.readFile(p); ok { res.Full = p res.Kind = extKind(p) res.Src = src @@ -73,7 +83,8 @@ func MakeFileResolver(opts ...FileResolverOptions) Resolver { type PkgResolverOptions struct { // Paths lists directories whose node_modules folders are searched; each is // also walked upwards. When empty, the resolver walks up from the current - // working directory. + // working directory (OS filesystem) or from the root "." (injected + // filesystem). Paths []string } @@ -85,38 +96,47 @@ type PkgResolverOptions struct { // package.json "main" for bare references, and tries implicit extensions and // index files. It does not implement Node's full module-resolution algorithm // (for example, conditional "exports"). +// +// Like the file resolver, it reads from the OS by default and from an injected +// filesystem (MultiSourceOptions.FS or ctx.Meta["fs"]) when one is supplied. func MakePkgResolver(opts ...PkgResolverOptions) Resolver { var o PkgResolverOptions if len(opts) > 0 { o = opts[0] } - return func(spec PathSpec, mopts *MultiSourceOptions) Resolution { + return func(spec PathSpec, mopts *MultiSourceOptions, ctx *jsonic.Context) Resolution { res := Resolution{PathSpec: spec, Found: false} ref := spec.Path if ref == "" { return res } + v := resolveVFS(mopts, ctx) + var roots []string if len(o.Paths) > 0 { roots = o.Paths - } else if cwd, err := os.Getwd(); err == nil { - roots = []string{cwd} + } else if _, isOS := v.(osVFS); isOS { + if cwd, err := os.Getwd(); err == nil { + roots = []string{cwd} + } + } else { + roots = []string{"."} } seen := map[string]bool{} var search []string for _, root := range roots { - for _, dir := range ancestorDirs(root) { - nm := filepath.Join(dir, "node_modules") + for _, dir := range ancestors(v, root) { + nm := v.join(dir, "node_modules") if seen[nm] { continue } seen[nm] = true - if full, src, ok := resolveInPkgDir(nm, ref, mopts.ImplicitExt, &search); ok { + if full, src, ok := resolveInPkgDir(v, nm, ref, mopts.ImplicitExt, &search); ok { res.Full = full res.Kind = extKind(full) res.Src = src @@ -135,28 +155,28 @@ func MakePkgResolver(opts ...PkgResolverOptions) Resolver { // resolveInPkgDir resolves a package reference inside a node_modules directory, // trying the reference directly (with implicit extensions and index files) and // then the target package's package.json "main". -func resolveInPkgDir(nodeModules, ref string, exts []string, search *[]string) (full, src string, found bool) { - target := filepath.Join(nodeModules, filepath.FromSlash(ref)) +func resolveInPkgDir(v vfs, nodeModules, ref string, exts []string, search *[]string) (full, src string, found bool) { + target := v.join(nodeModules, ref) for _, p := range buildPotentials(target, exts) { *search = append(*search, p) - if s, ok := loadFile(p); ok { + if s, ok := v.readFile(p); ok { return p, s, true } } // Bare package reference: honour package.json "main". - pkgJSON := filepath.Join(target, "package.json") + pkgJSON := v.join(target, "package.json") *search = append(*search, pkgJSON) - if data, err := os.ReadFile(pkgJSON); err == nil { + if data, ok := v.readFile(pkgJSON); ok { var meta struct { Main string `json:"main"` } - if json.Unmarshal(data, &meta) == nil && meta.Main != "" { - mainPath := filepath.Join(target, filepath.FromSlash(meta.Main)) + if json.Unmarshal([]byte(data), &meta) == nil && meta.Main != "" { + mainPath := v.join(target, meta.Main) for _, p := range buildPotentials(mainPath, exts) { *search = append(*search, p) - if s, ok := loadFile(p); ok { + if s, ok := v.readFile(p); ok { return p, s, true } } @@ -166,8 +186,80 @@ func resolveInPkgDir(nodeModules, ref string, exts []string, search *[]string) ( return "", "", false } -// loadFile reads a file, reporting whether it was read successfully. A failed -// read is treated as the source not existing. +// vfs is the minimal read-only filesystem view used by the file and pkg +// resolvers. osVFS uses the OS filesystem (absolute paths); ioVFS adapts an +// injected io/fs.FS (relative, slash-separated paths), for example +// testing/fstest.MapFS. This is the Go counterpart to the TypeScript +// ctx.meta.fs abstraction. +type vfs interface { + // readFile reads the file at a canonical path; ok reports existence. + readFile(p string) (string, bool) + // join joins path elements in this filesystem's convention. + join(parts ...string) string + // dir returns the parent directory of p. + dir(p string) string + // canon returns the canonical lookup form of a (possibly relative) path. + canon(p string) string +} + +// resolveVFS selects the filesystem view: a per-parse ctx.Meta["fs"] override, +// then MultiSourceOptions.FS, then the OS filesystem. +func resolveVFS(opts *MultiSourceOptions, ctx *jsonic.Context) vfs { + if ctx != nil && ctx.Meta != nil { + if f, ok := ctx.Meta["fs"].(fs.FS); ok && f != nil { + return ioVFS{f} + } + } + if opts != nil && opts.FS != nil { + return ioVFS{opts.FS} + } + return osVFS{} +} + +// osVFS reads from the OS filesystem using absolute, OS-native paths. +type osVFS struct{} + +func (osVFS) readFile(p string) (string, bool) { return loadFile(p) } +func (osVFS) join(parts ...string) string { return filepath.Join(parts...) } +func (osVFS) dir(p string) string { return filepath.Dir(p) } +func (osVFS) canon(p string) string { + if abs, err := filepath.Abs(p); err == nil { + return abs + } + return p +} + +// ioVFS reads from an injected io/fs.FS using relative, slash-separated paths. +type ioVFS struct{ fsys fs.FS } + +func (v ioVFS) readFile(p string) (string, bool) { + name := fsClean(p) + if !fs.ValidPath(name) { + return "", false + } + b, err := fs.ReadFile(v.fsys, name) + if err != nil { + return "", false + } + return string(b), true +} +func (ioVFS) join(parts ...string) string { return fsClean(path.Join(parts...)) } +func (ioVFS) dir(p string) string { return path.Dir(fsClean(p)) } +func (ioVFS) canon(p string) string { return fsClean(p) } + +// fsClean normalizes a path into an io/fs.FS name: slash-separated, with "." +// and ".." resolved and any leading slash removed. An empty result becomes ".". +func fsClean(p string) string { + p = path.Clean(filepath.ToSlash(p)) + p = strings.TrimPrefix(p, "/") + if p == "" { + return "." + } + return p +} + +// loadFile reads a file from the OS, reporting whether it was read +// successfully. A failed read is treated as the source not existing. func loadFile(p string) (string, bool) { b, err := os.ReadFile(p) if err != nil { @@ -176,15 +268,16 @@ func loadFile(p string) (string, bool) { return string(b), true } -// ancestorDirs returns dir followed by each of its parent directories. -func ancestorDirs(dir string) []string { +// ancestors returns dir followed by each of its parent directories, using the +// directory convention of the given filesystem view. +func ancestors(v vfs, dir string) []string { if dir == "" { return nil } var dirs []string for { dirs = append(dirs, dir) - parent := filepath.Dir(dir) + parent := v.dir(dir) if parent == dir { break } From 6aef8af618ef2c955aca931cc79841af519ef461 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 12:59:06 +0000 Subject: [PATCH 3/3] Resolve package-internal relative references in the pkg resolver (TS + Go) A relative reference (./x, ../x) found inside a source loaded from a package was treated as a node_modules package name: the pkg resolver searched node_modules/./x instead of resolving against the loaded source's own directory. Now both resolvers detect an explicit relative reference and resolve it against the containing source's directory via the base-joined full path, exactly as the file resolver does (works over an injected fs too). - TS: makePkgResolver special-cases relative refs (resolvePathSpec base + buildPotentials over ps.full); add pkg-relative-ref test + rel/ fixtures. - Go: MakePkgResolver mirrors this through the vfs view; add TestPkgResolverRelativeInPkg (hermetic fstest.MapFS). - Document the behaviour in both doc/ files. Bare-package and absolute references are unchanged. https://claude.ai/code/session_01Y8AZKH4bFM9WcDh5eXNp5U --- doc/multisource-go.md | 8 +++++++ doc/multisource-ts.md | 4 ++++ go/fs_test.go | 30 +++++++++++++++++++++++++ go/resolver.go | 30 +++++++++++++++++++++++++ ts/dist-test/multisource.test.js | 13 +++++++++++ ts/dist-test/multisource.test.js.map | 2 +- ts/dist/resolver/pkg.js | 30 +++++++++++++++++++++++++ ts/dist/resolver/pkg.js.map | 2 +- ts/src/resolver/pkg.ts | 33 ++++++++++++++++++++++++++++ ts/test/multisource.test.ts | 19 ++++++++++++++++ ts/test/rel/inner.jsonic | 1 + ts/test/rel/outer.jsonic | 1 + 12 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 ts/test/rel/inner.jsonic create mode 100644 ts/test/rel/outer.jsonic diff --git a/doc/multisource-go.md b/doc/multisource-go.md index 7d565b0..67cebdb 100644 --- a/doc/multisource-go.md +++ b/doc/multisource-go.md @@ -113,6 +113,10 @@ out, _ := j.Parse(`{cfg: @"some-pkg/config.jsonic"}`) A bare package reference (`@"some-pkg"`) resolves via the package's `package.json` `"main"`, falling back to index files. +A relative reference (`@"./x"`, `@"../x"`) found *inside* a source loaded from a +package resolves against that source's own directory — not as a package name — +so a package can pull in its own sibling files. + ### Supply a custom resolver Implement the `Resolver` function type. It must populate `Resolution.Found` @@ -245,6 +249,10 @@ For example, with `main.jsonic` containing `child:@"./sub/child.jsonic"` and reference resolves to `sub/grand.jsonic` (relative to `child.jsonic`), not to a top-level `grand.jsonic`. +This holds for every resolver: a relative reference inside a source loaded by +`MakePkgResolver` resolves against that source's directory too, rather than +being treated as a `node_modules` package name. + ## Reference diff --git a/doc/multisource-ts.md b/doc/multisource-ts.md index 2dcb532..bd4c24f 100644 --- a/doc/multisource-ts.md +++ b/doc/multisource-ts.md @@ -174,6 +174,10 @@ enclosing source's directory as the base. So with `main.jsonic` containing `grand:@"./grand.jsonic"`, the `./grand.jsonic` reference resolves to `sub/grand.jsonic` (relative to `child.jsonic`), at any nesting depth. +This holds for every resolver: a relative reference inside a source loaded by +`makePkgResolver` resolves against that source's directory too, rather than +being treated as a `node_modules` package name. + ### Directive-level grammar multisource registers three grammar tweaks under the `multisource` group diff --git a/go/fs_test.go b/go/fs_test.go index ae1628a..8da2286 100644 --- a/go/fs_test.go +++ b/go/fs_test.go @@ -125,3 +125,33 @@ func TestPkgResolverFSWalkUp(t *testing.T) { m, _ := r.(map[string]any) assert(t, "pkg-fs-walkup", m["c"], map[string]any{"zed": float64(99)}) } + +// TestPkgResolverRelativeInPkg checks that a relative reference (./x, ../x) +// found *inside* a source loaded from a package resolves against that source's +// own directory rather than being treated as a node_modules package name. +// Covers an explicit extension, an implicit extension, and a sub-directory. +func TestPkgResolverRelativeInPkg(t *testing.T) { + fsys := mapFS(map[string]string{ + "node_modules/relpkg/index.jsonic": `{a:1, b:@"./child.jsonic", c:@"./leaf", d:@"./sub/deep.jsonic"}`, + "node_modules/relpkg/child.jsonic": `{x:10}`, + "node_modules/relpkg/leaf.jsonic": `{y:20}`, + "node_modules/relpkg/sub/deep.jsonic": `{z:30}`, + }) + + j := MakeJsonic(MultiSourceOptions{ + Resolver: MakePkgResolver(PkgResolverOptions{Paths: []string{"."}}), + FS: fsys, + }) + + r, err := j.Parse(`{r:@"relpkg"}`) + if err != nil { + t.Fatal(err) + } + m, _ := r.(map[string]any) + assert(t, "pkg-relative-internal", m["r"], map[string]any{ + "a": float64(1), + "b": map[string]any{"x": float64(10)}, + "c": map[string]any{"y": float64(20)}, + "d": map[string]any{"z": float64(30)}, + }) +} diff --git a/go/resolver.go b/go/resolver.go index cabfec0..5f4ec7d 100644 --- a/go/resolver.go +++ b/go/resolver.go @@ -114,6 +114,27 @@ func MakePkgResolver(opts ...PkgResolverOptions) Resolver { v := resolveVFS(mopts, ctx) + // A relative reference (./x, ../x) found inside a source loaded from a + // package is not a package name: resolve it against the containing + // source's directory via spec.Full, exactly as the file resolver does. + // Mirrors the TypeScript pkg resolver, whose fallback search resolves + // ps.full (base + path) rather than treating it as a bare package. + if isRelativeRef(ref) && spec.Full != "" { + full := v.canon(spec.Full) + potentials := buildPotentials(full, mopts.ImplicitExt) + res.Search = potentials + for _, p := range potentials { + if src, ok := v.readFile(p); ok { + res.Full = p + res.Kind = extKind(p) + res.Src = src + res.Found = true + return res + } + } + return res + } + var roots []string if len(o.Paths) > 0 { roots = o.Paths @@ -152,6 +173,15 @@ func MakePkgResolver(opts ...PkgResolverOptions) Resolver { } } +// isRelativeRef reports whether ref is an explicit relative reference (./x or +// ../x). Such a reference is resolved against the containing source's directory +// (via spec.Full) rather than treated as a node_modules package name. +func isRelativeRef(ref string) bool { + return ref == "." || ref == ".." || + strings.HasPrefix(ref, "./") || strings.HasPrefix(ref, "../") || + strings.HasPrefix(ref, `.\`) || strings.HasPrefix(ref, `..\`) +} + // resolveInPkgDir resolves a package reference inside a node_modules directory, // trying the reference directly (with implicit extensions and index files) and // then the target package's package.json "main". diff --git a/ts/dist-test/multisource.test.js b/ts/dist-test/multisource.test.js index 057e661..894556b 100644 --- a/ts/dist-test/multisource.test.js +++ b/ts/dist-test/multisource.test.js @@ -392,6 +392,19 @@ const path_1 = require("@jsonic/path"); // then node_modules walk (no virtual fs) finds the package node_assert_1.default.deepEqual(j1('z:@"jsonic-multisource-pkg-test/zed.jsonic"', { multisource: { path: process.cwd() } }), { z: { zed: 99 } }); }); + (0, node_test_1.test)('pkg-relative-ref', () => { + const Path = require('node:path'); + const j1 = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + // A relative reference (./x) is resolved against the containing source's + // directory, not treated as a node_modules package name. The reference + // inside the loaded file (rel/outer.jsonic -> ./inner.jsonic) likewise + // resolves against that file's own directory. The base is seeded via a real + // anchor file so resolvefolder() yields the test directory. + const anchor = Path.resolve(__dirname, '../test/t01.jsonic'); + node_assert_1.default.deepEqual(j1('@"./rel/outer.jsonic"', { multisource: { path: anchor } }), { o: 1, inner: { v: 7 } }); + }); (0, node_test_1.test)('file-implicit', () => { let j0 = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { resolver: (0, file_1.makeFileResolver)(), diff --git a/ts/dist-test/multisource.test.js.map b/ts/dist-test/multisource.test.js.map index 0baf9a3..1e7030f 100644 --- a/ts/dist-test/multisource.test.js.map +++ b/ts/dist-test/multisource.test.js.map @@ -1 +1 @@ -{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":";AAAA,gFAAgF;;;;;AAEhF,yCAA0C;AAC1C,8DAAgC;AAEhC,iCAA6B;AAE7B,mCAA+B;AAE/B,qDAAmF;AACnF,iEAAiE;AACjE,8CAAsD;AACtD,gDAAwD;AACxD,8CAAsD;AACtD,uCAAmC;AAGnC,IAAA,oBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,SAAS;gBACnB,kCAAkC;gBAClC,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,KAAK;gBACpB,eAAe,EAAE,KAAK;aACvB,CAAC;YACF,eAAe;YACf,qDAAqD;YACrD,KAAK;SACN,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACvD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3D,4DAA4D;QAC5D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACtD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACtD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEtD,qBAAM,CAAC,SAAS,CACd,CAAC,CAAC;;;;;;;GAOL,CAAC,EACE;YACA,CAAC,EAAE;gBACD,CAAC,EAAE;oBACD,CAAC,EAAE,CAAC;iBACL;gBACD,CAAC,EAAE;oBACD,CAAC,EAAE,CAAC;iBACL;gBACD,CAAC,EAAE,KAAK;gBACR,CAAC,EAAE;oBACD,CAAC,EAAE,CAAC;iBACL;gBACD,OAAO;gBACP,UAAU;gBACV,KAAK;aACN;YACD,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,UAAU,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE;YACrB,+BAA+B;aAC9B,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAGtB,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACrD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAEnD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC/D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACzE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEvE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAE5D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC/D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAIF,IAAA,gBAAI,EAAC,UAAU,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,aAAa;gBACzB,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAE9D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1C,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACpD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC9D,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEpD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1E,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACvD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACjE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3E,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACrE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE;YAC3C,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACvB,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,+BAA+B,CAAC,EAAE;YACnD,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC9B,CAAC,CAAA;QACF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE;YAC3C,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SAC9B,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE;YACvD,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC7B,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QACF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE;YAC/C,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC7B,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE;YACzC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE;YAC9C,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QACF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE;YAC9C,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE;YAC9C,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;QACF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,EAAE;YAChD,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACZ,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAA;IAEJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,MAAM,EAAE,GAAG,EAAE;QAChB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,UAAU;gBACnB,aAAa,EAAE,KAAK;aACrB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAEpE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACxE,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9E,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE;YAC9D,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,CAAC,EAAE,EAAE;SACN,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,aAAa,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,CAAC;SAC9B,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,YAAY;QACZ,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,8BAA8B,CAAC,CAAA;QAE9D,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CACjB,CAAC,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAC9D,iBAAiB,CAAC,CAAA;QAEpB,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,IAAI,CAAC;YACH,CAAC,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,CAAM,EAAE,CAAC;YACd,iBAAiB;YACjB,mDAAmD;YACnD,qBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;YAC1C,qBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;YACpD,qBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,YAAY,EAAE,GAAG,EAAE;QACtB,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EAC7E,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACxB,qCAAqC;QAErC,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAGxB,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACjE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEX,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACrE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjB,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACrE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjB,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,+BAA+B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEvB,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,sDAAsD,EACvD,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EACvC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAGvB,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EACxE,WAAW,CACZ,CAAA;QAED,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,6BAA6B,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;QAEvE,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,WAAW,CAAC,CAAA;QAEnE,IAAI,GAAG,EAAE,CAAA;QACT,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,iCAAiC,EAAE;YACpC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;SACvC,CAAC,EACF,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,WAAW,EAAE,GAAG,EAAE;QACrB,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EAC7E,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACxB,qCAAqC;QAErC,IAAI,GAAG,EAAE,CAAA;QACT,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAExB,IAAI,GAAG,EAAE,CAAA;QACT,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EAC3E,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAExB,IAAI,GAAG,EAAE,CAAA;QACT,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,uEAAuE,EAAE;YAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;SACvC,CAAC,EACF,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAElD,IAAI,GAAG,EAAE,CAAA;QACT,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EACpE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,YAAY,EAAE,GAAG,EAAE;QACtB,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,GAAE;YAC5B,SAAS,EAAE;gBACT,GAAG,EAAE,QAAQ;aACd;SACF,CAAC,CAAA;QAEF,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EACpE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,MAAM,EAAE,GAAG,EAAE;QAChB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,OAAO;aACpB,CAAC;YACF,eAAe;YACf,qDAAqD;YACrD,KAAK;SACN,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE;aACpB,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC;aACnB,GAAG,CAAC,WAAI,CAAC;aACT,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;gBACxB,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;oBACjB,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC/B,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBAC1B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE;YACrC,CAAC,EAAE,EAAE;YACL,CAAC,EAAE;gBACD,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE;oBACD,CAAC,EAAE,KAAK;oBACR,CAAC,EAAE;wBACD,CAAC,EAAE,OAAO;wBACV,CAAC,EAAE,CAAC;qBACL;iBACF;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAC,CAAA;QAEJ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAA,aAAK,EAAC;YACxB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE;gBACZ,GAAG,EAAE;oBACH,UAAU,EAAE,GAAG;iBAChB;aACF;SACF,CAAC,CAAA;QAEF,kCAAkC;QAElC,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAA;QAGF,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,iDAAiD,EACnE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SACrB,CAAC,CAAA;QAEJ,0CAA0C;QAC1C,sFAAsF;QACtF,eAAe;QACf,KAAK;IACP,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,OAAO,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;aAC7B,CAAC;SACH,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,iDAAiD,EACnE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,OAAO,EAAE,SAAS,GAAG,KAAK;aAC3B,CAAC;SACH,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,iDAAiD,EACnE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,aAAK,EAAC;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAA;QAEF,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,uBAAuB,EACzC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,aAAa,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,kCAAkC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,kFAAkF;QAClF,MAAM,QAAQ,GAAG,SAAS,GAAG,kBAAkB,CAAA;QAC/C,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,6CAA6C,EAC/D,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,cAAc,EAAE,GAAG,EAAE;QACxB,MAAM,QAAQ,GAAQ;YACpB,UAAU,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC;YAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;SAC1C,CAAA;QAED,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,0BAA0B,EAC/C,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAQ;YACnB,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YACrD,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC;YACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;SAC1C,CAAA;QAED,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAA;QAEJ,sEAAsE;QACtE,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,EACxC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE;aACrB,GAAG,CAAC,yBAAW,EAAE;YAChB,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,OAAO,EAAE,CAAC,cAAc,CAAC;aAC1B,CAAC;SACH,CAAC,CAAA;QAEJ,gDAAgD;QAChD,2DAA2D;QAC3D,qBAAM,CAAC,SAAS,CAAC,EAAE,CAAC,6CAA6C,EAC/D,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,eAAe,EAAE,GAAG,EAAE;QACzB,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAC,CAAA;QAEF,4EAA4E;QAC5E,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,cAAc,EACf,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,EACrD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC3B,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,EAAC,CAAC,IAAS,EAAE,EAAE;gBACvC,OAAO,UAAU,GAAG,IAAI,CAAA;YAC1B,CAAC,CAAC;SACH,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAC3D,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,aAAa,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,8EAA8E;QAC9E,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE;aACpB,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAEtB,CAAC,CAAC,OAAO,CAAC;YACR,GAAG,EAAE;gBACH,KAAK,EAAE,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;aAC/D;SACF,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,QAAQ,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,qBAAe,EAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE;aACpB,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAEtB,CAAC,CAAC,OAAO,CAAC;YACR,GAAG,EAAE;gBACH,MAAM,EAAE,KAAY;aACrB;SACF,CAAC,CAAA;QAEF,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7B,IAAI,EAAE,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE;YACtC,QAAQ,EAAE,IAAA,uBAAgB,GAAE;SAC7B,CAAC,CAAA;QAEF,yEAAyE;QACzE,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,qBAAM,CAAC,SAAS,CACd,EAAE,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,EACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,CAAC,KAAU,EAAE,MAAW,EAAE,KAAU,EAAE,IAAS,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,KAAK;gBACV,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;aAChB,CAAC;SACH,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,qDAAqD;QACrD,qBAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,eAAe,EAAE,GAAG,EAAE;QACzB,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QAEjC,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAErD,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC;YAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,GAAG,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAA;QAEF,4CAA4C;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,qBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,CAAC,CAAA;QAEpE,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QACnD,qBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,CAAA;QAC7D,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAErD,qCAAqC;QACrC,MAAM,UAAU,GAAG,IAAA,0BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3C,qBAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACvD,qBAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrD,qBAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEpD,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAA,0BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC9C,qBAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAErD,yDAAyD;QACzD,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrC,qBAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC9C,4CAA4C,CAAC,CAAA;QAE/C,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC;YAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,GAAG,EAAE,CAAC,SAAS,CAAC;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrC,qBAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC7C,qCAAqC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAErD,4BAA4B;QAC5B,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC;YAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,GAAG,EAAE,CAAC,SAAS,CAAC;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QAEF,8CAA8C;QAC9C,MAAM,CAAC,GAAuB;YAC5B,QAAQ,EAAE,IAAA,uBAAgB,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAChD,IAAI,EAAE,OAAO;SACd,CAAA;QACD,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,CAAC,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,CAAA;QACjC,qBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE3C,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,IAAA,0BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAErE,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAA;QAC/E,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;QAEzE,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,IAAA,0BAAY,EAAC;YAC5B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC1B,GAAG,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1C,qBAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;QAC9D,qBAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAA,0BAAY,EAAC;YAC3B,OAAO,EAAE,CAAC,0BAA0B,CAAC;SACtC,CAAC,CAAA;QACF,qBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,aAAK,EAAC;YACnB,aAAa,EAAE,sCAAsC;YACrD,GAAG,EAAE;gBACH,cAAc,EAAE,kCAAkC;gBAClD,cAAc,EAAE,QAAQ;aACzB;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,EAAE,QAAQ,EAAE,IAAA,uBAAgB,GAAE,EAAE,CAAC,CAAA;QAE1E,qBAAM,CAAC,SAAS,CACd,CAAC,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EACzD,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAChD,CAAA;IACH,CAAC,CAAC,CAAA;IAGF,IAAA,gBAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,oEAAoE;QACpE,qEAAqE;QACrE,mEAAmE;QACnE,yEAAyE;QACzE,sBAAsB;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,aAAK,EAAC;YACnB,aAAa,EAAE,0CAA0C;YACzD,EAAE,EAAE;gBACF,UAAU,EAAE,uBAAuB;gBACnC,cAAc,EAAE,QAAQ;aACzB;YACD,EAAE,EAAE;gBACF,UAAU,EAAE,uBAAuB;gBACnC,cAAc,EAAE,QAAQ;aACzB;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,yBAAW,EAAE,EAAE,QAAQ,EAAE,IAAA,uBAAgB,GAAE,EAAE,CAAC,CAAA;QAE1E,qBAAM,CAAC,SAAS,CACd,CAAC,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EACzD,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ts/dist/resolver/pkg.js b/ts/dist/resolver/pkg.js index fd86c7a..041067f 100644 --- a/ts/dist/resolver/pkg.js +++ b/ts/dist/resolver/pkg.js @@ -62,6 +62,28 @@ function makePkgResolver(options) { let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder); let src = undefined; let search = []; + // A relative reference (./x, ../x) inside a source loaded from a package is + // not a package name: resolve it against the containing source's directory + // via ps.full, exactly as the file resolver does (this also works over an + // injected fs). Bare package references fall through to the require / + // node_modules resolution below. + if (null != ps.path && isRelativeRef(ps.path) && null != ps.full) { + let full = Path.resolve(ps.full); + let potentials = [full]; + if (multisource_1.NONE === ps.kind) { + potentials.push(...(0, mem_1.buildPotentials)({ ...ps, full }, popts, (...s) => Path.resolve(s.reduce((a, p) => Path.join(a, p))))); + } + for (let path of potentials) { + search.push(path); + src = load(path, fs); + if (null != src) { + ps.full = path; + ps.kind = (path.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; + break; + } + } + return { ...ps, src, found: null != src, search }; + } if (null != ps.path) { try { ps.full = useRequire.resolve(ps.path, requireOptions); @@ -136,6 +158,14 @@ function makePkgResolver(options) { return res; }; } +// isRelativeRef reports whether ref is an explicit relative reference (./x or +// ../x). Such a reference is resolved against the containing source's directory +// (via ps.full) rather than treated as a node_modules package name. +function isRelativeRef(ref) { + return ref === '.' || ref === '..' || + ref.startsWith('./') || ref.startsWith('../') || + ref.startsWith('.\\') || ref.startsWith('..\\'); +} function resolvefolder(path, fs) { if ('string' !== typeof path) { return path; diff --git a/ts/dist/resolver/pkg.js.map b/ts/dist/resolver/pkg.js.map index d28f163..6ffe65d 100644 --- a/ts/dist/resolver/pkg.js.map +++ b/ts/dist/resolver/pkg.js.map @@ -1 +1 @@ -{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":";AAAA,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAShF,0CAmIC;AA1ID,kDAAmC;AACnC,gDAAiC;AACjC,gDAA0G;AAE1G,+BAAuC;AAGvC,SAAgB,eAAe,CAAC,OAE/B;IACC,IAAI,UAAU,GAKV,OAAc,CAAA;IAElB,IAAI,cAAc,GAAQ,SAAS,CAAA;IAEnC,IAAI,UAAU,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,UAAU,GAAG,OAAO,CAAC,OAAc,CAAA;IACrC,CAAC;SACI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,cAAc,GAAG;YACf,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,CAAA;IACH,CAAC;SACI,IAAI,QAAQ,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,cAAc,GAAG;YACf,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SACzB,CAAA;IACH,CAAC;IAED,OAAO,SAAS,WAAW,CACzB,IAAS,EACT,KAAyB,EACzB,KAAW,EACX,GAAY;QAEZ,IAAI,EAAE,GAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;QAEtC,sCAAsC;QAEtC,IAAI,SAAS,GAAG,IAAI,CAAA;QAEpB,IAAI,EAAE,GAAG,IAAA,6BAAe,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QAC9D,IAAI,GAAG,GAAG,SAAS,CAAA;QACnB,IAAI,MAAM,GAAa,EAAE,CAAA;QAEzB,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;gBACrD,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBACpB,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;oBAC7B,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5D,CAAC;YACH,CAAC;YACD,OAAO,EAAO,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;gBAEpB,IAAI,UAAU,GAAG,EAAE,CAAA;gBAEnB,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;oBACzB,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;oBAC/C,IAAI,UAAU,CAAA;oBACd,GAAG,CAAC;wBACF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;wBAClC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAA;wBAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;oBAChE,CAAC,QACM,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,EAAC;gBAC5C,CAAC;qBACI,CAAC;oBACJ,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;gBAED,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;oBACnD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAA;oBAEtB,4CAA4C;oBAC5C,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;oBAElF,4BAA4B;oBAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;oBAC1D,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK;yBACrC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CACzD,CAAA;gBACH,CAAC;gBAED,UAAU,CAAC,IAAI,CACb,GAAG,IAAA,qBAAe,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CACrC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAEvD,4BAA4B;gBAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;gBAG9C,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;gBAEjC,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;wBAClD,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;4BACpB,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;4BAC7B,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;4BAC1D,MAAK;wBACP,CAAC;oBACH,CAAC;oBACD,OAAO,EAAO,EAAE,CAAC;wBACf,wDAAwD;wBACxD,6DAA6D;wBAC7D,6DAA6D;wBAC7D,IAAI,CAAC;4BACH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gCACxB,EAAE,CAAC,IAAI,GAAG,IAAI,CAAA;gCACd,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gCACvB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oCAChB,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oCACvD,MAAK;gCACP,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,OAAO,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;wBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,GAAe;YACpB,GAAG,EAAE;YACL,GAAG;YACH,KAAK,EAAE,IAAI,IAAI,GAAG;YAClB,MAAM;SACP,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;AACH,CAAC;AAGD,SAAS,aAAa,CAAC,IAAY,EAAE,EAAO;IAC1C,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEjC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;IACvB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,EAAO;IACjC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACT,6DAA6D;QAC7D,mCAAmC;IACrC,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ts/src/resolver/pkg.ts b/ts/src/resolver/pkg.ts index bb265f5..8f647ce 100644 --- a/ts/src/resolver/pkg.ts +++ b/ts/src/resolver/pkg.ts @@ -49,6 +49,30 @@ export function makePkgResolver(options: { let src = undefined let search: string[] = [] + // A relative reference (./x, ../x) inside a source loaded from a package is + // not a package name: resolve it against the containing source's directory + // via ps.full, exactly as the file resolver does (this also works over an + // injected fs). Bare package references fall through to the require / + // node_modules resolution below. + if (null != ps.path && isRelativeRef(ps.path) && null != ps.full) { + let full = Path.resolve(ps.full) + let potentials = [full] + if (NONE === ps.kind) { + potentials.push(...buildPotentials({ ...ps, full }, popts, + (...s) => Path.resolve(s.reduce((a, p) => Path.join(a, p))))) + } + for (let path of potentials) { + search.push(path) + src = load(path, fs) + if (null != src) { + ps.full = path + ps.kind = (path.match(/\.([^.]*)$/) || [NONE, NONE])[1] + break + } + } + return { ...ps, src, found: null != src, search } + } + if (null != ps.path) { try { ps.full = useRequire.resolve(ps.path, requireOptions) @@ -141,6 +165,15 @@ export function makePkgResolver(options: { } +// isRelativeRef reports whether ref is an explicit relative reference (./x or +// ../x). Such a reference is resolved against the containing source's directory +// (via ps.full) rather than treated as a node_modules package name. +function isRelativeRef(ref: string): boolean { + return ref === '.' || ref === '..' || + ref.startsWith('./') || ref.startsWith('../') || + ref.startsWith('.\\') || ref.startsWith('..\\') +} + function resolvefolder(path: string, fs: FST) { if ('string' !== typeof path) { return path diff --git a/ts/test/multisource.test.ts b/ts/test/multisource.test.ts index 78c2549..f4e69b1 100644 --- a/ts/test/multisource.test.ts +++ b/ts/test/multisource.test.ts @@ -538,6 +538,25 @@ describe('multisource', () => { }) + test('pkg-relative-ref', () => { + const Path = require('node:path') + const j1 = Jsonic.make().use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + // A relative reference (./x) is resolved against the containing source's + // directory, not treated as a node_modules package name. The reference + // inside the loaded file (rel/outer.jsonic -> ./inner.jsonic) likewise + // resolves against that file's own directory. The base is seeded via a real + // anchor file so resolvefolder() yields the test directory. + const anchor = Path.resolve(__dirname, '../test/t01.jsonic') + assert.deepEqual( + j1('@"./rel/outer.jsonic"', { multisource: { path: anchor } }), + { o: 1, inner: { v: 7 } } + ) + }) + + test('file-implicit', () => { let j0 = Jsonic.make().use(MultiSource, { resolver: makeFileResolver(), diff --git a/ts/test/rel/inner.jsonic b/ts/test/rel/inner.jsonic new file mode 100644 index 0000000..df22cd4 --- /dev/null +++ b/ts/test/rel/inner.jsonic @@ -0,0 +1 @@ +{v:7} diff --git a/ts/test/rel/outer.jsonic b/ts/test/rel/outer.jsonic new file mode 100644 index 0000000..9ab283c --- /dev/null +++ b/ts/test/rel/outer.jsonic @@ -0,0 +1 @@ +{o:1, inner:@"./inner.jsonic"}