@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.
- package/CHANGELOG.md +11 -0
- package/dist/src/build.js +30 -15
- package/dist/src/build.js.map +1 -1
- package/dist/src/codegen/writeGeneratedIndex.d.ts +7 -1
- package/dist/src/codegen/writeGeneratedIndex.js +13 -5
- package/dist/src/codegen/writeGeneratedIndex.js.map +1 -1
- package/dist/src/parser/createSourceGraph.d.ts +1 -1
- package/dist/src/parser/createSourceGraph.js +36 -22
- package/dist/src/parser/createSourceGraph.js.map +1 -1
- package/package.json +4 -4
- package/src/build.ts +45 -14
- package/src/codegen/writeGeneratedIndex.ts +23 -4
- package/src/parser/createSourceGraph.ts +21 -12
- package/test/examples/source-repository/a/dist/build.js +30 -15
- package/test/examples/source-repository/a/dist/build.js.map +1 -1
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.d.ts +7 -1
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js +13 -5
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js.map +1 -1
- package/test/examples/source-repository/a/dist/parser/createSourceGraph.d.ts +1 -1
- package/test/examples/source-repository/a/dist/parser/createSourceGraph.js +36 -22
- package/test/examples/source-repository/a/dist/parser/createSourceGraph.js.map +1 -1
- package/test/examples/source-repository/a/node_modules/.package-lock.json +6 -6
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/CHANGELOG.md +13 -0
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.d.ts +23 -0
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js +67 -0
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.d.ts +297 -10
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.js +349 -112
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/GitUtil.js.map +1 -1
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.d.ts +10 -1
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.js +91 -48
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/cmd.js.map +1 -1
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/package.json +2 -2
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/Fs.ts +75 -0
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/GitUtil.ts +248 -110
- package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/cmd.ts +84 -59
- package/test/examples/source-repository/a/package-lock.json +8 -8
- package/test/examples/source-repository/a/package.json +2 -2
- package/test/examples/source-repository/b/dist/build.js +30 -15
- package/test/examples/source-repository/b/dist/build.js.map +1 -1
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.d.ts +7 -1
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js +13 -5
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js.map +1 -1
- package/test/examples/source-repository/b/dist/parser/createSourceGraph.d.ts +1 -1
- package/test/examples/source-repository/b/dist/parser/createSourceGraph.js +36 -22
- package/test/examples/source-repository/b/dist/parser/createSourceGraph.js.map +1 -1
- package/test/examples/source-repository/b/node_modules/.package-lock.json +4 -4
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/CHANGELOG.md +13 -0
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.d.ts +23 -0
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js +67 -0
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.d.ts +297 -10
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.js +349 -112
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/GitUtil.js.map +1 -1
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.d.ts +10 -1
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.js +91 -48
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/cmd.js.map +1 -1
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/package.json +2 -2
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/Fs.ts +75 -0
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/GitUtil.ts +248 -110
- package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/cmd.ts +84 -59
- package/test/examples/source-repository/b/package-lock.json +6 -6
- 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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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,
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
existingTsconfig.include.push(
|
|
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
|
-
|
|
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*/];
|
package/dist/src/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA6B;AAC7B,IAAM,QAAQ,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACpD,kDAAqD;AACrD,qEAAoE;AAEpE,SAAsB,KAAK;;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA6B;AAC7B,kDAAqD;AACrD,wCAAgE;AAEhE,gDAA0B;AAC1B,iEAAgE;AAChE,oDAAqH;AAErH,SAAsB,mBAAmB,
|
|
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,
|
|
76
|
-
return __generator(this, function (
|
|
77
|
-
switch (
|
|
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 (!(
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
93
|
-
|
|
112
|
+
_a = 0, uniqueFilePaths_1 = uniqueFilePaths;
|
|
113
|
+
_b.label = 3;
|
|
94
114
|
case 3:
|
|
95
|
-
if (!(
|
|
96
|
-
sourceFilePath =
|
|
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 =
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
_a.label = 6;
|
|
122
|
+
_b.sent();
|
|
123
|
+
_b.label = 6;
|
|
106
124
|
case 6:
|
|
107
|
-
|
|
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":"
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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,
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
}
|