@proteinjs/reflection-build 1.2.0 → 1.3.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 (63) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/src/build.js +30 -15
  3. package/dist/src/build.js.map +1 -1
  4. package/dist/src/codegen/writeGeneratedIndex.d.ts +7 -1
  5. package/dist/src/codegen/writeGeneratedIndex.js +13 -5
  6. package/dist/src/codegen/writeGeneratedIndex.js.map +1 -1
  7. package/dist/src/parser/createSourceGraph.d.ts +1 -1
  8. package/dist/src/parser/createSourceGraph.js +36 -22
  9. package/dist/src/parser/createSourceGraph.js.map +1 -1
  10. package/package.json +4 -4
  11. package/src/build.ts +45 -14
  12. package/src/codegen/writeGeneratedIndex.ts +23 -4
  13. package/src/parser/createSourceGraph.ts +21 -12
  14. package/test/examples/source-repository/a/dist/build.js +30 -15
  15. package/test/examples/source-repository/a/dist/build.js.map +1 -1
  16. package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.d.ts +7 -1
  17. package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js +13 -5
  18. package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js.map +1 -1
  19. package/test/examples/source-repository/a/dist/parser/createSourceGraph.d.ts +1 -1
  20. package/test/examples/source-repository/a/dist/parser/createSourceGraph.js +36 -22
  21. package/test/examples/source-repository/a/dist/parser/createSourceGraph.js.map +1 -1
  22. package/test/examples/source-repository/a/node_modules/.package-lock.json +6 -6
  23. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/CHANGELOG.md +13 -0
  24. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.d.ts +23 -0
  25. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js +67 -0
  26. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
  27. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.d.ts +297 -10
  28. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.js +349 -112
  29. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.js.map +1 -1
  30. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.d.ts +10 -1
  31. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.js +91 -48
  32. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.js.map +1 -1
  33. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/package.json +2 -2
  34. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/Fs.ts +75 -0
  35. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/GitUtil.ts +248 -110
  36. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/cmd.ts +84 -59
  37. package/test/examples/source-repository/a/package-lock.json +8 -8
  38. package/test/examples/source-repository/a/package.json +2 -2
  39. package/test/examples/source-repository/b/dist/build.js +30 -15
  40. package/test/examples/source-repository/b/dist/build.js.map +1 -1
  41. package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.d.ts +7 -1
  42. package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js +13 -5
  43. package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js.map +1 -1
  44. package/test/examples/source-repository/b/dist/parser/createSourceGraph.d.ts +1 -1
  45. package/test/examples/source-repository/b/dist/parser/createSourceGraph.js +36 -22
  46. package/test/examples/source-repository/b/dist/parser/createSourceGraph.js.map +1 -1
  47. package/test/examples/source-repository/b/node_modules/.package-lock.json +4 -4
  48. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/CHANGELOG.md +13 -0
  49. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.d.ts +23 -0
  50. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js +67 -0
  51. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
  52. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.d.ts +297 -10
  53. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.js +349 -112
  54. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.js.map +1 -1
  55. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.d.ts +10 -1
  56. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.js +91 -48
  57. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.js.map +1 -1
  58. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/package.json +2 -2
  59. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/Fs.ts +75 -0
  60. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/GitUtil.ts +248 -110
  61. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/cmd.ts +84 -59
  62. package/test/examples/source-repository/b/package-lock.json +6 -6
  63. package/test/examples/source-repository/b/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.3.0](https://github.com/proteinjs/reflection/compare/@proteinjs/reflection-build@1.2.1...@proteinjs/reflection-build@1.3.0) (2025-11-08)
7
+
8
+
9
+ ### Features
10
+
11
+ * `relfection-build` now supports `REFLECTION_SOURCE_DIRS` and `REFLECTION_DIST_DIR` env vars. ([#3](https://github.com/proteinjs/reflection/issues/3)) ([95d6836](https://github.com/proteinjs/reflection/commit/95d68364859e8526f2218cfeda85c23ade9a210f))
12
+
13
+
14
+
15
+
16
+
6
17
  # [1.2.0](https://github.com/proteinjs/reflection/compare/@proteinjs/reflection-build@1.1.1...@proteinjs/reflection-build@1.2.0) (2025-06-03)
7
18
 
8
19
 
package/dist/src/build.js CHANGED
@@ -69,7 +69,7 @@ function build() {
69
69
  // TODO save their index location in package.json and pass it in to writeGeneratedIndex above
70
70
  function updatePackageJson() {
71
71
  return __awaiter(this, void 0, void 0, function () {
72
- var targetDirPackageJson, targetPackageJson, originalPackageJsonString, targetDirDist, targetDirDistGenerated, generatedIndexJs, generatedIndexDts, updatedPackageJsonString;
72
+ var targetDirPackageJson, targetPackageJson, originalPackageJsonString, isProd, targetDirDist, relGenPath, targetDirDistGenerated, generatedIndexJs, generatedIndexDts, updatedPackageJsonString;
73
73
  return __generator(this, function (_a) {
74
74
  switch (_a.label) {
75
75
  case 0:
@@ -81,15 +81,21 @@ function build() {
81
81
  }
82
82
  targetPackageJson = require(targetDirPackageJson);
83
83
  originalPackageJsonString = JSON.stringify(targetPackageJson, null, 2);
84
- targetDirDist = path.join(targetDir, 'dist');
85
- targetDirDistGenerated = path.join(targetDirDist, 'generated');
86
- generatedIndexJs = path.join(targetDirDistGenerated, 'index.js');
87
- generatedIndexDts = path.join(targetDirDistGenerated, 'index.d.ts');
88
- targetPackageJson.main = "./".concat(path.relative(targetDir, generatedIndexJs));
89
- targetPackageJson.types = "./".concat(path.relative(targetDir, generatedIndexDts));
84
+ isProd = primaryRoot === 'src';
85
+ if (isProd) {
86
+ targetDirDist = path.join(targetDir, distDirRel);
87
+ relGenPath = primaryRoot === 'src'
88
+ ? path.relative(targetDir, path.join(targetDir, 'generated'))
89
+ : path.relative(targetDir, path.join(targetDir, 'generated', primaryRoot));
90
+ targetDirDistGenerated = path.join(targetDirDist, relGenPath);
91
+ generatedIndexJs = path.join(targetDirDistGenerated, 'index.js');
92
+ generatedIndexDts = path.join(targetDirDistGenerated, 'index.d.ts');
93
+ targetPackageJson.main = "./".concat(path.relative(targetDir, generatedIndexJs));
94
+ targetPackageJson.types = "./".concat(path.relative(targetDir, generatedIndexDts));
95
+ }
90
96
  updatedPackageJsonString = JSON.stringify(targetPackageJson, null, 2);
91
97
  if (!(originalPackageJsonString !== updatedPackageJsonString)) return [3 /*break*/, 3];
92
- return [4 /*yield*/, util_node_1.promisifiedFs.writeFile(targetDirPackageJson, JSON.stringify(targetPackageJson, null, 2))];
98
+ return [4 /*yield*/, util_node_1.promisifiedFs.writeFile(targetDirPackageJson, updatedPackageJsonString)];
93
99
  case 2:
94
100
  _a.sent();
95
101
  _a.label = 3;
@@ -100,16 +106,16 @@ function build() {
100
106
  }
101
107
  function writeTsconfig() {
102
108
  return __awaiter(this, void 0, void 0, function () {
103
- var existingTsconfig, generatedTsconfig;
109
+ var existingTsconfig, includePath, generatedTsconfig;
104
110
  return __generator(this, function (_a) {
105
111
  switch (_a.label) {
106
112
  case 0: return [4 /*yield*/, util_node_1.promisifiedFs.exists(targetDirTsconfig)];
107
113
  case 1:
108
114
  if (!_a.sent()) return [3 /*break*/, 4];
109
115
  existingTsconfig = require(targetDirTsconfig);
110
- if (!(existingTsconfig.include &&
111
- !existingTsconfig.include.includes("./".concat(path.relative(targetDir, generatedIndex))))) return [3 /*break*/, 3];
112
- existingTsconfig.include.push("./".concat(path.relative(targetDir, generatedIndex)));
116
+ includePath = "./".concat(path.relative(targetDir, generatedIndex));
117
+ if (!(existingTsconfig.include && !existingTsconfig.include.includes(includePath))) return [3 /*break*/, 3];
118
+ existingTsconfig.include.push(includePath);
113
119
  return [4 /*yield*/, util_node_1.promisifiedFs.writeFile(targetDirTsconfig, JSON.stringify(existingTsconfig, null, 4))];
114
120
  case 2:
115
121
  _a.sent();
@@ -127,13 +133,22 @@ function build() {
127
133
  });
128
134
  });
129
135
  }
130
- var targetDir, targetDirTsconfig, targetDirGenerated, generatedIndex;
136
+ var targetDir, targetDirTsconfig, sourceRootsRaw, sourceRoots, primaryRoot, distDirRel, targetDirGenerated, generatedIndex;
131
137
  return __generator(this, function (_a) {
132
138
  switch (_a.label) {
133
139
  case 0:
134
140
  targetDir = process.env.INIT_CWD;
135
141
  targetDirTsconfig = path.join(targetDir, 'tsconfig.json');
136
- targetDirGenerated = path.join(targetDir, 'generated');
142
+ sourceRootsRaw = (process.env.REFLECTION_SOURCE_DIRS || '')
143
+ .split(',')
144
+ .map(function (s) { return s.trim(); })
145
+ .filter(Boolean);
146
+ sourceRoots = sourceRootsRaw.length > 0 ? sourceRootsRaw : ['src'];
147
+ primaryRoot = sourceRoots[0];
148
+ distDirRel = process.env.REFLECTION_DIST_DIR || 'dist';
149
+ targetDirGenerated = primaryRoot && primaryRoot !== 'src'
150
+ ? path.join(targetDir, 'generated', primaryRoot)
151
+ : path.join(targetDir, 'generated');
137
152
  generatedIndex = path.join(targetDirGenerated, 'index.ts');
138
153
  return [4 /*yield*/, updatePackageJson()];
139
154
  case 1:
@@ -141,7 +156,7 @@ function build() {
141
156
  return [4 /*yield*/, writeTsconfig()];
142
157
  case 2:
143
158
  _a.sent();
144
- return [4 /*yield*/, (0, writeGeneratedIndex_1.writeGeneratedIndex)(targetDir, targetDirGenerated, generatedIndex)];
159
+ return [4 /*yield*/, (0, writeGeneratedIndex_1.writeGeneratedIndex)(targetDir, targetDirGenerated, generatedIndex, sourceRoots)];
145
160
  case 3:
146
161
  _a.sent();
147
162
  return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1,7 @@
1
- export declare function writeGeneratedIndex(packageDir: string, packageGeneratedDir: string, generatedIndexPath: string): Promise<void>;
1
+ /**
2
+ * @param packageDir Root of the package (contains package.json)
3
+ * @param packageGeneratedDir Directory where generated/index.ts will be written
4
+ * @param generatedIndexPath Full path to generated/index.ts
5
+ * @param sourceRootRel Optional relative directories to scan (e.g. "test"); defaults to "src"
6
+ */
7
+ export declare function writeGeneratedIndex(packageDir: string, packageGeneratedDir: string, generatedIndexPath: string, sourceRootsRel?: string | string[]): Promise<void>;
@@ -69,7 +69,14 @@ var util_1 = require("@proteinjs/util");
69
69
  var jsesc_1 = __importDefault(require("jsesc"));
70
70
  var createSourceGraph_1 = require("../parser/createSourceGraph");
71
71
  var reflection_1 = require("@proteinjs/reflection");
72
- function writeGeneratedIndex(packageDir, packageGeneratedDir, generatedIndexPath) {
72
+ /**
73
+ * @param packageDir Root of the package (contains package.json)
74
+ * @param packageGeneratedDir Directory where generated/index.ts will be written
75
+ * @param generatedIndexPath Full path to generated/index.ts
76
+ * @param sourceRootRel Optional relative directories to scan (e.g. "test"); defaults to "src"
77
+ */
78
+ function writeGeneratedIndex(packageDir, packageGeneratedDir, generatedIndexPath, sourceRootsRel) {
79
+ if (sourceRootsRel === void 0) { sourceRootsRel = 'src'; }
73
80
  return __awaiter(this, void 0, void 0, function () {
74
81
  var packageIndexPath, generatedIndex;
75
82
  return __generator(this, function (_a) {
@@ -89,7 +96,7 @@ function writeGeneratedIndex(packageDir, packageGeneratedDir, generatedIndexPath
89
96
  case 3: return [4 /*yield*/, util_node_1.promisifiedFs.mkdir(packageGeneratedDir, { recursive: true })];
90
97
  case 4:
91
98
  _a.sent();
92
- return [4 /*yield*/, sourceRepositoryLoader(packageDir, generatedIndexPath)];
99
+ return [4 /*yield*/, sourceRepositoryLoader(packageDir, generatedIndexPath, sourceRootsRel)];
93
100
  case 5:
94
101
  generatedIndex = _a.sent();
95
102
  generatedIndex += "\n\n\nexport * from '".concat(path.relative(packageGeneratedDir, packageDir), "/index';");
@@ -102,16 +109,17 @@ function writeGeneratedIndex(packageDir, packageGeneratedDir, generatedIndexPath
102
109
  });
103
110
  }
104
111
  exports.writeGeneratedIndex = writeGeneratedIndex;
105
- function sourceRepositoryLoader(packageDir, generatedIndexPath) {
112
+ function sourceRepositoryLoader(packageDir, generatedIndexPath, sourceRootsRel) {
106
113
  return __awaiter(this, void 0, void 0, function () {
107
- var packageJson, code, sourceGraph;
114
+ var packageJson, code, roots, sourceGraph;
108
115
  return __generator(this, function (_a) {
109
116
  switch (_a.label) {
110
117
  case 0: return [4 /*yield*/, getPackageJson(packageDir)];
111
118
  case 1:
112
119
  packageJson = _a.sent();
113
120
  code = loadDependencySourceGraphs(packageDir, packageJson);
114
- return [4 /*yield*/, (0, createSourceGraph_1.createSourceGraph)(packageDir)];
121
+ roots = Array.isArray(sourceRootsRel) ? sourceRootsRel : [sourceRootsRel];
122
+ return [4 /*yield*/, (0, createSourceGraph_1.createSourceGraph)(packageDir, [], roots)];
115
123
  case 2:
116
124
  sourceGraph = _a.sent();
117
125
  code += generateSourceGraph(sourceGraph, packageJson.name);
@@ -1 +1 @@
1
- {"version":3,"file":"writeGeneratedIndex.js","sourceRoot":"","sources":["../../../src/codegen/writeGeneratedIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeGeneratedIndex.js","sourceRoot":"","sources":["../../../src/codegen/writeGeneratedIndex.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import * as graphlib from '@dagrejs/graphlib';
2
- export declare function createSourceGraph(dir: string, excludedDirs?: string[]): Promise<graphlib.Graph>;
2
+ export declare function createSourceGraph(dir: string, excludedDirs?: string[], sourceRootsRel?: string | string[]): Promise<graphlib.Graph>;
@@ -58,6 +58,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
58
58
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
59
  }
60
60
  };
61
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
62
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
63
+ if (ar || !(i in from)) {
64
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
65
+ ar[i] = from[i];
66
+ }
67
+ }
68
+ return to.concat(ar || Array.prototype.slice.call(from));
69
+ };
61
70
  var __importDefault = (this && this.__importDefault) || function (mod) {
62
71
  return (mod && mod.__esModule) ? mod : { "default": mod };
63
72
  };
@@ -69,48 +78,53 @@ var path = __importStar(require("path"));
69
78
  var typescript_parser_1 = require("../../modules/typescript-parser");
70
79
  var util_node_1 = require("@proteinjs/util-node");
71
80
  var createGraphBuilder_1 = require("./createGraphBuilder");
72
- function createSourceGraph(dir, excludedDirs) {
81
+ function createSourceGraph(dir, excludedDirs, sourceRootsRel) {
73
82
  if (excludedDirs === void 0) { excludedDirs = []; }
83
+ if (sourceRootsRel === void 0) { sourceRootsRel = 'src'; }
74
84
  return __awaiter(this, void 0, void 0, function () {
75
- var packageJsonPath, packageJson, sourceFilePaths, graph, addSourceFile, parser, _i, sourceFilePaths_1, sourceFilePath, sourceFile;
76
- return __generator(this, function (_a) {
77
- switch (_a.label) {
85
+ var packageJsonPath, packageJson, roots, patterns, _i, roots_1, rel, root, excludePatterns, sourceFilePaths, uniqueFilePaths, graph, addSourceFile, parser, _a, uniqueFilePaths_1, sourceFilePath, sourceFile;
86
+ return __generator(this, function (_b) {
87
+ switch (_b.label) {
78
88
  case 0:
79
89
  packageJsonPath = path.join(dir, 'package.json');
80
90
  return [4 /*yield*/, util_node_1.promisifiedFs.exists(packageJsonPath)];
81
91
  case 1:
82
- if (!(_a.sent())) {
92
+ if (!(_b.sent())) {
83
93
  throw new Error("Unable to find package.json in dir: ".concat(dir));
84
94
  }
85
95
  packageJson = require(packageJsonPath);
86
- return [4 /*yield*/, (0, globby_1.default)([path.join(dir, 'src/**/*.ts'), path.join(dir, 'src/**/*.tsx'), '!**/node_modules/**'].concat(excludedDirs.map(function (dir) { return "!".concat(dir); })))];
96
+ roots = Array.isArray(sourceRootsRel) ? sourceRootsRel : [sourceRootsRel];
97
+ patterns = [];
98
+ for (_i = 0, roots_1 = roots; _i < roots_1.length; _i++) {
99
+ rel = roots_1[_i];
100
+ root = path.join(dir, rel);
101
+ patterns.push(path.join(root, '**/*.ts'));
102
+ patterns.push(path.join(root, '**/*.tsx'));
103
+ }
104
+ excludePatterns = __spreadArray(['!**/node_modules/**', '!**/generated/**'], excludedDirs.map(function (d) { return "!".concat(d); }), true);
105
+ return [4 /*yield*/, (0, globby_1.default)(__spreadArray(__spreadArray([], patterns, true), excludePatterns, true))];
87
106
  case 2:
88
- sourceFilePaths = _a.sent();
107
+ sourceFilePaths = _b.sent();
108
+ uniqueFilePaths = Array.from(new Set(sourceFilePaths));
89
109
  graph = new graphlib.Graph();
90
110
  addSourceFile = (0, createGraphBuilder_1.createGraphBuilder)(graph, packageJson, dir);
91
111
  parser = new typescript_parser_1.TypescriptParser();
92
- _i = 0, sourceFilePaths_1 = sourceFilePaths;
93
- _a.label = 3;
112
+ _a = 0, uniqueFilePaths_1 = uniqueFilePaths;
113
+ _b.label = 3;
94
114
  case 3:
95
- if (!(_i < sourceFilePaths_1.length)) return [3 /*break*/, 7];
96
- sourceFilePath = sourceFilePaths_1[_i];
115
+ if (!(_a < uniqueFilePaths_1.length)) return [3 /*break*/, 7];
116
+ sourceFilePath = uniqueFilePaths_1[_a];
97
117
  return [4 /*yield*/, parser.parseFile(sourceFilePath, path.dirname(sourceFilePath))];
98
118
  case 4:
99
- sourceFile = _a.sent();
100
- // console.log(`File imports (${sourceFile.filePath}): ${JSON.stringify(sourceFile.imports, null, 2)}`);
119
+ sourceFile = _b.sent();
101
120
  return [4 /*yield*/, addSourceFile(sourceFile)];
102
121
  case 5:
103
- // console.log(`File imports (${sourceFile.filePath}): ${JSON.stringify(sourceFile.imports, null, 2)}`);
104
- _a.sent();
105
- _a.label = 6;
122
+ _b.sent();
123
+ _b.label = 6;
106
124
  case 6:
107
- _i++;
125
+ _a++;
108
126
  return [3 /*break*/, 3];
109
- case 7:
110
- // for (const node of graph.nodes()) {
111
- // console.log(JSON.stringify(graph.node(node), null, 2));
112
- // }
113
- return [2 /*return*/, graph];
127
+ case 7: return [2 /*return*/, graph];
114
128
  }
115
129
  });
116
130
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createSourceGraph.js","sourceRoot":"","sources":["../../../src/parser/createSourceGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA8C;AAC9C,kDAA4B;AAC5B,yCAA6B;AAC7B,qEAAmE;AACnE,kDAAqD;AACrD,2DAA0D;AAE1D,SAAsB,iBAAiB,CAAC,GAAW,EAAE,YAA2B;IAA3B,6BAAA,EAAA,iBAA2B;;;;;;oBACxE,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;oBACjD,qBAAM,yBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAA;;oBAAjD,IAAI,CAAC,CAAC,SAA2C,CAAC,EAAE;wBAClD,MAAM,IAAI,KAAK,CAAC,8CAAuC,GAAG,CAAE,CAAC,CAAC;qBAC/D;oBAEK,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;oBACrB,qBAAM,IAAA,gBAAM,EAClC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAC3F,YAAY,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,WAAI,GAAG,CAAE,EAAT,CAAS,CAAC,CACrC,CACF,EAAA;;oBAJK,eAAe,GAAG,SAIvB;oBACK,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC7B,aAAa,GAAG,IAAA,uCAAkB,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC5D,MAAM,GAAG,IAAI,oCAAgB,EAAE,CAAC;0BACM,EAAf,mCAAe;;;yBAAf,CAAA,6BAAe,CAAA;oBAAjC,cAAc;oBACJ,qBAAM,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAA;;oBAAjF,UAAU,GAAG,SAAoE;oBACvF,wGAAwG;oBACxG,qBAAM,aAAa,CAAC,UAAU,CAAC,EAAA;;oBAD/B,wGAAwG;oBACxG,SAA+B,CAAC;;;oBAHL,IAAe,CAAA;;;gBAM5C,sCAAsC;gBACtC,2DAA2D;gBAC3D,IAAI;gBAEJ,sBAAO,KAAK,EAAC;;;;CACd;AA1BD,8CA0BC"}
1
+ {"version":3,"file":"createSourceGraph.js","sourceRoot":"","sources":["../../../src/parser/createSourceGraph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA8C;AAC9C,kDAA4B;AAC5B,yCAA6B;AAC7B,qEAAmE;AACnE,kDAAqD;AACrD,2DAA0D;AAE1D,SAAsB,iBAAiB,CACrC,GAAW,EACX,YAA2B,EAC3B,cAAyC;IADzC,6BAAA,EAAA,iBAA2B;IAC3B,+BAAA,EAAA,sBAAyC;;;;;;oBAEnC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;oBACjD,qBAAM,yBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAA;;oBAAjD,IAAI,CAAC,CAAC,SAA2C,CAAC,EAAE;wBAClD,MAAM,IAAI,KAAK,CAAC,8CAAuC,GAAG,CAAE,CAAC,CAAC;qBAC/D;oBAEK,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;oBACvC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAE1E,QAAQ,GAAa,EAAE,CAAC;oBAC9B,WAAuB,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;wBAAd,GAAG;wBACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC1C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;qBAC5C;oBAEK,eAAe,kBAAI,qBAAqB,EAAE,kBAAkB,GAAK,YAAY,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,WAAI,CAAC,CAAE,EAAP,CAAO,CAAC,OAAC,CAAC;oBAEjF,qBAAM,IAAA,gBAAM,kCAAK,QAAQ,SAAK,eAAe,QAAE,EAAA;;oBAAjE,eAAe,GAAG,SAA+C;oBACjE,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;oBAEvD,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC7B,aAAa,GAAG,IAAA,uCAAkB,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC5D,MAAM,GAAG,IAAI,oCAAgB,EAAE,CAAC;0BAEM,EAAf,mCAAe;;;yBAAf,CAAA,6BAAe,CAAA;oBAAjC,cAAc;oBACJ,qBAAM,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAA;;oBAAjF,UAAU,GAAG,SAAoE;oBACvF,qBAAM,aAAa,CAAC,UAAU,CAAC,EAAA;;oBAA/B,SAA+B,CAAC;;;oBAFL,IAAe,CAAA;;wBAK5C,sBAAO,KAAK,EAAC;;;;CACd;AAnCD,8CAmCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/reflection-build",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Build system for reflection",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,14 +31,14 @@
31
31
  "@dagrejs/graphlib": "2.1.4",
32
32
  "@proteinjs/reflection": "^1.1.10",
33
33
  "@proteinjs/util": "1.5.0",
34
- "@proteinjs/util-node": "1.4.2",
34
+ "@proteinjs/util-node": "1.5.0",
35
35
  "globby": "11.0.1",
36
36
  "gulp": "4.0.2",
37
37
  "gulp-shell": "0.8.0",
38
38
  "jsesc": "^3.0.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@proteinjs/reflection-build-test-a": "^0.0.14",
41
+ "@proteinjs/reflection-build-test-a": "^0.0.15",
42
42
  "@types/graphlib": "2.1.6",
43
43
  "@types/gulp": "4.0.16",
44
44
  "@types/jest": "29.5.6",
@@ -53,5 +53,5 @@
53
53
  "ts-jest": "29.1.1",
54
54
  "typescript": "5.2.2"
55
55
  },
56
- "gitHead": "9c5e74039fd7624563bc7edb109d1ee1a7150b9e"
56
+ "gitHead": "37c02f922548511f3787a6d6b917727823d85820"
57
57
  }
package/src/build.ts CHANGED
@@ -6,11 +6,34 @@ import { writeGeneratedIndex } from './codegen/writeGeneratedIndex';
6
6
  export async function build() {
7
7
  const targetDir = process.env.INIT_CWD as string;
8
8
  const targetDirTsconfig = path.join(targetDir, 'tsconfig.json');
9
- const targetDirGenerated = path.join(targetDir, 'generated');
9
+
10
+ // Env is ONLY read here.
11
+ // Allow multiple comma-separated roots, e.g. "test,src" or "integration,examples,src".
12
+ // The first root is the primary source.
13
+ const sourceRootsRaw = (process.env.REFLECTION_SOURCE_DIRS || '')
14
+ .split(',')
15
+ .map((s) => s.trim())
16
+ .filter(Boolean);
17
+
18
+ // If not provided, default to ['src'] for prod builds.
19
+ const sourceRoots = sourceRootsRaw.length > 0 ? sourceRootsRaw : ['src'];
20
+ const primaryRoot = sourceRoots[0]; // first entry is authoritative
21
+
22
+ const distDirRel = process.env.REFLECTION_DIST_DIR || 'dist';
23
+
24
+ // Where to emit the generated index:
25
+ // - primary === 'src': ./generated/index.ts
26
+ // - otherwise: ./generated/<primary>/index.ts
27
+ const targetDirGenerated =
28
+ primaryRoot && primaryRoot !== 'src'
29
+ ? path.join(targetDir, 'generated', primaryRoot)
30
+ : path.join(targetDir, 'generated');
31
+
10
32
  const generatedIndex = path.join(targetDirGenerated, 'index.ts');
33
+
11
34
  await updatePackageJson();
12
35
  await writeTsconfig();
13
- await writeGeneratedIndex(targetDir, targetDirGenerated, generatedIndex);
36
+ await writeGeneratedIndex(targetDir, targetDirGenerated, generatedIndex, sourceRoots);
14
37
 
15
38
  // TODO save their index location in package.json and pass it in to writeGeneratedIndex above
16
39
  async function updatePackageJson() {
@@ -21,27 +44,35 @@ export async function build() {
21
44
 
22
45
  const targetPackageJson = require(targetDirPackageJson);
23
46
  const originalPackageJsonString = JSON.stringify(targetPackageJson, null, 2);
24
- const targetDirDist = path.join(targetDir, 'dist');
25
- const targetDirDistGenerated = path.join(targetDirDist, 'generated');
26
- const generatedIndexJs = path.join(targetDirDistGenerated, 'index.js');
27
- const generatedIndexDts = path.join(targetDirDistGenerated, 'index.d.ts');
28
- targetPackageJson.main = `./${path.relative(targetDir, generatedIndexJs)}`;
29
- targetPackageJson.types = `./${path.relative(targetDir, generatedIndexDts)}`;
47
+
48
+ // Only update main/types when primary root is 'src'. Prevents infinite toggle.
49
+ const isProd = primaryRoot === 'src';
50
+ if (isProd) {
51
+ const targetDirDist = path.join(targetDir, distDirRel);
52
+ const relGenPath =
53
+ primaryRoot === 'src'
54
+ ? path.relative(targetDir, path.join(targetDir, 'generated'))
55
+ : path.relative(targetDir, path.join(targetDir, 'generated', primaryRoot));
56
+
57
+ const targetDirDistGenerated = path.join(targetDirDist, relGenPath);
58
+ const generatedIndexJs = path.join(targetDirDistGenerated, 'index.js');
59
+ const generatedIndexDts = path.join(targetDirDistGenerated, 'index.d.ts');
60
+ targetPackageJson.main = `./${path.relative(targetDir, generatedIndexJs)}`;
61
+ targetPackageJson.types = `./${path.relative(targetDir, generatedIndexDts)}`;
62
+ }
30
63
 
31
64
  const updatedPackageJsonString = JSON.stringify(targetPackageJson, null, 2);
32
65
  if (originalPackageJsonString !== updatedPackageJsonString) {
33
- await promisifiedFs.writeFile(targetDirPackageJson, JSON.stringify(targetPackageJson, null, 2));
66
+ await promisifiedFs.writeFile(targetDirPackageJson, updatedPackageJsonString);
34
67
  }
35
68
  }
36
69
 
37
70
  async function writeTsconfig() {
38
71
  if (await promisifiedFs.exists(targetDirTsconfig)) {
39
72
  const existingTsconfig = require(targetDirTsconfig);
40
- if (
41
- existingTsconfig.include &&
42
- !existingTsconfig.include.includes(`./${path.relative(targetDir, generatedIndex)}`)
43
- ) {
44
- existingTsconfig.include.push(`./${path.relative(targetDir, generatedIndex)}`);
73
+ const includePath = `./${path.relative(targetDir, generatedIndex)}`;
74
+ if (existingTsconfig.include && !existingTsconfig.include.includes(includePath)) {
75
+ existingTsconfig.include.push(includePath);
45
76
  await promisifiedFs.writeFile(targetDirTsconfig, JSON.stringify(existingTsconfig, null, 4));
46
77
  }
47
78
  } else {
@@ -6,7 +6,18 @@ import jsesc from 'jsesc';
6
6
  import { createSourceGraph } from '../parser/createSourceGraph';
7
7
  import { VariableDeclaration, PackageScope, ClassDeclaration, LOADABLE_QUALIFIED_NAME } from '@proteinjs/reflection';
8
8
 
9
- export async function writeGeneratedIndex(packageDir: string, packageGeneratedDir: string, generatedIndexPath: string) {
9
+ /**
10
+ * @param packageDir Root of the package (contains package.json)
11
+ * @param packageGeneratedDir Directory where generated/index.ts will be written
12
+ * @param generatedIndexPath Full path to generated/index.ts
13
+ * @param sourceRootRel Optional relative directories to scan (e.g. "test"); defaults to "src"
14
+ */
15
+ export async function writeGeneratedIndex(
16
+ packageDir: string,
17
+ packageGeneratedDir: string,
18
+ generatedIndexPath: string,
19
+ sourceRootsRel: string | string[] = 'src'
20
+ ) {
10
21
  let packageIndexPath = path.join(packageDir, 'index.ts');
11
22
  if (!(await promisifiedFs.exists(packageIndexPath))) {
12
23
  packageIndexPath = path.join(packageDir, 'src/index.ts');
@@ -16,15 +27,23 @@ export async function writeGeneratedIndex(packageDir: string, packageGeneratedDi
16
27
  }
17
28
 
18
29
  await promisifiedFs.mkdir(packageGeneratedDir, { recursive: true });
19
- let generatedIndex = await sourceRepositoryLoader(packageDir, generatedIndexPath);
30
+ let generatedIndex = await sourceRepositoryLoader(packageDir, generatedIndexPath, sourceRootsRel);
20
31
  generatedIndex += `\n\n\nexport * from '${path.relative(packageGeneratedDir, packageDir)}/index';`;
21
32
  await promisifiedFs.writeFile(generatedIndexPath, generatedIndex);
22
33
  }
23
34
 
24
- async function sourceRepositoryLoader(packageDir: string, generatedIndexPath: string): Promise<string> {
35
+ async function sourceRepositoryLoader(
36
+ packageDir: string,
37
+ generatedIndexPath: string,
38
+ sourceRootsRel: string | string[]
39
+ ): Promise<string> {
25
40
  const packageJson = await getPackageJson(packageDir);
26
41
  let code = loadDependencySourceGraphs(packageDir, packageJson);
27
- const sourceGraph = await createSourceGraph(packageDir);
42
+
43
+ // Allow multiple roots (e.g., ['test','src']) to keep ancestry intact.
44
+ const roots = Array.isArray(sourceRootsRel) ? sourceRootsRel : [sourceRootsRel];
45
+ const sourceGraph: Graph = await createSourceGraph(packageDir, [], roots);
46
+
28
47
  code += generateSourceGraph(sourceGraph, packageJson.name);
29
48
  code += generateSourceLinks(sourceGraph, packageJson, generatedIndexPath);
30
49
  code += mergeSourceGraph();
@@ -5,30 +5,39 @@ import { TypescriptParser } from '../../modules/typescript-parser';
5
5
  import { promisifiedFs } from '@proteinjs/util-node';
6
6
  import { createGraphBuilder } from './createGraphBuilder';
7
7
 
8
- export async function createSourceGraph(dir: string, excludedDirs: string[] = []) {
8
+ export async function createSourceGraph(
9
+ dir: string,
10
+ excludedDirs: string[] = [],
11
+ sourceRootsRel: string | string[] = 'src'
12
+ ) {
9
13
  const packageJsonPath = path.join(dir, 'package.json');
10
14
  if (!(await promisifiedFs.exists(packageJsonPath))) {
11
15
  throw new Error(`Unable to find package.json in dir: ${dir}`);
12
16
  }
13
17
 
14
18
  const packageJson = require(packageJsonPath);
15
- const sourceFilePaths = await globby(
16
- [path.join(dir, 'src/**/*.ts'), path.join(dir, 'src/**/*.tsx'), '!**/node_modules/**'].concat(
17
- excludedDirs.map((dir) => `!${dir}`)
18
- )
19
- );
19
+ const roots = Array.isArray(sourceRootsRel) ? sourceRootsRel : [sourceRootsRel];
20
+
21
+ const patterns: string[] = [];
22
+ for (const rel of roots) {
23
+ const root = path.join(dir, rel);
24
+ patterns.push(path.join(root, '**/*.ts'));
25
+ patterns.push(path.join(root, '**/*.tsx'));
26
+ }
27
+
28
+ const excludePatterns = ['!**/node_modules/**', '!**/generated/**', ...excludedDirs.map((d) => `!${d}`)];
29
+
30
+ const sourceFilePaths = await globby([...patterns, ...excludePatterns]);
31
+ const uniqueFilePaths = Array.from(new Set(sourceFilePaths));
32
+
20
33
  const graph = new graphlib.Graph();
21
34
  const addSourceFile = createGraphBuilder(graph, packageJson, dir);
22
35
  const parser = new TypescriptParser();
23
- for (const sourceFilePath of sourceFilePaths) {
36
+
37
+ for (const sourceFilePath of uniqueFilePaths) {
24
38
  const sourceFile = await parser.parseFile(sourceFilePath, path.dirname(sourceFilePath));
25
- // console.log(`File imports (${sourceFile.filePath}): ${JSON.stringify(sourceFile.imports, null, 2)}`);
26
39
  await addSourceFile(sourceFile);
27
40
  }
28
41
 
29
- // for (const node of graph.nodes()) {
30
- // console.log(JSON.stringify(graph.node(node), null, 2));
31
- // }
32
-
33
42
  return graph;
34
43
  }