@blockml/framework 0.7.1 → 0.8.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.
Files changed (79) hide show
  1. package/blocks/org/blockml/bml/framework/FrameworkType.bml +4 -1
  2. package/blocks/org/blockml/bml/framework/Library.bml +18 -3
  3. package/blocks/org/blockml/bml/framework/README.bml +1 -1
  4. package/blocks/org/blockml/bml/framework/capability/BootstrapFullProjectRegistry.bml +62 -0
  5. package/blocks/org/blockml/bml/framework/capability/BootstrapTypeRegistry.bml +5 -1
  6. package/blocks/org/blockml/bml/framework/capability/CollectBaseTypeChain.bml +4 -1
  7. package/blocks/org/blockml/bml/framework/capability/DefaultBootstrapPaths.bml +6 -3
  8. package/blocks/org/blockml/bml/framework/capability/ForkBom.bml +4 -1
  9. package/blocks/org/blockml/bml/framework/capability/GetExportedFqns.bml +22 -3
  10. package/blocks/org/blockml/bml/framework/capability/GetPropertyNumericValue.bml +4 -1
  11. package/blocks/org/blockml/bml/framework/capability/IsLiteralValue.bml +4 -1
  12. package/blocks/org/blockml/bml/framework/capability/MemberIdentityKey.bml +4 -1
  13. package/blocks/org/blockml/bml/framework/capability/ParseExpression.bml +4 -1
  14. package/blocks/org/blockml/bml/framework/capability/PeekLibraryTypeFqn.bml +54 -0
  15. package/blocks/org/blockml/bml/framework/capability/ProjectLibraryPackageDirs.bml +50 -0
  16. package/blocks/org/blockml/bml/framework/capability/ProjectLibraryPackageRoots.bml +50 -0
  17. package/blocks/org/blockml/bml/framework/capability/ProjectSourceRoots.bml +53 -0
  18. package/blocks/org/blockml/bml/framework/capability/RegistryFilesUnderRoots.bml +53 -0
  19. package/blocks/org/blockml/bml/framework/capability/ResolveContracts.bml +4 -1
  20. package/blocks/org/blockml/bml/framework/capability/ResolveEffectiveMembers.bml +4 -1
  21. package/blocks/org/blockml/bml/framework/capability/ResolveLibrarySeeds.bml +57 -0
  22. package/blocks/org/blockml/bml/framework/capability/RootFqnByFilePath.bml +18 -1
  23. package/blocks/org/blockml/bml/framework/capability/RootFqns.bml +23 -3
  24. package/blocks/org/blockml/bml/framework/capability/TypeRegistry.bml +4 -1
  25. package/blocks/org/blockml/bml/framework/capability/ValidateConstraints.bml +4 -1
  26. package/blocks/org/blockml/bml/framework/capability/ValidateEmbeddedBlocks.bml +22 -3
  27. package/blocks/org/blockml/bml/framework/capability/ValidateInstances.bml +23 -7
  28. package/blocks/org/blockml/bml/framework/capability/ValidatePresets.bml +24 -5
  29. package/blocks/org/blockml/bml/framework/capability/ValidateReadOnly.bml +24 -5
  30. package/blocks/org/blockml/bml/framework/capability/ValidateTypes.bml +4 -1
  31. package/blocks/org/blockml/bml/framework/capability/ValidateVersions.bml +4 -1
  32. package/blocks/org/blockml/bml/framework/capability/ValidateVisibility.bml +24 -5
  33. package/blocks/org/blockml/bml/framework/config/FrameworkDiagnosticCodes.bml +5 -2
  34. package/blocks/org/blockml/bml/framework/documentation/ArchitectureOverview.bml +7 -3
  35. package/blocks/org/blockml/bml/framework/documentation/ConstraintValidation.bml +7 -10
  36. package/blocks/org/blockml/bml/framework/documentation/Diagnostics.bml +5 -2
  37. package/blocks/org/blockml/bml/framework/documentation/EffectiveMembers.bml +6 -3
  38. package/blocks/org/blockml/bml/framework/documentation/ExpressionParsing.bml +5 -2
  39. package/blocks/org/blockml/bml/framework/documentation/Introduction.bml +5 -2
  40. package/blocks/org/blockml/bml/framework/documentation/LayerSeparation.bml +5 -2
  41. package/blocks/org/blockml/bml/framework/documentation/PackageOwnership.bml +5 -2
  42. package/blocks/org/blockml/bml/framework/documentation/PublicApi.bml +18 -13
  43. package/blocks/org/blockml/bml/framework/documentation/ScopeExclusions.bml +4 -1
  44. package/blocks/org/blockml/bml/framework/documentation/TypeRegistryBootstrap.bml +38 -11
  45. package/blocks/org/blockml/bml/framework/expression/ArrayExpressionNode.bml +4 -1
  46. package/blocks/org/blockml/bml/framework/expression/BinaryExpressionNode.bml +4 -1
  47. package/blocks/org/blockml/bml/framework/expression/CallExpressionNode.bml +4 -1
  48. package/blocks/org/blockml/bml/framework/expression/ExpressionNode.bml +4 -1
  49. package/blocks/org/blockml/bml/framework/expression/LiteralExpressionNode.bml +7 -4
  50. package/blocks/org/blockml/bml/framework/expression/ObjectExpressionEntry.bml +50 -0
  51. package/blocks/org/blockml/bml/framework/expression/ObjectExpressionNode.bml +7 -4
  52. package/blocks/org/blockml/bml/framework/expression/ParseExpressionError.bml +4 -1
  53. package/blocks/org/blockml/bml/framework/expression/ParseExpressionOutcome.bml +4 -1
  54. package/blocks/org/blockml/bml/framework/expression/ParseExpressionResult.bml +4 -1
  55. package/blocks/org/blockml/bml/framework/expression/PropertyExpressionNode.bml +4 -1
  56. package/blocks/org/blockml/bml/framework/registry/BootstrapOptions.bml +4 -1
  57. package/blocks/org/blockml/bml/framework/registry/BootstrapResult.bml +8 -5
  58. package/blocks/org/blockml/bml/framework/registry/BootstrapTrace.bml +59 -0
  59. package/dist/index.d.ts +3 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +3 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/registry/bootstrap.d.ts +26 -0
  64. package/dist/registry/bootstrap.d.ts.map +1 -1
  65. package/dist/registry/bootstrap.js +209 -9
  66. package/dist/registry/bootstrap.js.map +1 -1
  67. package/dist/registry/library-bootstrap.d.ts +5 -1
  68. package/dist/registry/library-bootstrap.d.ts.map +1 -1
  69. package/dist/registry/library-bootstrap.js +148 -25
  70. package/dist/registry/library-bootstrap.js.map +1 -1
  71. package/dist/registry/package-paths.d.ts +10 -0
  72. package/dist/registry/package-paths.d.ts.map +1 -0
  73. package/dist/registry/package-paths.js +47 -0
  74. package/dist/registry/package-paths.js.map +1 -0
  75. package/dist/registry/project-sources.d.ts +23 -0
  76. package/dist/registry/project-sources.d.ts.map +1 -0
  77. package/dist/registry/project-sources.js +100 -0
  78. package/dist/registry/project-sources.js.map +1 -0
  79. package/package.json +4 -4
