@stati/core 1.23.4 → 1.24.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/dist/core/dev.d.ts.map +1 -1
- package/dist/core/dev.js +41 -26
- package/dist/core/utils/dev-css-watcher.utils.d.ts +26 -0
- package/dist/core/utils/dev-css-watcher.utils.d.ts.map +1 -0
- package/dist/core/utils/dev-css-watcher.utils.js +70 -0
- package/dist/core/utils/env.utils.d.ts +5 -0
- package/dist/core/utils/env.utils.d.ts.map +1 -0
- package/dist/core/utils/env.utils.js +8 -0
- package/dist/core/utils/index.d.ts +3 -0
- package/dist/core/utils/index.d.ts.map +1 -1
- package/dist/core/utils/index.js +4 -0
- package/package.json +1 -1
package/dist/core/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/core/dev.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAe,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/core/dev.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAe,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsC7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAscD,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CA+gBxF"}
|
package/dist/core/dev.js
CHANGED
|
@@ -11,7 +11,7 @@ import { clearMarkdownProcessorCache } from './markdown.js';
|
|
|
11
11
|
import { loadCacheManifest, saveCacheManifest, computeNavigationHash, DevServerLockManager, } from './isg/index.js';
|
|
12
12
|
import { loadContent } from './content.js';
|
|
13
13
|
import { buildNavigation } from './navigation.js';
|
|
14
|
-
import { resolveDevPaths, resolveCacheDir, resolvePrettyUrl, createErrorOverlay, parseErrorDetails, TemplateError, createFallbackLogger, mergeServerOptions, createTypeScriptWatcher, normalizePathForComparison, isPathWithinDirectory, } from './utils/index.js';
|
|
14
|
+
import { resolveDevPaths, resolveCacheDir, resolvePrettyUrl, createErrorOverlay, parseErrorDetails, TemplateError, createFallbackLogger, mergeServerOptions, createTypeScriptWatcher, isEnabledEnvFlag, refreshCssOutputWatcher, normalizePathForComparison, isPathWithinDirectory, } from './utils/index.js';
|
|
15
15
|
import { setEnv, getEnv } from '../env.js';
|
|
16
16
|
import { DEFAULT_DEV_PORT, DEFAULT_DEV_HOST, TEMPLATE_EXTENSION, DEFAULT_OUT_DIR, } from '../constants.js';
|
|
17
17
|
/**
|
|
@@ -77,9 +77,10 @@ async function performInitialBuild(configPath, logger, onError) {
|
|
|
77
77
|
* active build. The `changes` Map stores file paths as keys and their event types as values,
|
|
78
78
|
* ensuring each file is only processed once with its most recent event type.
|
|
79
79
|
* @param onError - Optional callback invoked when build errors occur
|
|
80
|
+
* @param onBuildEnd - Optional callback invoked after each build attempt finishes (success or failure)
|
|
80
81
|
* @param batchedChanges - Array of changes to process in a single batch (used for pending queue processing)
|
|
81
82
|
*/
|
|
82
|
-
async function performIncrementalRebuild(changedPath, eventType, configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, onError, batchedChanges = []) {
|
|
83
|
+
async function performIncrementalRebuild(changedPath, eventType, configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, onError, onBuildEnd, batchedChanges = []) {
|
|
83
84
|
// If a build is in progress, queue this change for processing after the current build
|
|
84
85
|
if (isBuildingRef.value) {
|
|
85
86
|
pendingChangesRef.changes.set(changedPath, eventType);
|
|
@@ -195,6 +196,14 @@ async function performIncrementalRebuild(changedPath, eventType, configPath, sta
|
|
|
195
196
|
}
|
|
196
197
|
finally {
|
|
197
198
|
isBuildingRef.value = false;
|
|
199
|
+
if (onBuildEnd) {
|
|
200
|
+
try {
|
|
201
|
+
await onBuildEnd();
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
logger.error?.(`Failed post-build hook after rebuild: ${error instanceof Error ? error.message : String(error)}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
198
207
|
// Check if there are pending changes that occurred during this build
|
|
199
208
|
if (pendingChangesRef.changes.size > 0) {
|
|
200
209
|
// Get all pending changes - the build will process all of them at once
|
|
@@ -204,7 +213,7 @@ async function performIncrementalRebuild(changedPath, eventType, configPath, sta
|
|
|
204
213
|
// The build() call will copy all static assets and rebuild all affected pages
|
|
205
214
|
const [first, ...remaining] = pendingChanges;
|
|
206
215
|
if (first) {
|
|
207
|
-
void performIncrementalRebuild(first.path, first.eventType, configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, onError, remaining);
|
|
216
|
+
void performIncrementalRebuild(first.path, first.eventType, configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, onError, onBuildEnd, remaining);
|
|
208
217
|
}
|
|
209
218
|
}
|
|
210
219
|
}
|
|
@@ -405,6 +414,10 @@ export async function createDevServer(options = {}) {
|
|
|
405
414
|
const isBuildingRef = { value: false };
|
|
406
415
|
const pendingChangesRef = { changes: new Map() };
|
|
407
416
|
let isStopping = false;
|
|
417
|
+
const watchedCssFiles = new Set();
|
|
418
|
+
// Diagnostics toggles used for investigating dev-server rebuild slowdown.
|
|
419
|
+
const disableCssWatcher = isEnabledEnvFlag(process.env.STATI_DEV_DISABLE_CSS_WATCHER);
|
|
420
|
+
const disableWsReload = isEnabledEnvFlag(process.env.STATI_DEV_DISABLE_WS_RELOAD);
|
|
408
421
|
/**
|
|
409
422
|
* Gets MIME type for a file based on its extension
|
|
410
423
|
*/
|
|
@@ -673,7 +686,7 @@ export async function createDevServer(options = {}) {
|
|
|
673
686
|
onRebuild: (_results, compileTimeMs) => {
|
|
674
687
|
logger.info?.(`▸ TypeScript recompiled in ${compileTimeMs}ms`);
|
|
675
688
|
// Broadcast reload to WebSocket clients
|
|
676
|
-
if (wsServer) {
|
|
689
|
+
if (wsServer && !disableWsReload) {
|
|
677
690
|
wsServer.clients.forEach((client) => {
|
|
678
691
|
const ws = client;
|
|
679
692
|
if (ws.readyState === 1) {
|
|
@@ -705,40 +718,42 @@ export async function createDevServer(options = {}) {
|
|
|
705
718
|
persistent: true,
|
|
706
719
|
ignoreInitial: true,
|
|
707
720
|
});
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
if (ws.readyState === 1) {
|
|
723
|
-
ws.send(JSON.stringify({ type: 'reload' }));
|
|
724
|
-
}
|
|
725
|
-
});
|
|
721
|
+
const refreshCssWatcher = async () => {
|
|
722
|
+
cssWatcher = await refreshCssOutputWatcher({
|
|
723
|
+
outDir,
|
|
724
|
+
logger,
|
|
725
|
+
wsServer,
|
|
726
|
+
disableWsReload,
|
|
727
|
+
cssWatcher,
|
|
728
|
+
watchedCssFiles,
|
|
729
|
+
});
|
|
730
|
+
};
|
|
731
|
+
if (!disableCssWatcher) {
|
|
732
|
+
await refreshCssWatcher();
|
|
733
|
+
if (!cssWatcher) {
|
|
734
|
+
logger.info?.(' • [dev] No CSS files found in output; CSS watcher not started');
|
|
726
735
|
}
|
|
727
|
-
}
|
|
736
|
+
}
|
|
728
737
|
watcher.on('change', (path) => {
|
|
729
|
-
void performIncrementalRebuild(path, 'change', configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, setLastBuildError);
|
|
738
|
+
void performIncrementalRebuild(path, 'change', configPath, staticDir, logger, disableWsReload ? null : wsServer, isBuildingRef, pendingChangesRef, setLastBuildError, disableCssWatcher ? undefined : refreshCssWatcher);
|
|
730
739
|
});
|
|
731
740
|
watcher.on('add', (path) => {
|
|
732
|
-
void performIncrementalRebuild(path, 'add', configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, setLastBuildError);
|
|
741
|
+
void performIncrementalRebuild(path, 'add', configPath, staticDir, logger, disableWsReload ? null : wsServer, isBuildingRef, pendingChangesRef, setLastBuildError, disableCssWatcher ? undefined : refreshCssWatcher);
|
|
733
742
|
});
|
|
734
743
|
watcher.on('unlink', (path) => {
|
|
735
|
-
void performIncrementalRebuild(path, 'unlink', configPath, staticDir, logger, wsServer, isBuildingRef, pendingChangesRef, setLastBuildError);
|
|
744
|
+
void performIncrementalRebuild(path, 'unlink', configPath, staticDir, logger, disableWsReload ? null : wsServer, isBuildingRef, pendingChangesRef, setLastBuildError, disableCssWatcher ? undefined : refreshCssWatcher);
|
|
736
745
|
});
|
|
737
746
|
logger.success?.(`Dev server running at ${url}`);
|
|
738
747
|
logger.info?.(`\nServing:`);
|
|
739
748
|
logger.info?.(` • ${outDir}`);
|
|
740
749
|
logger.info?.('Watching:');
|
|
741
750
|
watchPaths.forEach((path) => logger.info?.(` • ${path}`));
|
|
751
|
+
if (disableCssWatcher) {
|
|
752
|
+
logger.info?.(' • [diagnostic] CSS output watcher disabled');
|
|
753
|
+
}
|
|
754
|
+
if (disableWsReload) {
|
|
755
|
+
logger.info?.(' • [diagnostic] WebSocket reload broadcast disabled');
|
|
756
|
+
}
|
|
742
757
|
logger.info?.('');
|
|
743
758
|
// Open browser if requested
|
|
744
759
|
if (open) {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { FSWatcher } from 'chokidar';
|
|
2
|
+
import type { WebSocketServer } from 'ws';
|
|
3
|
+
import type { Logger } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns concrete CSS files currently present in outDir.
|
|
6
|
+
*
|
|
7
|
+
* Watching explicit files avoids a broad recursive outDir glob watcher,
|
|
8
|
+
* which can add significant overhead on large docs sites.
|
|
9
|
+
*/
|
|
10
|
+
export declare function discoverOutputCssFiles(outDir: string): Promise<string[]>;
|
|
11
|
+
export interface RefreshCssOutputWatcherParams {
|
|
12
|
+
outDir: string;
|
|
13
|
+
logger: Logger;
|
|
14
|
+
wsServer: WebSocketServer | null;
|
|
15
|
+
disableWsReload: boolean;
|
|
16
|
+
cssWatcher: FSWatcher | null;
|
|
17
|
+
watchedCssFiles: Set<string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Reconciles the CSS watcher with the current output CSS file membership.
|
|
21
|
+
*
|
|
22
|
+
* If the file set changed, this closes the previous watcher and creates a new one
|
|
23
|
+
* bound to the latest concrete files.
|
|
24
|
+
*/
|
|
25
|
+
export declare function refreshCssOutputWatcher(params: RefreshCssOutputWatcherParams): Promise<FSWatcher | null>;
|
|
26
|
+
//# sourceMappingURL=dev-css-watcher.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-css-watcher.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/dev-css-watcher.utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa9E;AA0BD,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgC3B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import chokidar from 'chokidar';
|
|
2
|
+
import fg from 'fast-glob';
|
|
3
|
+
import { pathExists } from './fs.utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns concrete CSS files currently present in outDir.
|
|
6
|
+
*
|
|
7
|
+
* Watching explicit files avoids a broad recursive outDir glob watcher,
|
|
8
|
+
* which can add significant overhead on large docs sites.
|
|
9
|
+
*/
|
|
10
|
+
export async function discoverOutputCssFiles(outDir) {
|
|
11
|
+
if (!(await pathExists(outDir))) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const cssFiles = await fg('**/*.css', {
|
|
15
|
+
cwd: outDir,
|
|
16
|
+
absolute: true,
|
|
17
|
+
onlyFiles: true,
|
|
18
|
+
dot: false,
|
|
19
|
+
});
|
|
20
|
+
return cssFiles;
|
|
21
|
+
}
|
|
22
|
+
function hasSameMembership(nextFiles, watchedCssFiles) {
|
|
23
|
+
if (nextFiles.length !== watchedCssFiles.size) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return nextFiles.every((file) => watchedCssFiles.has(file));
|
|
27
|
+
}
|
|
28
|
+
function broadcastReload(wsServer, disableWsReload, payload) {
|
|
29
|
+
if (!wsServer || disableWsReload) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
wsServer.clients.forEach((client) => {
|
|
33
|
+
const ws = client;
|
|
34
|
+
if (ws.readyState === 1) {
|
|
35
|
+
ws.send(payload);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reconciles the CSS watcher with the current output CSS file membership.
|
|
41
|
+
*
|
|
42
|
+
* If the file set changed, this closes the previous watcher and creates a new one
|
|
43
|
+
* bound to the latest concrete files.
|
|
44
|
+
*/
|
|
45
|
+
export async function refreshCssOutputWatcher(params) {
|
|
46
|
+
const { outDir, logger, wsServer, disableWsReload, cssWatcher, watchedCssFiles } = params;
|
|
47
|
+
const cssFiles = await discoverOutputCssFiles(outDir);
|
|
48
|
+
if (hasSameMembership(cssFiles, watchedCssFiles)) {
|
|
49
|
+
return cssWatcher;
|
|
50
|
+
}
|
|
51
|
+
if (cssWatcher) {
|
|
52
|
+
await cssWatcher.close();
|
|
53
|
+
}
|
|
54
|
+
watchedCssFiles.clear();
|
|
55
|
+
cssFiles.forEach((file) => watchedCssFiles.add(file));
|
|
56
|
+
if (cssFiles.length === 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const nextCssWatcher = chokidar.watch(cssFiles, {
|
|
60
|
+
ignored: /(^|[/\\])\../,
|
|
61
|
+
persistent: true,
|
|
62
|
+
ignoreInitial: true,
|
|
63
|
+
});
|
|
64
|
+
nextCssWatcher.on('change', (path) => {
|
|
65
|
+
const relativePath = path.replace(process.cwd(), '').replace(/\\/g, '/').replace(/^\//, '');
|
|
66
|
+
logger.info?.(`▸ ${relativePath} updated`);
|
|
67
|
+
broadcastReload(wsServer, disableWsReload, JSON.stringify({ type: 'reload' }));
|
|
68
|
+
});
|
|
69
|
+
return nextCssWatcher;
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/env.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGnE"}
|
|
@@ -25,4 +25,7 @@ export { createFallbackLogger } from './logger.utils.js';
|
|
|
25
25
|
export { compileTypeScript, createTypeScriptWatcher, compileStatiConfig, cleanupCompiledConfig, autoInjectBundles, formatBytes, detectExistingBundles, } from './typescript.utils.js';
|
|
26
26
|
export type { CompileOptions, WatchOptions } from './typescript.utils.js';
|
|
27
27
|
export { findHeadClosePosition, injectBeforeHeadClose } from './html.utils.js';
|
|
28
|
+
export { isEnabledEnvFlag } from './env.utils.js';
|
|
29
|
+
export { discoverOutputCssFiles, refreshCssOutputWatcher } from './dev-css-watcher.utils.js';
|
|
30
|
+
export type { RefreshCssOutputWatcherParams } from './dev-css-watcher.utils.js';
|
|
28
31
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,EACP,IAAI,GACL,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,YAAY,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,EACP,IAAI,GACL,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,YAAY,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,YAAY,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/core/utils/index.js
CHANGED
|
@@ -38,3 +38,7 @@ export { createFallbackLogger } from './logger.utils.js';
|
|
|
38
38
|
export { compileTypeScript, createTypeScriptWatcher, compileStatiConfig, cleanupCompiledConfig, autoInjectBundles, formatBytes, detectExistingBundles, } from './typescript.utils.js';
|
|
39
39
|
// HTML manipulation utilities
|
|
40
40
|
export { findHeadClosePosition, injectBeforeHeadClose } from './html.utils.js';
|
|
41
|
+
// Environment utilities
|
|
42
|
+
export { isEnabledEnvFlag } from './env.utils.js';
|
|
43
|
+
// Dev-server CSS watcher utilities
|
|
44
|
+
export { discoverOutputCssFiles, refreshCssOutputWatcher } from './dev-css-watcher.utils.js';
|