@mimir-labs/core 0.4.0 → 0.5.0

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 (57) hide show
  1. package/README.md +13 -2
  2. package/dist/implementation/contracts/descriptor.d.ts +7 -1
  3. package/dist/implementation/contracts/resource.d.ts +93 -0
  4. package/dist/implementation/descriptors/descriptor-repository.js +33 -14
  5. package/dist/implementation/descriptors/descriptor-repository.js.map +1 -1
  6. package/dist/implementation/generation/generate-service.d.ts +4 -0
  7. package/dist/implementation/generation/generate-service.js +14 -4
  8. package/dist/implementation/generation/generate-service.js.map +1 -1
  9. package/dist/implementation/generation/types.d.ts +1 -0
  10. package/dist/implementation/io/fs.d.ts +1 -0
  11. package/dist/implementation/io/fs.js +13 -0
  12. package/dist/implementation/io/fs.js.map +1 -1
  13. package/dist/implementation/knowledge/knowledge-engine.d.ts +8 -0
  14. package/dist/implementation/knowledge/knowledge-engine.js +40 -0
  15. package/dist/implementation/knowledge/knowledge-engine.js.map +1 -0
  16. package/dist/implementation/knowledge/knowledge-graph.d.ts +12 -0
  17. package/dist/implementation/knowledge/knowledge-graph.js +34 -0
  18. package/dist/implementation/knowledge/knowledge-graph.js.map +1 -0
  19. package/dist/implementation/knowledge/model.d.ts +44 -0
  20. package/dist/implementation/knowledge/model.js +3 -0
  21. package/dist/implementation/knowledge/model.js.map +1 -0
  22. package/dist/implementation/knowledge/persistence-policy.d.ts +21 -0
  23. package/dist/implementation/knowledge/persistence-policy.js +51 -0
  24. package/dist/implementation/knowledge/persistence-policy.js.map +1 -0
  25. package/dist/implementation/knowledge/providers.d.ts +36 -0
  26. package/dist/implementation/knowledge/providers.js +150 -0
  27. package/dist/implementation/knowledge/providers.js.map +1 -0
  28. package/dist/implementation/resource-discovery/design-token-extractor.d.ts +3 -0
  29. package/dist/implementation/resource-discovery/design-token-extractor.js +78 -0
  30. package/dist/implementation/resource-discovery/design-token-extractor.js.map +1 -0
  31. package/dist/implementation/resource-discovery/react-pattern-extractor.d.ts +3 -0
  32. package/dist/implementation/resource-discovery/react-pattern-extractor.js +49 -0
  33. package/dist/implementation/resource-discovery/react-pattern-extractor.js.map +1 -0
  34. package/dist/implementation/resource-discovery/relationship-extractor.d.ts +3 -0
  35. package/dist/implementation/resource-discovery/relationship-extractor.js +80 -0
  36. package/dist/implementation/resource-discovery/relationship-extractor.js.map +1 -0
  37. package/dist/implementation/resource-discovery/semantic-resource-classifier.d.ts +23 -0
  38. package/dist/implementation/resource-discovery/semantic-resource-classifier.js +267 -0
  39. package/dist/implementation/resource-discovery/semantic-resource-classifier.js.map +1 -0
  40. package/dist/implementation/resource-discovery/storybook-extractor.d.ts +2 -1
  41. package/dist/implementation/resource-discovery/storybook-extractor.js +83 -44
  42. package/dist/implementation/resource-discovery/storybook-extractor.js.map +1 -1
  43. package/dist/implementation/resource-discovery/typescript-analysis.d.ts +7 -0
  44. package/dist/implementation/resource-discovery/typescript-analysis.js +42 -0
  45. package/dist/implementation/resource-discovery/typescript-analysis.js.map +1 -0
  46. package/dist/implementation/resource-discovery/typescript-extractor.d.ts +8 -2
  47. package/dist/implementation/resource-discovery/typescript-extractor.js +166 -108
  48. package/dist/implementation/resource-discovery/typescript-extractor.js.map +1 -1
  49. package/dist/implementation/resource-discovery/typescript-public-api-extractor.d.ts +11 -0
  50. package/dist/implementation/resource-discovery/typescript-public-api-extractor.js +439 -0
  51. package/dist/implementation/resource-discovery/typescript-public-api-extractor.js.map +1 -0
  52. package/dist/implementation/resource-identity.d.ts +1 -0
  53. package/dist/implementation/resource-identity.js +7 -0
  54. package/dist/implementation/resource-identity.js.map +1 -1
  55. package/dist/implementation/services/authoring-service.js +251 -140
  56. package/dist/implementation/services/authoring-service.js.map +1 -1
  57. package/package.json +1 -1
@@ -3,135 +3,193 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.discoverTypeScriptResources = discoverTypeScriptResources;
6
7
  exports.extractTypeScriptComponents = extractTypeScriptComponents;
