@stati/core 1.12.5 → 1.13.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/README.md +2 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +26 -6
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -0
- package/dist/core/build.d.ts.map +1 -1
- package/dist/core/build.js +29 -6
- package/dist/core/content.js +1 -1
- package/dist/core/dev.d.ts.map +1 -1
- package/dist/core/dev.js +48 -5
- package/dist/core/isg/build-lock.js +2 -2
- package/dist/core/isg/deps.js +1 -1
- package/dist/core/isg/hash.js +1 -1
- package/dist/core/isg/manifest.js +1 -1
- package/dist/core/markdown.js +3 -3
- package/dist/core/navigation.js +1 -1
- package/dist/core/preview.js +3 -3
- package/dist/core/templates.d.ts +1 -1
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +3 -2
- package/dist/core/utils/fs.utils.d.ts +1 -1
- package/dist/core/utils/fs.utils.d.ts.map +1 -1
- package/dist/core/utils/index.d.ts +2 -0
- package/dist/core/utils/index.d.ts.map +1 -1
- package/dist/core/utils/index.js +2 -0
- package/dist/core/utils/paths.utils.d.ts.map +1 -1
- package/dist/core/utils/paths.utils.js +1 -2
- package/dist/core/utils/server.utils.js +2 -2
- package/dist/core/utils/tailwind-inventory.utils.js +1 -1
- package/dist/core/utils/template-discovery.utils.d.ts.map +1 -1
- package/dist/core/utils/template-discovery.utils.js +1 -2
- package/dist/core/utils/typescript.utils.d.ts +117 -0
- package/dist/core/utils/typescript.utils.d.ts.map +1 -0
- package/dist/core/utils/typescript.utils.js +237 -0
- package/dist/core/utils/version.utils.js +3 -3
- package/dist/env.d.ts +4 -2
- package/dist/env.d.ts.map +1 -1
- package/dist/types/config.d.ts +67 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/content.d.ts +18 -0
- package/dist/types/content.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -93,7 +93,8 @@ That's it! Your site is ready.
|
|
|
93
93
|
### For Advanced Users
|
|
94
94
|
|
|
95
95
|
- **Programmatic API** — Full control over the build process
|
|
96
|
-
- **TypeScript-First** — Complete type safety
|
|
96
|
+
- **TypeScript-First** — Complete type safety for configuration
|
|
97
|
+
- **TypeScript Compilation** — Built-in esbuild for client-side TypeScript
|
|
97
98
|
- **Extensible Hooks** — Customize every stage of the build
|
|
98
99
|
- **Smart Caching** — Incremental builds with intelligent invalidation
|
|
99
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiCrD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0ElF"}
|
package/dist/config/loader.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { existsSync } from 'fs';
|
|
2
|
-
import { join, resolve } from 'path';
|
|
3
|
-
import { pathToFileURL } from 'url';
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
4
|
import { validateISGConfig, ISGConfigurationError } from '../core/isg/validation.js';
|
|
5
|
+
import { compileStatiConfig, cleanupCompiledConfig } from '../core/utils/index.js';
|
|
5
6
|
import { DEFAULT_SRC_DIR, DEFAULT_OUT_DIR, DEFAULT_STATIC_DIR, DEFAULT_SITE_TITLE, DEFAULT_DEV_BASE_URL, DEFAULT_TTL_SECONDS, DEFAULT_MAX_AGE_CAP_DAYS, CONFIG_FILE_PATTERNS, } from '../constants.js';
|
|
6
7
|
/**
|
|
7
8
|
* Default configuration values for Stati.
|
|
@@ -62,9 +63,28 @@ export async function loadConfig(cwd = process.cwd()) {
|
|
|
62
63
|
return DEFAULT_CONFIG;
|
|
63
64
|
}
|
|
64
65
|
try {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
let configModule;
|
|
67
|
+
let compiledPath;
|
|
68
|
+
// If it's a .ts file, compile it first
|
|
69
|
+
if (configPath.endsWith('.ts')) {
|
|
70
|
+
try {
|
|
71
|
+
compiledPath = await compileStatiConfig(resolve(configPath));
|
|
72
|
+
const configUrl = pathToFileURL(compiledPath).href;
|
|
73
|
+
configModule = await import(configUrl);
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
// Clean up compiled file
|
|
77
|
+
if (compiledPath) {
|
|
78
|
+
await cleanupCompiledConfig(compiledPath);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Existing logic for .js/.mjs
|
|
84
|
+
const configUrl = pathToFileURL(resolve(configPath)).href;
|
|
85
|
+
configModule = await import(configUrl);
|
|
86
|
+
}
|
|
87
|
+
const userConfig = configModule.default || configModule;
|
|
68
88
|
const mergedConfig = {
|
|
69
89
|
...DEFAULT_CONFIG,
|
|
70
90
|
...userConfig,
|
package/dist/constants.d.ts
CHANGED
|
@@ -70,4 +70,12 @@ export declare const PARTIALS_DIR_PREFIX = "_";
|
|
|
70
70
|
export declare const DEFAULT_SITE_TITLE = "My Stati Site";
|
|
71
71
|
/** Default locale for internationalization */
|
|
72
72
|
export declare const DEFAULT_LOCALE = "en-US";
|
|
73
|
+
/** Default TypeScript source directory */
|
|
74
|
+
export declare const DEFAULT_TS_SRC_DIR = "src";
|
|
75
|
+
/** Default TypeScript output directory (relative to build output) */
|
|
76
|
+
export declare const DEFAULT_TS_OUT_DIR = "_assets";
|
|
77
|
+
/** Default TypeScript entry point filename */
|
|
78
|
+
export declare const DEFAULT_TS_ENTRY_POINT = "main.ts";
|
|
79
|
+
/** Default TypeScript bundle name */
|
|
80
|
+
export declare const DEFAULT_TS_BUNDLE_NAME = "bundle";
|
|
73
81
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iDAAiD;AACjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,iCAAiC;AACjC,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,kCAAkC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAIjD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,iCAAkC,CAAC;AAEtE,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAIF,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,0BAAmD,CAAC;AAIrF,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAI9C,4BAA4B;AAC5B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAAsB,CAAC;AAEpD,8BAA8B;AAC9B,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAI3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAyB,CAAC;AAEpD,iDAAiD;AACjD,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAE3C,iDAAiD;AACjD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,SAAS,QAAkB,CAAC;AAEzC,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAI3C,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,eAAgC,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,8CAA8C;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iDAAiD;AACjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,iCAAiC;AACjC,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,kCAAkC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAIjD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,iCAAkC,CAAC;AAEtE,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAIF,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,0BAAmD,CAAC;AAIrF,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAI9C,4BAA4B;AAC5B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAAsB,CAAC;AAEpD,8BAA8B;AAC9B,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAI3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAyB,CAAC;AAEpD,iDAAiD;AACjD,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAE3C,iDAAiD;AACjD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,SAAS,QAAkB,CAAC;AAEzC,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAI3C,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,eAAgC,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,8CAA8C;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC;AAItC,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,qCAAqC;AACrC,eAAO,MAAM,sBAAsB,WAAW,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -78,3 +78,12 @@ export const PARTIALS_DIR_PREFIX = '_';
|
|
|
78
78
|
export const DEFAULT_SITE_TITLE = 'My Stati Site';
|
|
79
79
|
/** Default locale for internationalization */
|
|
80
80
|
export const DEFAULT_LOCALE = 'en-US';
|
|
81
|
+
// === TypeScript Constants ===
|
|
82
|
+
/** Default TypeScript source directory */
|
|
83
|
+
export const DEFAULT_TS_SRC_DIR = 'src';
|
|
84
|
+
/** Default TypeScript output directory (relative to build output) */
|
|
85
|
+
export const DEFAULT_TS_OUT_DIR = '_assets';
|
|
86
|
+
/** Default TypeScript entry point filename */
|
|
87
|
+
export const DEFAULT_TS_ENTRY_POINT = 'main.ts';
|
|
88
|
+
/** Default TypeScript bundle name */
|
|
89
|
+
export const DEFAULT_TS_BUNDLE_NAME = 'bundle';
|
package/dist/core/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/core/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/core/build.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAEV,UAAU,EACV,MAAM,EAMP,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAW3E"}
|
package/dist/core/build.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ensureDir, writeFile, remove, pathExists, stat, readdir, copyFile, resolveOutDir, resolveStaticDir, resolveCacheDir, enableInventoryTracking, disableInventoryTracking, clearInventory, writeTailwindClassInventory, getInventorySize, isTailwindUsed, loadPreviousInventory, } from './utils/index.js';
|
|
2
|
-
import { join, dirname, relative } from 'path';
|
|
3
|
-
import { posix } from 'path';
|
|
1
|
+
import { ensureDir, writeFile, remove, pathExists, stat, readdir, copyFile, resolveOutDir, resolveStaticDir, resolveCacheDir, enableInventoryTracking, disableInventoryTracking, clearInventory, writeTailwindClassInventory, getInventorySize, isTailwindUsed, loadPreviousInventory, compileTypeScript, autoInjectBundle, } from './utils/index.js';
|
|
2
|
+
import { join, dirname, relative, posix } from 'node:path';
|
|
4
3
|
import { loadConfig } from '../config/loader.js';
|
|
5
4
|
import { loadContent } from './content.js';
|
|
6
5
|
import { createMarkdownProcessor, renderMarkdown } from './markdown.js';
|
|
@@ -10,6 +9,7 @@ import { loadCacheManifest, saveCacheManifest, shouldRebuildPage, createCacheEnt
|
|
|
10
9
|
import { generateSitemap, generateRobotsTxtFromConfig, autoInjectSEO, } from '../seo/index.js';
|
|
11
10
|
import { generateRSSFeeds, validateRSSConfig } from '../rss/index.js';
|
|
12
11
|
import { getEnv } from '../env.js';
|
|
12
|
+
import { DEFAULT_TS_OUT_DIR } from '../constants.js';
|
|
13
13
|
/**
|
|
14
14
|
* Recursively calculates the total size of a directory in bytes.
|
|
15
15
|
* Used for build statistics.
|
|
@@ -184,7 +184,7 @@ async function loadContentAndBuildNavigation(config, options, logger) {
|
|
|
184
184
|
/**
|
|
185
185
|
* Processes pages with ISG caching logic.
|
|
186
186
|
*/
|
|
187
|
-
async function processPagesWithCache(pages, manifest, config, outDir, md, eta, navigation, buildTime, options, logger) {
|
|
187
|
+
async function processPagesWithCache(pages, manifest, config, outDir, md, eta, navigation, buildTime, options, logger, assets) {
|
|
188
188
|
let cacheHits = 0;
|
|
189
189
|
let cacheMisses = 0;
|
|
190
190
|
// Build context
|
|
@@ -262,7 +262,7 @@ async function processPagesWithCache(pages, manifest, config, outDir, md, eta, n
|
|
|
262
262
|
logger.updateTreeNode(templateId, 'running');
|
|
263
263
|
}
|
|
264
264
|
// Render with template
|
|
265
|
-
let finalHtml = await renderPage(page, htmlContent, config, eta, navigation, pages);
|
|
265
|
+
let finalHtml = await renderPage(page, htmlContent, config, eta, navigation, pages, assets);
|
|
266
266
|
// Auto-inject SEO tags if enabled
|
|
267
267
|
if (config.seo?.autoInject !== false) {
|
|
268
268
|
const injectOptions = {
|
|
@@ -276,6 +276,10 @@ async function processPagesWithCache(pages, manifest, config, outDir, md, eta, n
|
|
|
276
276
|
}
|
|
277
277
|
finalHtml = autoInjectSEO(finalHtml, injectOptions);
|
|
278
278
|
}
|
|
279
|
+
// Auto-inject TypeScript bundle script tag if available
|
|
280
|
+
if (assets?.bundlePath) {
|
|
281
|
+
finalHtml = autoInjectBundle(finalHtml, assets.bundlePath);
|
|
282
|
+
}
|
|
279
283
|
const renderTime = Date.now() - startTime;
|
|
280
284
|
if (logger.updateTreeNode) {
|
|
281
285
|
logger.updateTreeNode(templateId, 'completed');
|
|
@@ -396,12 +400,31 @@ async function buildInternal(options = {}) {
|
|
|
396
400
|
const { pages, navigation, md, eta, navigationHash } = await loadContentAndBuildNavigation(config, options, logger);
|
|
397
401
|
// Store navigation hash in manifest for change detection in dev server
|
|
398
402
|
manifest.navigationHash = navigationHash;
|
|
403
|
+
// Compile TypeScript if enabled
|
|
404
|
+
let tsResult;
|
|
405
|
+
let assets;
|
|
406
|
+
if (config.typescript?.enabled) {
|
|
407
|
+
tsResult = await compileTypeScript({
|
|
408
|
+
projectRoot: process.cwd(),
|
|
409
|
+
config: config.typescript,
|
|
410
|
+
outDir: config.outDir || 'dist',
|
|
411
|
+
mode: getEnv() === 'production' ? 'production' : 'development',
|
|
412
|
+
logger,
|
|
413
|
+
});
|
|
414
|
+
if (tsResult?.bundleFilename) {
|
|
415
|
+
const assetsDir = config.typescript.outDir || DEFAULT_TS_OUT_DIR;
|
|
416
|
+
assets = {
|
|
417
|
+
bundleName: tsResult.bundleFilename,
|
|
418
|
+
bundlePath: posix.join('/', assetsDir, tsResult.bundleFilename),
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
}
|
|
399
422
|
// Process pages with ISG caching logic
|
|
400
423
|
if (logger.step) {
|
|
401
424
|
console.log(); // Add spacing before page processing
|
|
402
425
|
}
|
|
403
426
|
const buildTime = new Date();
|
|
404
|
-
const pageProcessingResult = await processPagesWithCache(pages, manifest, config, outDir, md, eta, navigation, buildTime, options, logger);
|
|
427
|
+
const pageProcessingResult = await processPagesWithCache(pages, manifest, config, outDir, md, eta, navigation, buildTime, options, logger, assets);
|
|
405
428
|
cacheHits = pageProcessingResult.cacheHits;
|
|
406
429
|
cacheMisses = pageProcessingResult.cacheMisses;
|
|
407
430
|
// Write Tailwind class inventory after all templates have been rendered (if Tailwind is used)
|
package/dist/core/content.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import glob from 'fast-glob';
|
|
2
2
|
import { readFile, resolveSrcDir } from './utils/index.js';
|
|
3
3
|
import matter from 'gray-matter';
|
|
4
|
-
import { relative, dirname, basename } from 'path';
|
|
4
|
+
import { relative, dirname, basename } from 'node:path';
|
|
5
5
|
import { MARKDOWN_EXTENSION } from '../constants.js';
|
|
6
6
|
/**
|
|
7
7
|
* Loads and parses all content files from the configured source directory.
|
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;AAsB7D,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;AA4SD,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAwaxF"}
|
package/dist/core/dev.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { createServer } from 'http';
|
|
2
|
-
import { join, extname } from 'path';
|
|
3
|
-
import {
|
|
4
|
-
import { readFile } from 'fs/promises';
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { join, extname, posix } from 'node:path';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
5
4
|
import { WebSocketServer } from 'ws';
|
|
6
5
|
import chokidar from 'chokidar';
|
|
7
6
|
import { build } from './build.js';
|
|
@@ -10,7 +9,7 @@ import { loadConfig } from '../config/loader.js';
|
|
|
10
9
|
import { loadCacheManifest, saveCacheManifest, computeNavigationHash } from './isg/index.js';
|
|
11
10
|
import { loadContent } from './content.js';
|
|
12
11
|
import { buildNavigation } from './navigation.js';
|
|
13
|
-
import { resolveDevPaths, resolveCacheDir, resolvePrettyUrl, createErrorOverlay, parseErrorDetails, TemplateError, createFallbackLogger, mergeServerOptions, } from './utils/index.js';
|
|
12
|
+
import { resolveDevPaths, resolveCacheDir, resolvePrettyUrl, createErrorOverlay, parseErrorDetails, TemplateError, createFallbackLogger, mergeServerOptions, createTypeScriptWatcher, } from './utils/index.js';
|
|
14
13
|
import { setEnv, getEnv } from '../env.js';
|
|
15
14
|
import { DEFAULT_DEV_PORT, DEFAULT_DEV_HOST, TEMPLATE_EXTENSION } from '../constants.js';
|
|
16
15
|
/**
|
|
@@ -292,6 +291,7 @@ export async function createDevServer(options = {}) {
|
|
|
292
291
|
lastBuildError = error;
|
|
293
292
|
};
|
|
294
293
|
let watcher = null;
|
|
294
|
+
let tsWatcher = null;
|
|
295
295
|
const isBuildingRef = { value: false };
|
|
296
296
|
let isStopping = false;
|
|
297
297
|
/**
|
|
@@ -520,6 +520,44 @@ export async function createDevServer(options = {}) {
|
|
|
520
520
|
reject(error);
|
|
521
521
|
});
|
|
522
522
|
});
|
|
523
|
+
// TypeScript watcher setup (initial compilation is handled by performInitialBuild)
|
|
524
|
+
if (config.typescript?.enabled) {
|
|
525
|
+
try {
|
|
526
|
+
// Start TypeScript watcher for hot reload
|
|
527
|
+
tsWatcher = await createTypeScriptWatcher({
|
|
528
|
+
projectRoot: process.cwd(),
|
|
529
|
+
config: config.typescript,
|
|
530
|
+
outDir: config.outDir || 'dist',
|
|
531
|
+
mode: 'development',
|
|
532
|
+
logger,
|
|
533
|
+
onRebuild: () => {
|
|
534
|
+
logger.info?.('TypeScript recompiled, triggering reload...');
|
|
535
|
+
// Broadcast reload to WebSocket clients
|
|
536
|
+
if (wsServer) {
|
|
537
|
+
wsServer.clients.forEach((client) => {
|
|
538
|
+
const ws = client;
|
|
539
|
+
if (ws.readyState === 1) {
|
|
540
|
+
// WebSocket.OPEN
|
|
541
|
+
ws.send(JSON.stringify({ type: 'reload' }));
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
catch (error) {
|
|
549
|
+
const tsError = error instanceof Error ? error : new Error(String(error));
|
|
550
|
+
// Prominent notification for TypeScript setup failure
|
|
551
|
+
console.log();
|
|
552
|
+
logger.error?.(`TypeScript setup failed: ${tsError.message}`);
|
|
553
|
+
logger.warning?.('──────────────────────────────────────────────────────────────');
|
|
554
|
+
logger.warning?.('⚠️ TypeScript hot reload is DISABLED for this session.');
|
|
555
|
+
logger.warning?.(" Dev server will continue, but TypeScript changes won't auto-reload.");
|
|
556
|
+
logger.warning?.(' Fix your TypeScript configuration and restart the dev server.');
|
|
557
|
+
logger.warning?.('──────────────────────────────────────────────────────────────');
|
|
558
|
+
console.log();
|
|
559
|
+
}
|
|
560
|
+
}
|
|
523
561
|
// Set up file watching
|
|
524
562
|
const watchPaths = [srcDir, staticDir].filter(Boolean);
|
|
525
563
|
watcher = chokidar.watch(watchPaths, {
|
|
@@ -561,6 +599,11 @@ export async function createDevServer(options = {}) {
|
|
|
561
599
|
await watcher.close();
|
|
562
600
|
watcher = null;
|
|
563
601
|
}
|
|
602
|
+
// Clean up TypeScript watcher
|
|
603
|
+
if (tsWatcher) {
|
|
604
|
+
await tsWatcher.dispose();
|
|
605
|
+
tsWatcher = null;
|
|
606
|
+
}
|
|
564
607
|
if (wsServer) {
|
|
565
608
|
wsServer.close();
|
|
566
609
|
wsServer = null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { writeFile, readFile, pathExists, remove, ensureDir } from '../utils/index.js';
|
|
2
|
-
import { join, dirname } from 'path';
|
|
3
|
-
import { hostname } from 'os';
|
|
2
|
+
import { join, dirname } from 'node:path';
|
|
3
|
+
import { hostname } from 'node:os';
|
|
4
4
|
/**
|
|
5
5
|
* Manages build process locking to prevent concurrent Stati builds from corrupting cache.
|
|
6
6
|
* Uses a simple file-based locking mechanism with process ID tracking.
|
package/dist/core/isg/deps.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join, dirname, relative, posix } from 'path';
|
|
1
|
+
import { join, dirname, relative, posix } from 'node:path';
|
|
2
2
|
import { pathExists, readFile, isCollectionIndexPage, discoverLayout, resolveSrcDir, } from '../utils/index.js';
|
|
3
3
|
import glob from 'fast-glob';
|
|
4
4
|
import { TEMPLATE_EXTENSION } from '../../constants.js';
|
package/dist/core/isg/hash.js
CHANGED
package/dist/core/markdown.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import MarkdownIt from 'markdown-it';
|
|
2
|
-
import { createRequire } from 'module';
|
|
3
|
-
import { pathToFileURL } from 'url';
|
|
4
|
-
import path from 'path';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import path from 'node:path';
|
|
5
5
|
/**
|
|
6
6
|
* Load a markdown plugin, trying different resolution strategies
|
|
7
7
|
*/
|
package/dist/core/navigation.js
CHANGED
package/dist/core/preview.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createServer } from 'http';
|
|
2
|
-
import { join, extname } from 'path';
|
|
3
|
-
import { readFile } from 'fs/promises';
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { join, extname } from 'node:path';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
4
|
import { loadConfig } from '../config/loader.js';
|
|
5
5
|
import { resolveDevPaths, resolvePrettyUrl, createFallbackLogger, mergeServerOptions, } from './utils/index.js';
|
|
6
6
|
import { DEFAULT_PREVIEW_PORT, DEFAULT_DEV_HOST } from '../constants.js';
|
package/dist/core/templates.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Eta } from 'eta';
|
|
2
2
|
import type { StatiConfig, PageModel, NavNode } from '../types/index.js';
|
|
3
3
|
export declare function createTemplateEngine(config: StatiConfig): Eta;
|
|
4
|
-
export declare function renderPage(page: PageModel, body: string, config: StatiConfig, eta: Eta, navigation?: NavNode[], allPages?: PageModel[]): Promise<string>;
|
|
4
|
+
export declare function renderPage(page: PageModel, body: string, config: StatiConfig, eta: Eta, navigation?: NavNode[], allPages?: PageModel[], assets?: import('../types/index.js').StatiAssets): Promise<string>;
|
|
5
5
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAmNzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAW7D;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,GAAG,EACR,UAAU,CAAC,EAAE,OAAO,EAAE,EACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAmNzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAW7D;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,GAAG,EACR,UAAU,CAAC,EAAE,OAAO,EAAE,EACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,WAAW,GAC/C,OAAO,CAAC,MAAM,CAAC,CAuLjB"}
|
package/dist/core/templates.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Eta } from 'eta';
|
|
2
|
-
import { join, dirname, relative, basename, posix } from 'path';
|
|
2
|
+
import { join, dirname, relative, basename, posix } from 'node:path';
|
|
3
3
|
import glob from 'fast-glob';
|
|
4
4
|
import { TEMPLATE_EXTENSION } from '../constants.js';
|
|
5
5
|
import { getStatiVersion, isCollectionIndexPage, discoverLayout, getCollectionPathForPage, resolveSrcDir, createTemplateError, createValidatingPartialsProxy, propValue, wrapPartialsAsCallable, createNavigationHelpers, } from './utils/index.js';
|
|
@@ -182,7 +182,7 @@ export function createTemplateEngine(config) {
|
|
|
182
182
|
});
|
|
183
183
|
return eta;
|
|
184
184
|
}
|
|
185
|
-
export async function renderPage(page, body, config, eta, navigation, allPages) {
|
|
185
|
+
export async function renderPage(page, body, config, eta, navigation, allPages, assets) {
|
|
186
186
|
// Discover partials for this page's directory hierarchy
|
|
187
187
|
const srcDir = resolveSrcDir(config);
|
|
188
188
|
const relativePath = relative(srcDir, page.sourcePath);
|
|
@@ -228,6 +228,7 @@ export async function renderPage(page, body, config, eta, navigation, allPages)
|
|
|
228
228
|
// Stati utilities object with helper functions
|
|
229
229
|
generateSEO: (tags) => generateSEO({ page, config, site: config.site }, tags),
|
|
230
230
|
propValue,
|
|
231
|
+
assets, // TypeScript bundle assets (available when typescript.enabled is true)
|
|
231
232
|
};
|
|
232
233
|
// Render partials and store their content
|
|
233
234
|
// Use multiple passes to allow partials to reference other partials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/fs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fs.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/fs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAkDhD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAO,GAAG,MAAgB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAE/D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,EACrD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,CAAC,CAAA;CAAE,GAC9B,OAAO,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAYnD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE"}
|
|
@@ -19,4 +19,6 @@ export type { ErrorDetails } from './error-overlay.utils.js';
|
|
|
19
19
|
export { getStatiVersion } from './version.utils.js';
|
|
20
20
|
export { globToRegex, matchesGlob } from './glob-patterns.utils.js';
|
|
21
21
|
export { createFallbackLogger } from './logger.utils.js';
|
|
22
|
+
export { compileTypeScript, createTypeScriptWatcher, compileStatiConfig, cleanupCompiledConfig, autoInjectBundle, } from './typescript.utils.js';
|
|
23
|
+
export type { CompileOptions, CompileResult, WatchOptions } from './typescript.utils.js';
|
|
22
24
|
//# 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,GAClB,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,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,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,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,GAClB,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,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,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/core/utils/index.js
CHANGED
|
@@ -30,3 +30,5 @@ export { getStatiVersion } from './version.utils.js';
|
|
|
30
30
|
export { globToRegex, matchesGlob } from './glob-patterns.utils.js';
|
|
31
31
|
// Logger utilities
|
|
32
32
|
export { createFallbackLogger } from './logger.utils.js';
|
|
33
|
+
// TypeScript compilation utilities
|
|
34
|
+
export { compileTypeScript, createTypeScriptWatcher, compileStatiConfig, cleanupCompiledConfig, autoInjectBundle, } from './typescript.utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/paths.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/paths.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQxD;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW;;;;EAMlD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { join } from 'path';
|
|
2
|
-
import { posix } from 'path';
|
|
1
|
+
import { join, posix } from 'node:path';
|
|
3
2
|
import { DEFAULT_SRC_DIR, DEFAULT_OUT_DIR, DEFAULT_STATIC_DIR, CACHE_DIR_NAME, } from '../../constants.js';
|
|
4
3
|
/**
|
|
5
4
|
* File system path resolution utilities for Stati core.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { join } from 'path';
|
|
2
|
-
import { stat } from 'fs/promises';
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { stat } from 'node:fs/promises';
|
|
3
3
|
/**
|
|
4
4
|
* Attempts to resolve pretty URL paths by trying various fallback strategies.
|
|
5
5
|
* This handles common patterns like:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* final CSS output.
|
|
8
8
|
*/
|
|
9
9
|
import { writeFile, ensureDir, pathExists, readFile } from './fs.utils.js';
|
|
10
|
-
import { join } from 'path';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
11
|
/**
|
|
12
12
|
* Module-level Set to track Tailwind classes across template renders.
|
|
13
13
|
* Cleared at the start of each full build.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-discovery.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/template-discovery.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-discovery.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/template-discovery.utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAInE;;;GAGG;AAEH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,CAkBtF;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsDxB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBhE"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { join, dirname } from 'path';
|
|
2
|
-
import { posix } from 'path';
|
|
1
|
+
import { join, dirname, posix } from 'node:path';
|
|
3
2
|
import { pathExists } from './fs.utils.js';
|
|
4
3
|
import { LAYOUT_TEMPLATE } from '../../constants.js';
|
|
5
4
|
import { resolveSrcDir } from './paths.utils.js';
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript compilation utilities using esbuild.
|
|
3
|
+
* Provides functions for compiling TypeScript files and watching for changes.
|
|
4
|
+
* @module core/utils/typescript
|
|
5
|
+
*/
|
|
6
|
+
import * as esbuild from 'esbuild';
|
|
7
|
+
import type { TypeScriptConfig } from '../../types/config.js';
|
|
8
|
+
import type { Logger } from '../../types/logging.js';
|
|
9
|
+
/**
|
|
10
|
+
* Options for TypeScript compilation.
|
|
11
|
+
*/
|
|
12
|
+
export interface CompileOptions {
|
|
13
|
+
/** Root directory of the project */
|
|
14
|
+
projectRoot: string;
|
|
15
|
+
/** TypeScript configuration */
|
|
16
|
+
config: TypeScriptConfig;
|
|
17
|
+
/** Output directory (defaults to 'dist') */
|
|
18
|
+
outDir?: string;
|
|
19
|
+
/** Compilation mode */
|
|
20
|
+
mode: 'development' | 'production';
|
|
21
|
+
/** Logger instance for output */
|
|
22
|
+
logger: Logger;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of TypeScript compilation.
|
|
26
|
+
*/
|
|
27
|
+
export interface CompileResult {
|
|
28
|
+
/** The generated bundle filename (e.g., 'bundle-a1b2c3d4.js'), or undefined if compilation was skipped */
|
|
29
|
+
bundleFilename?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options for TypeScript file watcher.
|
|
33
|
+
*/
|
|
34
|
+
export interface WatchOptions extends CompileOptions {
|
|
35
|
+
/** Callback invoked when files are recompiled */
|
|
36
|
+
onRebuild: () => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Compile TypeScript files using esbuild.
|
|
40
|
+
* Returns the generated bundle filename for template injection.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Compilation options
|
|
43
|
+
* @returns The compilation result with bundle filename
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const result = await compileTypeScript({
|
|
48
|
+
* projectRoot: process.cwd(),
|
|
49
|
+
* config: { enabled: true },
|
|
50
|
+
* mode: 'production',
|
|
51
|
+
* logger: console,
|
|
52
|
+
* });
|
|
53
|
+
* console.log(result.bundleFilename); // 'bundle-a1b2c3d4.js'
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function compileTypeScript(options: CompileOptions): Promise<CompileResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Create an esbuild watch context for development.
|
|
59
|
+
* Watches for TypeScript file changes and recompiles automatically.
|
|
60
|
+
*
|
|
61
|
+
* @param options - Watch options including rebuild callback
|
|
62
|
+
* @returns The esbuild build context for cleanup
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const watcher = await createTypeScriptWatcher({
|
|
67
|
+
* projectRoot: process.cwd(),
|
|
68
|
+
* config: { enabled: true },
|
|
69
|
+
* mode: 'development',
|
|
70
|
+
* logger: console,
|
|
71
|
+
* onRebuild: () => console.log('Rebuilt!'),
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* // Later, cleanup:
|
|
75
|
+
* await watcher.dispose();
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function createTypeScriptWatcher(options: WatchOptions): Promise<esbuild.BuildContext>;
|
|
79
|
+
/**
|
|
80
|
+
* Compile stati.config.ts to a temporary JS file for import.
|
|
81
|
+
* Returns the path to the compiled file.
|
|
82
|
+
*
|
|
83
|
+
* @param configPath - Path to the TypeScript config file
|
|
84
|
+
* @returns Path to the compiled JavaScript module
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const compiledPath = await compileStatiConfig('/path/to/stati.config.ts');
|
|
89
|
+
* const config = await import(compiledPath);
|
|
90
|
+
* await cleanupCompiledConfig(compiledPath);
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function compileStatiConfig(configPath: string): Promise<string>;
|
|
94
|
+
/**
|
|
95
|
+
* Clean up compiled config file.
|
|
96
|
+
*
|
|
97
|
+
* @param compiledPath - Path to the compiled config file to remove
|
|
98
|
+
*/
|
|
99
|
+
export declare function cleanupCompiledConfig(compiledPath: string): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Auto-inject TypeScript bundle script tag into HTML before </body>.
|
|
102
|
+
* Similar to SEO auto-injection, this adds the script tag automatically
|
|
103
|
+
* so users don't need to modify their templates.
|
|
104
|
+
*
|
|
105
|
+
* @param html - Rendered HTML content
|
|
106
|
+
* @param bundlePath - Path to the compiled bundle (e.g., '/_assets/bundle-a1b2c3d4.js')
|
|
107
|
+
* @returns HTML with injected script tag
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const html = '<html><body>Content</body></html>';
|
|
112
|
+
* const enhanced = autoInjectBundle(html, '/_assets/bundle.js');
|
|
113
|
+
* // Returns: '<html><body>Content\n <script type="module" src="/_assets/bundle.js"></script>\n</body></html>'
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function autoInjectBundle(html: string, bundlePath: string): string;
|
|
117
|
+
//# sourceMappingURL=typescript.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.utils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/typescript.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAQrD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0GAA0G;IAC1G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,iDAAiD;IACjD,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAiCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CvF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAiD/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5E;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgCzE"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript compilation utilities using esbuild.
|
|
3
|
+
* Provides functions for compiling TypeScript files and watching for changes.
|
|
4
|
+
* @module core/utils/typescript
|
|
5
|
+
*/
|
|
6
|
+
import * as esbuild from 'esbuild';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import * as fs from 'node:fs/promises';
|
|
9
|
+
import { pathExists } from './fs.utils.js';
|
|
10
|
+
import { DEFAULT_TS_SRC_DIR, DEFAULT_TS_OUT_DIR, DEFAULT_TS_ENTRY_POINT, DEFAULT_TS_BUNDLE_NAME, } from '../../constants.js';
|
|
11
|
+
function resolveConfig(config, mode) {
|
|
12
|
+
const isProduction = mode === 'production';
|
|
13
|
+
return {
|
|
14
|
+
enabled: config.enabled,
|
|
15
|
+
srcDir: config.srcDir ?? DEFAULT_TS_SRC_DIR,
|
|
16
|
+
outDir: config.outDir ?? DEFAULT_TS_OUT_DIR,
|
|
17
|
+
entryPoint: config.entryPoint ?? DEFAULT_TS_ENTRY_POINT,
|
|
18
|
+
bundleName: config.bundleName ?? DEFAULT_TS_BUNDLE_NAME,
|
|
19
|
+
// hash/minify: always false in dev (config ignored), configurable in prod (default true)
|
|
20
|
+
hash: isProduction && (config.hash ?? true),
|
|
21
|
+
minify: isProduction && (config.minify ?? true),
|
|
22
|
+
// Source maps: always enabled in dev for debugging, always disabled in prod for security/size
|
|
23
|
+
sourceMaps: !isProduction,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Compile TypeScript files using esbuild.
|
|
28
|
+
* Returns the generated bundle filename for template injection.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Compilation options
|
|
31
|
+
* @returns The compilation result with bundle filename
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const result = await compileTypeScript({
|
|
36
|
+
* projectRoot: process.cwd(),
|
|
37
|
+
* config: { enabled: true },
|
|
38
|
+
* mode: 'production',
|
|
39
|
+
* logger: console,
|
|
40
|
+
* });
|
|
41
|
+
* console.log(result.bundleFilename); // 'bundle-a1b2c3d4.js'
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export async function compileTypeScript(options) {
|
|
45
|
+
const { projectRoot, config, mode, logger, outDir: globalOutDir } = options;
|
|
46
|
+
const resolved = resolveConfig(config, mode);
|
|
47
|
+
const entryPath = path.join(projectRoot, resolved.srcDir, resolved.entryPoint);
|
|
48
|
+
// Output to configured build output directory (default: dist)
|
|
49
|
+
const outDir = path.join(projectRoot, globalOutDir || 'dist', resolved.outDir);
|
|
50
|
+
// Validate entry point exists
|
|
51
|
+
if (!(await pathExists(entryPath))) {
|
|
52
|
+
logger.warning(`TypeScript entry point not found: ${entryPath}`);
|
|
53
|
+
logger.warning('Skipping TypeScript compilation.');
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
logger.info('Compiling TypeScript...');
|
|
57
|
+
try {
|
|
58
|
+
const result = await esbuild.build({
|
|
59
|
+
entryPoints: [entryPath],
|
|
60
|
+
bundle: true,
|
|
61
|
+
outdir: outDir,
|
|
62
|
+
entryNames: resolved.hash ? `${resolved.bundleName}-[hash]` : resolved.bundleName,
|
|
63
|
+
minify: resolved.minify,
|
|
64
|
+
sourcemap: resolved.sourceMaps,
|
|
65
|
+
target: 'es2022',
|
|
66
|
+
format: 'esm',
|
|
67
|
+
platform: 'browser',
|
|
68
|
+
logLevel: 'silent',
|
|
69
|
+
metafile: true,
|
|
70
|
+
});
|
|
71
|
+
// Extract the generated filename for template injection
|
|
72
|
+
const outputs = Object.keys(result.metafile?.outputs ?? {});
|
|
73
|
+
const bundleFile = outputs.find((f) => f.endsWith('.js'));
|
|
74
|
+
const bundleFilename = bundleFile ? path.basename(bundleFile) : `${resolved.bundleName}.js`;
|
|
75
|
+
logger.success(`TypeScript compiled: ${bundleFilename}`);
|
|
76
|
+
return { bundleFilename };
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof Error) {
|
|
80
|
+
logger.error(`TypeScript compilation failed: ${error.message}`);
|
|
81
|
+
}
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create an esbuild watch context for development.
|
|
87
|
+
* Watches for TypeScript file changes and recompiles automatically.
|
|
88
|
+
*
|
|
89
|
+
* @param options - Watch options including rebuild callback
|
|
90
|
+
* @returns The esbuild build context for cleanup
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const watcher = await createTypeScriptWatcher({
|
|
95
|
+
* projectRoot: process.cwd(),
|
|
96
|
+
* config: { enabled: true },
|
|
97
|
+
* mode: 'development',
|
|
98
|
+
* logger: console,
|
|
99
|
+
* onRebuild: () => console.log('Rebuilt!'),
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* // Later, cleanup:
|
|
103
|
+
* await watcher.dispose();
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export async function createTypeScriptWatcher(options) {
|
|
107
|
+
const { projectRoot, config, mode, logger, onRebuild, outDir: globalOutDir } = options;
|
|
108
|
+
const resolved = resolveConfig(config, mode);
|
|
109
|
+
const entryPath = path.join(projectRoot, resolved.srcDir, resolved.entryPoint);
|
|
110
|
+
// Output to configured build output directory (default: dist)
|
|
111
|
+
const outDir = path.join(projectRoot, globalOutDir || 'dist', resolved.outDir);
|
|
112
|
+
// Validate entry point exists
|
|
113
|
+
if (!(await pathExists(entryPath))) {
|
|
114
|
+
logger.warning(`TypeScript entry point not found: ${entryPath}`);
|
|
115
|
+
throw new Error(`Entry point not found: ${entryPath}`);
|
|
116
|
+
}
|
|
117
|
+
const context = await esbuild.context({
|
|
118
|
+
entryPoints: [entryPath],
|
|
119
|
+
bundle: true,
|
|
120
|
+
outdir: outDir,
|
|
121
|
+
entryNames: resolved.bundleName, // Stable filename in dev mode (no hash)
|
|
122
|
+
minify: resolved.minify,
|
|
123
|
+
sourcemap: resolved.sourceMaps,
|
|
124
|
+
target: 'es2022',
|
|
125
|
+
format: 'esm',
|
|
126
|
+
platform: 'browser',
|
|
127
|
+
logLevel: 'silent',
|
|
128
|
+
plugins: [
|
|
129
|
+
{
|
|
130
|
+
name: 'stati-rebuild-notify',
|
|
131
|
+
setup(build) {
|
|
132
|
+
build.onEnd((result) => {
|
|
133
|
+
if (result.errors.length > 0) {
|
|
134
|
+
result.errors.forEach((err) => {
|
|
135
|
+
logger.error(`TypeScript error: ${err.text}`);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
logger.info('TypeScript recompiled.');
|
|
140
|
+
onRebuild();
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
// Start watching
|
|
148
|
+
await context.watch();
|
|
149
|
+
logger.info(`Watching TypeScript files in ${resolved.srcDir}/`);
|
|
150
|
+
return context;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Compile stati.config.ts to a temporary JS file for import.
|
|
154
|
+
* Returns the path to the compiled file.
|
|
155
|
+
*
|
|
156
|
+
* @param configPath - Path to the TypeScript config file
|
|
157
|
+
* @returns Path to the compiled JavaScript module
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* const compiledPath = await compileStatiConfig('/path/to/stati.config.ts');
|
|
162
|
+
* const config = await import(compiledPath);
|
|
163
|
+
* await cleanupCompiledConfig(compiledPath);
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export async function compileStatiConfig(configPath) {
|
|
167
|
+
const outfile = configPath.replace(/\.ts$/, '.compiled.mjs');
|
|
168
|
+
await esbuild.build({
|
|
169
|
+
entryPoints: [configPath],
|
|
170
|
+
bundle: true,
|
|
171
|
+
outfile,
|
|
172
|
+
format: 'esm',
|
|
173
|
+
platform: 'node',
|
|
174
|
+
target: 'node22',
|
|
175
|
+
logLevel: 'silent',
|
|
176
|
+
// Mark @stati/core as external to avoid bundling it
|
|
177
|
+
external: ['@stati/core'],
|
|
178
|
+
});
|
|
179
|
+
return outfile;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Clean up compiled config file.
|
|
183
|
+
*
|
|
184
|
+
* @param compiledPath - Path to the compiled config file to remove
|
|
185
|
+
*/
|
|
186
|
+
export async function cleanupCompiledConfig(compiledPath) {
|
|
187
|
+
try {
|
|
188
|
+
await fs.unlink(compiledPath);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Ignore if file doesn't exist
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Auto-inject TypeScript bundle script tag into HTML before </body>.
|
|
196
|
+
* Similar to SEO auto-injection, this adds the script tag automatically
|
|
197
|
+
* so users don't need to modify their templates.
|
|
198
|
+
*
|
|
199
|
+
* @param html - Rendered HTML content
|
|
200
|
+
* @param bundlePath - Path to the compiled bundle (e.g., '/_assets/bundle-a1b2c3d4.js')
|
|
201
|
+
* @returns HTML with injected script tag
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const html = '<html><body>Content</body></html>';
|
|
206
|
+
* const enhanced = autoInjectBundle(html, '/_assets/bundle.js');
|
|
207
|
+
* // Returns: '<html><body>Content\n <script type="module" src="/_assets/bundle.js"></script>\n</body></html>'
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export function autoInjectBundle(html, bundlePath) {
|
|
211
|
+
if (!bundlePath) {
|
|
212
|
+
return html;
|
|
213
|
+
}
|
|
214
|
+
// Sanitize bundlePath to prevent XSS attacks
|
|
215
|
+
// Only allow safe characters: alphanumeric, hyphens, underscores, dots, and forward slashes
|
|
216
|
+
// Must start with / and end with .js
|
|
217
|
+
const safePathPattern = /^\/[\w\-./]+\.js$/;
|
|
218
|
+
if (!safePathPattern.test(bundlePath)) {
|
|
219
|
+
// Invalid path format, skip injection to prevent potential XSS
|
|
220
|
+
return html;
|
|
221
|
+
}
|
|
222
|
+
// Check if the bundle is already included (avoid duplicate injection)
|
|
223
|
+
if (html.includes(bundlePath)) {
|
|
224
|
+
return html;
|
|
225
|
+
}
|
|
226
|
+
// Find </body> tag (case-insensitive)
|
|
227
|
+
const bodyCloseMatch = html.match(/<\/body>/i);
|
|
228
|
+
if (!bodyCloseMatch || bodyCloseMatch.index === undefined) {
|
|
229
|
+
return html;
|
|
230
|
+
}
|
|
231
|
+
const bodyClosePos = bodyCloseMatch.index;
|
|
232
|
+
const before = html.substring(0, bodyClosePos);
|
|
233
|
+
const after = html.substring(bodyClosePos);
|
|
234
|
+
// Inject script tag before </body> with proper indentation
|
|
235
|
+
const scriptTag = ` <script type="module" src="${bundlePath}"></script>\n`;
|
|
236
|
+
return `${before}${scriptTag}${after}`;
|
|
237
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import { join, dirname } from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join, dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
4
|
/**
|
|
5
5
|
* Gets the current version of Stati core from package.json
|
|
6
6
|
* @returns The version string
|
package/dist/env.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
1
|
+
type Env = 'development' | 'production' | 'test';
|
|
2
|
+
export declare function setEnv(env: Env): void;
|
|
3
|
+
export declare function getEnv(): Env;
|
|
4
|
+
export {};
|
|
3
5
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;AAIjD,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,QAE9B;AAED,wBAAgB,MAAM,IAAI,GAAG,CAE5B"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -76,6 +76,8 @@ export interface StatiConfig {
|
|
|
76
76
|
robots?: RobotsTxtConfig;
|
|
77
77
|
/** RSS feed generation configuration */
|
|
78
78
|
rss?: import('./rss.js').RSSConfig;
|
|
79
|
+
/** TypeScript compilation settings */
|
|
80
|
+
typescript?: TypeScriptConfig;
|
|
79
81
|
/** Development server configuration */
|
|
80
82
|
dev?: {
|
|
81
83
|
/** Port for development server (default: 3000) */
|
|
@@ -109,6 +111,71 @@ export interface SEOConfig {
|
|
|
109
111
|
/** Enable debug logging for SEO generation (default: false) */
|
|
110
112
|
debug?: boolean;
|
|
111
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* TypeScript compilation configuration.
|
|
116
|
+
* Controls how Stati compiles TypeScript files using esbuild.
|
|
117
|
+
*
|
|
118
|
+
* In development mode, source maps are always enabled and hash/minify are always disabled.
|
|
119
|
+
* In production mode, source maps are always disabled and hash/minify default to true.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const config: StatiConfig = {
|
|
124
|
+
* typescript: {
|
|
125
|
+
* enabled: true,
|
|
126
|
+
* srcDir: 'src',
|
|
127
|
+
* outDir: '_assets',
|
|
128
|
+
* entryPoint: 'main.ts',
|
|
129
|
+
* bundleName: 'bundle',
|
|
130
|
+
* // hash and minify default to true in production
|
|
131
|
+
* // set to false only if you need to debug production builds
|
|
132
|
+
* }
|
|
133
|
+
* };
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export interface TypeScriptConfig {
|
|
137
|
+
/**
|
|
138
|
+
* Enable TypeScript compilation.
|
|
139
|
+
* @default false
|
|
140
|
+
*/
|
|
141
|
+
enabled: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Source directory containing TypeScript files.
|
|
144
|
+
* Relative to site root.
|
|
145
|
+
* @default 'src'
|
|
146
|
+
*/
|
|
147
|
+
srcDir?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Output directory for compiled JavaScript.
|
|
150
|
+
* Relative to build output directory (dist/).
|
|
151
|
+
* @default '_assets'
|
|
152
|
+
*/
|
|
153
|
+
outDir?: string;
|
|
154
|
+
/**
|
|
155
|
+
* Entry point file name (without path).
|
|
156
|
+
* @default 'main.ts'
|
|
157
|
+
*/
|
|
158
|
+
entryPoint?: string;
|
|
159
|
+
/**
|
|
160
|
+
* Output bundle file name (without extension).
|
|
161
|
+
* The final filename will include a content hash: `[bundleName]-[hash].js`
|
|
162
|
+
* @default 'bundle'
|
|
163
|
+
*/
|
|
164
|
+
bundleName?: string;
|
|
165
|
+
/**
|
|
166
|
+
* Include content hash in bundle filename for cache busting in production.
|
|
167
|
+
* When true, outputs `bundle-a1b2c3d4.js`. When false, outputs `bundle.js`.
|
|
168
|
+
* This option only applies to production builds; development always uses stable filenames.
|
|
169
|
+
* @default true
|
|
170
|
+
*/
|
|
171
|
+
hash?: boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Minify JavaScript output in production builds.
|
|
174
|
+
* This option only applies to production builds; development output is never minified.
|
|
175
|
+
* @default true
|
|
176
|
+
*/
|
|
177
|
+
minify?: boolean;
|
|
178
|
+
}
|
|
112
179
|
/**
|
|
113
180
|
* Robots.txt generation configuration.
|
|
114
181
|
* Controls how the robots.txt file is generated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
package/dist/types/content.d.ts
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Content related type definitions
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* TypeScript bundle asset information.
|
|
6
|
+
* Available when TypeScript compilation is enabled.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // In Eta templates, access via stati.assets
|
|
11
|
+
* <script type="module" src="<%= stati.assets.bundlePath %>"></script>
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export interface StatiAssets {
|
|
15
|
+
/** Bundle filename only (e.g., 'bundle-a1b2c3d4.js') */
|
|
16
|
+
bundleName?: string;
|
|
17
|
+
/** Full path to bundle (e.g., '/_assets/bundle-a1b2c3d4.js') */
|
|
18
|
+
bundlePath?: string;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Front matter metadata extracted from content files.
|
|
6
22
|
* Contains page-specific configuration and metadata in YAML format.
|
|
@@ -320,6 +336,8 @@ export interface TemplateContext {
|
|
|
320
336
|
partials: Record<string, string>;
|
|
321
337
|
/** Collection data (available on index pages and child pages showing parent collection) */
|
|
322
338
|
collection?: CollectionData;
|
|
339
|
+
/** TypeScript bundle assets (available when typescript.enabled is true) */
|
|
340
|
+
assets?: StatiAssets;
|
|
323
341
|
/** Additional properties that may be added dynamically (e.g., custom filters, helpers) */
|
|
324
342
|
[key: string]: unknown;
|
|
325
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qCAAqC;IACrC,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,mCAAmC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC/B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC/B,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CACxF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvF,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IAChD,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,GAAG,qBAAqB,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC5D,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,6DAA6D;IAC7D,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,0BAA0B;IAC1B,QAAQ,EAAE;QACR,0CAA0C;QAC1C,UAAU,EAAE,MAAM,CAAC;QACnB,yCAAyC;QACzC,WAAW,EAAE,OAAO,CAAC;QACrB,6BAA6B;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,iDAAiD;QACjD,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,IAAI,EAAE,OAAO,aAAa,EAAE,UAAU,CAAC;IACvC,oEAAoE;IACpE,MAAM,EAAE,OAAO,aAAa,EAAE,WAAW,CAAC;IAC1C,0DAA0D;IAC1D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,GAAG,EAAE;QACH,+BAA+B;QAC/B,IAAI,EAAE,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QAC1C,oCAAoC;QACpC,OAAO,EAAE,MAAM,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACnD,6CAA6C;QAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;QAC1E,6CAA6C;QAC7C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACnE,2CAA2C;QAC3C,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;QAC5E,6CAA6C;QAC7C,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QAC3F,mDAAmD;QACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QAClE,2CAA2C;QAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACvE,8CAA8C;QAC9C,cAAc,EAAE,MAAM,OAAO,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;KACrE,CAAC;IACF,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2FAA2F;IAC3F,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,0FAA0F;IAC1F,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/types/content.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* This file provides a single entry point for importing types
|
|
4
4
|
*/
|
|
5
5
|
export type { AgingRule, ISGConfig, CacheEntry, CacheManifest } from './isg.js';
|
|
6
|
-
export type { SiteConfig, StatiConfig, BuildContext, PageContext, BuildHooks, BuildStats, SEOConfig, RobotsTxtConfig, } from './config.js';
|
|
7
|
-
export type { FrontMatter, PageModel, CollectionData, TemplateContext, SEOMetadata, SitemapMetadata, RobotsConfig, OpenGraphConfig, OpenGraphImage, OpenGraphArticle, TwitterCardConfig, AuthorConfig, } from './content.js';
|
|
6
|
+
export type { SiteConfig, StatiConfig, BuildContext, PageContext, BuildHooks, BuildStats, SEOConfig, RobotsTxtConfig, TypeScriptConfig, } from './config.js';
|
|
7
|
+
export type { FrontMatter, PageModel, CollectionData, TemplateContext, SEOMetadata, SitemapMetadata, RobotsConfig, OpenGraphConfig, OpenGraphImage, OpenGraphArticle, TwitterCardConfig, AuthorConfig, StatiAssets, } from './content.js';
|
|
8
8
|
export type { SEOContext, SEOValidationResult } from './seo.js';
|
|
9
9
|
export { SEOTagType } from './seo.js';
|
|
10
10
|
export type { ChangeFrequency, SitemapEntry, SitemapConfig, SitemapGenerationResult, } from './sitemap.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGhF,YAAY,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGhF,YAAY,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG9E,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stati/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"chokidar": "^3.6.0",
|
|
42
|
+
"esbuild": "^0.27.0",
|
|
42
43
|
"eta": "^3.5.0",
|
|
43
44
|
"fast-glob": "^3.3.3",
|
|
44
45
|
"fs-extra": "^11.2.0",
|