@mimir-labs/core 0.3.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 (74) hide show
  1. package/README.md +16 -4
  2. package/dist/implementation/authoring/mimir-descriptor-loader.d.ts +2 -0
  3. package/dist/implementation/authoring/mimir-descriptor-loader.js +7 -0
  4. package/dist/implementation/authoring/mimir-descriptor-loader.js.map +1 -0
  5. package/dist/implementation/contracts/descriptor.d.ts +33 -0
  6. package/dist/implementation/contracts/descriptor.js +3 -0
  7. package/dist/implementation/contracts/descriptor.js.map +1 -0
  8. package/dist/implementation/contracts/resource.d.ts +109 -0
  9. package/dist/implementation/contracts/resource.js +3 -0
  10. package/dist/implementation/contracts/resource.js.map +1 -0
  11. package/dist/implementation/descriptors/descriptor-discovery.d.ts +2 -0
  12. package/dist/implementation/descriptors/descriptor-discovery.js +47 -0
  13. package/dist/implementation/descriptors/descriptor-discovery.js.map +1 -0
  14. package/dist/implementation/descriptors/descriptor-repository.d.ts +2 -0
  15. package/dist/implementation/descriptors/descriptor-repository.js +175 -0
  16. package/dist/implementation/descriptors/descriptor-repository.js.map +1 -0
  17. package/dist/implementation/generation/generate-service.d.ts +5 -0
  18. package/dist/implementation/generation/generate-service.js +77 -57
  19. package/dist/implementation/generation/generate-service.js.map +1 -1
  20. package/dist/implementation/generation/provenance/provenance-builder.d.ts +0 -1
  21. package/dist/implementation/generation/provenance/provenance-builder.js +0 -8
  22. package/dist/implementation/generation/provenance/provenance-builder.js.map +1 -1
  23. package/dist/implementation/generation/types.d.ts +2 -19
  24. package/dist/implementation/generators/aps-generator.js +1 -1
  25. package/dist/implementation/generators/aps-generator.js.map +1 -1
  26. package/dist/implementation/io/fs.d.ts +1 -0
  27. package/dist/implementation/io/fs.js +13 -0
  28. package/dist/implementation/io/fs.js.map +1 -1
  29. package/dist/implementation/knowledge/knowledge-engine.d.ts +8 -0
  30. package/dist/implementation/knowledge/knowledge-engine.js +40 -0
  31. package/dist/implementation/knowledge/knowledge-engine.js.map +1 -0
  32. package/dist/implementation/knowledge/knowledge-graph.d.ts +12 -0
  33. package/dist/implementation/knowledge/knowledge-graph.js +34 -0
  34. package/dist/implementation/knowledge/knowledge-graph.js.map +1 -0
  35. package/dist/implementation/knowledge/model.d.ts +44 -0
  36. package/dist/implementation/knowledge/model.js +3 -0
  37. package/dist/implementation/knowledge/model.js.map +1 -0
  38. package/dist/implementation/knowledge/persistence-policy.d.ts +21 -0
  39. package/dist/implementation/knowledge/persistence-policy.js +51 -0
  40. package/dist/implementation/knowledge/persistence-policy.js.map +1 -0
  41. package/dist/implementation/knowledge/providers.d.ts +36 -0
  42. package/dist/implementation/knowledge/providers.js +150 -0
  43. package/dist/implementation/knowledge/providers.js.map +1 -0
  44. package/dist/implementation/resource-discovery/design-token-extractor.d.ts +3 -0
  45. package/dist/implementation/resource-discovery/design-token-extractor.js +78 -0
  46. package/dist/implementation/resource-discovery/design-token-extractor.js.map +1 -0
  47. package/dist/implementation/resource-discovery/react-pattern-extractor.d.ts +3 -0
  48. package/dist/implementation/resource-discovery/react-pattern-extractor.js +49 -0
  49. package/dist/implementation/resource-discovery/react-pattern-extractor.js.map +1 -0
  50. package/dist/implementation/resource-discovery/relationship-extractor.d.ts +3 -0
  51. package/dist/implementation/resource-discovery/relationship-extractor.js +80 -0
  52. package/dist/implementation/resource-discovery/relationship-extractor.js.map +1 -0
  53. package/dist/implementation/resource-discovery/semantic-resource-classifier.d.ts +23 -0
  54. package/dist/implementation/resource-discovery/semantic-resource-classifier.js +267 -0
  55. package/dist/implementation/resource-discovery/semantic-resource-classifier.js.map +1 -0
  56. package/dist/implementation/resource-discovery/storybook-extractor.d.ts +3 -0
  57. package/dist/implementation/resource-discovery/storybook-extractor.js +102 -0
  58. package/dist/implementation/resource-discovery/storybook-extractor.js.map +1 -0
  59. package/dist/implementation/resource-discovery/typescript-analysis.d.ts +7 -0
  60. package/dist/implementation/resource-discovery/typescript-analysis.js +42 -0
  61. package/dist/implementation/resource-discovery/typescript-analysis.js.map +1 -0
  62. package/dist/implementation/resource-discovery/typescript-extractor.d.ts +8 -0
  63. package/dist/implementation/resource-discovery/typescript-extractor.js +195 -0
  64. package/dist/implementation/resource-discovery/typescript-extractor.js.map +1 -0
  65. package/dist/implementation/resource-discovery/typescript-public-api-extractor.d.ts +11 -0
  66. package/dist/implementation/resource-discovery/typescript-public-api-extractor.js +439 -0
  67. package/dist/implementation/resource-discovery/typescript-public-api-extractor.js.map +1 -0
  68. package/dist/implementation/resource-identity.d.ts +1 -0
  69. package/dist/implementation/resource-identity.js +7 -0
  70. package/dist/implementation/resource-identity.js.map +1 -1
  71. package/dist/implementation/services/authoring-service.d.ts +9 -0
  72. package/dist/implementation/services/authoring-service.js +335 -32
  73. package/dist/implementation/services/authoring-service.js.map +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractStorybookFacts = extractStorybookFacts;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const typescript_1 = __importDefault(require("typescript"));