7
- const node_path_1 = __importDefault(require("node:path"));
8
- const promises_1 = require("node:fs/promises");
9
- const fs_1 = require("../io/fs");
10
- const TS_EXTENSIONS = new Set([".ts", ".tsx"]);
11
- function isPascalCase(name) {
12
- return /^[A-Z][A-Za-z0-9]*$/.test(name);
13
- }
8
+ const path_1 = __importDefault(require("path"));
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ const semantic_resource_classifier_1 = require("./semantic-resource-classifier");
11
+ const typescript_analysis_1 = require("./typescript-analysis");
14
12
  function normalizeSlashes(value) {
15
- return value.split(node_path_1.default.sep).join("/");
13
+ return value.split(path_1.default.sep).join("/");
16
14
  }
17
- async function collectFiles(dir) {
18
- const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
19
- const files = [];
20
- for (const entry of entries) {
21
- const absolutePath = node_path_1.default.join(dir, entry.name);
22
- if (entry.isDirectory()) {
23
- if (entry.name === "node_modules" || entry.name === "dist" || entry.name.startsWith(".")) {
24
- continue;
25
- }
26
- files.push(...(await collectFiles(absolutePath)));
15
+ function sourceFileHasModuleImport(sourceFile, predicate) {
16
+ for (const statement of sourceFile.statements) {
17
+ if (!typescript_1.default.isImportDeclaration(statement) || !typescript_1.default.isStringLiteral(statement.moduleSpecifier)) {
27
18
  continue;
28
19
  }
29
- if (entry.isFile() &&
30
- TS_EXTENSIONS.has(node_path_1.default.extname(entry.name)) &&
31
- !entry.name.includes(".stories.")) {
32
- files.push(absolutePath);
20
+ const modulePath = statement.moduleSpecifier.text;
21
+ if (predicate(modulePath)) {
22
+ return true;
33
23
  }
34
24
  }
35
- return files;
25
+ return false;
36
26
  }
37
- function extractExportedNames(content) {
38
- const names = new Set();
39
- const patterns = [
40
- /export\s+function\s+([A-Z][A-Za-z0-9_]*)\s*\(/g,
41
- /export\s+const\s+([A-Z][A-Za-z0-9_]*)\s*[:=]/g,
42
- /export\s+class\s+([A-Z][A-Za-z0-9_]*)\s+/g,
43
- /export\s+\{\s*([^}]+)\s*\}/g
44
- ];
45
- for (const pattern of patterns) {
46
- let match;
47
- while ((match = pattern.exec(content)) !== null) {
48
- if (pattern.source.includes("[^}]+")) {
49
- const tokens = match[1].split(",").map((item) => item.trim());
50
- for (const token of tokens) {
51
- const aliasParts = token.split(/\s+as\s+/i).map((part) => part.trim());
52
- const candidate = aliasParts[aliasParts.length - 1];
53
- if (isPascalCase(candidate)) {
54
- names.add(candidate);
55
- }
56
- }
57
- }
58
- else {
59
- const candidate = match[1];
60
- if (isPascalCase(candidate)) {
61
- names.add(candidate);
62
- }
63
- }
27
+ function declarationContainsSignal(declaration, predicate) {
28
+ let found = false;
29
+ const visit = (node) => {
30
+ if (found) {
31
+ return;
64
32
  }
65
- }
66
- return [...names].sort((a, b) => a.localeCompare(b));
33
+ if (predicate(node)) {
34
+ found = true;
35
+ return;
36
+ }
37
+ typescript_1.default.forEachChild(node, visit);
38
+ };
39
+ visit(declaration);
40
+ return found;
67
41
  }
68
- function parsePropsBlock(block) {
69
- const result = {};
70
- const lines = block.split("\n");
71
- for (const line of lines) {
72
- const trimmed = line.trim();
73
- const match = /^([A-Za-z_][A-Za-z0-9_]*)\??:\s*([^;]+);?$/.exec(trimmed);
74
- if (!match) {
75
- continue;
42
+ function hasJsxInDeclaration(declaration) {
43
+ return declarationContainsSignal(declaration, (node) => typescript_1.default.isJsxElement(node) || typescript_1.default.isJsxSelfClosingElement(node) || typescript_1.default.isJsxFragment(node));
44
+ }
45
+ function hasCreateContextCall(declaration) {
46
+ return declarationContainsSignal(declaration, (node) => {
47
+ if (!typescript_1.default.isCallExpression(node)) {
48
+ return false;
49
+ }
50
+ if (typescript_1.default.isIdentifier(node.expression)) {
51
+ return node.expression.text === "createContext";
52
+ }
53
+ return typescript_1.default.isPropertyAccessExpression(node.expression) && node.expression.name.text === "createContext";
54
+ });
55
+ }
56
+ function hasStyledCall(declaration) {
57
+ return declarationContainsSignal(declaration, (node) => {
58
+ if (!typescript_1.default.isCallExpression(node)) {
59
+ return false;
76
60
  }
77
- const propName = match[1];
78
- const propType = match[2].trim();
79
- const optional = trimmed.includes("?:");
80
- result[propName] = {
81
- name: propName,
82
- type: propType,
83
- required: !optional
61
+ if (typescript_1.default.isIdentifier(node.expression) && node.expression.text === "styled") {
62
+ return true;
63
+ }
64
+ return typescript_1.default.isPropertyAccessExpression(node.expression) && typescript_1.default.isIdentifier(node.expression.expression)
65
+ ? node.expression.expression.text === "styled"
66
+ : false;
67
+ });
68
+ }
69
+ function getExportSymbol(checker, sourceFile, exportSymbol) {
70
+ const importName = exportSymbol.getName();
71
+ if ((exportSymbol.flags & typescript_1.default.SymbolFlags.Alias) !== 0) {
72
+ const aliased = checker.getAliasedSymbol(exportSymbol);
73
+ return {
74
+ symbol: aliased,
75
+ importName
84
76
  };
85
77
  }
86
- return result;
87
- }
88
- function extractProps(content, componentName) {
89
- const interfacePattern = new RegExp(`interface\\s+${componentName}Props\\s*\\{([\\s\\S]*?)\\}`, "m");
90
- const typePattern = new RegExp(`type\\s+${componentName}Props\\s*=\\s*\\{([\\s\\S]*?)\\}`, "m");
91
- const interfaceMatch = interfacePattern.exec(content);
92
- if (interfaceMatch) {
93
- return parsePropsBlock(interfaceMatch[1]);
78
+ const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
79
+ if (!moduleSymbol) {
80
+ return null;
94
81
  }
95
- const typeMatch = typePattern.exec(content);
96
- if (typeMatch) {
97
- return parsePropsBlock(typeMatch[1]);
82
+ return {
83
+ symbol: exportSymbol,
84
+ importName
85
+ };
86
+ }
87
+ function keyForDiscoveredResource(resource) {
88
+ return `${resource.filePath}::${resource.name}`;
89
+ }
90
+ function shouldIgnoreSourceFile(sourceFile, cwd) {
91
+ if (sourceFile.isDeclarationFile) {
92
+ return true;
98
93
  }
99
- return {};
94
+ const relative = normalizeSlashes(path_1.default.relative(cwd, sourceFile.fileName));
95
+ return relative.startsWith("../") || relative === "..";
100
96
  }
101
- async function extractTypeScriptComponents(cwd, packageName) {
102
- const files = await collectFiles(cwd);
103
- const components = [];
104
- for (const filePath of files) {
105
- const content = await (0, fs_1.readText)(filePath);
106
- const exportedNames = extractExportedNames(content);
107
- if (exportedNames.length === 0) {
108
- continue;
97
+ async function discoverTypeScriptResources(cwd, packageName, options = {}, analysis) {
98
+ const resolvedAnalysis = analysis ?? (await (0, typescript_analysis_1.createTypeScriptAnalysis)(cwd));
99
+ const { program, checker } = resolvedAnalysis;
100
+ const policy = (0, semantic_resource_classifier_1.mergeClassificationPolicy)({
101
+ include: options.includeKinds,
102
+ exclude: options.excludeKinds
103
+ });
104
+ const sourceSignalsCache = new Map();
105
+ const resolveSourceSignals = (sourceFile) => {
106
+ const key = sourceFile.fileName;
107
+ const cached = sourceSignalsCache.get(key);
108
+ if (cached) {
109
+ return cached;
109
110
  }
110
- const relativeFilePath = normalizeSlashes(node_path_1.default.relative(cwd, filePath));
111
- for (const exportedName of exportedNames) {
112
- components.push({
113
- name: exportedName,
114
- filePath: relativeFilePath,
115
- importName: exportedName,
116
- packageName,
117
- props: extractProps(content, exportedName)
118
- });
111
+ const resolved = {
112
+ hasReactImport: sourceFileHasModuleImport(sourceFile, (modulePath) => modulePath === "react" || modulePath.startsWith("react/")),
113
+ hasStorybookImport: sourceFileHasModuleImport(sourceFile, (modulePath) => modulePath.includes("storybook") || modulePath.includes("@stories")),
114
+ hasStyledImport: sourceFileHasModuleImport(sourceFile, (modulePath) => modulePath === "styled-components" ||
115
+ modulePath === "@emotion/styled" ||
116
+ modulePath.includes("styled"))
117
+ };
118
+ sourceSignalsCache.set(key, resolved);
119
+ return resolved;
120
+ };
121
+ const resources = new Map();
122
+ for (const sourceFile of program.getSourceFiles()) {
123
+ if (shouldIgnoreSourceFile(sourceFile, cwd)) {
124
+ continue;
119
125
  }
120
- }
121
- const unique = new Map();
122
- for (const component of components) {
123
- const key = component.name;
124
- const previous = unique.get(key);
125
- if (!previous) {
126
- unique.set(key, component);
126
+ const relativePath = normalizeSlashes(path_1.default.relative(cwd, sourceFile.fileName));
127
+ const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
128
+ if (!moduleSymbol) {
127
129
  continue;
128
130
  }
129
- const previousScore = Object.keys(previous.props).length + (previous.filePath.endsWith("/index.ts") ? 0 : 1);
130
- const candidateScore = Object.keys(component.props).length + (component.filePath.endsWith("/index.ts") ? 0 : 1);
131
- if (candidateScore > previousScore) {
132
- unique.set(key, component);
131
+ for (const exported of checker.getExportsOfModule(moduleSymbol)) {
132
+ const resolved = getExportSymbol(checker, sourceFile, exported);
133
+ if (!resolved) {
134
+ continue;
135
+ }
136
+ const declaration = resolved.symbol.valueDeclaration ?? resolved.symbol.declarations?.[0];
137
+ if (!declaration) {
138
+ continue;
139
+ }
140
+ const declarationFile = declaration.getSourceFile();
141
+ if (shouldIgnoreSourceFile(declarationFile, cwd)) {
142
+ continue;
143
+ }
144
+ const declarationSourceSignals = resolveSourceSignals(declarationFile);
145
+ const declarationFilePath = normalizeSlashes(path_1.default.relative(cwd, declarationFile.fileName));
146
+ const name = resolved.symbol.getName();
147
+ const signals = {
148
+ name,
149
+ filePath: declarationFilePath,
150
+ isPublicExport: true,
151
+ hasReactImport: declarationSourceSignals.hasReactImport,
152
+ hasJsx: hasJsxInDeclaration(declaration),
153
+ hasCreateContextCall: hasCreateContextCall(declaration),
154
+ hasStyledImport: declarationSourceSignals.hasStyledImport,
155
+ hasStyledCall: hasStyledCall(declaration),
156
+ hasStorybookImport: declarationSourceSignals.hasStorybookImport,
157
+ extension: path_1.default.extname(declarationFilePath)
158
+ };
159
+ const classification = (0, semantic_resource_classifier_1.classifyResource)(signals, policy);
160
+ const candidate = {
161
+ name,
162
+ filePath: declarationFilePath,
163
+ importName: resolved.importName,
164
+ packageName,
165
+ classification
166
+ };
167
+ const key = keyForDiscoveredResource(candidate);
168
+ const previous = resources.get(key);
169
+ if (!previous || candidate.classification.confidence > previous.classification.confidence) {
170
+ resources.set(key, candidate);
171
+ }
133
172
  }
134
173
  }
135
- return [...unique.values()].sort((a, b) => a.name.localeCompare(b.name));
174
+ return [...resources.values()].sort((a, b) => {
175
+ const byFile = a.filePath.localeCompare(b.filePath);
176
+ if (byFile !== 0) {
177
+ return byFile;
178
+ }
179
+ return a.name.localeCompare(b.name);
180
+ });
181
+ }
182
+ async function extractTypeScriptComponents(cwd, packageName, options = {}) {
183
+ const resources = await discoverTypeScriptResources(cwd, packageName, options);
184
+ return resources
185
+ .filter((resource) => resource.classification.generateDescriptor)
186
+ .map((resource) => ({
187
+ name: resource.name,
188
+ filePath: resource.filePath,
189
+ importName: resource.importName,
190
+ packageName: resource.packageName,
191
+ props: {}
192
+ }))
193
+ .sort((a, b) => a.name.localeCompare(b.name));
136
194
  }
137
195
  //# sourceMappingURL=typescript-extractor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript-extractor.js","sourceRoot":"","sources":["../../../src/implementation/resource-discovery/typescript-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript-extractor.js","sourceRoot":"","sources":["../../../src/implementation/resource-discovery/typescript-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ExtractedComponentFact, ExtractedProp, PublicComponentApi } from "../contracts/resource";
2
+ import { type TypeScriptAnalysis } from "./typescript-analysis";
3
+ type ExtractedPublicApiFact = {
4
+ name: string;
5
+ filePath: string;
6
+ api: PublicComponentApi;
7
+ props: Record<string, ExtractedProp>;
8
+ };
9
+ export declare function extractTypeScriptPublicApi(cwd: string, components: ExtractedComponentFact[], analysis?: TypeScriptAnalysis): Promise<Map<string, ExtractedPublicApiFact>>;
10
+ export declare function getComponentPublicApiKey(component: Pick<ExtractedComponentFact, "filePath" | "name">): string;
11
+ export {};