@hyperfrontend/features 0.1.0 → 0.2.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 +17 -0
- package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.cjs.js +1 -0
- package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.esm.js +1 -0
- package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.cjs.js +1 -0
- package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.esm.js +1 -0
- package/_dependencies/@hyperfrontend/builder/bundle/index.cjs.js +12 -10
- package/_dependencies/@hyperfrontend/builder/bundle/index.esm.js +14 -12
- package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.cjs.js +2 -0
- package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.esm.js +2 -0
- package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.cjs.js +2 -0
- package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.esm.js +2 -0
- package/_dependencies/@hyperfrontend/builder/index.cjs.js +87 -53
- package/_dependencies/@hyperfrontend/builder/index.esm.js +89 -55
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js +4 -0
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js +3 -1
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.cjs.js +10 -0
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.esm.js +6 -0
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js +5 -0
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js +5 -1
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.cjs.js +2 -2
- package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.esm.js +2 -2
- package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.cjs.js +5 -19
- package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.esm.js +1 -15
- package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.cjs.js +15 -23
- package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.cjs.js +6 -14
- package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.cjs.js +4 -18
- package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.esm.js +1 -15
- package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.cjs.js +5 -19
- package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.esm.js +2 -16
- package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.cjs.js +16 -24
- package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.cjs.js +16 -24
- package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.cjs.js +3 -17
- package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.esm.js +1 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/data/index.cjs.js +6 -14
- package/_dependencies/@hyperfrontend/network-protocol/node/data/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.cjs.js +6 -14
- package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.cjs.js +3 -17
- package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.esm.js +1 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.cjs.js +2 -16
- package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.esm.js +2 -16
- package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.cjs.js +6 -14
- package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.cjs.js +6 -14
- package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.esm.js +7 -15
- package/_dependencies/@hyperfrontend/nexus/index.cjs.js +49 -19
- package/_dependencies/@hyperfrontend/nexus/index.esm.js +49 -19
- package/_dependencies/@hyperfrontend/project-scope/core/fs/index.cjs.js +62 -0
- package/_dependencies/@hyperfrontend/project-scope/core/fs/index.esm.js +60 -2
- package/_shared/generators/feature/generate-feature-module/index.esm.js +11 -6
- package/_shared/generators/metadata/generate-metadata/index.esm.js +1 -0
- package/_shared/shared/control/index.cjs.js +12 -2
- package/_shared/shared/control/index.esm.js +12 -2
- package/_shared/shared/request/index.cjs.js +91 -0
- package/_shared/shared/request/index.esm.js +88 -0
- package/_shared/shared/shutdown/index.esm.js +12 -0
- package/bin/hf.js +643 -70
- package/bundle/host/index.iife.js +290 -4041
- package/bundle/host/index.iife.min.js +1 -1
- package/bundle/host/index.umd.js +290 -4041
- package/bundle/host/index.umd.min.js +1 -1
- package/bundle/hostee/index.iife.js +215 -2893
- package/bundle/hostee/index.iife.min.js +1 -1
- package/bundle/hostee/index.umd.js +215 -2893
- package/bundle/hostee/index.umd.min.js +1 -1
- package/cli/args.d.ts +2 -0
- package/cli/args.d.ts.map +1 -1
- package/cli/commands/build.d.ts +8 -5
- package/cli/commands/build.d.ts.map +1 -1
- package/cli/commands/dev.d.ts +7 -2
- package/cli/commands/dev.d.ts.map +1 -1
- package/cli/config/resolve.d.ts +3 -1
- package/cli/config/resolve.d.ts.map +1 -1
- package/cli/index.cjs.js +643 -70
- package/cli/index.d.ts +21 -10
- package/cli/index.esm.js +591 -60
- package/cli/usage.d.ts +1 -1
- package/cli/usage.d.ts.map +1 -1
- package/generators/feature/generate-feature-module.d.ts.map +1 -1
- package/generators/index.cjs.js +435 -42
- package/generators/index.d.ts +9 -8
- package/generators/index.esm.js +404 -30
- package/generators/metadata/generate-metadata.d.ts +4 -4
- package/generators/metadata/generate-metadata.d.ts.map +1 -1
- package/generators/shell/connector-types.d.ts +19 -0
- package/generators/shell/connector-types.d.ts.map +1 -0
- package/generators/shell/generate-shell.d.ts +5 -4
- package/generators/shell/generate-shell.d.ts.map +1 -1
- package/generators/shell/schema-type.d.ts +20 -0
- package/generators/shell/schema-type.d.ts.map +1 -0
- package/generators/shell/source-literal.d.ts +28 -0
- package/generators/shell/source-literal.d.ts.map +1 -1
- package/host/create-shell.d.ts +4 -1
- package/host/create-shell.d.ts.map +1 -1
- package/host/display-modes/dialog.d.ts +1 -1
- package/host/display-modes/dialog.d.ts.map +1 -1
- package/host/display-modes/embedded.d.ts +1 -1
- package/host/display-modes/embedded.d.ts.map +1 -1
- package/host/index.cjs.js +150 -30
- package/host/index.d.ts +53 -38
- package/host/index.d.ts.map +1 -1
- package/host/index.esm.js +129 -9
- package/host/lifecycle.d.ts.map +1 -1
- package/host/plugins.d.ts +1 -34
- package/host/plugins.d.ts.map +1 -1
- package/host/types.d.ts +49 -0
- package/host/types.d.ts.map +1 -1
- package/hostee/index.cjs.js +54 -9
- package/hostee/index.d.ts +41 -1
- package/hostee/index.d.ts.map +1 -1
- package/hostee/index.esm.js +51 -6
- package/hostee/lifecycle.d.ts.map +1 -1
- package/hostee/types.d.ts +40 -0
- package/hostee/types.d.ts.map +1 -1
- package/index.cjs.js +32 -1
- package/index.d.ts +89 -3
- package/index.d.ts.map +1 -1
- package/index.esm.js +32 -1
- package/nx/executors/build/index.cjs.js +14975 -137
- package/nx/executors/build/index.esm.js +14935 -115
- package/nx/executors/serve/executor.d.ts.map +1 -1
- package/nx/executors/serve/index.cjs.js +6594 -80
- package/nx/executors/serve/index.esm.js +6529 -44
- package/nx/generators/feature/index.cjs.js +8751 -108
- package/nx/generators/feature/index.esm.js +8711 -81
- package/package.json +15 -5
- package/server/debug-ui/index.d.ts +2 -0
- package/server/debug-ui/index.d.ts.map +1 -0
- package/server/debug-ui/index.html +15 -0
- package/server/debug-ui/index.iife.js +427 -0
- package/server/debug-ui/index.iife.min.js +1 -0
- package/server/dev-server.d.ts.map +1 -1
- package/server/index.cjs.js +78 -10
- package/server/index.esm.js +78 -11
- package/server/module-dir.d.ts +17 -0
- package/server/module-dir.d.ts.map +1 -0
- package/server/module-dir.stub.d.ts +15 -0
- package/server/module-dir.stub.d.ts.map +1 -0
- package/shared/contract.d.ts +1 -1
- package/shared/contract.d.ts.map +1 -1
- package/shared/control.d.ts +4 -0
- package/shared/control.d.ts.map +1 -1
- package/shared/invert-contract.d.ts +20 -0
- package/shared/invert-contract.d.ts.map +1 -0
- package/shared/request.d.ts +68 -0
- package/shared/request.d.ts.map +1 -0
- package/{nx/shared → shared}/shutdown.d.ts +3 -2
- package/shared/shutdown.d.ts.map +1 -0
- package/shared/types.d.ts +72 -1
- package/shared/types.d.ts.map +1 -1
- package/_shared/nx/shared/context/index.cjs.js +0 -18
- package/_shared/nx/shared/context/index.esm.js +0 -16
- package/nx/shared/shutdown.d.ts.map +0 -1
- package/server/debug-ui/bootstrap.d.ts +0 -2
- package/server/debug-ui/bootstrap.d.ts.map +0 -1
|
@@ -224,7 +224,7 @@ const removeCodesign = (inputs) => {
|
|
|
224
224
|
};
|
|
225
225
|
};
|
|
226
226
|
|
|
227
|
-
const log$
|
|
227
|
+
const log$h = logger.channel('builder:bin:native:dispatch');
|
|
228
228
|
const REPORT_DIR_PREFIX$2 = 'hf-builder-inject-';
|
|
229
229
|
const SWC_NODE_REGISTER$1 = '@swc-node/register';
|
|
230
230
|
const swcNodeAvailable = (workspaceRoot) => node_fs.existsSync(index_cjs_js$7.join(workspaceRoot, 'node_modules', '@swc-node', 'register', 'index.js'));
|
|
@@ -287,10 +287,10 @@ const dispatchInjectWorker = async (job, options) => {
|
|
|
287
287
|
const dispatched = { ...job, reportPath };
|
|
288
288
|
try {
|
|
289
289
|
options.monitor?.check(`bin:native:dispatch:${label}:start`);
|
|
290
|
-
log$
|
|
290
|
+
log$h.info(`inject dispatch: ${label}`);
|
|
291
291
|
await runOne$2(dispatched, options, label);
|
|
292
292
|
const report = readReport$2(reportPath, label);
|
|
293
|
-
log$
|
|
293
|
+
log$h.debug(`inject dispatch done: ${label} size=${report.outputSize}B heap=${report.endHeapMB.toFixed(1)}MB rss=${report.endRssMB.toFixed(1)}MB t=${report.durationMs}ms`);
|
|
294
294
|
options.monitor?.check(`bin:native:dispatch:${label}:end`);
|
|
295
295
|
return report;
|
|
296
296
|
}
|
|
@@ -5472,12 +5472,12 @@ const generateSeaConfig = (inputs) => ({
|
|
|
5472
5472
|
disableExperimentalSEAWarning: true,
|
|
5473
5473
|
});
|
|
5474
5474
|
|
|
5475
|
-
const log$
|
|
5475
|
+
const log$g = logger.channel('builder:bin:native');
|
|
5476
5476
|
const BYTES_PER_MB$2 = 1024 * 1024;
|
|
5477
5477
|
const formatMB$2 = (bytes) => (bytes / BYTES_PER_MB$2).toFixed(1);
|
|
5478
5478
|
const memorySnapshot = (label) => {
|
|
5479
5479
|
const usage = process.memoryUsage();
|
|
5480
|
-
log$
|
|
5480
|
+
log$g.debug(`${label}: heap=${formatMB$2(usage.heapUsed)}MB rss=${formatMB$2(usage.rss)}MB free=${formatMB$2(node_os.freemem())}MB`);
|
|
5481
5481
|
};
|
|
5482
5482
|
const requireSeaConfig = (bin) => {
|
|
5483
5483
|
if (!bin.sea)
|
|
@@ -5505,7 +5505,7 @@ const buildNativeBin = async (inputs) => {
|
|
|
5505
5505
|
const platforms = requireSeaConfig(bin);
|
|
5506
5506
|
const target = currentPlatformTarget();
|
|
5507
5507
|
if (!currentPlatformMatches(platforms)) {
|
|
5508
|
-
log$
|
|
5508
|
+
log$g.info(`skipping native build for ${bin.name}: current platform ${target} not in declared targets [${platforms.join(', ')}]`);
|
|
5509
5509
|
return [];
|
|
5510
5510
|
}
|
|
5511
5511
|
const binDir = index_cjs_js$7.join(ctx.outputPath, 'bin');
|
|
@@ -5513,14 +5513,14 @@ const buildNativeBin = async (inputs) => {
|
|
|
5513
5513
|
const seaConfigPath = index_cjs_js$7.join(binDir, `${bin.name}.sea-config.json`);
|
|
5514
5514
|
const blobPath = index_cjs_js$7.join(binDir, `${bin.name}.sea-prep.blob`);
|
|
5515
5515
|
const outputBinary = resolveOutputBinaryPath(binDir, bin.name, target);
|
|
5516
|
-
log$
|
|
5516
|
+
log$g.info(`building native bin: ${bin.name} (${target})`);
|
|
5517
5517
|
memorySnapshot(`${bin.name}: pre-sea-config`);
|
|
5518
5518
|
const seaConfig = generateSeaConfig({ mainPath: cjsOutputPath, outputPath: blobPath });
|
|
5519
5519
|
index_cjs_js$7.writeJsonFile(seaConfigPath, seaConfig);
|
|
5520
5520
|
memorySnapshot(`${bin.name}: pre-sea-blob`);
|
|
5521
5521
|
const blobStart = index_cjs_js$5.dateNow();
|
|
5522
5522
|
generateSeaBlob({ seaConfigPath, outputBlobPath: blobPath });
|
|
5523
|
-
log$
|
|
5523
|
+
log$g.debug(`${bin.name}: sea blob generated in ${index_cjs_js$5.dateNow() - blobStart}ms`);
|
|
5524
5524
|
const hostBinary = resolveHostBinary({ platform: target });
|
|
5525
5525
|
memorySnapshot(`${bin.name}: pre-inject (host=${hostBinary})`);
|
|
5526
5526
|
const invocation = resolveDefaultInjectWorkerPath(ctx.workspaceRoot);
|
|
@@ -5537,10 +5537,10 @@ const buildNativeBin = async (inputs) => {
|
|
|
5537
5537
|
sentinelFuse: NODE_SEA_FUSE,
|
|
5538
5538
|
reportPath: '',
|
|
5539
5539
|
}, { workerPath: invocation.path, execArgv: invocation.execArgv, label: bin.name });
|
|
5540
|
-
log$
|
|
5540
|
+
log$g.debug(`${bin.name}: inject completed in ${report.durationMs}ms (worker end heap=${report.endHeapMB.toFixed(1)}MB rss=${report.endRssMB.toFixed(1)}MB)`);
|
|
5541
5541
|
}
|
|
5542
5542
|
catch (error) {
|
|
5543
|
-
log$
|
|
5543
|
+
log$g.error(`${bin.name}: postject inject failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
5544
5544
|
throw error;
|
|
5545
5545
|
}
|
|
5546
5546
|
memorySnapshot(`${bin.name}: post-inject`);
|
|
@@ -5801,7 +5801,7 @@ const ascendForWorker = (offset, startDir = currentModuleDir()) => {
|
|
|
5801
5801
|
return probeDir(dir, offset);
|
|
5802
5802
|
};
|
|
5803
5803
|
|
|
5804
|
-
const log$
|
|
5804
|
+
const log$f = logger.channel('builder:bundle:rollup:dispatch');
|
|
5805
5805
|
const REPORT_DIR_PREFIX$1 = 'hf-builder-rollup-';
|
|
5806
5806
|
const resolveDefaultRollupWorkerPath = (startDir) => ascendForWorker(['bundle', 'rollup', 'worker'], startDir);
|
|
5807
5807
|
const createReportDir$1 = () => node_fs.mkdtempSync(index_cjs_js$7.join(node_os.tmpdir(), REPORT_DIR_PREFIX$1));
|
|
@@ -5848,10 +5848,10 @@ const dispatchRollupWorker = async (descriptor, options) => {
|
|
|
5848
5848
|
const job = { ...descriptor, reportPath };
|
|
5849
5849
|
try {
|
|
5850
5850
|
options.monitor?.check(`bundle:rollup:dispatch:${label}:start`);
|
|
5851
|
-
log$
|
|
5851
|
+
log$f.info(`rollup dispatch: ${label}`);
|
|
5852
5852
|
await runOne$1(job, options, label);
|
|
5853
5853
|
const report = readReport$1(reportPath, label);
|
|
5854
|
-
log$
|
|
5854
|
+
log$f.debug(`rollup dispatch done: ${label} size=${report.outputSize}B heap=${report.endHeapMB.toFixed(1)}MB rss=${report.endRssMB.toFixed(1)}MB t=${report.durationMs}ms`);
|
|
5855
5855
|
options.monitor?.check(`bundle:rollup:dispatch:${label}:end`);
|
|
5856
5856
|
return report;
|
|
5857
5857
|
}
|
|
@@ -5860,7 +5860,7 @@ const dispatchRollupWorker = async (descriptor, options) => {
|
|
|
5860
5860
|
}
|
|
5861
5861
|
};
|
|
5862
5862
|
|
|
5863
|
-
const log$
|
|
5863
|
+
const log$e = logger.channel('builder:bin:script');
|
|
5864
5864
|
const resolveWorkerOrThrow = () => {
|
|
5865
5865
|
const invocation = resolveDefaultRollupWorkerPath();
|
|
5866
5866
|
if (!invocation) {
|
|
@@ -5876,7 +5876,7 @@ const buildJsBin = async (bin, ctx) => {
|
|
|
5876
5876
|
const outputs = [];
|
|
5877
5877
|
for (const format of formats) {
|
|
5878
5878
|
const descriptor = toBinBuildDescriptor(bin, ctx, format, formats, '');
|
|
5879
|
-
log$
|
|
5879
|
+
log$e.info(`building ${format} bin: ${bin.name}`);
|
|
5880
5880
|
await dispatchRollupWorker(descriptor, {
|
|
5881
5881
|
workerPath: worker.path,
|
|
5882
5882
|
execArgv: worker.execArgv,
|
|
@@ -6174,7 +6174,7 @@ const collectWorkspaceExactSpecifiers = (context) => {
|
|
|
6174
6174
|
return index_cjs_js$4.from(set);
|
|
6175
6175
|
};
|
|
6176
6176
|
|
|
6177
|
-
const log$
|
|
6177
|
+
const log$d = logger.channel('builder:bundle:dependencies:pre-pass');
|
|
6178
6178
|
const REPORT_DIR_PREFIX = 'hf-builder-prepass-';
|
|
6179
6179
|
const createReportDir = () => node_fs.mkdtempSync(index_cjs_js$7.join(node_os.tmpdir(), REPORT_DIR_PREFIX));
|
|
6180
6180
|
const reportPathFor = (reportDir, job, index) => index_cjs_js$7.join(reportDir, `${index}-${job.dep.replace(/\//g, '__')}-${job.kind}-${job.format}.json`);
|
|
@@ -6219,11 +6219,11 @@ const runPrePass = async (jobs, options) => {
|
|
|
6219
6219
|
try {
|
|
6220
6220
|
for (const [index, job] of jobs.entries()) {
|
|
6221
6221
|
const reportPath = reportPathFor(reportDir, job, index);
|
|
6222
|
-
log$
|
|
6222
|
+
log$d.info(`pre-pass ${index + 1}/${jobs.length}: ${job.dep} (${job.kind}/${job.format})`);
|
|
6223
6223
|
options.monitor?.check(`bundle:dependencies:prepass:${index + 1}/${jobs.length}:${job.dep}:${job.kind}:${job.format}:start`);
|
|
6224
6224
|
await runOne(job, reportPath, options);
|
|
6225
6225
|
const result = readReport(reportPath, job);
|
|
6226
|
-
log$
|
|
6226
|
+
log$d.debug(`pre-pass ${index + 1}/${jobs.length} done: ${job.dep} size=${result.outputSize}B heap=${result.endHeapMB.toFixed(1)}MB rss=${result.endRssMB.toFixed(1)}MB t=${result.durationMs}ms`);
|
|
6227
6227
|
options.monitor?.check(`bundle:dependencies:prepass:${index + 1}/${jobs.length}:${job.dep}:${job.kind}:${job.format}:end`);
|
|
6228
6228
|
results.push(result);
|
|
6229
6229
|
}
|
|
@@ -6236,7 +6236,7 @@ const runPrePass = async (jobs, options) => {
|
|
|
6236
6236
|
|
|
6237
6237
|
const dtsPathFor = (outputPath, srcPath) => srcPath ? join(outputPath, srcPath, 'index.d.ts') : join(outputPath, 'index.d.ts');
|
|
6238
6238
|
|
|
6239
|
-
const log$
|
|
6239
|
+
const log$c = logger.channel('builder:bundle:declarations:dts-per-entry');
|
|
6240
6240
|
const buildSiblingDescriptors = (entries, context, currentSrcPath) => {
|
|
6241
6241
|
const descriptors = [];
|
|
6242
6242
|
for (const entry of entries) {
|
|
@@ -6287,10 +6287,10 @@ const runDtsPerEntry = async (context, monitor) => {
|
|
|
6287
6287
|
}
|
|
6288
6288
|
const jobs = buildJobs$1(context.entryPointDiscovery.entryPoints, context);
|
|
6289
6289
|
if (jobs.length === 0) {
|
|
6290
|
-
log$
|
|
6290
|
+
log$c.debug('per-entry d.ts pass: no entries with tsc-emitted .d.ts files');
|
|
6291
6291
|
return;
|
|
6292
6292
|
}
|
|
6293
|
-
log$
|
|
6293
|
+
log$c.info(`per-entry d.ts pass: ${jobs.length} entries`);
|
|
6294
6294
|
monitor?.check('bundle:declarations:dts-perentry:start');
|
|
6295
6295
|
await runPrePass(jobs, { workerPath: invocation.path, execArgv: invocation.execArgv, monitor });
|
|
6296
6296
|
monitor?.check('bundle:declarations:dts-perentry:end');
|
|
@@ -6364,7 +6364,7 @@ const resolveDepEntry = (options) => {
|
|
|
6364
6364
|
return absolutize(node_path.dirname(pkgPath), relative);
|
|
6365
6365
|
};
|
|
6366
6366
|
|
|
6367
|
-
const log$
|
|
6367
|
+
const log$b = logger.channel('builder:bundle:declarations:dts-pre-pass');
|
|
6368
6368
|
const workspaceDtsOutputFile = (entry) => entry.subPath ? `${entry.specifier}/index.d.ts` : `${entry.packageName}/index.d.ts`;
|
|
6369
6369
|
const filterRouteEntries$1 = (entry, all) => all.filter((other) => (entry.policy === 'sub-path' ? other.specifier !== entry.specifier : other.packageName !== entry.packageName));
|
|
6370
6370
|
const buildJobs = (deps, context) => {
|
|
@@ -6379,7 +6379,7 @@ const buildJobs = (deps, context) => {
|
|
|
6379
6379
|
inputPath = resolveDepEntry({ dep, projectRoot: context.projectRoot, workspaceRoot: context.workspaceRoot, kind: 'dts' });
|
|
6380
6380
|
}
|
|
6381
6381
|
catch (error) {
|
|
6382
|
-
log$
|
|
6382
|
+
log$b.warn(`skipping d.ts pre-pass for ${dep}: ${error instanceof Error ? error.message : String(error)}`);
|
|
6383
6383
|
continue;
|
|
6384
6384
|
}
|
|
6385
6385
|
const otherNpmDeps = deps.filter((d) => d !== dep);
|
|
@@ -6437,10 +6437,10 @@ const runDtsPrePass = async (context, monitor) => {
|
|
|
6437
6437
|
const workspaceJobs = buildWorkspaceJobs(context, context.bundledDeps);
|
|
6438
6438
|
const jobs = [...npmJobs, ...workspaceJobs];
|
|
6439
6439
|
if (jobs.length === 0) {
|
|
6440
|
-
log$
|
|
6440
|
+
log$b.debug('d.ts pre-pass: no eligible deps (all skipped due to missing types)');
|
|
6441
6441
|
return;
|
|
6442
6442
|
}
|
|
6443
|
-
log$
|
|
6443
|
+
log$b.info(`d.ts pre-pass: ${npmJobs.length} npm + ${workspaceJobs.length} workspace = ${jobs.length} job(s)`);
|
|
6444
6444
|
monitor?.check('bundle:declarations:dts-prepass:start');
|
|
6445
6445
|
await runPrePass(jobs, { workerPath: invocation.path, execArgv: invocation.execArgv, monitor });
|
|
6446
6446
|
monitor?.check('bundle:declarations:dts-prepass:end');
|
|
@@ -6470,54 +6470,54 @@ const flattenDeclarationPaths = (context) => {
|
|
|
6470
6470
|
cleanupNestedDirs(context.outputPath);
|
|
6471
6471
|
};
|
|
6472
6472
|
|
|
6473
|
-
const log$
|
|
6473
|
+
const log$a = logger.channel('builder:bundle:declarations');
|
|
6474
6474
|
const HEARTBEAT_INTERVAL_MS = 5000;
|
|
6475
6475
|
const BYTES_PER_MB$1 = 1024 * 1024;
|
|
6476
6476
|
const formatMB$1 = (bytes) => (bytes / BYTES_PER_MB$1).toFixed(1);
|
|
6477
6477
|
const startHeartbeat = (label, startedAt) => index_cjs_js$1.setInterval(() => {
|
|
6478
6478
|
const usage = process.memoryUsage();
|
|
6479
6479
|
const elapsedSec = ((index_cjs_js$5.dateNow() - startedAt) / 1000).toFixed(1);
|
|
6480
|
-
log$
|
|
6480
|
+
log$a.info(`${label} still running: elapsed=${elapsedSec}s parent heap=${formatMB$1(usage.heapUsed)}MB rss=${formatMB$1(usage.rss)}MB`);
|
|
6481
6481
|
}, HEARTBEAT_INTERVAL_MS);
|
|
6482
6482
|
const runTsc = (tscPath, args, cwd) => index_cjs_js.createPromise((resolve, reject) => {
|
|
6483
6483
|
const startedAt = index_cjs_js$5.dateNow();
|
|
6484
6484
|
const child = node_child_process.spawn(tscPath, args, { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
6485
|
-
log$
|
|
6486
|
-
log$
|
|
6485
|
+
log$a.info(`tsc spawned: pid=${child.pid ?? 'unknown'}`);
|
|
6486
|
+
log$a.debug(`tsc args: ${args.join(' ')}`);
|
|
6487
6487
|
const heartbeat = startHeartbeat('tsc', startedAt);
|
|
6488
6488
|
let stdout = '';
|
|
6489
6489
|
let stderr = '';
|
|
6490
6490
|
child.stdout.on('data', (chunk) => {
|
|
6491
6491
|
const text = chunk.toString();
|
|
6492
6492
|
stdout += text;
|
|
6493
|
-
log$
|
|
6493
|
+
log$a.debug(text.trimEnd());
|
|
6494
6494
|
});
|
|
6495
6495
|
child.stderr.on('data', (chunk) => {
|
|
6496
6496
|
const text = chunk.toString();
|
|
6497
6497
|
stderr += text;
|
|
6498
|
-
log$
|
|
6498
|
+
log$a.warn(text.trimEnd());
|
|
6499
6499
|
});
|
|
6500
6500
|
child.on('error', (error) => {
|
|
6501
6501
|
index_cjs_js$1.clearInterval(heartbeat);
|
|
6502
|
-
log$
|
|
6502
|
+
log$a.error(`tsc spawn error: ${error.message}`);
|
|
6503
6503
|
reject(error);
|
|
6504
6504
|
});
|
|
6505
6505
|
child.on('close', (code) => {
|
|
6506
6506
|
index_cjs_js$1.clearInterval(heartbeat);
|
|
6507
6507
|
const durationMs = index_cjs_js$5.dateNow() - startedAt;
|
|
6508
6508
|
if (code !== 0) {
|
|
6509
|
-
log$
|
|
6509
|
+
log$a.error(`tsc failed with exit code ${code} after ${durationMs}ms`);
|
|
6510
6510
|
reject(index_cjs_js$2.createError(`tsc failed with exit code ${code}`));
|
|
6511
6511
|
return;
|
|
6512
6512
|
}
|
|
6513
|
-
log$
|
|
6513
|
+
log$a.info(`tsc exited 0 in ${durationMs}ms`);
|
|
6514
6514
|
resolve({ success: true, stdout, stderr });
|
|
6515
6515
|
});
|
|
6516
6516
|
});
|
|
6517
6517
|
const generateDeclarations = async (context) => {
|
|
6518
|
-
log$
|
|
6518
|
+
log$a.info('generating typescript declarations');
|
|
6519
6519
|
const usage = process.memoryUsage();
|
|
6520
|
-
log$
|
|
6520
|
+
log$a.info(`pre-tsc memory: parent heap=${formatMB$1(usage.heapUsed)}MB rss=${formatMB$1(usage.rss)}MB`);
|
|
6521
6521
|
const tscPath = index_cjs_js$b.join(context.workspaceRoot, 'node_modules', '.bin', 'tsc');
|
|
6522
6522
|
const args = [
|
|
6523
6523
|
'--project',
|
|
@@ -6531,10 +6531,10 @@ const generateDeclarations = async (context) => {
|
|
|
6531
6531
|
context.outputPath,
|
|
6532
6532
|
];
|
|
6533
6533
|
const result = await runTsc(tscPath, args, context.projectRoot);
|
|
6534
|
-
log$
|
|
6534
|
+
log$a.info('flattening declaration paths');
|
|
6535
6535
|
const flattenStart = index_cjs_js$5.dateNow();
|
|
6536
6536
|
flattenDeclarationPaths(context);
|
|
6537
|
-
log$
|
|
6537
|
+
log$a.info(`flatten complete in ${index_cjs_js$5.dateNow() - flattenStart}ms`);
|
|
6538
6538
|
return result;
|
|
6539
6539
|
};
|
|
6540
6540
|
|
|
@@ -6591,7 +6591,7 @@ const entryDirOf = (entry, context) => entry.isRoot ? context.outputPath : index
|
|
|
6591
6591
|
|
|
6592
6592
|
const isUnderDir = (path, dir) => path === dir || path.startsWith(`${dir}/`);
|
|
6593
6593
|
|
|
6594
|
-
const log$
|
|
6594
|
+
const log$9 = logger.channel('builder:bundle:declarations:prune-orphans');
|
|
6595
6595
|
const ORPHAN_DTS_RE = /\.d\.ts$|\.d\.ts\.map$/;
|
|
6596
6596
|
const INDEX_DTS_NAME = 'index.d.ts';
|
|
6597
6597
|
const toDtsTarget$1 = (dir, spec, depsRoot) => {
|
|
@@ -6620,7 +6620,7 @@ const computeReachableDeclarations = (roots, depsRoot) => {
|
|
|
6620
6620
|
head += 1;
|
|
6621
6621
|
const source = index_cjs_js$7.readFileContent(file);
|
|
6622
6622
|
if (hasDynamicSpecifier(source)) {
|
|
6623
|
-
log$
|
|
6623
|
+
log$9.warn(`dynamic import/require in ${file}; keeping all orphan declarations for safety`);
|
|
6624
6624
|
return null;
|
|
6625
6625
|
}
|
|
6626
6626
|
const dir = index_cjs_js$7.getDirname(file);
|
|
@@ -6674,7 +6674,7 @@ const pruneOrphanDeclarations = (context) => {
|
|
|
6674
6674
|
total += 1;
|
|
6675
6675
|
}
|
|
6676
6676
|
if (total > 0)
|
|
6677
|
-
log$
|
|
6677
|
+
log$9.info(`pruned ${total} orphan declaration file(s)`);
|
|
6678
6678
|
return total;
|
|
6679
6679
|
};
|
|
6680
6680
|
|
|
@@ -7351,7 +7351,7 @@ const rewriteEntry = (parsed, hoists, format) => {
|
|
|
7351
7351
|
return applyEdits$1(parsed.sourceFile.text, [...deletions, { start: parsed.headerEnd, end: parsed.headerEnd, text: insertion }]);
|
|
7352
7352
|
};
|
|
7353
7353
|
|
|
7354
|
-
const log$
|
|
7354
|
+
const log$8 = logger.channel('builder:bundle:dedupe');
|
|
7355
7355
|
const FORMATS = ['esm', 'cjs'];
|
|
7356
7356
|
const toSpecifier = (relative) => (relative.startsWith('.') ? relative : `./${relative}`);
|
|
7357
7357
|
const recomputeSpecifier = (specifier, fromDir, baseDir) =>
|
|
@@ -7435,7 +7435,7 @@ const hoistSharedFirstParty = (context, monitor) => {
|
|
|
7435
7435
|
monitor?.check(`bundle:dedupe:shared-first-party:${format}:end`);
|
|
7436
7436
|
}
|
|
7437
7437
|
if (report.chunksWritten > 0)
|
|
7438
|
-
log$
|
|
7438
|
+
log$8.info(`hoisted ${report.chunksWritten} shared chunk(s), reclaimed ${report.bytesReclaimed} byte(s)`);
|
|
7439
7439
|
return report;
|
|
7440
7440
|
};
|
|
7441
7441
|
|
|
@@ -7548,7 +7548,7 @@ const removeEmptyDirs = (root) => {
|
|
|
7548
7548
|
return removed;
|
|
7549
7549
|
};
|
|
7550
7550
|
|
|
7551
|
-
const log$
|
|
7551
|
+
const log$7 = logger.channel('builder:bundle:dependencies:prune');
|
|
7552
7552
|
const computeReachable = (roots, depsRoot, resolveTarget = (target) => target) => {
|
|
7553
7553
|
const reachable = index_cjs_js$9.createSet([]);
|
|
7554
7554
|
const queue = [];
|
|
@@ -7564,7 +7564,7 @@ const computeReachable = (roots, depsRoot, resolveTarget = (target) => target) =
|
|
|
7564
7564
|
head += 1;
|
|
7565
7565
|
const source = index_cjs_js$7.readFileContent(file);
|
|
7566
7566
|
if (isUnderDir(file, depsRoot) && hasDynamicSpecifier(source)) {
|
|
7567
|
-
log$
|
|
7567
|
+
log$7.warn(`dynamic import/require in ${file}; skipping dependency orphan prune for safety`);
|
|
7568
7568
|
return null;
|
|
7569
7569
|
}
|
|
7570
7570
|
const dir = index_cjs_js$7.getDirname(file);
|
|
@@ -7796,7 +7796,7 @@ const collectImportEdges = (source, importerDir, format) => {
|
|
|
7796
7796
|
return edges;
|
|
7797
7797
|
};
|
|
7798
7798
|
|
|
7799
|
-
const log$
|
|
7799
|
+
const log$6 = logger.channel('builder:bundle:dependencies:prune');
|
|
7800
7800
|
const MAX_ITERATIONS = 50;
|
|
7801
7801
|
const FORMAT_FILES$1 = [
|
|
7802
7802
|
{ format: 'esm', fileName: 'index.esm.js' },
|
|
@@ -7848,7 +7848,7 @@ const processFormat$1 = (context, depsRoot, format, fileName, result) => {
|
|
|
7848
7848
|
if (!stripChunks(usageMap, format, result))
|
|
7849
7849
|
return;
|
|
7850
7850
|
if (iteration === MAX_ITERATIONS - 1)
|
|
7851
|
-
log$
|
|
7851
|
+
log$6.warn(`dead-export strip for ${format} hit the ${MAX_ITERATIONS}-iteration cap before converging`);
|
|
7852
7852
|
}
|
|
7853
7853
|
};
|
|
7854
7854
|
const stripDeadExportsPass = (context, depsRoot) => {
|
|
@@ -8151,7 +8151,7 @@ const destructureRequires = (source, chunkDir, isSafeTarget) => {
|
|
|
8151
8151
|
return { code: applyEdits(source, edits), rewrittenBindings: qualified.length };
|
|
8152
8152
|
};
|
|
8153
8153
|
|
|
8154
|
-
const log$
|
|
8154
|
+
const log$5 = logger.channel('builder:bundle:dependencies:prune');
|
|
8155
8155
|
const CJS_CHUNK = 'index.cjs.js';
|
|
8156
8156
|
const collectRequireTargets = (source, chunkDir, chunkSet) => {
|
|
8157
8157
|
const sourceFile = parseChunk(source);
|
|
@@ -8240,7 +8240,7 @@ const destructureRequiresPass = (depsRoot) => {
|
|
|
8240
8240
|
for (const chunk of chunks) {
|
|
8241
8241
|
const source = index_cjs_js$7.readFileContent(chunk);
|
|
8242
8242
|
if (hasDynamicSpecifier(source)) {
|
|
8243
|
-
log$
|
|
8243
|
+
log$5.warn(`dynamic import/require in ${chunk}; skipping require-destructure pass for safety`);
|
|
8244
8244
|
return result;
|
|
8245
8245
|
}
|
|
8246
8246
|
sources.set(chunk, source);
|
|
@@ -8464,6 +8464,8 @@ const stripDeadPropertiesPass = (context, depsRoot) => {
|
|
|
8464
8464
|
};
|
|
8465
8465
|
|
|
8466
8466
|
const PRESERVE = /@(?:__PURE__|__NO_SIDE_EFFECTS__|license|preserve|cc_on)|^\s*\/[*/]!|#__PURE__/;
|
|
8467
|
+
// why: an eslint pragma is internal tooling residue that must never ship, even when its description text happens to contain a preserved marker like '@preserve'; it takes precedence over PRESERVE.
|
|
8468
|
+
const ESLINT_PRAGMA = /^\/[*/]\s*eslint-(?:disable|enable)/;
|
|
8467
8469
|
const VALUE_END_TOKENS = index_cjs_js$9.createSet([
|
|
8468
8470
|
ts.SyntaxKind.Identifier,
|
|
8469
8471
|
ts.SyntaxKind.NumericLiteral,
|
|
@@ -8538,7 +8540,10 @@ const removalRange = (text, comment) => {
|
|
|
8538
8540
|
};
|
|
8539
8541
|
|
|
8540
8542
|
const stripComments = (source) => {
|
|
8541
|
-
const removable = collectComments(source).filter((range) =>
|
|
8543
|
+
const removable = collectComments(source).filter((range) => {
|
|
8544
|
+
const text = source.slice(range.start, range.end);
|
|
8545
|
+
return ESLINT_PRAGMA.test(text) || !PRESERVE.test(text);
|
|
8546
|
+
});
|
|
8542
8547
|
if (removable.length === 0)
|
|
8543
8548
|
return null;
|
|
8544
8549
|
const ranges = removable.map((comment) => removalRange(source, comment));
|
|
@@ -8565,7 +8570,7 @@ const stripCommentsPass = (depsRoot) => {
|
|
|
8565
8570
|
return result;
|
|
8566
8571
|
};
|
|
8567
8572
|
|
|
8568
|
-
const log$
|
|
8573
|
+
const log$4 = logger.channel('builder:bundle:dependencies:prune');
|
|
8569
8574
|
|
|
8570
8575
|
const pruneDependencies = (context, monitor) => {
|
|
8571
8576
|
const depsRoot = depsRootOf(context);
|
|
@@ -8600,7 +8605,7 @@ const pruneDependencies = (context, monitor) => {
|
|
|
8600
8605
|
report.deadPropertiesRemoved > 0 ||
|
|
8601
8606
|
report.requireBindingsDestructured > 0 ||
|
|
8602
8607
|
report.commentBytesRemoved > 0) {
|
|
8603
|
-
log$
|
|
8608
|
+
log$4.info(`pruned ${report.orphanFilesRemoved} orphan dependency file(s), ${report.deadExportsRemoved} dead export(s), and ${report.deadPropertiesRemoved} dead namespace slot(s), destructured ${report.requireBindingsDestructured} require binding(s), stripped ${report.commentBytesRemoved} comment byte(s), reclaimed ${report.bytesRemoved} byte(s)`);
|
|
8604
8609
|
}
|
|
8605
8610
|
return report;
|
|
8606
8611
|
};
|
|
@@ -8634,6 +8639,34 @@ const resolveEntries = (config, discoveredEntries) => {
|
|
|
8634
8639
|
return entries;
|
|
8635
8640
|
};
|
|
8636
8641
|
|
|
8642
|
+
const log$3 = logger.channel('builder:bundle:strip-comments');
|
|
8643
|
+
const stripFile = (file, result) => {
|
|
8644
|
+
const source = index_cjs_js$7.readFileContent(file);
|
|
8645
|
+
const stripped = stripComments(source);
|
|
8646
|
+
if (stripped === null)
|
|
8647
|
+
return;
|
|
8648
|
+
index_cjs_js$7.writeFileContent(file, stripped);
|
|
8649
|
+
result.commentBytesRemoved += Buffer.byteLength(source) - Buffer.byteLength(stripped);
|
|
8650
|
+
};
|
|
8651
|
+
|
|
8652
|
+
const stripBundleCommentsPass = (outputPath, outputs) => {
|
|
8653
|
+
const result = { commentBytesRemoved: 0 };
|
|
8654
|
+
for (const { config } of outputs.iife) {
|
|
8655
|
+
if (config.sourcemap)
|
|
8656
|
+
continue;
|
|
8657
|
+
stripFile(index_cjs_js$7.join(outputPath, config.output ?? 'bundle', 'index.iife.js'), result);
|
|
8658
|
+
}
|
|
8659
|
+
for (const { config } of outputs.umd) {
|
|
8660
|
+
if (config.sourcemap)
|
|
8661
|
+
continue;
|
|
8662
|
+
stripFile(index_cjs_js$7.join(outputPath, config.output ?? 'bundle', 'index.umd.js'), result);
|
|
8663
|
+
}
|
|
8664
|
+
if (result.commentBytesRemoved > 0) {
|
|
8665
|
+
log$3.info(`bundle comment strip: removed ${result.commentBytesRemoved} bytes from iife/umd outputs`);
|
|
8666
|
+
}
|
|
8667
|
+
return result;
|
|
8668
|
+
};
|
|
8669
|
+
|
|
8637
8670
|
const log$2 = logger.channel('builder:bundle');
|
|
8638
8671
|
const toArray = (value) => (value === undefined ? [] : index_cjs_js$4.isArray(value) ? value : [value]);
|
|
8639
8672
|
const collectFormatsRequestingPrePass = (config) => {
|
|
@@ -8818,6 +8851,8 @@ const runBundlePhase = async (context, config, monitor) => {
|
|
|
8818
8851
|
monitor?.check('bundle:cjs:end:post-recover');
|
|
8819
8852
|
await runIifeFormats(config, context, outputs, resolveDispatch, monitor);
|
|
8820
8853
|
await runUmdFormats(config, context, outputs, resolveDispatch, monitor);
|
|
8854
|
+
stripBundleCommentsPass(context.outputPath, outputs);
|
|
8855
|
+
monitor?.check('bundle:strip-comments:end');
|
|
8821
8856
|
await recover();
|
|
8822
8857
|
monitor?.check('bundle:declarations:start');
|
|
8823
8858
|
await generateDeclarations(context);
|
|
@@ -9203,7 +9238,6 @@ const constructLicenseUrl = (repository, licenseFileName) => {
|
|
|
9203
9238
|
|
|
9204
9239
|
const log = logger.channel('builder:package:licenses');
|
|
9205
9240
|
const matchPattern = (content, source) =>
|
|
9206
|
-
// eslint-disable-next-line workspace/no-unsafe-regex -- @preserve: SPDX patterns are static, vetted strings declared inline
|
|
9207
9241
|
index_cjs_js$f.createRegExp(source, 'i').test(content);
|
|
9208
9242
|
const findLicenseFile = (packageDir) => {
|
|
9209
9243
|
const match = index_cjs_js$7.readDirectory(packageDir).find((f) => f.isFile && /^license(\.md|\.txt)?$/i.test(f.name));
|