@blue-labs/language 3.11.0 → 4.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.mjs +4736 -3268
- package/dist/lib/Blue.d.ts +14 -4
- package/dist/lib/Blue.d.ts.map +1 -1
- package/dist/lib/errors/BlueError.d.ts +3 -0
- package/dist/lib/errors/BlueError.d.ts.map +1 -1
- package/dist/lib/identity/BlueIdHasher.d.ts +39 -0
- package/dist/lib/identity/BlueIdHasher.d.ts.map +1 -0
- package/dist/lib/identity/CyclicSetIdentityService.d.ts +35 -0
- package/dist/lib/identity/CyclicSetIdentityService.d.ts.map +1 -0
- package/dist/lib/identity/SemanticIdentityService.d.ts +40 -0
- package/dist/lib/identity/SemanticIdentityService.d.ts.map +1 -0
- package/dist/lib/identity/SemanticStorageService.d.ts +29 -0
- package/dist/lib/identity/SemanticStorageService.d.ts.map +1 -0
- package/dist/lib/identity/index.d.ts +5 -0
- package/dist/lib/identity/index.d.ts.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/mapping/ComplexObjectConverter.d.ts +2 -1
- package/dist/lib/mapping/ComplexObjectConverter.d.ts.map +1 -1
- package/dist/lib/mapping/ConverterFactory.d.ts +2 -1
- package/dist/lib/mapping/ConverterFactory.d.ts.map +1 -1
- package/dist/lib/mapping/NodeToObjectConverter.d.ts +6 -2
- package/dist/lib/mapping/NodeToObjectConverter.d.ts.map +1 -1
- package/dist/lib/merge/Merger.d.ts +13 -10
- package/dist/lib/merge/Merger.d.ts.map +1 -1
- package/dist/lib/model/Node.d.ts +10 -0
- package/dist/lib/model/Node.d.ts.map +1 -1
- package/dist/lib/model/ResolvedNode.d.ts +17 -1
- package/dist/lib/model/ResolvedNode.d.ts.map +1 -1
- package/dist/lib/preprocess/Preprocessor.d.ts +7 -1
- package/dist/lib/preprocess/Preprocessor.d.ts.map +1 -1
- package/dist/lib/provider/AbstractNodeProvider.d.ts.map +1 -1
- package/dist/lib/provider/BasicNodeProvider.d.ts +3 -0
- package/dist/lib/provider/BasicNodeProvider.d.ts.map +1 -1
- package/dist/lib/provider/InMemoryNodeProvider.d.ts +6 -0
- package/dist/lib/provider/InMemoryNodeProvider.d.ts.map +1 -1
- package/dist/lib/provider/NodeContentHandler.d.ts +18 -4
- package/dist/lib/provider/NodeContentHandler.d.ts.map +1 -1
- package/dist/lib/provider/RepositoryBasedNodeProvider.d.ts +16 -1
- package/dist/lib/provider/RepositoryBasedNodeProvider.d.ts.map +1 -1
- package/dist/lib/repository/RepositoryRuntime.d.ts.map +1 -1
- package/dist/lib/repository/SemanticRepositoryReindexer.d.ts +11 -0
- package/dist/lib/repository/SemanticRepositoryReindexer.d.ts.map +1 -0
- package/dist/lib/utils/BlueIdCalculator.d.ts +4 -9
- package/dist/lib/utils/BlueIdCalculator.d.ts.map +1 -1
- package/dist/lib/utils/ListControls.d.ts +27 -0
- package/dist/lib/utils/ListControls.d.ts.map +1 -0
- package/dist/lib/utils/MergeReverser.d.ts +30 -0
- package/dist/lib/utils/MergeReverser.d.ts.map +1 -1
- package/dist/lib/utils/Minimizer.d.ts +18 -0
- package/dist/lib/utils/Minimizer.d.ts.map +1 -0
- package/dist/lib/utils/NodeExtender.d.ts +1 -1
- package/dist/lib/utils/NodeExtender.d.ts.map +1 -1
- package/dist/lib/utils/NodeProviderWrapper.d.ts +3 -5
- package/dist/lib/utils/NodeProviderWrapper.d.ts.map +1 -1
- package/dist/lib/utils/NodeToMapListOrValue.d.ts +5 -1
- package/dist/lib/utils/NodeToMapListOrValue.d.ts.map +1 -1
- package/dist/lib/utils/NodeTypeMatcher.d.ts +3 -0
- package/dist/lib/utils/NodeTypeMatcher.d.ts.map +1 -1
- package/dist/lib/utils/NodeTypes.d.ts +6 -0
- package/dist/lib/utils/NodeTypes.d.ts.map +1 -1
- package/dist/lib/utils/StorageShapeValidator.d.ts +17 -0
- package/dist/lib/utils/StorageShapeValidator.d.ts.map +1 -0
- package/dist/lib/utils/TypeSchema.d.ts +2 -0
- package/dist/lib/utils/TypeSchema.d.ts.map +1 -1
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/utils/blueObject/enrichWithBlueId.d.ts.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/utils/blueId/calculateBlueId.d.ts +0 -15
- package/dist/utils/blueId/calculateBlueId.d.ts.map +0 -1
- package/dist/utils/blueId/index.d.ts +0 -2
- package/dist/utils/blueId/index.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Small, fast TypeScript runtime for the Blue Language: parse YAML/JSON into BlueN
|
|
|
7
7
|
- **BlueNode graph**: single, list, map, typed values, metadata (name/description), `contracts`, and references by `blueId`.
|
|
8
8
|
- **Preprocessing**: `blue:` directive (aliases, BlueId, or URL fetch with allow-list), inline-type mappings, implicit type inference for primitives.
|
|
9
9
|
- **Resolution/Merge**: deterministic resolver with a pluggable MergingProcessor pipeline (value propagation, type checking, list/dict validators, metadata propagation, basic-type guard).
|
|
10
|
-
- **BlueId**:
|
|
10
|
+
- **BlueId**: semantic content identity via `Blue.calculateBlueId*`; low-level Section 8 hashing via `BlueIdCalculator`; spec-native list controls (`$previous`, `$pos`, `$empty`); CIDv1 conversion.
|
|
11
11
|
- **Providers**: resolve by BlueId from memory, repositories or built-in bootstrap content; sequential composition.
|
|
12
12
|
- **Zod mapping**: convert nodes to typed objects with schema extensions & Blue annotations; serialize objects back to Blue-shaped JSON.
|
|
13
13
|
- **Limits & paths**: restrict extension/merge by path or depth; compose limits.
|
|
@@ -43,7 +43,7 @@ const node = blue.yamlToNode(yaml);
|
|
|
43
43
|
// 3) Resolve (merge types/references), optionally with limits
|
|
44
44
|
const resolved = blue.resolve(node, PathLimits.withMaxDepth(10));
|
|
45
45
|
|
|
46
|
-
// 4) Compute BlueId
|
|
46
|
+
// 4) Compute semantic BlueId
|
|
47
47
|
const blueId = blue.calculateBlueIdSync(resolved);
|
|
48
48
|
|
|
49
49
|
// 5) Map to a Zod schema (with annotations supported)
|
|
@@ -92,7 +92,7 @@ const json = blue.nodeToJson(node, {
|
|
|
92
92
|
|
|
93
93
|
### Core graph
|
|
94
94
|
|
|
95
|
-
- `BlueNode` – node model (name, description, type, itemType, keyType, valueType, value, items, properties, blueId
|
|
95
|
+
- `BlueNode` – node model (name, description, type, itemType, keyType, valueType, value, items, properties, reference `blueId`, blue directive).
|
|
96
96
|
- `ResolvedBlueNode` – wrapper for resolved nodes; includes `getMinimalNode()` and `getMinimalBlueId()`.
|
|
97
97
|
|
|
98
98
|
### Entry point
|
|
@@ -101,16 +101,17 @@ const json = blue.nodeToJson(node, {
|
|
|
101
101
|
- Parsing: `yamlToNode(_)/jsonValueToNode(_)` (+ async variants), which preprocess and normalize.
|
|
102
102
|
- Preprocess: blue directive (`BlueDirectivePreprocessor`) + default pipeline (`Preprocessor`).
|
|
103
103
|
- Resolve: `resolve(node, limits)` → `ResolvedBlueNode`.
|
|
104
|
-
- IDs: `calculateBlueId(_)/calculateBlueIdSync(_)
|
|
104
|
+
- IDs: `calculateBlueId(_)/calculateBlueIdSync(_)` for semantic BlueId.
|
|
105
105
|
- Mapping: `nodeToJson(node, 'official'|'simple'|'original'|{ format, blueContext })`, `nodeToSchemaOutput(node, zod)`.
|
|
106
106
|
- Type checks: `isTypeOf(node, zod)`, `isTypeOfNode(node, typeNode)`, `isTypeOfBlueId(node, blueId)`.
|
|
107
107
|
- Type aliases: `getTypeAliasByBlueId(blueId)` (returns inline aliases like `Text` for core types and `Package/Type` for repository types, including historical `blueId` values resolved to current aliases; `undefined` for empty/unknown ids).
|
|
108
|
-
- Helpers: `extend(node, limits)`, `transform(node, fn)`, `
|
|
108
|
+
- Helpers: `extend(node, limits)`, `transform(node, fn)`, `minimize(node)`, `reverse(node)` (deprecated alias), `restoreInlineTypes(node)`.
|
|
109
109
|
- Config: URL fetch allow-list (`enablePreprocessingDirectivesFetchForDomains([...])`), global limits, repositories.
|
|
110
110
|
|
|
111
111
|
### Resolution & merge
|
|
112
112
|
|
|
113
113
|
- `Merger` + `MergingProcessor` pipeline: value → types → lists/dicts → metadata → basic checks.
|
|
114
|
+
- List overlays support `$previous` append anchors, positional `$pos` refinements, and `$empty` content elements. Legacy inherited-list marker forms are not emitted by minimization.
|
|
114
115
|
- `createDefaultMergingProcessor()` exports the default pipeline.
|
|
115
116
|
|
|
116
117
|
### Providers
|
|
@@ -131,9 +132,27 @@ const json = blue.nodeToJson(node, {
|
|
|
131
132
|
|
|
132
133
|
### Blue IDs & CIDs
|
|
133
134
|
|
|
134
|
-
- `
|
|
135
|
+
- `Blue.calculateBlueId*` computes semantic BlueId by resolving and minimizing.
|
|
136
|
+
- `BlueIdCalculator` is the low-level Section 8 hasher for already prepared shapes.
|
|
135
137
|
- `BlueIds` validator; `BlueIdToCid` and `CidToBlueId` converters.
|
|
136
138
|
|
|
139
|
+
### Identity and storage terms
|
|
140
|
+
|
|
141
|
+
- **official / wrapped**: spec representation using `value` and `items`.
|
|
142
|
+
- **minimal overlay**: compact authoring/storage form that resolves back to the same semantic identity.
|
|
143
|
+
- **resolved tree**: mutable runtime `ResolvedBlueNode` produced by `resolve()`.
|
|
144
|
+
- **semantic BlueId**: public identity stable across equivalent authoring, resolved, and minimal forms.
|
|
145
|
+
- **reference BlueId**: the document `blueId` field, exposed as `getReferenceBlueId()` / `setReferenceBlueId()` with legacy `getBlueId()` / `setBlueId()` aliases.
|
|
146
|
+
|
|
147
|
+
Provider ingest is strict: mixed `blueId + payload` and single-document
|
|
148
|
+
`blueId: this` / `blueId: this#k` inputs are rejected, while top-level document
|
|
149
|
+
sets with indexed `this#k` references are stored under a cyclic `MASTER` BlueId
|
|
150
|
+
and exposed as `MASTER#i` document identities. Supplied repository IDs must
|
|
151
|
+
match computed IDs. `yamlToNode` and `jsonValueToNode` remain permissive parse
|
|
152
|
+
APIs, while `BlueNode` input to `calculateBlueId*` is assumed to be already
|
|
153
|
+
preprocessed/normalized. Spec-native list controls are supported in Phase 1K,
|
|
154
|
+
and direct cyclic document-set identities are supported in Phase 2.
|
|
155
|
+
|
|
137
156
|
### Limits
|
|
138
157
|
|
|
139
158
|
- `PathLimits`, `CompositeLimits`, and `NO_LIMITS`. Build from node shape or explicit patterns.
|
|
@@ -148,6 +167,8 @@ const json = blue.nodeToJson(node, {
|
|
|
148
167
|
- `docs/resolve.md` – resolver & merging pipeline.
|
|
149
168
|
- `docs/preprocessor.md` – blue directive, inference & mappings.
|
|
150
169
|
- `docs/blue-id.md` – BlueId algorithm and APIs.
|
|
170
|
+
- `docs/glossary.md` – identity, minimization, storage, and snapshot terminology.
|
|
171
|
+
- `docs/adr/` – architecture decisions for semantic BlueId, minimal storage, snapshots, list controls, and direct cycles.
|
|
151
172
|
- `docs/mapping.md` – Zod mapping and serialization.
|
|
152
173
|
- `docs/architecture.md` – end-to-end architecture.
|
|
153
174
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BlueNode, type UrlFetchStrategy, BlueIdCalculator, JsonCanonicalizer, BlueIdToCid, Base58Sha256Provider, TypeSchemaResolver, Blue, applyBlueNodePatch, type BlueNodePatch, BlueNodeTypeSchema, type BlueRepository, Limits, Nodes, BasicNodeProvider, NodeResolver, type MergingProcessor, Merger, MergingProcessors, } from './lib';
|
|
1
|
+
export { BlueNode, type UrlFetchStrategy, BlueIdCalculator, JsonCanonicalizer, BlueIdToCid, Base58Sha256Provider, TypeSchemaResolver, Blue, applyBlueNodePatch, type BlueNodePatch, BlueNodeTypeSchema, type BlueRepository, Limits, Nodes, BasicNodeProvider, createNodeProvider, reindexRepositoryForSemanticStorage, SemanticIdentityService, NodeResolver, type MergingProcessor, Merger, MergingProcessors, } from './lib';
|
|
2
2
|
export * as Properties from './lib/utils/Properties';
|
|
3
3
|
export * from './schema';
|
|
4
4
|
export * from './schema/annotations';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,IAAI,EACJ,kBAAkB,EAClB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,cAAc,EACnB,MAAM,EACN,KAAK,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,IAAI,EACJ,kBAAkB,EAClB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,cAAc,EACnB,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mCAAmC,EACnC,uBAAuB,EAGvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,MAAM,EACN,iBAAiB,GAClB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
|