9
+ const typescript_analysis_1 = require("./typescript-analysis");
10
+ function normalize(value) { return value.split(node_path_1.default.sep).join("/"); }
11
+ function staticValue(node) {
12
+ if (typescript_1.default.isStringLiteral(node) || typescript_1.default.isNoSubstitutionTemplateLiteral(node))
13
+ return node.text;
14
+ if (typescript_1.default.isNumericLiteral(node))
15
+ return Number(node.text);
16
+ if (node.kind === typescript_1.default.SyntaxKind.TrueKeyword)
17
+ return true;
18
+ if (node.kind === typescript_1.default.SyntaxKind.FalseKeyword)
19
+ return false;
20
+ if (node.kind === typescript_1.default.SyntaxKind.NullKeyword)
21
+ return null;
22
+ if (typescript_1.default.isArrayLiteralExpression(node)) {
23
+ const values = node.elements.map((item) => typescript_1.default.isExpression(item) ? staticValue(item) : undefined);
24
+ return values.every((item) => item !== undefined) ? values : undefined;
25
+ }
26
+ if (typescript_1.default.isObjectLiteralExpression(node)) {
27
+ const value = {};
28
+ for (const property of node.properties) {
29
+ if (!typescript_1.default.isPropertyAssignment(property))
30
+ continue;
31
+ const child = staticValue(property.initializer);
32
+ if (child !== undefined)
33
+ value[property.name.getText().replace(/^['"]|['"]$/g, "")] = child;
34
+ }
35
+ return value;
36
+ }
37
+ return undefined;
38
+ }
39
+ function property(object, name) {
40
+ return object.properties.find((item) => typescript_1.default.isPropertyAssignment(item) && item.name.getText().replace(/^['"]|['"]$/g, "") === name);
41
+ }
42
+ async function extractStorybookFacts(input) {
43
+ const analysis = typeof input === "string" ? await (0, typescript_analysis_1.createTypeScriptAnalysis)(input) : input;
44
+ const facts = { variantsByComponent: {}, storyFilesByComponent: {}, examplesByComponent: {} };
45
+ for (const sourceFile of analysis.program.getSourceFiles()) {
46
+ if (sourceFile.isDeclarationFile || !sourceFile.fileName.includes(".stories."))
47
+ continue;
48
+ let componentName;
49
+ const objects = new Map();
50
+ for (const statement of sourceFile.statements) {
51
+ if (!typescript_1.default.isVariableStatement(statement))
52
+ continue;
53
+ for (const declaration of statement.declarationList.declarations) {
54
+ if (typescript_1.default.isIdentifier(declaration.name) && declaration.initializer && typescript_1.default.isObjectLiteralExpression(declaration.initializer)) {
55
+ objects.set(declaration.name.text, declaration.initializer);
56
+ }
57
+ }
58
+ }
59
+ for (const statement of sourceFile.statements) {
60
+ if (!typescript_1.default.isExportAssignment(statement))
61
+ continue;
62
+ const meta = typescript_1.default.isObjectLiteralExpression(statement.expression)
63
+ ? statement.expression
64
+ : typescript_1.default.isIdentifier(statement.expression) ? objects.get(statement.expression.text) : undefined;
65
+ if (!meta)
66
+ continue;
67
+ const component = property(meta, "component")?.initializer;
68
+ if (component && typescript_1.default.isIdentifier(component))
69
+ componentName = component.text;
70
+ }
71
+ if (!componentName)
72
+ continue;
73
+ const file = normalize(node_path_1.default.relative(analysis.cwd, sourceFile.fileName));
74
+ const variants = [];
75
+ const examples = [];
76
+ for (const statement of sourceFile.statements) {
77
+ if (!typescript_1.default.isVariableStatement(statement) || !statement.modifiers?.some((item) => item.kind === typescript_1.default.SyntaxKind.ExportKeyword))
78
+ continue;
79
+ for (const declaration of statement.declarationList.declarations) {
80
+ if (!typescript_1.default.isIdentifier(declaration.name))
81
+ continue;
82
+ const name = declaration.name.text;
83
+ variants.push(name);
84
+ const object = declaration.initializer && typescript_1.default.isObjectLiteralExpression(declaration.initializer) ? declaration.initializer : undefined;
85
+ const argsValue = object && property(object, "args")?.initializer;
86
+ const decoratorsValue = object && property(object, "decorators")?.initializer;
87
+ const args = argsValue && staticValue(argsValue);
88
+ examples.push({
89
+ name, source: { file }, story: name,
90
+ ...(args && typeof args === "object" && !Array.isArray(args) ? { args } : {}),
91
+ ...(decoratorsValue && typescript_1.default.isArrayLiteralExpression(decoratorsValue) ? { decorators: decoratorsValue.elements.map((item) => item.getText(sourceFile)) } : {}),
92
+ ...(object && property(object, "play") ? { play: true } : {})
93
+ });
94
+ }
95
+ }
96
+ facts.variantsByComponent[componentName] = [...new Set([...(facts.variantsByComponent[componentName] ?? []), ...variants])].sort();
97
+ facts.storyFilesByComponent[componentName] = [...new Set([...(facts.storyFilesByComponent[componentName] ?? []), file])].sort();
98
+ facts.examplesByComponent[componentName] = [...(facts.examplesByComponent[componentName] ?? []), ...examples];
99
+ }
100
+ return facts;
101
+ }
102
+ //# sourceMappingURL=storybook-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storybook-extractor.js","sourceRoot":"","sources":["../../../src/implementation/resource-discovery/storybook-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import ts from "typescript";
2
+ export type TypeScriptAnalysis = {
3
+ cwd: string;
4
+ program: ts.Program;
5
+ checker: ts.TypeChecker;
6
+ };
7
+ export declare function createTypeScriptAnalysis(cwd: string): Promise<TypeScriptAnalysis>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createTypeScriptAnalysis = createTypeScriptAnalysis;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const promises_1 = require("node:fs/promises");
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ const TS_EXTENSIONS = new Set([".ts", ".tsx"]);
11
+ async function collectFiles(dir) {
12
+ const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
13
+ const files = [];
14
+ for (const entry of entries) {
15
+ const absolutePath = node_path_1.default.join(dir, entry.name);
16
+ if (entry.isDirectory()) {
17
+ if (entry.name === "node_modules" || entry.name === "dist" || entry.name.startsWith("."))
18
+ continue;
19
+ files.push(...(await collectFiles(absolutePath)));
20
+ }
21
+ else if (entry.isFile() && TS_EXTENSIONS.has(node_path_1.default.extname(entry.name))) {
22
+ files.push(absolutePath);
23
+ }
24
+ }
25
+ return files;
26
+ }
27
+ async function createTypeScriptAnalysis(cwd) {
28
+ const files = await collectFiles(cwd);
29
+ const program = typescript_1.default.createProgram(files, {
30
+ target: typescript_1.default.ScriptTarget.ES2022,
31
+ module: typescript_1.default.ModuleKind.CommonJS,
32
+ moduleResolution: typescript_1.default.ModuleResolutionKind.NodeJs,
33
+ strict: true,
34
+ jsx: typescript_1.default.JsxEmit.ReactJSX,
35
+ skipLibCheck: true,
36
+ esModuleInterop: true,
37
+ allowSyntheticDefaultImports: true,
38
+ resolveJsonModule: true
39
+ });
40
+ return { cwd, program, checker: program.getTypeChecker() };
41
+ }
42
+ //# sourceMappingURL=typescript-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-analysis.js","sourceRoot":"","sources":["../../../src/implementation/resource-discovery/typescript-analysis.ts"],"names":[],"mappings":";;;;;AA2BA,4DAcC;AAzCD,0DAA6B;AAC7B,+CAA2C;AAC3C,4DAA4B;AAE5B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAQ/C,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACnG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,mBAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACxD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,oBAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM;QAC9B,MAAM,EAAE,oBAAE,CAAC,UAAU,CAAC,QAAQ;QAC9B,gBAAgB,EAAE,oBAAE,CAAC,oBAAoB,CAAC,MAAM;QAChD,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,oBAAE,CAAC,OAAO,CAAC,QAAQ;QACxB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,4BAA4B,EAAE,IAAI;QAClC,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DiscoveredResourceFact, ExtractedComponentFact, SemanticResourceKind } from "../contracts/resource";
2
+ import { type TypeScriptAnalysis } from "./typescript-analysis";
3
+ export type TypeScriptResourceDiscoveryOptions = {
4
+ includeKinds?: SemanticResourceKind[];
5
+ excludeKinds?: SemanticResourceKind[];
6
+ };
7
+ export declare function discoverTypeScriptResources(cwd: string, packageName: string, options?: TypeScriptResourceDiscoveryOptions, analysis?: TypeScriptAnalysis): Promise<DiscoveredResourceFact[]>;
8
+ export declare function extractTypeScriptComponents(cwd: string, packageName: string, options?: TypeScriptResourceDiscoveryOptions): Promise<ExtractedComponentFact[]>;
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.discoverTypeScriptResources = discoverTypeScriptResources;
7
+ exports.extractTypeScriptComponents = extractTypeScriptComponents;
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");
12
+ function normalizeSlashes(value) {
13
+ return value.split(path_1.default.sep).join("/");
14
+ }
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)) {
18
+ continue;
19
+ }
20
+ const modulePath = statement.moduleSpecifier.text;
21
+ if (predicate(modulePath)) {
22
+ return true;
23
+ }
24
+ }
25
+ return false;
26
+ }
27
+ function declarationContainsSignal(declaration, predicate) {
28
+ let found = false;
29
+ const visit = (node) => {
30
+ if (found) {
31
+ return;
32
+ }
33
+ if (predicate(node)) {
34
+ found = true;
35
+ return;
36
+ }
37
+ typescript_1.default.forEachChild(node, visit);
38
+ };
39
+ visit(declaration);
40
+ return found;
41
+ }
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;
60
+ }
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
76
+ };
77
+ }
78
+ const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
79
+ if (!moduleSymbol) {
80
+ return null;
81
+ }
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;
93
+ }
94
+ const relative = normalizeSlashes(path_1.default.relative(cwd, sourceFile.fileName));
95
+ return relative.startsWith("../") || relative === "..";
96
+ }
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;
110
+ }
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;
125
+ }
126
+ const relativePath = normalizeSlashes(path_1.default.relative(cwd, sourceFile.fileName));
127
+ const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
128
+ if (!moduleSymbol) {
129
+ continue;
130
+ }
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
+ }
172
+ }
173
+ }
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));
194
+ }
195
+ //# sourceMappingURL=typescript-extractor.js.map
@@ -0,0 +1 @@
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 {};