@@ -1,11 +1,175 @@
1
- import { join } from "node:path";
1
+ import { existsSync, readdirSync, statSync } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
2
3
  import { TypeRegistry } from "./type-registry.js";
3
4
  import { bootstrapFromCorpusPaths, bootstrapFromLibraryPaths, } from "./library-bootstrap.js";
5
+ import { blockmlPackageBlocksRoot, canonicalPath, DEFAULT_SRC_DIR, readJson, } from "./package-paths.js";
6
+ import { projectSourceRoots } from "./project-sources.js";
7
+ function ancestorDirs(fromDir) {
8
+ const dirs = [];
9
+ let dir = resolve(fromDir);
10
+ for (;;) {
11
+ dirs.push(dir);
12
+ const parent = dirname(dir);
13
+ if (parent === dir) {
14
+ return dirs;
15
+ }
16
+ dir = parent;
17
+ }
18
+ }
19
+ function nearestPackageJsonDir(fromDir) {
20
+ for (const dir of ancestorDirs(fromDir)) {
21
+ if (existsSync(join(dir, "package.json"))) {
22
+ return dir;
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ function resolveInstalledPackageDir(packageName, fromDir) {
28
+ for (const dir of ancestorDirs(fromDir)) {
29
+ const candidate = join(dir, "node_modules", packageName);
30
+ if (existsSync(join(candidate, "package.json"))) {
31
+ return candidate;
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+ function resolveBootstrapPath(path, rootDir) {
37
+ return path.startsWith("/") || path.includes(":") ? path : join(rootDir, path);
38
+ }
39
+ function scanNodeModulesForBlockml(nodeModulesDir, out) {
40
+ let entries;
41
+ try {
42
+ entries = readdirSync(nodeModulesDir);
43
+ }
44
+ catch {
45
+ return;
46
+ }
47
+ for (const entry of entries) {
48
+ if (entry.startsWith(".")) {
49
+ continue;
50
+ }
51
+ const full = join(nodeModulesDir, entry);
52
+ if (entry.startsWith("@")) {
53
+ let scoped;
54
+ try {
55
+ scoped = readdirSync(full);
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ for (const name of scoped) {
61
+ const root = blockmlPackageBlocksRoot(join(full, name));
62
+ if (root) {
63
+ out.add(root);
64
+ }
65
+ }
66
+ continue;
67
+ }
68
+ const root = blockmlPackageBlocksRoot(full);
69
+ if (root) {
70
+ out.add(root);
71
+ }
72
+ }
73
+ }
74
+ function scanWorkspacePackages(packagesDir, out) {
75
+ let entries;
76
+ try {
77
+ entries = readdirSync(packagesDir);
78
+ }
79
+ catch {
80
+ return;
81
+ }
82
+ for (const entry of entries) {
83
+ const pkgDir = join(packagesDir, entry);
84
+ try {
85
+ if (!statSync(pkgDir).isDirectory()) {
86
+ continue;
87
+ }
88
+ }
89
+ catch {
90
+ continue;
91
+ }
92
+ const root = blockmlPackageBlocksRoot(pkgDir);
93
+ if (root) {
94
+ out.add(root);
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Library.bml FQN index roots: every BlockML package under node_modules and
100
+ * workspace packages/ along the directory walk (not a corpus dump).
101
+ * Stops at the first ancestor that has node_modules (same idea as LSP resolveBootstrapRoot).
102
+ */
103
+ function discoverBlockmlSearchRoots(rootDir) {
104
+ const npm = new Set();
105
+ const workspace = new Set();
106
+ for (const dir of ancestorDirs(rootDir)) {
107
+ scanWorkspacePackages(join(dir, "packages"), workspace);
108
+ const nodeModulesDir = join(dir, "node_modules");
109
+ if (existsSync(nodeModulesDir)) {
110
+ scanNodeModulesForBlockml(nodeModulesDir, npm);
111
+ break;
112
+ }
113
+ }
114
+ const local = blockmlPackageBlocksRoot(resolve(rootDir));
115
+ const out = [...npm, ...workspace];
116
+ if (local && !out.includes(local)) {
117
+ out.push(local);
118
+ }
119
+ return out;
120
+ }
121
+ /**
122
+ * Corpus fallback: BlockML packages among the nearest package.json production
123
+ * dependencies (dependencies + optionalDependencies), resolved via node_modules.
124
+ */
4
125
  export function defaultBootstrapPaths(rootDir = process.cwd()) {
5
- return [
6
- join(rootDir, "node_modules/@blockml/core/blocks"),
7
- join(rootDir, "node_modules/@machineblocks/core/blocks"),
126
+ const pkgDir = nearestPackageJsonDir(rootDir) ?? resolve(rootDir);
127
+ const pkg = readJson(join(pkgDir, "package.json"));
128
+ const names = [
129
+ ...Object.keys(pkg?.dependencies ?? {}),
130
+ ...Object.keys(pkg?.optionalDependencies ?? {}),
8
131
  ];
132
+ const out = new Set();
133
+ for (const name of names) {
134
+ const installed = resolveInstalledPackageDir(name, rootDir);
135
+ if (!installed) {
136
+ continue;
137
+ }
138
+ const blocksRoot = blockmlPackageBlocksRoot(installed);
139
+ if (blocksRoot) {
140
+ out.add(blocksRoot);
141
+ }
142
+ }
143
+ return [...out];
144
+ }
145
+ /**
146
+ * Library graph seeds for this package: package.json blockml.library first,
147
+ * then extras (config.libraries or --libraries). Deduped by realpath.
148
+ */
149
+ export function resolveLibrarySeeds(rootDir = process.cwd(), extras = []) {
150
+ const ordered = [];
151
+ const pkg = readJson(join(rootDir, "package.json"));
152
+ const identity = pkg?.blockml?.library;
153
+ if (typeof identity === "string" && identity.length > 0) {
154
+ ordered.push(identity);
155
+ }
156
+ for (const extra of extras) {
157
+ if (typeof extra === "string" && extra.trim().length > 0) {
158
+ ordered.push(extra.trim());
159
+ }
160
+ }
161
+ const seen = new Set();
162
+ const out = [];
163
+ for (const seed of ordered) {
164
+ const abs = resolveBootstrapPath(seed, rootDir);
165
+ const key = canonicalPath(abs);
166
+ if (seen.has(key)) {
167
+ continue;
168
+ }
169
+ seen.add(key);
170
+ out.push(key);
171
+ }
172
+ return out;
9
173
  }
10
174
  function normalizeOptions(optionsOrPaths, rootDirArg) {
11
175
  if (Array.isArray(optionsOrPaths)) {
@@ -16,17 +180,35 @@ function normalizeOptions(optionsOrPaths, rootDirArg) {
16
180
  }
17
181
  return { rootDir: rootDirArg ?? process.cwd() };
18
182
  }
183
+ /**
184
+ * Same corpus as `blockml validate --all`: project source roots plus the
185
+ * resolved library graph (including npm BlockML packages).
186
+ */
187
+ export function bootstrapFullProjectRegistry(options) {
188
+ const srcDir = options.srcDir ?? DEFAULT_SRC_DIR;
189
+ const paths = projectSourceRoots(options.rootDir, srcDir);
190
+ const libraryPaths = resolveLibrarySeeds(options.rootDir, options.libraries ?? []);
191
+ const bootstrapOptions = {
192
+ rootDir: options.rootDir,
193
+ paths,
194
+ };
195
+ if (libraryPaths.length > 0) {
196
+ bootstrapOptions.libraryPaths = libraryPaths;
197
+ }
198
+ return bootstrapTypeRegistry(bootstrapOptions);
199
+ }
19
200
  export function bootstrapTypeRegistry(optionsOrPaths, rootDirArg) {
20
201
  const options = normalizeOptions(optionsOrPaths, rootDirArg);
21
202
  const rootDir = options.rootDir ?? process.cwd();
203
+ const discovered = discoverBlockmlSearchRoots(rootDir).map((p) => resolveBootstrapPath(p, rootDir));
22
204
  const searchRoots = [
205
+ ...discovered,
23
206
  ...(options.paths ?? []),
24
207
  ...(options.libraryPaths ?? []),
25
- ...defaultBootstrapPaths(rootDir),
26
- join(rootDir, "packages"),
27
- ].map((p) => (p.startsWith("/") || p.includes(":") ? p : join(rootDir, p)));
208
+ ].map((p) => resolveBootstrapPath(p, rootDir));
28
209
  if (options.libraryPaths && options.libraryPaths.length > 0) {
29
- const result = bootstrapFromLibraryPaths(options.libraryPaths, searchRoots, rootDir);
210
+ const coveredRoots = (options.paths ?? []).map((p) => resolveBootstrapPath(p, rootDir));
211
+ const result = bootstrapFromLibraryPaths(options.libraryPaths, searchRoots, rootDir, coveredRoots);
30
212
  if (options.paths && options.paths.length > 0) {
31
213
  const corpus = bootstrapFromCorpusPaths(options.paths, rootDir);
32
214
  for (const fqn of corpus.registry.keys()) {
@@ -37,13 +219,31 @@ export function bootstrapTypeRegistry(optionsOrPaths, rootDirArg) {
37
219
  }
38
220
  result.diagnostics.push(...corpus.diagnostics);
39
221
  }
222
+ const seeds = options.libraryPaths.map((p) => canonicalPath(resolveBootstrapPath(p, rootDir)));
40
223
  return {
41
224
  registry: result.registry,
42
225
  diagnostics: result.diagnostics,
43
226
  exportsByLibrary: result.exportsByLibrary,
227
+ trace: {
228
+ corpusPaths: coveredRoots,
229
+ seeds,
230
+ searchRoots: discovered,
231
+ librariesVisited: result.librariesVisited,
232
+ skippedCoveredRoots: result.skippedCoveredRoots,
233
+ },
44
234
  };
45
235
  }
46
236
  const paths = options.paths && options.paths.length > 0 ? options.paths : defaultBootstrapPaths(rootDir);
47
- return bootstrapFromCorpusPaths(paths, rootDir);
237
+ const corpus = bootstrapFromCorpusPaths(paths, rootDir);
238
+ return {
239
+ ...corpus,
240
+ trace: {
241
+ corpusPaths: paths.map((p) => resolveBootstrapPath(p, rootDir)),
242
+ seeds: [],
243
+ searchRoots: discovered,
244
+ librariesVisited: [],
245
+ skippedCoveredRoots: [],
246
+ },
247
+ };
48
248
  }
49
249
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/registry/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/registry/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import type { BomDocument, Diagnostic } from "@blockml/bom";
2
2
  import { TypeRegistry } from "./type-registry.js";
3
- export declare function bootstrapFromLibraryPaths(libraryPaths: string[], searchRoots: string[], rootDir: string): {
3
+ /** Root type FQN of a Library.bml, or undefined if the file cannot be parsed. */
4
+ export declare function peekLibraryTypeFqn(libraryPath: string): string | undefined;
5
+ export declare function bootstrapFromLibraryPaths(libraryPaths: string[], searchRoots: string[], rootDir: string, coveredRoots?: string[]): {
4
6
  registry: TypeRegistry;
5
7
  diagnostics: Diagnostic[];
6
8
  exportsByLibrary: Map<string, Set<string>>;
9
+ librariesVisited: string[];
10
+ skippedCoveredRoots: string[];
7
11
  };
8
12
  export declare function bootstrapFromCorpusPaths(paths: string[], rootDir: string): {
9
13
  registry: TypeRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"library-bootstrap.d.ts","sourceRoot":"","sources":["../../src/registry/library-bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkC,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsNlD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,GACd;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5C,CAqBA;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAevD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI5E"}
1
+ {"version":3,"file":"library-bootstrap.d.ts","sourceRoot":"","sources":["../../src/registry/library-bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkC,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAqHlD,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY1E;AAuND,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,MAAM,EAAO,GAC1B;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CA6BA;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAevD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI5E"}
@@ -1,5 +1,5 @@
1
- import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
- import { dirname, join, resolve } from "node:path";
1
+ import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
2
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
3
3
  import { parse } from "@blockml/parser";
4
4
  import { TypeRegistry } from "./type-registry.js";
5
5
  function collectBmlFiles(dir, out = []) {
@@ -27,14 +27,42 @@ function collectBmlFiles(dir, out = []) {
27
27
  }
28
28
  return out;
29
29
  }
30
+ const CONFIG_FILE = "blockml.config.json";
31
+ const DEFAULT_SRC_DIR = "blocks";
32
+ function packageSrcDir(packageDir) {
33
+ const configPath = join(packageDir, CONFIG_FILE);
34
+ if (existsSync(configPath)) {
35
+ try {
36
+ const cfg = JSON.parse(readFileSync(configPath, "utf8"));
37
+ if (typeof cfg.srcDir === "string" && cfg.srcDir.length > 0) {
38
+ return resolve(packageDir, cfg.srcDir);
39
+ }
40
+ }
41
+ catch {
42
+ // fall through to default
43
+ }
44
+ }
45
+ return resolve(packageDir, DEFAULT_SRC_DIR);
46
+ }
30
47
  function blocksRootFromLibraryPath(libraryPath) {
48
+ let dir = dirname(canonicalPath(libraryPath));
49
+ for (;;) {
50
+ if (existsSync(join(dir, "package.json"))) {
51
+ return packageSrcDir(dir);
52
+ }
53
+ const parent = dirname(dir);
54
+ if (parent === dir) {
55
+ break;
56
+ }
57
+ dir = parent;
58
+ }
31
59
  const normalized = libraryPath.replace(/\\/g, "/");
32
- const marker = "/blocks/";
60
+ const marker = `/${DEFAULT_SRC_DIR}/`;
33
61
  const idx = normalized.indexOf(marker);
34
62
  if (idx >= 0) {
35
- return normalized.slice(0, idx + "/blocks".length);
63
+ return normalized.slice(0, idx + `/${DEFAULT_SRC_DIR}`.length);
36
64
  }
37
- return dirname(dirname(libraryPath));
65
+ return dirname(libraryPath);
38
66
  }
39
67
  function aggregationInstances(block, name) {
40
68
  const agg = block.members.find((m) => m.kind === "aggregation" && m.name === name);
@@ -45,6 +73,15 @@ function aggregationInstances(block, name) {
45
73
  .filter((child) => child.kind === "blockInstance")
46
74
  .map((child) => child.instance);
47
75
  }
76
+ function canonicalPath(path) {
77
+ const abs = resolve(path);
78
+ try {
79
+ return realpathSync(abs);
80
+ }
81
+ catch {
82
+ return abs;
83
+ }
84
+ }
48
85
  function indexLibraryFiles(searchRoots) {
49
86
  const index = new Map();
50
87
  for (const root of searchRoots) {
@@ -57,7 +94,11 @@ function indexLibraryFiles(searchRoots) {
57
94
  const parsed = parse(source, { filePath: file, continueOnError: true });
58
95
  const type = parsed.document?.block.type;
59
96
  if (type) {
60
- index.set(type, file);
97
+ const files = index.get(type) ?? [];
98
+ if (!files.includes(file)) {
99
+ files.push(file);
100
+ index.set(type, files);
101
+ }
61
102
  }
62
103
  }
63
104
  catch {
@@ -74,13 +115,50 @@ function exportedBlockFqns(libraryBlock) {
74
115
  }
75
116
  return fqns;
76
117
  }
118
+ /** Root type FQN of a Library.bml, or undefined if the file cannot be parsed. */
119
+ export function peekLibraryTypeFqn(libraryPath) {
120
+ const abs = resolve(libraryPath);
121
+ if (!existsSync(abs)) {
122
+ return undefined;
123
+ }
124
+ try {
125
+ const source = readFileSync(abs, "utf8");
126
+ const parsed = parse(source, { filePath: abs, continueOnError: true });
127
+ return parsed.document?.block.type;
128
+ }
129
+ catch {
130
+ return undefined;
131
+ }
132
+ }
133
+ function resolveDepCandidate(libraryIndex, typeFqn, selfPath) {
134
+ const candidates = libraryIndex.get(typeFqn) ?? [];
135
+ return candidates.find((file) => canonicalPath(file) !== selfPath);
136
+ }
137
+ function transitiveNestedPaths(outerPath, subLibraryEdges) {
138
+ const nested = [];
139
+ const seen = new Set([outerPath]);
140
+ const stack = [...(subLibraryEdges.get(outerPath) ?? [])];
141
+ while (stack.length > 0) {
142
+ const inner = stack.pop();
143
+ if (seen.has(inner)) {
144
+ continue;
145
+ }
146
+ seen.add(inner);
147
+ nested.push(inner);
148
+ stack.push(...(subLibraryEdges.get(inner) ?? []));
149
+ }
150
+ return nested;
151
+ }
77
152
  function resolveLibraryGraph(seedPaths, searchRoots, rootDir, diagnostics) {
78
153
  const libraryIndex = indexLibraryFiles(searchRoots);
79
154
  const ordered = [];
80
155
  const visited = new Set();
156
+ const visitedTypes = new Set();
81
157
  const exportsByLibrary = new Map();
158
+ const subLibraryEdges = new Map();
159
+ const libTypeByPath = new Map();
82
160
  const visit = (libraryPath) => {
83
- const abs = resolve(rootDir, libraryPath);
161
+ const abs = canonicalPath(resolve(rootDir, libraryPath));
84
162
  if (visited.has(abs)) {
85
163
  return;
86
164
  }
@@ -121,13 +199,35 @@ function resolveLibraryGraph(seedPaths, searchRoots, rootDir, diagnostics) {
121
199
  return;
122
200
  }
123
201
  const libType = parsed.document.block.type;
124
- libraryIndex.set(libType, abs);
202
+ if (visitedTypes.has(libType)) {
203
+ return;
204
+ }
205
+ visitedTypes.add(libType);
206
+ const indexed = libraryIndex.get(libType) ?? [];
207
+ if (!indexed.includes(abs)) {
208
+ indexed.push(abs);
209
+ libraryIndex.set(libType, indexed);
210
+ }
125
211
  exportsByLibrary.set(abs, exportedBlockFqns(parsed.document.block));
126
- for (const dep of [
127
- ...aggregationInstances(parsed.document.block, "dependencies"),
128
- ...aggregationInstances(parsed.document.block, "subLibraries"),
129
- ]) {
130
- const depPath = libraryIndex.get(dep.typeFqn);
212
+ libTypeByPath.set(abs, libType);
213
+ const nestedPaths = [];
214
+ for (const sub of aggregationInstances(parsed.document.block, "subLibraries")) {
215
+ const depPath = resolveDepCandidate(libraryIndex, sub.typeFqn, abs);
216
+ if (!depPath) {
217
+ diagnostics.push({
218
+ severity: "error",
219
+ code: "BML_LIBRARY_RESOLVE_ERROR",
220
+ message: `Unresolved library dependency: ${sub.typeFqn}`,
221
+ source: { file: abs, line: sub.source?.line ?? 1, column: sub.source?.column ?? 1 },
222
+ });
223
+ continue;
224
+ }
225
+ nestedPaths.push(canonicalPath(resolve(rootDir, depPath)));
226
+ visit(depPath);
227
+ }
228
+ subLibraryEdges.set(abs, nestedPaths);
229
+ for (const dep of aggregationInstances(parsed.document.block, "dependencies")) {
230
+ const depPath = resolveDepCandidate(libraryIndex, dep.typeFqn, abs);
131
231
  if (!depPath) {
132
232
  diagnostics.push({
133
233
  severity: "error",
@@ -144,16 +244,21 @@ function resolveLibraryGraph(seedPaths, searchRoots, rootDir, diagnostics) {
144
244
  for (const seed of seedPaths) {
145
245
  visit(seed);
146
246
  }
147
- return { orderedPaths: ordered, exportsByLibrary };
247
+ return { orderedPaths: ordered, exportsByLibrary, subLibraryEdges, libTypeByPath };
148
248
  }
149
- function checkNestingViolations(exportsByLibrary, diagnostics) {
150
- const paths = [...exportsByLibrary.keys()];
151
- for (let i = 0; i < paths.length; i++) {
152
- const outerPath = paths[i];
249
+ function checkNestingViolations(exportsByLibrary, subLibraryEdges, libTypeByPath, diagnostics) {
250
+ for (const outerPath of exportsByLibrary.keys()) {
153
251
  const outerExports = exportsByLibrary.get(outerPath);
154
- for (let j = i + 1; j < paths.length; j++) {
155
- const innerPath = paths[j];
252
+ const outerType = libTypeByPath.get(outerPath);
253
+ for (const innerPath of transitiveNestedPaths(outerPath, subLibraryEdges)) {
156
254
  const innerExports = exportsByLibrary.get(innerPath);
255
+ if (!innerExports) {
256
+ continue;
257
+ }
258
+ const innerType = libTypeByPath.get(innerPath);
259
+ if (outerType !== undefined && outerType === innerType) {
260
+ continue;
261
+ }
157
262
  for (const fqn of outerExports) {
158
263
  if (innerExports.has(fqn)) {
159
264
  diagnostics.push({
@@ -191,20 +296,38 @@ function registerFiles(registry, files, diagnostics) {
191
296
  }
192
297
  }
193
298
  }
194
- export function bootstrapFromLibraryPaths(libraryPaths, searchRoots, rootDir) {
299
+ function isPathInsideOrEqual(inner, outer) {
300
+ const a = canonicalPath(inner);
301
+ const b = canonicalPath(outer);
302
+ const rel = relative(b, a);
303
+ return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
304
+ }
305
+ export function bootstrapFromLibraryPaths(libraryPaths, searchRoots, rootDir, coveredRoots = []) {
195
306
  const registry = new TypeRegistry();
196
307
  const diagnostics = [];
197
- const { orderedPaths, exportsByLibrary } = resolveLibraryGraph(libraryPaths, searchRoots, rootDir, diagnostics);
198
- checkNestingViolations(exportsByLibrary, diagnostics);
308
+ const { orderedPaths, exportsByLibrary, subLibraryEdges, libTypeByPath } = resolveLibraryGraph(libraryPaths, searchRoots, rootDir, diagnostics);
309
+ checkNestingViolations(exportsByLibrary, subLibraryEdges, libTypeByPath, diagnostics);
310
+ const absCovered = coveredRoots.map((root) => resolve(rootDir, root));
199
311
  const seenFiles = new Set();
312
+ const skippedCoveredRoots = [];
200
313
  for (const libraryPath of orderedPaths) {
201
314
  const blocksRoot = blocksRootFromLibraryPath(libraryPath);
315
+ if (absCovered.some((root) => isPathInsideOrEqual(blocksRoot, root))) {
316
+ skippedCoveredRoots.push(blocksRoot);
317
+ continue;
318
+ }
202
319
  for (const file of collectBmlFiles(blocksRoot)) {
203
320
  seenFiles.add(file);
204
321
  }
205
322
  }
206
323
  registerFiles(registry, [...seenFiles], diagnostics);
207
- return { registry, diagnostics, exportsByLibrary };
324
+ return {
325
+ registry,
326
+ diagnostics,
327
+ exportsByLibrary,
328
+ librariesVisited: orderedPaths,
329
+ skippedCoveredRoots,
330
+ };
208
331
  }
209
332
  export function bootstrapFromCorpusPaths(paths, rootDir) {
210
333
  const registry = new TypeRegistry();
@@ -221,7 +344,7 @@ export function bootstrapFromCorpusPaths(paths, rootDir) {
221
344
  return { registry, diagnostics };
222
345
  }
223
346
  export function findLibraryFileForType(typeFqn, searchRoots) {
224
- return indexLibraryFiles(searchRoots).get(typeFqn);
347
+ return indexLibraryFiles(searchRoots).get(typeFqn)?.[0];
225
348
  }
226
349
  export function parseLibraryDocument(libraryPath) {
227
350
  const source = readFileSync(libraryPath, "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"library-bootstrap.js","sourceRoot":"","sources":["../../src/registry/library-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"library-bootstrap.js","sourceRoot":"","sources":["../../src/registry/library-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const CONFIG_FILE = "blockml.config.json";
2
+ export declare const DEFAULT_SRC_DIR = "blocks";
3
+ export declare function readJson(path: string): unknown | undefined;
4
+ export declare function canonicalPath(path: string): string;
5
+ /** srcDir for a package: blockml.config.json override, else default "blocks". */
6
+ export declare function packageSrcDir(packageDir: string): string;
7
+ export declare function packageDeclaresLibrary(packageDir: string): boolean;
8
+ /** Blocks/srcDir root when the package is a BlockML module; otherwise undefined. */
9
+ export declare function blockmlPackageBlocksRoot(packageDir: string): string | undefined;
10
+ //# sourceMappingURL=package-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-paths.d.ts","sourceRoot":"","sources":["../../src/registry/package-paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,wBAAwB,CAAC;AACjD,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAM1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO/E"}