@powerlines/nx 0.11.112 → 0.11.113
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 +6 -0
- package/dist/{chunk-RID42I5O.js → chunk-644PY32G.js} +2 -2
- package/dist/{chunk-RLZSB7DH.js → chunk-6DAN3E26.js} +149 -1
- package/dist/{chunk-CJKT3EAE.js → chunk-6L4TCEZH.js} +2 -2
- package/dist/{chunk-HKTGG2PT.mjs → chunk-GTQ5D6M4.mjs} +1 -1
- package/dist/{chunk-MAPDHNXK.js → chunk-IM6SEMAT.js} +2 -2
- package/dist/{chunk-F7SRBMLZ.mjs → chunk-KGQFFNPB.mjs} +1 -1
- package/dist/{chunk-TZD7ZQSY.js → chunk-KT5IDAXK.js} +2 -2
- package/dist/{chunk-YL2R4FVG.mjs → chunk-M52PUPDP.mjs} +1 -1
- package/dist/{chunk-YFCMOIGK.js → chunk-PF2WP5GH.js} +2 -2
- package/dist/{chunk-FGMAEAWX.mjs → chunk-RINXXZP6.mjs} +1 -1
- package/dist/{chunk-KUEPQ6KR.mjs → chunk-SNALS3FE.mjs} +1 -1
- package/dist/{chunk-7OIC25XC.mjs → chunk-WPV7CO2W.mjs} +148 -1
- package/dist/executors.js +11 -11
- package/dist/executors.mjs +6 -6
- package/dist/index.js +11 -11
- package/dist/index.mjs +6 -6
- package/dist/src/base/base-executor.js +2 -2
- package/dist/src/base/base-executor.mjs +1 -1
- package/dist/src/executors/build/executor.js +4 -4
- package/dist/src/executors/build/executor.mjs +2 -2
- package/dist/src/executors/clean/executor.js +4 -4
- package/dist/src/executors/clean/executor.mjs +2 -2
- package/dist/src/executors/docs/executor.js +4 -4
- package/dist/src/executors/docs/executor.mjs +2 -2
- package/dist/src/executors/lint/executor.js +4 -4
- package/dist/src/executors/lint/executor.mjs +2 -2
- package/dist/src/executors/prepare/executor.js +4 -4
- package/dist/src/executors/prepare/executor.mjs +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog for Powerlines - Nx
|
|
4
4
|
|
|
5
|
+
## [0.11.112](https://github.com/storm-software/powerlines/releases/tag/nx%400.11.112) (01/20/2026)
|
|
6
|
+
|
|
7
|
+
### Updated Dependencies
|
|
8
|
+
|
|
9
|
+
- Updated **powerlines** to **v0.37.56**
|
|
10
|
+
|
|
5
11
|
## [0.11.111](https://github.com/storm-software/powerlines/releases/tag/nx%400.11.111) (01/20/2026)
|
|
6
12
|
|
|
7
13
|
### Updated Dependencies
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('./chunk-6DAN3E26.js');
|
|
4
4
|
var chunkSHUYVCID_js = require('./chunk-SHUYVCID.js');
|
|
5
5
|
var defu = require('defu');
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ async function executorFn(context, api) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
chunkSHUYVCID_js.__name(executorFn, "executorFn");
|
|
22
|
-
var executor =
|
|
22
|
+
var executor = chunk6DAN3E26_js.withExecutor("build", executorFn);
|
|
23
23
|
var executor_default = executor;
|
|
24
24
|
|
|
25
25
|
exports.executorFn = executorFn;
|
|
@@ -7,6 +7,7 @@ var baseExecutor = require('@storm-software/workspace-tools/base/base-executor')
|
|
|
7
7
|
var isError = require('@stryke/type-checks/is-error');
|
|
8
8
|
var defu6 = require('defu');
|
|
9
9
|
var getWorkspaceRoot = require('@stryke/fs/get-workspace-root');
|
|
10
|
+
var core = require('@babel/core');
|
|
10
11
|
var console = require('@storm-software/config-tools/logger/console');
|
|
11
12
|
var toArray = require('@stryke/convert/to-array');
|
|
12
13
|
var helpers = require('@stryke/fs/helpers');
|
|
@@ -28,6 +29,8 @@ var isSetString = require('@stryke/type-checks/is-set-string');
|
|
|
28
29
|
var isString = require('@stryke/type-checks/is-string');
|
|
29
30
|
var chalk5 = require('chalk');
|
|
30
31
|
var Handlebars = require('handlebars');
|
|
32
|
+
var helperPluginUtils = require('@babel/helper-plugin-utils');
|
|
33
|
+
var t = require('@babel/types');
|
|
31
34
|
var isParentPath = require('@stryke/path/is-parent-path');
|
|
32
35
|
var prettyBytes = require('@stryke/string-format/pretty-bytes');
|
|
33
36
|
var tsMorph = require('ts-morph');
|
|
@@ -98,12 +101,124 @@ function _interopNamespace(e) {
|
|
|
98
101
|
var defu6__default = /*#__PURE__*/_interopDefault(defu6);
|
|
99
102
|
var chalk5__default = /*#__PURE__*/_interopDefault(chalk5);
|
|
100
103
|
var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
|
|
104
|
+
var t__namespace = /*#__PURE__*/_interopNamespace(t);
|
|
101
105
|
var ts__default = /*#__PURE__*/_interopDefault(ts);
|
|
102
106
|
var $__namespace = /*#__PURE__*/_interopNamespace($);
|
|
103
107
|
|
|
104
108
|
// ../powerlines/package.json
|
|
105
109
|
var package_default = {
|
|
106
|
-
version: "0.37.
|
|
110
|
+
version: "0.37.56"};
|
|
111
|
+
|
|
112
|
+
// ../powerlines/src/plugin-utils/modules.ts
|
|
113
|
+
function isBuiltinModule(context, moduleName) {
|
|
114
|
+
const prefix = context.config.output?.builtinPrefix || context.config?.framework || "powerlines";
|
|
115
|
+
return moduleName.startsWith(`${prefix.replace(/:$/, "")}:`) || Object.keys(context.fs.metadata).filter((key) => context.fs.metadata[key]?.type === "builtin").includes(moduleName);
|
|
116
|
+
}
|
|
117
|
+
chunkSHUYVCID_js.__name(isBuiltinModule, "isBuiltinModule");
|
|
118
|
+
|
|
119
|
+
// ../powerlines/src/internal/babel/module-resolver-plugin.ts
|
|
120
|
+
function resolveModulePath(nodePath, state) {
|
|
121
|
+
if (!t__namespace.isStringLiteral(nodePath.node) || !state.resolveAll && !isBuiltinModule(state.context, nodePath.node.value)) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const resolvedPath = state.context?.fs.resolveSync(nodePath.node.value);
|
|
125
|
+
if (resolvedPath) {
|
|
126
|
+
nodePath.replaceWith(t__namespace.stringLiteral(
|
|
127
|
+
// Remove the file extension if it exists
|
|
128
|
+
resolvedPath.replace(/\.(?:ts|mts|cts)x?$/, "")
|
|
129
|
+
));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
chunkSHUYVCID_js.__name(resolveModulePath, "resolveModulePath");
|
|
133
|
+
var TRANSFORM_FUNCTIONS = [
|
|
134
|
+
"require",
|
|
135
|
+
"require.resolve",
|
|
136
|
+
"System.import",
|
|
137
|
+
// Jest methods
|
|
138
|
+
"jest.genMockFromModule",
|
|
139
|
+
"jest.mock",
|
|
140
|
+
"jest.unmock",
|
|
141
|
+
"jest.doMock",
|
|
142
|
+
// eslint-disable-next-line @cspell/spellchecker
|
|
143
|
+
"jest.dontMock",
|
|
144
|
+
"jest.setMock",
|
|
145
|
+
"jest.requireActual",
|
|
146
|
+
"jest.requireMock",
|
|
147
|
+
// Older Jest methods
|
|
148
|
+
"require.requireActual",
|
|
149
|
+
"require.requireMock"
|
|
150
|
+
];
|
|
151
|
+
function matchesPattern(state, calleePath, pattern) {
|
|
152
|
+
const { node } = calleePath;
|
|
153
|
+
if (t__namespace.isMemberExpression(node)) {
|
|
154
|
+
return calleePath.matchesPattern(pattern);
|
|
155
|
+
}
|
|
156
|
+
if (!t__namespace.isIdentifier(node) || pattern.includes(".")) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
const name = pattern.split(".")[0];
|
|
160
|
+
return node.name === name;
|
|
161
|
+
}
|
|
162
|
+
chunkSHUYVCID_js.__name(matchesPattern, "matchesPattern");
|
|
163
|
+
var importVisitors = {
|
|
164
|
+
CallExpression: /* @__PURE__ */ chunkSHUYVCID_js.__name((nodePath, state) => {
|
|
165
|
+
if (state.moduleResolverVisited.has(nodePath)) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const calleePath = nodePath.get("callee");
|
|
169
|
+
if (calleePath && TRANSFORM_FUNCTIONS.some((pattern) => matchesPattern(state, calleePath, pattern)) || t__namespace.isImport(nodePath.node.callee)) {
|
|
170
|
+
state.moduleResolverVisited.add(nodePath);
|
|
171
|
+
resolveModulePath(nodePath.get("arguments.0"), state);
|
|
172
|
+
}
|
|
173
|
+
}, "CallExpression"),
|
|
174
|
+
// eslint-disable-next-line ts/naming-convention
|
|
175
|
+
"ImportDeclaration|ExportDeclaration|ExportAllDeclaration": /* @__PURE__ */ chunkSHUYVCID_js.__name((nodePath, state) => {
|
|
176
|
+
if (!nodePath || !nodePath.get("source") || state.moduleResolverVisited.has(nodePath)) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
state.moduleResolverVisited.add(nodePath);
|
|
180
|
+
resolveModulePath(nodePath.get("source"), state);
|
|
181
|
+
}, "ImportDeclaration|ExportDeclaration|ExportAllDeclaration")
|
|
182
|
+
};
|
|
183
|
+
var moduleResolverBabelPlugin = /* @__PURE__ */ chunkSHUYVCID_js.__name((context, options) => {
|
|
184
|
+
return helperPluginUtils.declare(/* @__PURE__ */ chunkSHUYVCID_js.__name(function builder(api) {
|
|
185
|
+
let moduleResolverVisited = /* @__PURE__ */ new Set();
|
|
186
|
+
return {
|
|
187
|
+
name: "powerlines:module-resolver",
|
|
188
|
+
manipulateOptions(opts) {
|
|
189
|
+
opts.filename ??= "unknown";
|
|
190
|
+
},
|
|
191
|
+
pre() {
|
|
192
|
+
moduleResolverVisited = /* @__PURE__ */ new Set();
|
|
193
|
+
},
|
|
194
|
+
visitor: {
|
|
195
|
+
Program: {
|
|
196
|
+
enter(programPath, state) {
|
|
197
|
+
programPath.traverse(importVisitors, {
|
|
198
|
+
...state,
|
|
199
|
+
context,
|
|
200
|
+
moduleResolverVisited,
|
|
201
|
+
api,
|
|
202
|
+
resolveAll: options?.resolveAll ?? false
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
exit(programPath, state) {
|
|
206
|
+
programPath.traverse(importVisitors, {
|
|
207
|
+
...state,
|
|
208
|
+
context,
|
|
209
|
+
moduleResolverVisited,
|
|
210
|
+
api,
|
|
211
|
+
resolveAll: options?.resolveAll ?? false
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
post() {
|
|
217
|
+
moduleResolverVisited.clear();
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}, "builder"));
|
|
221
|
+
}, "moduleResolverBabelPlugin");
|
|
107
222
|
var VirtualFileSystemHost = class extends tsMorph.InMemoryFileSystemHost {
|
|
108
223
|
static {
|
|
109
224
|
chunkSHUYVCID_js.__name(this, "VirtualFileSystemHost");
|
|
@@ -4377,6 +4492,39 @@ ${console.formatLogMessage({
|
|
|
4377
4492
|
}
|
|
4378
4493
|
context.debug("Transforming built-ins runtime modules files.");
|
|
4379
4494
|
const builtinFilePaths = await Promise.all((await context.getBuiltins()).map(async (file) => {
|
|
4495
|
+
const result2 = await core.transformAsync(file.code.toString(), {
|
|
4496
|
+
highlightCode: true,
|
|
4497
|
+
code: true,
|
|
4498
|
+
ast: false,
|
|
4499
|
+
cloneInputAst: false,
|
|
4500
|
+
comments: true,
|
|
4501
|
+
sourceType: "module",
|
|
4502
|
+
configFile: false,
|
|
4503
|
+
babelrc: false,
|
|
4504
|
+
envName: context.config.mode,
|
|
4505
|
+
caller: {
|
|
4506
|
+
name: "powerlines"
|
|
4507
|
+
},
|
|
4508
|
+
...context.config.transform.babel,
|
|
4509
|
+
filename: file.path,
|
|
4510
|
+
plugins: [
|
|
4511
|
+
[
|
|
4512
|
+
"@babel/plugin-syntax-typescript"
|
|
4513
|
+
],
|
|
4514
|
+
[
|
|
4515
|
+
moduleResolverBabelPlugin(context)
|
|
4516
|
+
]
|
|
4517
|
+
]
|
|
4518
|
+
});
|
|
4519
|
+
if (!result2?.code) {
|
|
4520
|
+
throw new Error(`Powerlines - Generate Types failed to compile ${file.id}`);
|
|
4521
|
+
}
|
|
4522
|
+
if (!file.id) {
|
|
4523
|
+
context.warn(`File ID is missing for a built-in runtime file at ${file.path}.`);
|
|
4524
|
+
file.id = replace.replacePath(replace.replacePath(file.path, context.workspaceConfig.workspaceRoot), context.builtinsPath);
|
|
4525
|
+
}
|
|
4526
|
+
context.trace(`Writing transformed built-in runtime file ${file.id}.`);
|
|
4527
|
+
await context.emitBuiltin(result2.code, file.id);
|
|
4380
4528
|
return append.appendPath(file.path, context.builtinsPath);
|
|
4381
4529
|
}));
|
|
4382
4530
|
const typescriptPath = await resolve.resolvePackage("typescript");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('./chunk-6DAN3E26.js');
|
|
4
4
|
var chunkSHUYVCID_js = require('./chunk-SHUYVCID.js');
|
|
5
5
|
|
|
6
6
|
// src/executors/clean/executor.ts
|
|
@@ -11,7 +11,7 @@ async function executorFn(context, api) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
chunkSHUYVCID_js.__name(executorFn, "executorFn");
|
|
14
|
-
var executor =
|
|
14
|
+
var executor = chunk6DAN3E26_js.withExecutor("clean", executorFn);
|
|
15
15
|
var executor_default = executor;
|
|
16
16
|
|
|
17
17
|
exports.executorFn = executorFn;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('./chunk-6DAN3E26.js');
|
|
4
4
|
var chunkSHUYVCID_js = require('./chunk-SHUYVCID.js');
|
|
5
5
|
var defu = require('defu');
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ async function executorFn(context, api) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
chunkSHUYVCID_js.__name(executorFn, "executorFn");
|
|
22
|
-
var executor =
|
|
22
|
+
var executor = chunk6DAN3E26_js.withExecutor("prepare", executorFn);
|
|
23
23
|
var executor_default = executor;
|
|
24
24
|
|
|
25
25
|
exports.executorFn = executorFn;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('./chunk-6DAN3E26.js');
|
|
4
4
|
var chunkSHUYVCID_js = require('./chunk-SHUYVCID.js');
|
|
5
5
|
|
|
6
6
|
// src/executors/lint/executor.ts
|
|
@@ -11,7 +11,7 @@ async function executorFn(context, api) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
chunkSHUYVCID_js.__name(executorFn, "executorFn");
|
|
14
|
-
var executor =
|
|
14
|
+
var executor = chunk6DAN3E26_js.withExecutor("lint", executorFn);
|
|
15
15
|
var executor_default = executor;
|
|
16
16
|
|
|
17
17
|
exports.executorFn = executorFn;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('./chunk-6DAN3E26.js');
|
|
4
4
|
var chunkSHUYVCID_js = require('./chunk-SHUYVCID.js');
|
|
5
5
|
|
|
6
6
|
// src/executors/docs/executor.ts
|
|
@@ -11,7 +11,7 @@ async function executorFn(context, api) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
chunkSHUYVCID_js.__name(executorFn, "executorFn");
|
|
14
|
-
var executor =
|
|
14
|
+
var executor = chunk6DAN3E26_js.withExecutor("docs", executorFn);
|
|
15
15
|
var executor_default = executor;
|
|
16
16
|
|
|
17
17
|
exports.executorFn = executorFn;
|
|
@@ -5,6 +5,7 @@ import { withRunExecutor } from '@storm-software/workspace-tools/base/base-execu
|
|
|
5
5
|
import { isError } from '@stryke/type-checks/is-error';
|
|
6
6
|
import defu6, { createDefu, defu } from 'defu';
|
|
7
7
|
import { relativeToWorkspaceRoot } from '@stryke/fs/get-workspace-root';
|
|
8
|
+
import { transformAsync } from '@babel/core';
|
|
8
9
|
import { formatLogMessage } from '@storm-software/config-tools/logger/console';
|
|
9
10
|
import { toArray } from '@stryke/convert/to-array';
|
|
10
11
|
import { createDirectorySync, createDirectory } from '@stryke/fs/helpers';
|
|
@@ -26,6 +27,8 @@ import { isSetString } from '@stryke/type-checks/is-set-string';
|
|
|
26
27
|
import { isString } from '@stryke/type-checks/is-string';
|
|
27
28
|
import chalk5 from 'chalk';
|
|
28
29
|
import Handlebars from 'handlebars';
|
|
30
|
+
import { declare } from '@babel/helper-plugin-utils';
|
|
31
|
+
import * as t from '@babel/types';
|
|
29
32
|
import { isParentPath } from '@stryke/path/is-parent-path';
|
|
30
33
|
import { prettyBytes } from '@stryke/string-format/pretty-bytes';
|
|
31
34
|
import { InMemoryFileSystemHost, Project, DiagnosticCategory } from 'ts-morph';
|
|
@@ -75,7 +78,118 @@ import { resolve } from 'node:path';
|
|
|
75
78
|
|
|
76
79
|
// ../powerlines/package.json
|
|
77
80
|
var package_default = {
|
|
78
|
-
version: "0.37.
|
|
81
|
+
version: "0.37.56"};
|
|
82
|
+
|
|
83
|
+
// ../powerlines/src/plugin-utils/modules.ts
|
|
84
|
+
function isBuiltinModule(context, moduleName) {
|
|
85
|
+
const prefix = context.config.output?.builtinPrefix || context.config?.framework || "powerlines";
|
|
86
|
+
return moduleName.startsWith(`${prefix.replace(/:$/, "")}:`) || Object.keys(context.fs.metadata).filter((key) => context.fs.metadata[key]?.type === "builtin").includes(moduleName);
|
|
87
|
+
}
|
|
88
|
+
__name(isBuiltinModule, "isBuiltinModule");
|
|
89
|
+
|
|
90
|
+
// ../powerlines/src/internal/babel/module-resolver-plugin.ts
|
|
91
|
+
function resolveModulePath(nodePath, state) {
|
|
92
|
+
if (!t.isStringLiteral(nodePath.node) || !state.resolveAll && !isBuiltinModule(state.context, nodePath.node.value)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const resolvedPath = state.context?.fs.resolveSync(nodePath.node.value);
|
|
96
|
+
if (resolvedPath) {
|
|
97
|
+
nodePath.replaceWith(t.stringLiteral(
|
|
98
|
+
// Remove the file extension if it exists
|
|
99
|
+
resolvedPath.replace(/\.(?:ts|mts|cts)x?$/, "")
|
|
100
|
+
));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
__name(resolveModulePath, "resolveModulePath");
|
|
104
|
+
var TRANSFORM_FUNCTIONS = [
|
|
105
|
+
"require",
|
|
106
|
+
"require.resolve",
|
|
107
|
+
"System.import",
|
|
108
|
+
// Jest methods
|
|
109
|
+
"jest.genMockFromModule",
|
|
110
|
+
"jest.mock",
|
|
111
|
+
"jest.unmock",
|
|
112
|
+
"jest.doMock",
|
|
113
|
+
// eslint-disable-next-line @cspell/spellchecker
|
|
114
|
+
"jest.dontMock",
|
|
115
|
+
"jest.setMock",
|
|
116
|
+
"jest.requireActual",
|
|
117
|
+
"jest.requireMock",
|
|
118
|
+
// Older Jest methods
|
|
119
|
+
"require.requireActual",
|
|
120
|
+
"require.requireMock"
|
|
121
|
+
];
|
|
122
|
+
function matchesPattern(state, calleePath, pattern) {
|
|
123
|
+
const { node } = calleePath;
|
|
124
|
+
if (t.isMemberExpression(node)) {
|
|
125
|
+
return calleePath.matchesPattern(pattern);
|
|
126
|
+
}
|
|
127
|
+
if (!t.isIdentifier(node) || pattern.includes(".")) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
const name = pattern.split(".")[0];
|
|
131
|
+
return node.name === name;
|
|
132
|
+
}
|
|
133
|
+
__name(matchesPattern, "matchesPattern");
|
|
134
|
+
var importVisitors = {
|
|
135
|
+
CallExpression: /* @__PURE__ */ __name((nodePath, state) => {
|
|
136
|
+
if (state.moduleResolverVisited.has(nodePath)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const calleePath = nodePath.get("callee");
|
|
140
|
+
if (calleePath && TRANSFORM_FUNCTIONS.some((pattern) => matchesPattern(state, calleePath, pattern)) || t.isImport(nodePath.node.callee)) {
|
|
141
|
+
state.moduleResolverVisited.add(nodePath);
|
|
142
|
+
resolveModulePath(nodePath.get("arguments.0"), state);
|
|
143
|
+
}
|
|
144
|
+
}, "CallExpression"),
|
|
145
|
+
// eslint-disable-next-line ts/naming-convention
|
|
146
|
+
"ImportDeclaration|ExportDeclaration|ExportAllDeclaration": /* @__PURE__ */ __name((nodePath, state) => {
|
|
147
|
+
if (!nodePath || !nodePath.get("source") || state.moduleResolverVisited.has(nodePath)) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
state.moduleResolverVisited.add(nodePath);
|
|
151
|
+
resolveModulePath(nodePath.get("source"), state);
|
|
152
|
+
}, "ImportDeclaration|ExportDeclaration|ExportAllDeclaration")
|
|
153
|
+
};
|
|
154
|
+
var moduleResolverBabelPlugin = /* @__PURE__ */ __name((context, options) => {
|
|
155
|
+
return declare(/* @__PURE__ */ __name(function builder(api) {
|
|
156
|
+
let moduleResolverVisited = /* @__PURE__ */ new Set();
|
|
157
|
+
return {
|
|
158
|
+
name: "powerlines:module-resolver",
|
|
159
|
+
manipulateOptions(opts) {
|
|
160
|
+
opts.filename ??= "unknown";
|
|
161
|
+
},
|
|
162
|
+
pre() {
|
|
163
|
+
moduleResolverVisited = /* @__PURE__ */ new Set();
|
|
164
|
+
},
|
|
165
|
+
visitor: {
|
|
166
|
+
Program: {
|
|
167
|
+
enter(programPath, state) {
|
|
168
|
+
programPath.traverse(importVisitors, {
|
|
169
|
+
...state,
|
|
170
|
+
context,
|
|
171
|
+
moduleResolverVisited,
|
|
172
|
+
api,
|
|
173
|
+
resolveAll: options?.resolveAll ?? false
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
exit(programPath, state) {
|
|
177
|
+
programPath.traverse(importVisitors, {
|
|
178
|
+
...state,
|
|
179
|
+
context,
|
|
180
|
+
moduleResolverVisited,
|
|
181
|
+
api,
|
|
182
|
+
resolveAll: options?.resolveAll ?? false
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
post() {
|
|
188
|
+
moduleResolverVisited.clear();
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
}, "builder"));
|
|
192
|
+
}, "moduleResolverBabelPlugin");
|
|
79
193
|
var VirtualFileSystemHost = class extends InMemoryFileSystemHost {
|
|
80
194
|
static {
|
|
81
195
|
__name(this, "VirtualFileSystemHost");
|
|
@@ -4349,6 +4463,39 @@ ${formatLogMessage({
|
|
|
4349
4463
|
}
|
|
4350
4464
|
context.debug("Transforming built-ins runtime modules files.");
|
|
4351
4465
|
const builtinFilePaths = await Promise.all((await context.getBuiltins()).map(async (file) => {
|
|
4466
|
+
const result2 = await transformAsync(file.code.toString(), {
|
|
4467
|
+
highlightCode: true,
|
|
4468
|
+
code: true,
|
|
4469
|
+
ast: false,
|
|
4470
|
+
cloneInputAst: false,
|
|
4471
|
+
comments: true,
|
|
4472
|
+
sourceType: "module",
|
|
4473
|
+
configFile: false,
|
|
4474
|
+
babelrc: false,
|
|
4475
|
+
envName: context.config.mode,
|
|
4476
|
+
caller: {
|
|
4477
|
+
name: "powerlines"
|
|
4478
|
+
},
|
|
4479
|
+
...context.config.transform.babel,
|
|
4480
|
+
filename: file.path,
|
|
4481
|
+
plugins: [
|
|
4482
|
+
[
|
|
4483
|
+
"@babel/plugin-syntax-typescript"
|
|
4484
|
+
],
|
|
4485
|
+
[
|
|
4486
|
+
moduleResolverBabelPlugin(context)
|
|
4487
|
+
]
|
|
4488
|
+
]
|
|
4489
|
+
});
|
|
4490
|
+
if (!result2?.code) {
|
|
4491
|
+
throw new Error(`Powerlines - Generate Types failed to compile ${file.id}`);
|
|
4492
|
+
}
|
|
4493
|
+
if (!file.id) {
|
|
4494
|
+
context.warn(`File ID is missing for a built-in runtime file at ${file.path}.`);
|
|
4495
|
+
file.id = replacePath(replacePath(file.path, context.workspaceConfig.workspaceRoot), context.builtinsPath);
|
|
4496
|
+
}
|
|
4497
|
+
context.trace(`Writing transformed built-in runtime file ${file.id}.`);
|
|
4498
|
+
await context.emitBuiltin(result2.code, file.id);
|
|
4352
4499
|
return appendPath(file.path, context.builtinsPath);
|
|
4353
4500
|
}));
|
|
4354
4501
|
const typescriptPath = await resolvePackage("typescript");
|
package/dist/executors.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./chunk-XO62WWX4.js');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
require('./chunk-
|
|
4
|
+
var chunkKT5IDAXK_js = require('./chunk-KT5IDAXK.js');
|
|
5
|
+
var chunkIM6SEMAT_js = require('./chunk-IM6SEMAT.js');
|
|
6
|
+
var chunk644PY32G_js = require('./chunk-644PY32G.js');
|
|
7
|
+
var chunk6L4TCEZH_js = require('./chunk-6L4TCEZH.js');
|
|
8
|
+
var chunkPF2WP5GH_js = require('./chunk-PF2WP5GH.js');
|
|
9
|
+
require('./chunk-6DAN3E26.js');
|
|
10
10
|
require('./chunk-DQI2I5KK.js');
|
|
11
11
|
require('./chunk-SHUYVCID.js');
|
|
12
12
|
|
|
@@ -14,21 +14,21 @@ require('./chunk-SHUYVCID.js');
|
|
|
14
14
|
|
|
15
15
|
Object.defineProperty(exports, "lint", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkKT5IDAXK_js.executor_default; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "prepare", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkIM6SEMAT_js.executor_default; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "build", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunk644PY32G_js.executor_default; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "clean", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunk6L4TCEZH_js.executor_default; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "docs", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkPF2WP5GH_js.executor_default; }
|
|
34
34
|
});
|
package/dist/executors.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import './chunk-UV4HQO3Y.mjs';
|
|
2
|
-
export { executor_default as lint } from './chunk-
|
|
3
|
-
export { executor_default as prepare } from './chunk-
|
|
4
|
-
export { executor_default as build } from './chunk-
|
|
5
|
-
export { executor_default as clean } from './chunk-
|
|
6
|
-
export { executor_default as docs } from './chunk-
|
|
7
|
-
import './chunk-
|
|
2
|
+
export { executor_default as lint } from './chunk-SNALS3FE.mjs';
|
|
3
|
+
export { executor_default as prepare } from './chunk-RINXXZP6.mjs';
|
|
4
|
+
export { executor_default as build } from './chunk-KGQFFNPB.mjs';
|
|
5
|
+
export { executor_default as clean } from './chunk-GTQ5D6M4.mjs';
|
|
6
|
+
export { executor_default as docs } from './chunk-M52PUPDP.mjs';
|
|
7
|
+
import './chunk-WPV7CO2W.mjs';
|
|
8
8
|
import './chunk-OVX2CEXQ.mjs';
|
|
9
9
|
import './chunk-O6YSETKJ.mjs';
|
package/dist/index.js
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkWA6S6OWI_js = require('./chunk-WA6S6OWI.js');
|
|
4
4
|
require('./chunk-XO62WWX4.js');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
5
|
+
var chunkKT5IDAXK_js = require('./chunk-KT5IDAXK.js');
|
|
6
|
+
var chunkIM6SEMAT_js = require('./chunk-IM6SEMAT.js');
|
|
7
|
+
var chunk644PY32G_js = require('./chunk-644PY32G.js');
|
|
8
|
+
var chunk6L4TCEZH_js = require('./chunk-6L4TCEZH.js');
|
|
9
|
+
var chunkPF2WP5GH_js = require('./chunk-PF2WP5GH.js');
|
|
10
10
|
require('./chunk-N2YKXZ5R.js');
|
|
11
11
|
var chunkWUJKJGEW_js = require('./chunk-WUJKJGEW.js');
|
|
12
|
-
require('./chunk-
|
|
12
|
+
require('./chunk-6DAN3E26.js');
|
|
13
13
|
require('./chunk-NOSBV75N.js');
|
|
14
14
|
require('./chunk-DQI2I5KK.js');
|
|
15
15
|
require('./chunk-IQVSZEQ6.js');
|
|
@@ -23,23 +23,23 @@ Object.defineProperty(exports, "createNodesV2", {
|
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "lint", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkKT5IDAXK_js.executor_default; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "prepare", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkIM6SEMAT_js.executor_default; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "build", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk644PY32G_js.executor_default; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "clean", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk6L4TCEZH_js.executor_default; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "docs", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkPF2WP5GH_js.executor_default; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "sync", {
|
|
45
45
|
enumerable: true,
|
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { createNodesV2 } from './chunk-IWSYHFCU.mjs';
|
|
2
2
|
import './chunk-UV4HQO3Y.mjs';
|
|
3
|
-
export { executor_default as lint } from './chunk-
|
|
4
|
-
export { executor_default as prepare } from './chunk-
|
|
5
|
-
export { executor_default as build } from './chunk-
|
|
6
|
-
export { executor_default as clean } from './chunk-
|
|
7
|
-
export { executor_default as docs } from './chunk-
|
|
3
|
+
export { executor_default as lint } from './chunk-SNALS3FE.mjs';
|
|
4
|
+
export { executor_default as prepare } from './chunk-RINXXZP6.mjs';
|
|
5
|
+
export { executor_default as build } from './chunk-KGQFFNPB.mjs';
|
|
6
|
+
export { executor_default as clean } from './chunk-GTQ5D6M4.mjs';
|
|
7
|
+
export { executor_default as docs } from './chunk-M52PUPDP.mjs';
|
|
8
8
|
import './chunk-23KFTIT2.mjs';
|
|
9
9
|
export { generator_default as sync, generatorFn as syncGenerator } from './chunk-326QB2VK.mjs';
|
|
10
|
-
import './chunk-
|
|
10
|
+
import './chunk-WPV7CO2W.mjs';
|
|
11
11
|
import './chunk-KXFIN2NL.mjs';
|
|
12
12
|
import './chunk-OVX2CEXQ.mjs';
|
|
13
13
|
import './chunk-IC47MFKB.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6DAN3E26_js = require('../../chunk-6DAN3E26.js');
|
|
4
4
|
require('../../chunk-DQI2I5KK.js');
|
|
5
5
|
require('../../chunk-SHUYVCID.js');
|
|
6
6
|
|
|
@@ -8,5 +8,5 @@ require('../../chunk-SHUYVCID.js');
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "withExecutor", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunk6DAN3E26_js.withExecutor; }
|
|
12
12
|
});
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../../chunk-
|
|
5
|
+
var chunk644PY32G_js = require('../../../chunk-644PY32G.js');
|
|
6
|
+
require('../../../chunk-6DAN3E26.js');
|
|
7
7
|
require('../../../chunk-DQI2I5KK.js');
|
|
8
8
|
require('../../../chunk-SHUYVCID.js');
|
|
9
9
|
|
|
@@ -11,9 +11,9 @@ require('../../../chunk-SHUYVCID.js');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "default", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk644PY32G_js.executor_default; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "executorFn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk644PY32G_js.executorFn; }
|
|
19
19
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { executor_default as default, executorFn } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { executor_default as default, executorFn } from '../../../chunk-KGQFFNPB.mjs';
|
|
2
|
+
import '../../../chunk-WPV7CO2W.mjs';
|
|
3
3
|
import '../../../chunk-OVX2CEXQ.mjs';
|
|
4
4
|
import '../../../chunk-O6YSETKJ.mjs';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../../chunk-
|
|
5
|
+
var chunk6L4TCEZH_js = require('../../../chunk-6L4TCEZH.js');
|
|
6
|
+
require('../../../chunk-6DAN3E26.js');
|
|
7
7
|
require('../../../chunk-DQI2I5KK.js');
|
|
8
8
|
require('../../../chunk-SHUYVCID.js');
|
|
9
9
|
|
|
@@ -11,9 +11,9 @@ require('../../../chunk-SHUYVCID.js');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "default", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk6L4TCEZH_js.executor_default; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "executorFn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk6L4TCEZH_js.executorFn; }
|
|
19
19
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { executor_default as default, executorFn } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { executor_default as default, executorFn } from '../../../chunk-GTQ5D6M4.mjs';
|
|
2
|
+
import '../../../chunk-WPV7CO2W.mjs';
|
|
3
3
|
import '../../../chunk-OVX2CEXQ.mjs';
|
|
4
4
|
import '../../../chunk-O6YSETKJ.mjs';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../../chunk-
|
|
5
|
+
var chunkPF2WP5GH_js = require('../../../chunk-PF2WP5GH.js');
|
|
6
|
+
require('../../../chunk-6DAN3E26.js');
|
|
7
7
|
require('../../../chunk-DQI2I5KK.js');
|
|
8
8
|
require('../../../chunk-SHUYVCID.js');
|
|
9
9
|
|
|
@@ -11,9 +11,9 @@ require('../../../chunk-SHUYVCID.js');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "default", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkPF2WP5GH_js.executor_default; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "executorFn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkPF2WP5GH_js.executorFn; }
|
|
19
19
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { executor_default as default, executorFn } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { executor_default as default, executorFn } from '../../../chunk-M52PUPDP.mjs';
|
|
2
|
+
import '../../../chunk-WPV7CO2W.mjs';
|
|
3
3
|
import '../../../chunk-OVX2CEXQ.mjs';
|
|
4
4
|
import '../../../chunk-O6YSETKJ.mjs';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../../chunk-
|
|
5
|
+
var chunkKT5IDAXK_js = require('../../../chunk-KT5IDAXK.js');
|
|
6
|
+
require('../../../chunk-6DAN3E26.js');
|
|
7
7
|
require('../../../chunk-DQI2I5KK.js');
|
|
8
8
|
require('../../../chunk-SHUYVCID.js');
|
|
9
9
|
|
|
@@ -11,9 +11,9 @@ require('../../../chunk-SHUYVCID.js');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "default", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkKT5IDAXK_js.executor_default; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "executorFn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkKT5IDAXK_js.executorFn; }
|
|
19
19
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { executor_default as default, executorFn } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { executor_default as default, executorFn } from '../../../chunk-SNALS3FE.mjs';
|
|
2
|
+
import '../../../chunk-WPV7CO2W.mjs';
|
|
3
3
|
import '../../../chunk-OVX2CEXQ.mjs';
|
|
4
4
|
import '../../../chunk-O6YSETKJ.mjs';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../../chunk-
|
|
5
|
+
var chunkIM6SEMAT_js = require('../../../chunk-IM6SEMAT.js');
|
|
6
|
+
require('../../../chunk-6DAN3E26.js');
|
|
7
7
|
require('../../../chunk-DQI2I5KK.js');
|
|
8
8
|
require('../../../chunk-SHUYVCID.js');
|
|
9
9
|
|
|
@@ -11,9 +11,9 @@ require('../../../chunk-SHUYVCID.js');
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "default", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkIM6SEMAT_js.executor_default; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "executorFn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkIM6SEMAT_js.executorFn; }
|
|
19
19
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { executor_default as default, executorFn } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { executor_default as default, executorFn } from '../../../chunk-RINXXZP6.mjs';
|
|
2
|
+
import '../../../chunk-WPV7CO2W.mjs';
|
|
3
3
|
import '../../../chunk-OVX2CEXQ.mjs';
|
|
4
4
|
import '../../../chunk-O6YSETKJ.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerlines/nx",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.113",
|
|
4
4
|
"description": "A Nx plugin to support Powerlines development in Nx monorepos.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "github",
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
"defu": "^6.1.4",
|
|
197
197
|
"jiti": "^2.6.1",
|
|
198
198
|
"nx": "22.3.3",
|
|
199
|
-
"powerlines": "^0.37.
|
|
199
|
+
"powerlines": "^0.37.57"
|
|
200
200
|
},
|
|
201
201
|
"devDependencies": {
|
|
202
202
|
"@nx/workspace": "22.3.3",
|
|
@@ -210,5 +210,5 @@
|
|
|
210
210
|
"publishConfig": { "access": "public" },
|
|
211
211
|
"executors": "./executors.json",
|
|
212
212
|
"generators": "./generators.json",
|
|
213
|
-
"gitHead": "
|
|
213
|
+
"gitHead": "187cc657215007bc46fe64262e7e72734a9a858a"
|
|
214
214
|
}
|