@lorion-org/descriptor-discovery
v1.0.0-beta.2
Published
Node-based descriptor discovery and normalization helpers.
Maintainers
Readme
@lorion-org/descriptor-discovery
Disk-based discovery and normalization helpers for descriptor files.
This package is the Node-side companion to @lorion-org/composition-graph.
It is responsible for reading descriptor documents from disk and flattening
optional nested descriptor authoring into the flat Descriptor[] shape that
the graph core expects.
Install
pnpm add @lorion-org/descriptor-discovery @lorion-org/composition-graphWhat it is
- a Node-side descriptor file discovery helper
- a normalization layer for descriptor ids and versions
- a small flattening helper for one level of nested descriptor authoring
- a bridge from files on disk to
@lorion-org/composition-graph
What it is not
- not a graph builder
- not a package manager
- not a framework adapter
- not a recursive schema language
- not a watcher or live reload system
Directory shape
layer-extensions/
checkout/
extension.json
shops/
extension.jsonBasic example
import { discoverDescriptors } from '@lorion-org/descriptor-discovery';
const discovered = discoverDescriptors({
cwd: './playground',
descriptorPaths: ['layer-extensions/*/extension.json'],
});
const descriptors = discovered.map((entry) => entry.descriptor);discoverDescriptors() scans each direct child directory below every root and
loads a descriptor file when it exists. The directory name is used as a fallback
id when the descriptor does not define one.
Example: custom descriptor fields
import { discoverDescriptors } from '@lorion-org/descriptor-discovery';
const discovered = discoverDescriptors({
cwd: './playground',
descriptorPaths: ['layer-extensions/*/extension.json'],
nestedField: 'bundles',
});
discovered.map((entry) => entry.id);Nested descriptors are flattened into the same output list as their parent. Only one nesting level is supported so the resulting graph input stays explicit.
Example: use with composition graph
import { createDescriptorCatalog } from '@lorion-org/composition-graph';
import { discoverDescriptors } from '@lorion-org/descriptor-discovery';
const discovered = discoverDescriptors({
cwd: './playground',
descriptorPaths: ['layer-extensions/*/extension.json'],
nestedField: 'bundles',
});
const catalog = createDescriptorCatalog({
descriptors: discovered.map((entry) => entry.descriptor),
});
catalog.resolveSelection({
selected: ['default'],
});Local commands
cd packages/descriptor-discovery
pnpm build
pnpm test
pnpm typecheck
pnpm package:check