@metaobjectsdev/sdk 0.6.0 → 0.7.0-rc.2
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/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +20 -13
- package/dist/memory.js.map +1 -1
- package/package.json +2 -2
- package/src/memory.ts +21 -12
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAKlC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBpE"}
|
package/dist/memory.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { readdir, stat } from "node:fs/promises";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { MetaDataLoader, TypeRegistry, registerCoreTypes, } from "@metaobjectsdev/metadata";
|
|
4
|
+
import { FileSource } from "@metaobjectsdev/metadata/core";
|
|
5
5
|
import { registerForgeTypes } from "./forge-types.js";
|
|
6
6
|
import { discoverWorkspace, resolveExtendsOrder } from "./workspace.js";
|
|
7
7
|
/**
|
|
@@ -39,8 +39,8 @@ export async function loadMemory(repoRoot) {
|
|
|
39
39
|
// deferred-resolution pass (it parses in array order, then resolves supers
|
|
40
40
|
// against the merged tree afterwards) — dep packages first, current last.
|
|
41
41
|
const paths = await collectMetadataPaths(repoRoot);
|
|
42
|
-
const loader = new
|
|
43
|
-
const result = await loader.
|
|
42
|
+
const loader = new MetaDataLoader({ registry });
|
|
43
|
+
const result = await loader.load(paths.map((p) => new FileSource(p)));
|
|
44
44
|
if (result.errors.length > 0) {
|
|
45
45
|
const first = result.errors[0];
|
|
46
46
|
throw first;
|
|
@@ -60,21 +60,25 @@ async function collectMetadataPaths(repoRoot) {
|
|
|
60
60
|
for (const pkg of ordered) {
|
|
61
61
|
// Each workspace package's metadata lives alongside its .meta/ dir
|
|
62
62
|
const pkgRoot = join(pkg.metaDir, "..");
|
|
63
|
-
paths.push(...(await
|
|
63
|
+
paths.push(...(await listMetadataFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
|
|
64
64
|
}
|
|
65
65
|
return paths;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
// Single-package path: scan metaobjects/ at the project root
|
|
69
|
-
return
|
|
69
|
+
return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* Recursively list *.json
|
|
73
|
-
* any level. Subdirectories (e.g. projections/) are
|
|
74
|
-
* Files within a directory are sorted alphabetically for
|
|
75
|
-
* order; subdirectories are visited after files at the
|
|
72
|
+
* Recursively list metadata files (*.json, *.yaml, *.yml) under a directory,
|
|
73
|
+
* excluding _pending/ at any level. Subdirectories (e.g. projections/) are
|
|
74
|
+
* walked depth-first. Files within a directory are sorted alphabetically for
|
|
75
|
+
* deterministic load order; subdirectories are visited after files at the
|
|
76
|
+
* same level.
|
|
77
|
+
*
|
|
78
|
+
* Format selection (parsing) happens downstream in `FileSource` from
|
|
79
|
+
* `@metaobjectsdev/metadata`, which infers the parser from file extension.
|
|
76
80
|
*/
|
|
77
|
-
async function
|
|
81
|
+
async function listMetadataFiles(dir) {
|
|
78
82
|
let entries;
|
|
79
83
|
try {
|
|
80
84
|
entries = await readdir(dir);
|
|
@@ -92,14 +96,17 @@ async function listJsonFiles(dir) {
|
|
|
92
96
|
if (s.isDirectory()) {
|
|
93
97
|
subdirs.push(full);
|
|
94
98
|
}
|
|
95
|
-
else if (s.isFile() && entry
|
|
99
|
+
else if (s.isFile() && isMetadataFile(entry)) {
|
|
96
100
|
paths.push(full);
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
// Recurse into subdirectories after collecting files at this level
|
|
100
104
|
for (const sub of subdirs.sort()) {
|
|
101
|
-
paths.push(...(await
|
|
105
|
+
paths.push(...(await listMetadataFiles(sub)));
|
|
102
106
|
}
|
|
103
107
|
return paths;
|
|
104
108
|
}
|
|
109
|
+
function isMetadataFile(name) {
|
|
110
|
+
return name.endsWith(".json") || name.endsWith(".yaml") || name.endsWith(".yml");
|
|
111
|
+
}
|
|
105
112
|
//# sourceMappingURL=memory.js.map
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0-rc.2",
|
|
4
4
|
"description": "Workspace helpers and agent-docs utilities for MetaObjects projects.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@metaobjectsdev/metadata": "0.
|
|
41
|
+
"@metaobjectsdev/metadata": "0.7.0-rc.2",
|
|
42
42
|
"zod": "^3.23.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
package/src/memory.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { readdir, stat } from "node:fs/promises";
|
|
3
|
-
import { FileMetaDataLoader } from "@metaobjectsdev/metadata/core";
|
|
4
3
|
import {
|
|
4
|
+
MetaDataLoader,
|
|
5
5
|
TypeRegistry,
|
|
6
6
|
registerCoreTypes,
|
|
7
7
|
type MetaRoot,
|
|
8
8
|
} from "@metaobjectsdev/metadata";
|
|
9
|
+
import { FileSource } from "@metaobjectsdev/metadata/core";
|
|
9
10
|
import { registerForgeTypes } from "./forge-types.js";
|
|
10
11
|
import { discoverWorkspace, resolveExtendsOrder } from "./workspace.js";
|
|
11
12
|
|
|
@@ -48,8 +49,8 @@ export async function loadMemory(repoRoot: string): Promise<MetaRoot> {
|
|
|
48
49
|
// against the merged tree afterwards) — dep packages first, current last.
|
|
49
50
|
const paths = await collectMetadataPaths(repoRoot);
|
|
50
51
|
|
|
51
|
-
const loader = new
|
|
52
|
-
const result = await loader.
|
|
52
|
+
const loader = new MetaDataLoader({ registry });
|
|
53
|
+
const result = await loader.load(paths.map((p) => new FileSource(p)));
|
|
53
54
|
|
|
54
55
|
if (result.errors.length > 0) {
|
|
55
56
|
const first = result.errors[0]!;
|
|
@@ -73,23 +74,27 @@ async function collectMetadataPaths(repoRoot: string): Promise<string[]> {
|
|
|
73
74
|
for (const pkg of ordered) {
|
|
74
75
|
// Each workspace package's metadata lives alongside its .meta/ dir
|
|
75
76
|
const pkgRoot = join(pkg.metaDir, "..");
|
|
76
|
-
paths.push(...(await
|
|
77
|
+
paths.push(...(await listMetadataFiles(join(pkgRoot, DEFAULT_METADATA_DIR))));
|
|
77
78
|
}
|
|
78
79
|
return paths;
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
// Single-package path: scan metaobjects/ at the project root
|
|
83
|
-
return
|
|
84
|
+
return listMetadataFiles(join(repoRoot, DEFAULT_METADATA_DIR));
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
/**
|
|
87
|
-
* Recursively list *.json
|
|
88
|
-
* any level. Subdirectories (e.g. projections/) are
|
|
89
|
-
* Files within a directory are sorted alphabetically for
|
|
90
|
-
* order; subdirectories are visited after files at the
|
|
88
|
+
* Recursively list metadata files (*.json, *.yaml, *.yml) under a directory,
|
|
89
|
+
* excluding _pending/ at any level. Subdirectories (e.g. projections/) are
|
|
90
|
+
* walked depth-first. Files within a directory are sorted alphabetically for
|
|
91
|
+
* deterministic load order; subdirectories are visited after files at the
|
|
92
|
+
* same level.
|
|
93
|
+
*
|
|
94
|
+
* Format selection (parsing) happens downstream in `FileSource` from
|
|
95
|
+
* `@metaobjectsdev/metadata`, which infers the parser from file extension.
|
|
91
96
|
*/
|
|
92
|
-
async function
|
|
97
|
+
async function listMetadataFiles(dir: string): Promise<string[]> {
|
|
93
98
|
let entries: string[];
|
|
94
99
|
try {
|
|
95
100
|
entries = await readdir(dir);
|
|
@@ -104,13 +109,17 @@ async function listJsonFiles(dir: string): Promise<string[]> {
|
|
|
104
109
|
const s = await stat(full);
|
|
105
110
|
if (s.isDirectory()) {
|
|
106
111
|
subdirs.push(full);
|
|
107
|
-
} else if (s.isFile() && entry
|
|
112
|
+
} else if (s.isFile() && isMetadataFile(entry)) {
|
|
108
113
|
paths.push(full);
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
// Recurse into subdirectories after collecting files at this level
|
|
112
117
|
for (const sub of subdirs.sort()) {
|
|
113
|
-
paths.push(...(await
|
|
118
|
+
paths.push(...(await listMetadataFiles(sub)));
|
|
114
119
|
}
|
|
115
120
|
return paths;
|
|
116
121
|
}
|
|
122
|
+
|
|
123
|
+
function isMetadataFile(name: string): boolean {
|
|
124
|
+
return name.endsWith(".json") || name.endsWith(".yaml") || name.endsWith(".yml");
|
|
125
|
+
}
|