@goodbones/core 0.1.0-beta.2 → 0.1.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dts/domain/manifest-location.d.ts +2 -0
- package/build/dts/domain/manifest-location.d.ts.map +1 -1
- package/build/dts/index.d.ts +3 -2
- package/build/dts/index.d.ts.map +1 -1
- package/build/dts/infrastructure/manifest-file.d.ts +1 -0
- package/build/dts/infrastructure/manifest-file.d.ts.map +1 -1
- package/build/dts/infrastructure/manifest-include.d.ts +16 -0
- package/build/dts/infrastructure/manifest-include.d.ts.map +1 -0
- package/build/dts/manifest/json-schema.d.ts +2 -0
- package/build/dts/manifest/json-schema.d.ts.map +1 -1
- package/build/dts/manifest/manifest.d.ts +1 -1
- package/build/dts/manifest/manifest.d.ts.map +1 -1
- package/build/esm/domain/manifest-location.js +16 -1
- package/build/esm/domain/manifest-location.js.map +1 -1
- package/build/esm/index.js +3 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/infrastructure/manifest-file.js +31 -17
- package/build/esm/infrastructure/manifest-file.js.map +1 -1
- package/build/esm/infrastructure/manifest-include.js +187 -0
- package/build/esm/infrastructure/manifest-include.js.map +1 -0
- package/build/esm/manifest/json-schema.js +72 -17
- package/build/esm/manifest/json-schema.js.map +1 -1
- package/build/esm/manifest/manifest.js +7 -18
- package/build/esm/manifest/manifest.js.map +1 -1
- package/package.json +1 -1
- package/schema/architecture-node.schema.json +1518 -0
- package/schema/architecture.schema.json +1102 -691
- package/src/domain/manifest-location.ts +22 -0
- package/src/index.ts +13 -1
- package/src/infrastructure/manifest-file.ts +37 -17
- package/src/infrastructure/manifest-include.ts +318 -0
- package/src/manifest/json-schema.ts +83 -18
- package/src/manifest/manifest.ts +11 -20
|
@@ -2,6 +2,8 @@ export type ManifestPath = ReadonlyArray<PropertyKey>;
|
|
|
2
2
|
export type ManifestPosition = {
|
|
3
3
|
readonly line: number;
|
|
4
4
|
readonly column: number;
|
|
5
|
+
readonly file?: string | undefined;
|
|
5
6
|
};
|
|
6
7
|
export type ManifestLocator = (path: ManifestPath) => ManifestPosition | null;
|
|
8
|
+
export declare const renderManifestPath: (path: ManifestPath) => string;
|
|
7
9
|
//# sourceMappingURL=manifest-location.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-location.d.ts","sourceRoot":"","sources":["../../../src/domain/manifest-location.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-location.d.ts","sourceRoot":"","sources":["../../../src/domain/manifest-location.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAKxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAKF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,gBAAgB,GAAG,IAAI,CAAC;AAO9E,eAAO,MAAM,kBAAkB,SAAU,YAAY,KAAG,MAUvC,CAAC"}
|
package/build/dts/index.d.ts
CHANGED
|
@@ -9,15 +9,16 @@ export { type CompiledSurfaceRule, compileSurfaceRules, evaluateSurface, surface
|
|
|
9
9
|
export { type BindingKind, type DeclarationKind, type ExportFix, type ExportRule, type GraphConfig, type GraphCycleRule, type GraphOrphanRule, type GraphReachRule, type ImportProbe, type ImportProbeTarget, type ImportRule, type MemberRule, type MemberSubject, type ResolveConfig, type ResolveScope, type StructureConfig, type SurfaceRule, } from "./domain/architecture-config.js";
|
|
10
10
|
export { ConfigInvalid, ImportUnresolved, PatternInvalid, ScopeInvalid, } from "./domain/architecture-error.js";
|
|
11
11
|
export { type Binding, type ExportSite, type MemberSite, type SourceFacts, } from "./domain/facts.js";
|
|
12
|
-
export { type ManifestLocator, type ManifestPath, type ManifestPosition, } from "./domain/manifest-location.js";
|
|
12
|
+
export { type ManifestLocator, type ManifestPath, type ManifestPosition, renderManifestPath, } from "./domain/manifest-location.js";
|
|
13
13
|
export { fingerprintOf, formatMessage, type Violation, type ViolationKind, } from "./domain/violation.js";
|
|
14
14
|
export { makeFileSystemLive } from "./infrastructure/file-system-live.js";
|
|
15
15
|
export { findManifestFile, formatManifestYaml, MANIFEST_FILENAMES, type ManifestFile, readManifestFile, } from "./infrastructure/manifest-file.js";
|
|
16
|
+
export { expandIncludes, type IncludedManifest, type IncludeReader, type SourceDocument, } from "./infrastructure/manifest-include.js";
|
|
16
17
|
export { listSourceFiles, type WalkedLanguage } from "./infrastructure/walk.js";
|
|
17
18
|
export { type LoadedPolicy, loadPolicy, type LoadPolicyInput } from "./load/policy.js";
|
|
18
19
|
export { type LoweredRules, lowerManifest, type ProbeLanguage } from "./manifest/compile.js";
|
|
19
20
|
export { type ExpandedManifest, type ExpandIssue, expandManifest, type Origin, originOf, type Substitution, } from "./manifest/expand.js";
|
|
20
|
-
export { MANIFEST_SCHEMA_ID, manifestJsonSchema } from "./manifest/json-schema.js";
|
|
21
|
+
export { MANIFEST_NODE_SCHEMA_ID, MANIFEST_SCHEMA_ID, manifestJsonSchema, manifestNodeJsonSchema, } from "./manifest/json-schema.js";
|
|
21
22
|
export { type DecodedManifest, decodeManifest, type DecodeManifestOptions, type Manifest, type ManifestNode, Manifest as ManifestSchema, } from "./manifest/manifest.js";
|
|
22
23
|
export { type FactExtractor } from "./ports/fact-extractor.js";
|
|
23
24
|
export { type FileSystem } from "./ports/file-system.js";
|
package/build/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,UAAU,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,aAAa,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,KAAK,EACV,2BAA2B,EAC3B,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,UAAU,EACf,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export type ManifestFile = {
|
|
|
4
4
|
readonly configPath: string;
|
|
5
5
|
readonly manifest: unknown;
|
|
6
6
|
readonly locate: ManifestLocator | undefined;
|
|
7
|
+
readonly files: ReadonlyArray<string>;
|
|
7
8
|
};
|
|
8
9
|
export declare const findManifestFile: (repoRoot: string) => string;
|
|
9
10
|
export declare const readManifestFile: (configPath: string) => Promise<ManifestFile>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-file.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/manifest-file.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-file.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/manifest-file.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,gCAAgC,CAAC;AAexC,eAAO,MAAM,kBAAkB,YAC7B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,CACjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAG3B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAG7C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,aAAc,MAAM,KAAG,MAoBnD,CAAC;AAYF,eAAO,MAAM,gBAAgB,eAAsB,MAAM,KAAG,OAAO,CAAC,YAAY,CAqB/E,CAAC;AAuGF,eAAO,MAAM,kBAAkB,aAAc,OAAO,KAAG,MACyB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ManifestLocator } from "../domain/manifest-location.js";
|
|
2
|
+
export type SourceDocument = {
|
|
3
|
+
readonly value: unknown;
|
|
4
|
+
readonly locate: ManifestLocator | undefined;
|
|
5
|
+
};
|
|
6
|
+
export type IncludeReader = {
|
|
7
|
+
readonly exists: (file: string) => boolean;
|
|
8
|
+
readonly read: (file: string) => SourceDocument;
|
|
9
|
+
};
|
|
10
|
+
export type IncludedManifest = {
|
|
11
|
+
readonly value: unknown;
|
|
12
|
+
readonly locate: ManifestLocator | undefined;
|
|
13
|
+
readonly files: ReadonlyArray<string>;
|
|
14
|
+
};
|
|
15
|
+
export declare const expandIncludes: (rootPath: string, root: SourceDocument, reader: IncludeReader) => IncludedManifest;
|
|
16
|
+
//# sourceMappingURL=manifest-include.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-include.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/manifest-include.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,gCAAgC,CAAC;AAiBxC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAE3C,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAE7C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AA6DF,eAAO,MAAM,cAAc,aACf,MAAM,QACV,cAAc,UACZ,aAAa,KACpB,gBAkNF,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export declare const MANIFEST_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/architecture.schema.json";
|
|
2
|
+
export declare const MANIFEST_NODE_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/architecture-node.schema.json";
|
|
2
3
|
type JsonValue = string | number | boolean | null | JsonObject | ReadonlyArray<JsonValue>;
|
|
3
4
|
type JsonObject = {
|
|
4
5
|
readonly [key: string]: JsonValue;
|
|
5
6
|
};
|
|
6
7
|
export declare const manifestJsonSchema: () => JsonObject;
|
|
8
|
+
export declare const manifestNodeJsonSchema: () => JsonObject;
|
|
7
9
|
export {};
|
|
8
10
|
//# sourceMappingURL=json-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../../src/manifest/json-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../../src/manifest/json-schema.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,kBAAkB,0EAC0C,CAAC;AAI1E,eAAO,MAAM,uBAAuB,+EAC0C,CAAC;AAE/E,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAC1F,KAAK,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAyExD,eAAO,MAAM,kBAAkB,QAAO,UA+BrC,CAAC;AAMF,eAAO,MAAM,sBAAsB,QAAO,UA8BzC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Result from "effect/Result";
|
|
2
2
|
import * as Schema from "effect/Schema";
|
|
3
3
|
import { ConfigInvalid } from "../domain/architecture-error.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type ManifestLocator } from "../domain/manifest-location.js";
|
|
5
5
|
declare const Imports: Schema.Struct<{
|
|
6
6
|
readonly message: Schema.optionalKey<Schema.String>;
|
|
7
7
|
readonly allow: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.String>]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/manifest/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/manifest/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,20 @@
|
|
|
2
2
|
// path is something the reader has to find; one that names a line is something
|
|
3
3
|
// an editor can jump to. The host that read the file knows its lines; the
|
|
4
4
|
// decoder knows the path — the locator is how the second asks the first.
|
|
5
|
-
|
|
5
|
+
const isIdentifier = (key) => /^[A-Za-z_$][\w$]*$/.test(key);
|
|
6
|
+
// `tree["~/core/"].members[0].subject` — dotted where a key reads as a name,
|
|
7
|
+
// bracketed where it does not, so a node key that is a path pattern stays
|
|
8
|
+
// legible.
|
|
9
|
+
export const renderManifestPath = (path) => path.length === 0
|
|
10
|
+
? "(root)"
|
|
11
|
+
: path
|
|
12
|
+
.map((segment, index) => {
|
|
13
|
+
if (typeof segment === "number")
|
|
14
|
+
return `[${String(segment)}]`;
|
|
15
|
+
const key = String(segment);
|
|
16
|
+
if (isIdentifier(key))
|
|
17
|
+
return index === 0 ? key : `.${key}`;
|
|
18
|
+
return `[${JSON.stringify(key)}]`;
|
|
19
|
+
})
|
|
20
|
+
.join("");
|
|
6
21
|
//# sourceMappingURL=manifest-location.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-location.js","sourceRoot":"","sources":["../../../src/domain/manifest-location.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,yEAAyE"}
|
|
1
|
+
{"version":3,"file":"manifest-location.js","sourceRoot":"","sources":["../../../src/domain/manifest-location.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,yEAAyE;AAsBzE,MAAM,YAAY,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9E,6EAA6E;AAC7E,0EAA0E;AAC1E,WAAW;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAkB,EAAU,EAAE,CAC/D,IAAI,CAAC,MAAM,KAAK,CAAC;IACf,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,IAAI;SACD,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC5D,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC"}
|
package/build/esm/index.js
CHANGED
|
@@ -12,13 +12,15 @@ export { compileMemberRules, evaluateMemberSite, memberRulesFailingTheirProbe, m
|
|
|
12
12
|
export { compileStructure, EMPTY_STRUCTURE, evaluateStructure, requiredSiblingsOf, structureRulesFailingTheirProbe, } from "./core/structure.js";
|
|
13
13
|
export { compileSurfaceRules, evaluateSurface, surfaceRulesFailingTheirProbe, surfaceRulesSelecting, } from "./core/surface.js";
|
|
14
14
|
export { ConfigInvalid, ImportUnresolved, PatternInvalid, ScopeInvalid, } from "./domain/architecture-error.js";
|
|
15
|
+
export { renderManifestPath, } from "./domain/manifest-location.js";
|
|
15
16
|
export { fingerprintOf, formatMessage, } from "./domain/violation.js";
|
|
16
17
|
export { makeFileSystemLive } from "./infrastructure/file-system-live.js";
|
|
17
18
|
export { findManifestFile, formatManifestYaml, MANIFEST_FILENAMES, readManifestFile, } from "./infrastructure/manifest-file.js";
|
|
19
|
+
export { expandIncludes, } from "./infrastructure/manifest-include.js";
|
|
18
20
|
export { listSourceFiles } from "./infrastructure/walk.js";
|
|
19
21
|
export { loadPolicy } from "./load/policy.js";
|
|
20
22
|
export { lowerManifest } from "./manifest/compile.js";
|
|
21
23
|
export { expandManifest, originOf, } from "./manifest/expand.js";
|
|
22
|
-
export { MANIFEST_SCHEMA_ID, manifestJsonSchema } from "./manifest/json-schema.js";
|
|
24
|
+
export { MANIFEST_NODE_SCHEMA_ID, MANIFEST_SCHEMA_ID, manifestJsonSchema, manifestNodeJsonSchema, } from "./manifest/json-schema.js";
|
|
23
25
|
export { decodeManifest, Manifest as ManifestSchema, } from "./manifest/manifest.js";
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAGL,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,UAAU,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EAEb,2BAA2B,EAC3B,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,aAAa,EACb,sBAAsB,EACtB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAGL,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,UAAU,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EAEb,2BAA2B,EAC3B,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,aAAa,EACb,sBAAsB,EACtB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EAIL,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,aAAa,GAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAElB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,cAAc,GAIf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAuB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAqB,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAqB,aAAa,EAAsB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAGL,cAAc,EAEd,QAAQ,GAET,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,cAAc,EAId,QAAQ,IAAI,cAAc,GAC3B,MAAM,wBAAwB,CAAC"}
|
|
@@ -3,13 +3,16 @@ import * as path from "node:path";
|
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { isAlias, isMap, isScalar, isSeq, LineCounter, parseDocument, stringify, } from "yaml";
|
|
5
5
|
import { ConfigInvalid } from "../domain/architecture-error.js";
|
|
6
|
-
|
|
6
|
+
import { expandIncludes } from "./manifest-include.js";
|
|
7
|
+
// The manifest, as the files on disk state it, before any decoding. A data
|
|
7
8
|
// file — YAML, or JSON, which YAML 1.2 contains — is what any host in any
|
|
8
9
|
// language can read, and is the form the docs are written in. A JavaScript
|
|
9
10
|
// module is the escape hatch a Node host alone honours: for a manifest
|
|
10
11
|
// generated from other data, and for what the ecosystem expects of a config
|
|
11
|
-
// file.
|
|
12
|
-
//
|
|
12
|
+
// file. Either may `include` further data files, so a monorepo's policy can
|
|
13
|
+
// live beside the packages it governs. Whichever it is, what comes out is one
|
|
14
|
+
// `unknown` value for the decoder, and, from the data formats, a way to turn
|
|
15
|
+
// a path in it back into a file and a line.
|
|
13
16
|
// In discovery order. A repository with none of these is told all four; one
|
|
14
17
|
// with more than one is refused, so nobody edits the wrong file for a week.
|
|
15
18
|
export const MANIFEST_FILENAMES = [
|
|
@@ -40,23 +43,35 @@ export const findManifestFile = (repoRoot) => {
|
|
|
40
43
|
const extensionOf = (configPath) => path.extname(configPath).toLowerCase();
|
|
41
44
|
const isDataManifest = (configPath) => [".yaml", ".yml", ".json"].includes(extensionOf(configPath));
|
|
42
45
|
const isModuleManifest = (configPath) => [".mjs", ".js", ".cjs"].includes(extensionOf(configPath));
|
|
46
|
+
// Whichever form the root takes, an `include` in it names a data file, read
|
|
47
|
+
// by the same parser; the locator that comes back answers across every file.
|
|
43
48
|
export const readManifestFile = async (configPath) => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
const root = isDataManifest(configPath)
|
|
50
|
+
? parseDataFile(configPath)
|
|
51
|
+
: isModuleManifest(configPath)
|
|
52
|
+
? await readModule(configPath)
|
|
53
|
+
: undefined;
|
|
54
|
+
if (root === undefined) {
|
|
55
|
+
throw new ConfigInvalid({
|
|
56
|
+
configPath,
|
|
57
|
+
detail: "a manifest is a .yaml, .yml or .json file, or a .mjs/.js module — " +
|
|
58
|
+
`not ${JSON.stringify(path.basename(configPath))}.`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const assembled = expandIncludes(configPath, root, { exists: existsSync, read: parseDataFile });
|
|
62
|
+
return {
|
|
49
63
|
configPath,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
manifest: assembled.value,
|
|
65
|
+
locate: assembled.locate,
|
|
66
|
+
files: assembled.files,
|
|
67
|
+
};
|
|
53
68
|
};
|
|
54
|
-
const
|
|
69
|
+
const readModule = async (configPath) => {
|
|
55
70
|
const module = await import(pathToFileURL(configPath).href).catch((cause) => {
|
|
56
71
|
throw new ConfigInvalid({ configPath, detail: String(cause) });
|
|
57
72
|
});
|
|
58
|
-
const
|
|
59
|
-
return {
|
|
73
|
+
const value = typeof module === "object" && module !== null && "default" in module ? module.default : module;
|
|
74
|
+
return { value, locate: undefined };
|
|
60
75
|
};
|
|
61
76
|
// YAML 1.2 core schema, which is what a reader without a YAML background
|
|
62
77
|
// expects: `on` and `no` are strings, not booleans. Merge keys (`<<`) resolve,
|
|
@@ -64,7 +79,7 @@ const readModuleManifest = async (configPath) => {
|
|
|
64
79
|
// duplicate keys are refused rather than last-one-wins. A tag the parser does
|
|
65
80
|
// not know is refused too — a manifest is data, and a `!!js/function` in it
|
|
66
81
|
// would be a manifest only one runtime could read.
|
|
67
|
-
const
|
|
82
|
+
const parseDataFile = (configPath) => {
|
|
68
83
|
let text;
|
|
69
84
|
try {
|
|
70
85
|
text = readFileSync(configPath, "utf8");
|
|
@@ -99,8 +114,7 @@ const readDataManifest = (configPath) => {
|
|
|
99
114
|
});
|
|
100
115
|
}
|
|
101
116
|
return {
|
|
102
|
-
|
|
103
|
-
manifest: document.toJS({ mapAsMap: false }),
|
|
117
|
+
value: document.toJS({ mapAsMap: false }),
|
|
104
118
|
locate: makeLocator(document, lines),
|
|
105
119
|
};
|
|
106
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-file.js","sourceRoot":"","sources":["../../../src/infrastructure/manifest-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAEL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EAGX,aAAa,EACb,SAAS,GACV,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-file.js","sourceRoot":"","sources":["../../../src/infrastructure/manifest-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import { ConfigInvalid } from "../domain/architecture-error.js";
|
|
3
|
+
import { renderManifestPath, } from "../domain/manifest-location.js";
|
|
4
|
+
const INCLUDABLE = [".yaml", ".yml", ".json"];
|
|
5
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6
|
+
const isInclude = (value) => isRecord(value) && "include" in value;
|
|
7
|
+
const isPrefix = (prefix, whole) => prefix.length <= whole.length && prefix.every((segment, index) => whole[index] === segment);
|
|
8
|
+
const makeLocator = (mounts) => {
|
|
9
|
+
if (!mounts.some((mount) => mount.locate !== undefined))
|
|
10
|
+
return undefined;
|
|
11
|
+
return (manifestPath) => {
|
|
12
|
+
const innermost = mounts
|
|
13
|
+
.filter((mount) => isPrefix(mount.at, manifestPath))
|
|
14
|
+
.sort((a, b) => a.at.length - b.at.length)
|
|
15
|
+
.at(-1);
|
|
16
|
+
if (innermost === undefined)
|
|
17
|
+
return null;
|
|
18
|
+
const found = innermost.locate?.([...innermost.origin, ...manifestPath.slice(innermost.at.length)]) ?? null;
|
|
19
|
+
if (found === null)
|
|
20
|
+
return null;
|
|
21
|
+
return innermost.label === undefined ? found : { ...found, file: innermost.label };
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export const expandIncludes = (rootPath, root, reader) => {
|
|
25
|
+
const rootDirectory = path.dirname(rootPath);
|
|
26
|
+
const labelOf = (file) => path.relative(rootDirectory, file).split(path.sep).join("/");
|
|
27
|
+
const nameOf = (source) => source.label ?? path.basename(rootPath);
|
|
28
|
+
const files = [rootPath];
|
|
29
|
+
const mounts = [{ at: [], origin: [], label: undefined, locate: root.locate }];
|
|
30
|
+
// Fragments hoisted out of included files, and the file each name came from.
|
|
31
|
+
const hoisted = {};
|
|
32
|
+
const definedIn = new Map();
|
|
33
|
+
const refuse = (source, origin, detail) => {
|
|
34
|
+
const position = source.locate?.(origin) ?? null;
|
|
35
|
+
const at = position === null
|
|
36
|
+
? ""
|
|
37
|
+
: `${nameOf(source)}:${String(position.line)}:${String(position.column)} `;
|
|
38
|
+
throw new ConfigInvalid({
|
|
39
|
+
configPath: rootPath,
|
|
40
|
+
detail: `the manifest does not include:\n ${at}${renderManifestPath(origin)}: ${detail}`,
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
// Checks a reference and reads the file it names. Nothing is placed yet:
|
|
44
|
+
// where the value lands depends on whether it is a list spliced into a list.
|
|
45
|
+
const open = (reference, origin, source) => {
|
|
46
|
+
const { include: specifier, ...rest } = reference;
|
|
47
|
+
if (typeof specifier !== "string") {
|
|
48
|
+
return refuse(source, origin, "`include` names a file, as a string.");
|
|
49
|
+
}
|
|
50
|
+
const shown = `\`include: ${JSON.stringify(specifier)}\``;
|
|
51
|
+
const beside = Object.keys(rest);
|
|
52
|
+
if (beside.length > 0) {
|
|
53
|
+
return refuse(source, origin, `${shown} stands alone: an included file is replaced whole, so there is nothing for ` +
|
|
54
|
+
`${beside.map((key) => `\`${key}\``).join(", ")} to override. ` +
|
|
55
|
+
`To override a fragment, put it under \`defs\` and \`use\` it.`);
|
|
56
|
+
}
|
|
57
|
+
const target = path.resolve(path.dirname(source.file), specifier);
|
|
58
|
+
if (!INCLUDABLE.includes(path.extname(target).toLowerCase())) {
|
|
59
|
+
return refuse(source, origin, `${shown} names a file that is not YAML or JSON. Only a data file can be included: ` +
|
|
60
|
+
`a module would make the manifest readable by one runtime only.`);
|
|
61
|
+
}
|
|
62
|
+
if (source.stack.includes(target)) {
|
|
63
|
+
return refuse(source, origin, `${shown} includes a file that is already being included: ` +
|
|
64
|
+
`${[...source.stack, target].map(labelOf).join(" → ")}.`);
|
|
65
|
+
}
|
|
66
|
+
if (!reader.exists(target)) {
|
|
67
|
+
return refuse(source, origin, `${shown} names a file that does not exist (looked for ${labelOf(target)}, ` +
|
|
68
|
+
`relative to ${nameOf(source)}).`);
|
|
69
|
+
}
|
|
70
|
+
const document = reader.read(target);
|
|
71
|
+
files.push(target);
|
|
72
|
+
return {
|
|
73
|
+
document,
|
|
74
|
+
source: {
|
|
75
|
+
file: target,
|
|
76
|
+
label: labelOf(target),
|
|
77
|
+
locate: document.locate,
|
|
78
|
+
stack: [...source.stack, target],
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
// Places an opened file at `at`, whole, and walks it so no reference is
|
|
83
|
+
// left inside. A top-level `defs` in the file joins the root's, and its
|
|
84
|
+
// `$schema` is for the editor — unless the file was included somewhere
|
|
85
|
+
// under `defs`, where it is a fragment or the map itself, and a key by
|
|
86
|
+
// either name is the author's.
|
|
87
|
+
const place = (opened, at) => {
|
|
88
|
+
const { document, source } = opened;
|
|
89
|
+
mounts.push({ at, origin: [], label: source.label, locate: source.locate });
|
|
90
|
+
if (!isRecord(document.value) || at[0] === "defs") {
|
|
91
|
+
return walk(document.value, at, [], source);
|
|
92
|
+
}
|
|
93
|
+
const { $schema: _schema, defs, ...body } = document.value;
|
|
94
|
+
if (defs !== undefined) {
|
|
95
|
+
if (!isRecord(defs)) {
|
|
96
|
+
return refuse(source, ["defs"], "`defs` must be a map of named fragments.");
|
|
97
|
+
}
|
|
98
|
+
for (const [name, fragment] of Object.entries(defs)) {
|
|
99
|
+
const already = definedIn.get(name);
|
|
100
|
+
if (already !== undefined) {
|
|
101
|
+
return refuse(source, ["defs", name], `\`defs.${name}\` is already defined in ${already}. Every file's \`defs\` share ` +
|
|
102
|
+
`one namespace; rename one of them.`);
|
|
103
|
+
}
|
|
104
|
+
definedIn.set(name, nameOf(source));
|
|
105
|
+
mounts.push({
|
|
106
|
+
at: ["defs", name],
|
|
107
|
+
origin: ["defs", name],
|
|
108
|
+
label: source.label,
|
|
109
|
+
locate: source.locate,
|
|
110
|
+
});
|
|
111
|
+
hoisted[name] = walk(fragment, ["defs", name], ["defs", name], source);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return walk(body, at, [], source);
|
|
115
|
+
};
|
|
116
|
+
// Appends each item of `list` to `items`. An include standing as an item
|
|
117
|
+
// whose file holds a list is spliced in, so a list can be split across
|
|
118
|
+
// files; an item that does not sit at the index it was written at is
|
|
119
|
+
// mounted on its own.
|
|
120
|
+
const append = (items, list, at, origin, source, spliced) => {
|
|
121
|
+
for (const [index, item] of list.entries()) {
|
|
122
|
+
const itemOrigin = [...origin, index];
|
|
123
|
+
const slot = [...at, items.length];
|
|
124
|
+
if (isInclude(item)) {
|
|
125
|
+
const opened = open(item, itemOrigin, source);
|
|
126
|
+
if (Array.isArray(opened.document.value)) {
|
|
127
|
+
append(items, opened.document.value, at, [], opened.source, true);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
items.push(place(opened, slot));
|
|
131
|
+
}
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (spliced || items.length !== index) {
|
|
135
|
+
mounts.push({ at: slot, origin: itemOrigin, label: source.label, locate: source.locate });
|
|
136
|
+
}
|
|
137
|
+
items.push(walk(item, slot, itemOrigin, source));
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const walk = (value, at, origin, source) => {
|
|
141
|
+
if (isInclude(value))
|
|
142
|
+
return place(open(value, origin, source), at);
|
|
143
|
+
if (Array.isArray(value)) {
|
|
144
|
+
const items = [];
|
|
145
|
+
append(items, value, at, origin, source, false);
|
|
146
|
+
return items;
|
|
147
|
+
}
|
|
148
|
+
if (isRecord(value)) {
|
|
149
|
+
const entries = {};
|
|
150
|
+
for (const [key, item] of Object.entries(value)) {
|
|
151
|
+
entries[key] = walk(item, [...at, key], [...origin, key], source);
|
|
152
|
+
}
|
|
153
|
+
return entries;
|
|
154
|
+
}
|
|
155
|
+
return value;
|
|
156
|
+
};
|
|
157
|
+
const rootSource = {
|
|
158
|
+
file: rootPath,
|
|
159
|
+
label: undefined,
|
|
160
|
+
locate: root.locate,
|
|
161
|
+
stack: [rootPath],
|
|
162
|
+
};
|
|
163
|
+
const value = walk(root.value, [], [], rootSource);
|
|
164
|
+
// Nothing was included: the value and the locator are the reader's own.
|
|
165
|
+
if (files.length === 1)
|
|
166
|
+
return { value, locate: root.locate, files };
|
|
167
|
+
const names = Object.keys(hoisted);
|
|
168
|
+
if (names.length === 0 || !isRecord(value)) {
|
|
169
|
+
return { value, locate: makeLocator(mounts), files };
|
|
170
|
+
}
|
|
171
|
+
const own = value.defs;
|
|
172
|
+
if (own !== undefined && !isRecord(own)) {
|
|
173
|
+
return refuse(rootSource, ["defs"], "`defs` must be a map of named fragments.");
|
|
174
|
+
}
|
|
175
|
+
for (const name of names) {
|
|
176
|
+
if (own !== undefined && name in own) {
|
|
177
|
+
return refuse(rootSource, ["defs", name], `\`defs.${name}\` is also defined in ${definedIn.get(name) ?? "an included file"}. ` +
|
|
178
|
+
`Every file's \`defs\` share one namespace; rename one of them.`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
value: { ...value, defs: { ...(own ?? {}), ...hoisted } },
|
|
183
|
+
locate: makeLocator(mounts),
|
|
184
|
+
files,
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=manifest-include.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-include.js","sourceRoot":"","sources":["../../../src/infrastructure/manifest-include.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAGL,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAqCxC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAIvE,MAAM,SAAS,GAAG,CAAC,KAAc,EAA6B,EAAE,CAC9D,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC;AAExC,MAAM,QAAQ,GAAG,CAAC,MAAoB,EAAE,KAAmB,EAAW,EAAE,CACtE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;AAiC9F,MAAM,WAAW,GAAG,CAAC,MAA4B,EAA+B,EAAE;IAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,OAAO,CAAC,YAAY,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,MAAM;aACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;aACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;aACzC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACV,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,KAAK,GACT,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChG,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAAgB,EAChB,IAAoB,EACpB,MAAqB,EACH,EAAE;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAkB,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7F,6EAA6E;IAC7E,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,MAAoB,EAAE,MAAc,EAAS,EAAE;QAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACjD,MAAM,EAAE,GACN,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAChF,MAAM,IAAI,aAAa,CAAC;YACtB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,qCAAqC,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE;SAC1F,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,IAAI,GAAG,CAAC,SAA2B,EAAE,MAAoB,EAAE,MAAc,EAAU,EAAE;QACzF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;QAClD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,sCAAsC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CACX,MAAM,EACN,MAAM,EACN,GAAG,KAAK,6EAA6E;gBACnF,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC/D,+DAA+D,CAClE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC7D,OAAO,MAAM,CACX,MAAM,EACN,MAAM,EACN,GAAG,KAAK,4EAA4E;gBAClF,gEAAgE,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,CACX,MAAM,EACN,MAAM,EACN,GAAG,KAAK,mDAAmD;gBACzD,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAM,CACX,MAAM,EACN,MAAM,EACN,GAAG,KAAK,iDAAiD,OAAO,CAAC,MAAM,CAAC,IAAI;gBAC1E,eAAe,MAAM,CAAC,MAAM,CAAC,IAAI,CACpC,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO;YACL,QAAQ;YACR,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;aACjC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,+BAA+B;IAC/B,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAgB,EAAW,EAAE;QAC1D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;YAC9E,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,OAAO,MAAM,CACX,MAAM,EACN,CAAC,MAAM,EAAE,IAAI,CAAC,EACd,UAAU,IAAI,4BAA4B,OAAO,gCAAgC;wBAC/E,oCAAoC,CACvC,CAAC;gBACJ,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;oBAClB,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;oBACtB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,sBAAsB;IACtB,MAAM,MAAM,GAAG,CACb,KAAqB,EACrB,IAA4B,EAC5B,EAAgB,EAChB,MAAoB,EACpB,MAAc,EACd,OAAgB,EACV,EAAE;QACR,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBAClC,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,KAAc,EACd,EAAgB,EAChB,MAAoB,EACpB,MAAc,EACL,EAAE;QACX,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAmB,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,UAAU,GAAW;QACzB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,CAAC,QAAQ,CAAC;KAClB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IAEnD,wEAAwE;IACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAErE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACrC,OAAO,MAAM,CACX,UAAU,EACV,CAAC,MAAM,EAAE,IAAI,CAAC,EACd,UAAU,IAAI,yBAAyB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,kBAAkB,IAAI;gBAClF,gEAAgE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE;QACzD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}
|