bunki 0.18.0 → 0.18.1
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 +19 -1
- package/dist/cli.js +110 -82
- package/dist/index.js +110 -82
- package/dist/types.d.ts +4 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -806,10 +806,12 @@ Bunki supports incremental builds for significantly faster rebuild times during
|
|
|
806
806
|
### Performance Impact
|
|
807
807
|
|
|
808
808
|
**Large site example (455 posts):**
|
|
809
|
+
|
|
809
810
|
- Full build: 3,128ms
|
|
810
811
|
- Incremental build (no changes): 985ms (**3.2x faster**)
|
|
811
812
|
|
|
812
813
|
**Speedup breakdown:**
|
|
814
|
+
|
|
813
815
|
- Markdown parsing: 1,202ms → 55ms (**22x faster**)
|
|
814
816
|
- CSS processing: 1,024ms → 1ms (**1024x faster**)
|
|
815
817
|
- Overall: **68% faster builds**
|
|
@@ -873,11 +875,13 @@ echo ".bunki-cache.json" >> .gitignore
|
|
|
873
875
|
### When to Use
|
|
874
876
|
|
|
875
877
|
**Recommended for:**
|
|
878
|
+
|
|
876
879
|
- Large sites (100+ posts)
|
|
877
880
|
- Development workflow with frequent rebuilds
|
|
878
881
|
- Sites with slow CSS processing (Tailwind, PostCSS)
|
|
879
882
|
|
|
880
883
|
**Not needed for:**
|
|
884
|
+
|
|
881
885
|
- Small sites (<50 posts) - already fast enough
|
|
882
886
|
- CI/CD builds - prefer clean full builds
|
|
883
887
|
- Production deployments - always use full builds
|
|
@@ -912,6 +916,7 @@ Version 2.0.0 cache structure:
|
|
|
912
916
|
### Future Optimizations
|
|
913
917
|
|
|
914
918
|
Current implementation (v0.18.0) optimizes parsing and CSS processing. Future versions may add:
|
|
919
|
+
|
|
915
920
|
- Selective page regeneration (only rebuild changed posts)
|
|
916
921
|
- Incremental sitemap/RSS updates
|
|
917
922
|
- Smart index page regeneration
|
|
@@ -1092,7 +1097,20 @@ bunki/
|
|
|
1092
1097
|
|
|
1093
1098
|
## Changelog
|
|
1094
1099
|
|
|
1095
|
-
### v0.18.
|
|
1100
|
+
### v0.18.1 (Current)
|
|
1101
|
+
|
|
1102
|
+
- **Page Generation Optimization**: Cache JSON-LD schemas and metadata during initialization
|
|
1103
|
+
- Eliminates 910 redundant operations per build (455 posts × 2)
|
|
1104
|
+
- `extractFirstImageUrl()` called once during initialization, cached in `post.image`
|
|
1105
|
+
- Word count calculated once, cached in `post.wordCount`
|
|
1106
|
+
- JSON-LD schemas pre-generated and cached in `post.jsonLd`
|
|
1107
|
+
- Removed duplicate schema generation from page and feed generators
|
|
1108
|
+
- **Deployment Optimization**: All deploy commands now use incremental builds by default
|
|
1109
|
+
- `deploy:all` now builds incrementally for faster deployments
|
|
1110
|
+
- Individual site deployments also use incremental builds
|
|
1111
|
+
- Full builds available via `build:full` when needed
|
|
1112
|
+
|
|
1113
|
+
### v0.18.0
|
|
1096
1114
|
|
|
1097
1115
|
- **Incremental Builds**: Smart caching for 3.2x faster development builds
|
|
1098
1116
|
- File change detection using content hashing and modification times
|
package/dist/cli.js
CHANGED
|
@@ -21506,7 +21506,7 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
21506
21506
|
module.exports.createColors = createColors;
|
|
21507
21507
|
});
|
|
21508
21508
|
|
|
21509
|
-
// node_modules/
|
|
21509
|
+
// node_modules/postcss/lib/tokenize.js
|
|
21510
21510
|
var require_tokenize = __commonJS((exports, module) => {
|
|
21511
21511
|
var SINGLE_QUOTE = 39;
|
|
21512
21512
|
var DOUBLE_QUOTE = 34;
|
|
@@ -21720,7 +21720,7 @@ var require_tokenize = __commonJS((exports, module) => {
|
|
|
21720
21720
|
};
|
|
21721
21721
|
});
|
|
21722
21722
|
|
|
21723
|
-
// node_modules/
|
|
21723
|
+
// node_modules/postcss/lib/terminal-highlight.js
|
|
21724
21724
|
var require_terminal_highlight = __commonJS((exports, module) => {
|
|
21725
21725
|
var pico = require_picocolors();
|
|
21726
21726
|
var tokenizer = require_tokenize();
|
|
@@ -21781,7 +21781,7 @@ var require_terminal_highlight = __commonJS((exports, module) => {
|
|
|
21781
21781
|
module.exports = terminalHighlight;
|
|
21782
21782
|
});
|
|
21783
21783
|
|
|
21784
|
-
// node_modules/
|
|
21784
|
+
// node_modules/postcss/lib/css-syntax-error.js
|
|
21785
21785
|
var require_css_syntax_error = __commonJS((exports, module) => {
|
|
21786
21786
|
var pico = require_picocolors();
|
|
21787
21787
|
var terminalHighlight = require_terminal_highlight();
|
|
@@ -21881,7 +21881,7 @@ var require_css_syntax_error = __commonJS((exports, module) => {
|
|
|
21881
21881
|
CssSyntaxError.default = CssSyntaxError;
|
|
21882
21882
|
});
|
|
21883
21883
|
|
|
21884
|
-
// node_modules/
|
|
21884
|
+
// node_modules/postcss/lib/stringifier.js
|
|
21885
21885
|
var require_stringifier = __commonJS((exports, module) => {
|
|
21886
21886
|
var DEFAULT_RAW = {
|
|
21887
21887
|
after: `
|
|
@@ -22210,7 +22210,7 @@ var require_stringifier = __commonJS((exports, module) => {
|
|
|
22210
22210
|
Stringifier.default = Stringifier;
|
|
22211
22211
|
});
|
|
22212
22212
|
|
|
22213
|
-
// node_modules/
|
|
22213
|
+
// node_modules/postcss/lib/stringify.js
|
|
22214
22214
|
var require_stringify4 = __commonJS((exports, module) => {
|
|
22215
22215
|
var Stringifier = require_stringifier();
|
|
22216
22216
|
function stringify(node, builder) {
|
|
@@ -22221,13 +22221,13 @@ var require_stringify4 = __commonJS((exports, module) => {
|
|
|
22221
22221
|
stringify.default = stringify;
|
|
22222
22222
|
});
|
|
22223
22223
|
|
|
22224
|
-
// node_modules/
|
|
22224
|
+
// node_modules/postcss/lib/symbols.js
|
|
22225
22225
|
var require_symbols = __commonJS((exports, module) => {
|
|
22226
22226
|
exports.isClean = Symbol("isClean");
|
|
22227
22227
|
exports.my = Symbol("my");
|
|
22228
22228
|
});
|
|
22229
22229
|
|
|
22230
|
-
// node_modules/
|
|
22230
|
+
// node_modules/postcss/lib/node.js
|
|
22231
22231
|
var require_node2 = __commonJS((exports, module) => {
|
|
22232
22232
|
var CssSyntaxError = require_css_syntax_error();
|
|
22233
22233
|
var Stringifier = require_stringifier();
|
|
@@ -22396,7 +22396,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22396
22396
|
let index = this.parent.index(this);
|
|
22397
22397
|
return this.parent.nodes[index + 1];
|
|
22398
22398
|
}
|
|
22399
|
-
positionBy(opts) {
|
|
22399
|
+
positionBy(opts = {}) {
|
|
22400
22400
|
let pos = this.source.start;
|
|
22401
22401
|
if (opts.index) {
|
|
22402
22402
|
pos = this.positionInside(opts.index);
|
|
@@ -22424,7 +22424,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22424
22424
|
column += 1;
|
|
22425
22425
|
}
|
|
22426
22426
|
}
|
|
22427
|
-
return { column, line };
|
|
22427
|
+
return { column, line, offset: end };
|
|
22428
22428
|
}
|
|
22429
22429
|
prev() {
|
|
22430
22430
|
if (!this.parent)
|
|
@@ -22432,20 +22432,23 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22432
22432
|
let index = this.parent.index(this);
|
|
22433
22433
|
return this.parent.nodes[index - 1];
|
|
22434
22434
|
}
|
|
22435
|
-
rangeBy(opts) {
|
|
22435
|
+
rangeBy(opts = {}) {
|
|
22436
|
+
let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
|
|
22436
22437
|
let start = {
|
|
22437
22438
|
column: this.source.start.column,
|
|
22438
|
-
line: this.source.start.line
|
|
22439
|
+
line: this.source.start.line,
|
|
22440
|
+
offset: sourceOffset(inputString, this.source.start)
|
|
22439
22441
|
};
|
|
22440
22442
|
let end = this.source.end ? {
|
|
22441
22443
|
column: this.source.end.column + 1,
|
|
22442
|
-
line: this.source.end.line
|
|
22444
|
+
line: this.source.end.line,
|
|
22445
|
+
offset: typeof this.source.end.offset === "number" ? this.source.end.offset : sourceOffset(inputString, this.source.end) + 1
|
|
22443
22446
|
} : {
|
|
22444
22447
|
column: start.column + 1,
|
|
22445
|
-
line: start.line
|
|
22448
|
+
line: start.line,
|
|
22449
|
+
offset: start.offset + 1
|
|
22446
22450
|
};
|
|
22447
22451
|
if (opts.word) {
|
|
22448
|
-
let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
|
|
22449
22452
|
let stringRepresentation = inputString.slice(sourceOffset(inputString, this.source.start), sourceOffset(inputString, this.source.end));
|
|
22450
22453
|
let index = stringRepresentation.indexOf(opts.word);
|
|
22451
22454
|
if (index !== -1) {
|
|
@@ -22456,7 +22459,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22456
22459
|
if (opts.start) {
|
|
22457
22460
|
start = {
|
|
22458
22461
|
column: opts.start.column,
|
|
22459
|
-
line: opts.start.line
|
|
22462
|
+
line: opts.start.line,
|
|
22463
|
+
offset: sourceOffset(inputString, opts.start)
|
|
22460
22464
|
};
|
|
22461
22465
|
} else if (opts.index) {
|
|
22462
22466
|
start = this.positionInside(opts.index);
|
|
@@ -22464,7 +22468,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22464
22468
|
if (opts.end) {
|
|
22465
22469
|
end = {
|
|
22466
22470
|
column: opts.end.column,
|
|
22467
|
-
line: opts.end.line
|
|
22471
|
+
line: opts.end.line,
|
|
22472
|
+
offset: sourceOffset(inputString, opts.end)
|
|
22468
22473
|
};
|
|
22469
22474
|
} else if (typeof opts.endIndex === "number") {
|
|
22470
22475
|
end = this.positionInside(opts.endIndex);
|
|
@@ -22473,7 +22478,11 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22473
22478
|
}
|
|
22474
22479
|
}
|
|
22475
22480
|
if (end.line < start.line || end.line === start.line && end.column <= start.column) {
|
|
22476
|
-
end = {
|
|
22481
|
+
end = {
|
|
22482
|
+
column: start.column + 1,
|
|
22483
|
+
line: start.line,
|
|
22484
|
+
offset: start.offset + 1
|
|
22485
|
+
};
|
|
22477
22486
|
}
|
|
22478
22487
|
return { end, start };
|
|
22479
22488
|
}
|
|
@@ -22538,6 +22547,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22538
22547
|
} else if (typeof value === "object" && value.toJSON) {
|
|
22539
22548
|
fixed[name] = value.toJSON(null, inputs);
|
|
22540
22549
|
} else if (name === "source") {
|
|
22550
|
+
if (value == null)
|
|
22551
|
+
continue;
|
|
22541
22552
|
let inputId = inputs.get(value.input);
|
|
22542
22553
|
if (inputId == null) {
|
|
22543
22554
|
inputId = inputsNextIndex;
|
|
@@ -22573,7 +22584,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22573
22584
|
});
|
|
22574
22585
|
return result;
|
|
22575
22586
|
}
|
|
22576
|
-
warn(result, text, opts) {
|
|
22587
|
+
warn(result, text, opts = {}) {
|
|
22577
22588
|
let data = { node: this };
|
|
22578
22589
|
for (let i in opts)
|
|
22579
22590
|
data[i] = opts[i];
|
|
@@ -22584,7 +22595,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
22584
22595
|
Node.default = Node;
|
|
22585
22596
|
});
|
|
22586
22597
|
|
|
22587
|
-
// node_modules/
|
|
22598
|
+
// node_modules/postcss/lib/comment.js
|
|
22588
22599
|
var require_comment = __commonJS((exports, module) => {
|
|
22589
22600
|
var Node = require_node2();
|
|
22590
22601
|
|
|
@@ -22598,7 +22609,7 @@ var require_comment = __commonJS((exports, module) => {
|
|
|
22598
22609
|
Comment.default = Comment;
|
|
22599
22610
|
});
|
|
22600
22611
|
|
|
22601
|
-
// node_modules/
|
|
22612
|
+
// node_modules/postcss/lib/declaration.js
|
|
22602
22613
|
var require_declaration = __commonJS((exports, module) => {
|
|
22603
22614
|
var Node = require_node2();
|
|
22604
22615
|
|
|
@@ -22618,7 +22629,7 @@ var require_declaration = __commonJS((exports, module) => {
|
|
|
22618
22629
|
Declaration.default = Declaration;
|
|
22619
22630
|
});
|
|
22620
22631
|
|
|
22621
|
-
// node_modules/
|
|
22632
|
+
// node_modules/postcss/lib/container.js
|
|
22622
22633
|
var require_container = __commonJS((exports, module) => {
|
|
22623
22634
|
var Comment = require_comment();
|
|
22624
22635
|
var Declaration = require_declaration();
|
|
@@ -23017,7 +23028,7 @@ var require_container = __commonJS((exports, module) => {
|
|
|
23017
23028
|
};
|
|
23018
23029
|
});
|
|
23019
23030
|
|
|
23020
|
-
// node_modules/
|
|
23031
|
+
// node_modules/postcss/lib/at-rule.js
|
|
23021
23032
|
var require_at_rule = __commonJS((exports, module) => {
|
|
23022
23033
|
var Container = require_container();
|
|
23023
23034
|
|
|
@@ -23042,7 +23053,7 @@ var require_at_rule = __commonJS((exports, module) => {
|
|
|
23042
23053
|
Container.registerAtRule(AtRule);
|
|
23043
23054
|
});
|
|
23044
23055
|
|
|
23045
|
-
// node_modules/
|
|
23056
|
+
// node_modules/postcss/lib/document.js
|
|
23046
23057
|
var require_document = __commonJS((exports, module) => {
|
|
23047
23058
|
var Container = require_container();
|
|
23048
23059
|
var LazyResult;
|
|
@@ -24927,7 +24938,7 @@ var require_source_map = __commonJS((exports) => {
|
|
|
24927
24938
|
exports.SourceNode = require_source_node().SourceNode;
|
|
24928
24939
|
});
|
|
24929
24940
|
|
|
24930
|
-
// node_modules/
|
|
24941
|
+
// node_modules/postcss/lib/previous-map.js
|
|
24931
24942
|
var require_previous_map = __commonJS((exports, module) => {
|
|
24932
24943
|
var { existsSync, readFileSync } = __require("fs");
|
|
24933
24944
|
var { dirname, join } = __require("path");
|
|
@@ -25049,7 +25060,7 @@ var require_previous_map = __commonJS((exports, module) => {
|
|
|
25049
25060
|
PreviousMap.default = PreviousMap;
|
|
25050
25061
|
});
|
|
25051
25062
|
|
|
25052
|
-
// node_modules/
|
|
25063
|
+
// node_modules/postcss/lib/input.js
|
|
25053
25064
|
var require_input = __commonJS((exports, module) => {
|
|
25054
25065
|
var { nanoid } = require_non_secure();
|
|
25055
25066
|
var { isAbsolute, resolve } = __require("path");
|
|
@@ -25058,9 +25069,23 @@ var require_input = __commonJS((exports, module) => {
|
|
|
25058
25069
|
var CssSyntaxError = require_css_syntax_error();
|
|
25059
25070
|
var PreviousMap = require_previous_map();
|
|
25060
25071
|
var terminalHighlight = require_terminal_highlight();
|
|
25061
|
-
var
|
|
25072
|
+
var lineToIndexCache = Symbol("lineToIndexCache");
|
|
25062
25073
|
var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
|
|
25063
25074
|
var pathAvailable = Boolean(resolve && isAbsolute);
|
|
25075
|
+
function getLineToIndex(input) {
|
|
25076
|
+
if (input[lineToIndexCache])
|
|
25077
|
+
return input[lineToIndexCache];
|
|
25078
|
+
let lines = input.css.split(`
|
|
25079
|
+
`);
|
|
25080
|
+
let lineToIndex = new Array(lines.length);
|
|
25081
|
+
let prevIndex = 0;
|
|
25082
|
+
for (let i = 0, l = lines.length;i < l; i++) {
|
|
25083
|
+
lineToIndex[i] = prevIndex;
|
|
25084
|
+
prevIndex += lines[i].length + 1;
|
|
25085
|
+
}
|
|
25086
|
+
input[lineToIndexCache] = lineToIndex;
|
|
25087
|
+
return lineToIndex;
|
|
25088
|
+
}
|
|
25064
25089
|
|
|
25065
25090
|
class Input {
|
|
25066
25091
|
get from() {
|
|
@@ -25103,30 +25128,37 @@ var require_input = __commonJS((exports, module) => {
|
|
|
25103
25128
|
this.map.file = this.from;
|
|
25104
25129
|
}
|
|
25105
25130
|
error(message, line, column, opts = {}) {
|
|
25106
|
-
let endColumn, endLine, result;
|
|
25131
|
+
let endColumn, endLine, endOffset, offset, result;
|
|
25107
25132
|
if (line && typeof line === "object") {
|
|
25108
25133
|
let start = line;
|
|
25109
25134
|
let end = column;
|
|
25110
25135
|
if (typeof start.offset === "number") {
|
|
25111
|
-
|
|
25136
|
+
offset = start.offset;
|
|
25137
|
+
let pos = this.fromOffset(offset);
|
|
25112
25138
|
line = pos.line;
|
|
25113
25139
|
column = pos.col;
|
|
25114
25140
|
} else {
|
|
25115
25141
|
line = start.line;
|
|
25116
25142
|
column = start.column;
|
|
25143
|
+
offset = this.fromLineAndColumn(line, column);
|
|
25117
25144
|
}
|
|
25118
25145
|
if (typeof end.offset === "number") {
|
|
25119
|
-
|
|
25146
|
+
endOffset = end.offset;
|
|
25147
|
+
let pos = this.fromOffset(endOffset);
|
|
25120
25148
|
endLine = pos.line;
|
|
25121
25149
|
endColumn = pos.col;
|
|
25122
25150
|
} else {
|
|
25123
25151
|
endLine = end.line;
|
|
25124
25152
|
endColumn = end.column;
|
|
25153
|
+
endOffset = this.fromLineAndColumn(end.line, end.column);
|
|
25125
25154
|
}
|
|
25126
25155
|
} else if (!column) {
|
|
25127
|
-
|
|
25156
|
+
offset = line;
|
|
25157
|
+
let pos = this.fromOffset(offset);
|
|
25128
25158
|
line = pos.line;
|
|
25129
25159
|
column = pos.col;
|
|
25160
|
+
} else {
|
|
25161
|
+
offset = this.fromLineAndColumn(line, column);
|
|
25130
25162
|
}
|
|
25131
25163
|
let origin = this.origin(line, column, endLine, endColumn);
|
|
25132
25164
|
if (origin) {
|
|
@@ -25134,7 +25166,7 @@ var require_input = __commonJS((exports, module) => {
|
|
|
25134
25166
|
} else {
|
|
25135
25167
|
result = new CssSyntaxError(message, endLine === undefined ? line : { column, line }, endLine === undefined ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin);
|
|
25136
25168
|
}
|
|
25137
|
-
result.input = { column, endColumn, endLine, line, source: this.css };
|
|
25169
|
+
result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css };
|
|
25138
25170
|
if (this.file) {
|
|
25139
25171
|
if (pathToFileURL) {
|
|
25140
25172
|
result.input.url = pathToFileURL(this.file).toString();
|
|
@@ -25143,22 +25175,14 @@ var require_input = __commonJS((exports, module) => {
|
|
|
25143
25175
|
}
|
|
25144
25176
|
return result;
|
|
25145
25177
|
}
|
|
25178
|
+
fromLineAndColumn(line, column) {
|
|
25179
|
+
let lineToIndex = getLineToIndex(this);
|
|
25180
|
+
let index = lineToIndex[line - 1];
|
|
25181
|
+
return index + column - 1;
|
|
25182
|
+
}
|
|
25146
25183
|
fromOffset(offset) {
|
|
25147
|
-
let
|
|
25148
|
-
|
|
25149
|
-
let lines = this.css.split(`
|
|
25150
|
-
`);
|
|
25151
|
-
lineToIndex = new Array(lines.length);
|
|
25152
|
-
let prevIndex = 0;
|
|
25153
|
-
for (let i = 0, l = lines.length;i < l; i++) {
|
|
25154
|
-
lineToIndex[i] = prevIndex;
|
|
25155
|
-
prevIndex += lines[i].length + 1;
|
|
25156
|
-
}
|
|
25157
|
-
this[fromOffsetCache] = lineToIndex;
|
|
25158
|
-
} else {
|
|
25159
|
-
lineToIndex = this[fromOffsetCache];
|
|
25160
|
-
}
|
|
25161
|
-
lastLine = lineToIndex[lineToIndex.length - 1];
|
|
25184
|
+
let lineToIndex = getLineToIndex(this);
|
|
25185
|
+
let lastLine = lineToIndex[lineToIndex.length - 1];
|
|
25162
25186
|
let min = 0;
|
|
25163
25187
|
if (offset >= lastLine) {
|
|
25164
25188
|
min = lineToIndex.length - 1;
|
|
@@ -25247,7 +25271,7 @@ var require_input = __commonJS((exports, module) => {
|
|
|
25247
25271
|
}
|
|
25248
25272
|
});
|
|
25249
25273
|
|
|
25250
|
-
// node_modules/
|
|
25274
|
+
// node_modules/postcss/lib/root.js
|
|
25251
25275
|
var require_root = __commonJS((exports, module) => {
|
|
25252
25276
|
var Container = require_container();
|
|
25253
25277
|
var LazyResult;
|
|
@@ -25300,7 +25324,7 @@ var require_root = __commonJS((exports, module) => {
|
|
|
25300
25324
|
Container.registerRoot(Root);
|
|
25301
25325
|
});
|
|
25302
25326
|
|
|
25303
|
-
// node_modules/
|
|
25327
|
+
// node_modules/postcss/lib/list.js
|
|
25304
25328
|
var require_list = __commonJS((exports, module) => {
|
|
25305
25329
|
var list = {
|
|
25306
25330
|
comma(string) {
|
|
@@ -25358,7 +25382,7 @@ var require_list = __commonJS((exports, module) => {
|
|
|
25358
25382
|
list.default = list;
|
|
25359
25383
|
});
|
|
25360
25384
|
|
|
25361
|
-
// node_modules/
|
|
25385
|
+
// node_modules/postcss/lib/rule.js
|
|
25362
25386
|
var require_rule = __commonJS((exports, module) => {
|
|
25363
25387
|
var Container = require_container();
|
|
25364
25388
|
var list = require_list();
|
|
@@ -25384,7 +25408,7 @@ var require_rule = __commonJS((exports, module) => {
|
|
|
25384
25408
|
Container.registerRule(Rule);
|
|
25385
25409
|
});
|
|
25386
25410
|
|
|
25387
|
-
// node_modules/
|
|
25411
|
+
// node_modules/postcss/lib/fromJSON.js
|
|
25388
25412
|
var require_fromJSON = __commonJS((exports, module) => {
|
|
25389
25413
|
var AtRule = require_at_rule();
|
|
25390
25414
|
var Comment = require_comment();
|
|
@@ -25438,7 +25462,7 @@ var require_fromJSON = __commonJS((exports, module) => {
|
|
|
25438
25462
|
fromJSON.default = fromJSON;
|
|
25439
25463
|
});
|
|
25440
25464
|
|
|
25441
|
-
// node_modules/
|
|
25465
|
+
// node_modules/postcss/lib/map-generator.js
|
|
25442
25466
|
var require_map_generator = __commonJS((exports, module) => {
|
|
25443
25467
|
var { dirname, relative, resolve, sep } = __require("path");
|
|
25444
25468
|
var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
|
|
@@ -25768,7 +25792,7 @@ var require_map_generator = __commonJS((exports, module) => {
|
|
|
25768
25792
|
module.exports = MapGenerator;
|
|
25769
25793
|
});
|
|
25770
25794
|
|
|
25771
|
-
// node_modules/
|
|
25795
|
+
// node_modules/postcss/lib/parser.js
|
|
25772
25796
|
var require_parser2 = __commonJS((exports, module) => {
|
|
25773
25797
|
var AtRule = require_at_rule();
|
|
25774
25798
|
var Comment = require_comment();
|
|
@@ -26289,7 +26313,7 @@ var require_parser2 = __commonJS((exports, module) => {
|
|
|
26289
26313
|
module.exports = Parser;
|
|
26290
26314
|
});
|
|
26291
26315
|
|
|
26292
|
-
// node_modules/
|
|
26316
|
+
// node_modules/postcss/lib/parse.js
|
|
26293
26317
|
var require_parse4 = __commonJS((exports, module) => {
|
|
26294
26318
|
var Container = require_container();
|
|
26295
26319
|
var Input = require_input();
|
|
@@ -26323,7 +26347,7 @@ You tried to parse Less with ` + "the standard CSS parser; " + "try again with t
|
|
|
26323
26347
|
Container.registerParse(parse2);
|
|
26324
26348
|
});
|
|
26325
26349
|
|
|
26326
|
-
// node_modules/
|
|
26350
|
+
// node_modules/postcss/lib/warning.js
|
|
26327
26351
|
var require_warning = __commonJS((exports, module) => {
|
|
26328
26352
|
class Warning {
|
|
26329
26353
|
constructor(text, opts = {}) {
|
|
@@ -26357,7 +26381,7 @@ var require_warning = __commonJS((exports, module) => {
|
|
|
26357
26381
|
Warning.default = Warning;
|
|
26358
26382
|
});
|
|
26359
26383
|
|
|
26360
|
-
// node_modules/
|
|
26384
|
+
// node_modules/postcss/lib/result.js
|
|
26361
26385
|
var require_result = __commonJS((exports, module) => {
|
|
26362
26386
|
var Warning = require_warning();
|
|
26363
26387
|
|
|
@@ -26370,7 +26394,7 @@ var require_result = __commonJS((exports, module) => {
|
|
|
26370
26394
|
this.messages = [];
|
|
26371
26395
|
this.root = root;
|
|
26372
26396
|
this.opts = opts;
|
|
26373
|
-
this.css =
|
|
26397
|
+
this.css = "";
|
|
26374
26398
|
this.map = undefined;
|
|
26375
26399
|
}
|
|
26376
26400
|
toString() {
|
|
@@ -26394,7 +26418,7 @@ var require_result = __commonJS((exports, module) => {
|
|
|
26394
26418
|
Result.default = Result;
|
|
26395
26419
|
});
|
|
26396
26420
|
|
|
26397
|
-
// node_modules/
|
|
26421
|
+
// node_modules/postcss/lib/warn-once.js
|
|
26398
26422
|
var require_warn_once = __commonJS((exports, module) => {
|
|
26399
26423
|
var printed = {};
|
|
26400
26424
|
module.exports = function warnOnce(message) {
|
|
@@ -26407,7 +26431,7 @@ var require_warn_once = __commonJS((exports, module) => {
|
|
|
26407
26431
|
};
|
|
26408
26432
|
});
|
|
26409
26433
|
|
|
26410
|
-
// node_modules/
|
|
26434
|
+
// node_modules/postcss/lib/lazy-result.js
|
|
26411
26435
|
var require_lazy_result = __commonJS((exports, module) => {
|
|
26412
26436
|
var Container = require_container();
|
|
26413
26437
|
var Document = require_document();
|
|
@@ -26885,7 +26909,7 @@ var require_lazy_result = __commonJS((exports, module) => {
|
|
|
26885
26909
|
Document.registerLazyResult(LazyResult);
|
|
26886
26910
|
});
|
|
26887
26911
|
|
|
26888
|
-
// node_modules/
|
|
26912
|
+
// node_modules/postcss/lib/no-work-result.js
|
|
26889
26913
|
var require_no_work_result = __commonJS((exports, module) => {
|
|
26890
26914
|
var MapGenerator = require_map_generator();
|
|
26891
26915
|
var parse2 = require_parse4();
|
|
@@ -26999,7 +27023,7 @@ var require_no_work_result = __commonJS((exports, module) => {
|
|
|
26999
27023
|
NoWorkResult.default = NoWorkResult;
|
|
27000
27024
|
});
|
|
27001
27025
|
|
|
27002
|
-
// node_modules/
|
|
27026
|
+
// node_modules/postcss/lib/processor.js
|
|
27003
27027
|
var require_processor = __commonJS((exports, module) => {
|
|
27004
27028
|
var Document = require_document();
|
|
27005
27029
|
var LazyResult = require_lazy_result();
|
|
@@ -27008,7 +27032,7 @@ var require_processor = __commonJS((exports, module) => {
|
|
|
27008
27032
|
|
|
27009
27033
|
class Processor {
|
|
27010
27034
|
constructor(plugins = []) {
|
|
27011
|
-
this.version = "8.5.
|
|
27035
|
+
this.version = "8.5.6";
|
|
27012
27036
|
this.plugins = this.normalize(plugins);
|
|
27013
27037
|
}
|
|
27014
27038
|
normalize(plugins) {
|
|
@@ -27053,7 +27077,7 @@ var require_processor = __commonJS((exports, module) => {
|
|
|
27053
27077
|
Document.registerProcessor(Processor);
|
|
27054
27078
|
});
|
|
27055
27079
|
|
|
27056
|
-
// node_modules/
|
|
27080
|
+
// node_modules/postcss/lib/postcss.js
|
|
27057
27081
|
var require_postcss = __commonJS((exports, module) => {
|
|
27058
27082
|
var AtRule = require_at_rule();
|
|
27059
27083
|
var Comment = require_comment();
|
|
@@ -27672,6 +27696,15 @@ and ensure you are accounting for this risk.
|
|
|
27672
27696
|
}, options2.parser);
|
|
27673
27697
|
parser.write(html);
|
|
27674
27698
|
parser.end();
|
|
27699
|
+
if (options2.disallowedTagsMode === "escape" || options2.disallowedTagsMode === "recursiveEscape") {
|
|
27700
|
+
const lastParsedIndex = parser.endIndex;
|
|
27701
|
+
if (lastParsedIndex != null && lastParsedIndex >= 0 && lastParsedIndex < html.length) {
|
|
27702
|
+
const unparsed = html.substring(lastParsedIndex);
|
|
27703
|
+
result += escapeHtml(unparsed);
|
|
27704
|
+
} else if ((lastParsedIndex == null || lastParsedIndex < 0) && html.length > 0 && result === "") {
|
|
27705
|
+
result = escapeHtml(html);
|
|
27706
|
+
}
|
|
27707
|
+
}
|
|
27675
27708
|
return result;
|
|
27676
27709
|
function initializeState() {
|
|
27677
27710
|
result = "";
|
|
@@ -32320,7 +32353,7 @@ ${e}</tr>
|
|
|
32320
32353
|
if (i === null)
|
|
32321
32354
|
return O(n);
|
|
32322
32355
|
e = i;
|
|
32323
|
-
let s = `<img src="${e}" alt="${n}"`;
|
|
32356
|
+
let s = `<img src="${e}" alt="${O(n)}"`;
|
|
32324
32357
|
return t && (s += ` title="${O(t)}"`), s += ">", s;
|
|
32325
32358
|
}
|
|
32326
32359
|
text(e) {
|
|
@@ -33538,9 +33571,8 @@ function generateBlogPostingSchema(options2) {
|
|
|
33538
33571
|
if (post.tags && post.tags.length > 0) {
|
|
33539
33572
|
blogPosting.articleSection = post.tags[0];
|
|
33540
33573
|
}
|
|
33541
|
-
if (post.
|
|
33542
|
-
|
|
33543
|
-
blogPosting.wordCount = wordCount;
|
|
33574
|
+
if (post.wordCount) {
|
|
33575
|
+
blogPosting.wordCount = post.wordCount;
|
|
33544
33576
|
}
|
|
33545
33577
|
blogPosting.inLanguage = site.rssLanguage || "en-US";
|
|
33546
33578
|
return blogPosting;
|
|
@@ -33899,11 +33931,6 @@ function getTotalPages(totalItems, pageSize) {
|
|
|
33899
33931
|
}
|
|
33900
33932
|
|
|
33901
33933
|
// src/generators/feeds.ts
|
|
33902
|
-
function extractFirstImageUrl2(html) {
|
|
33903
|
-
const imgRegex = /<img[^>]+src=["']([^"']+)["']/;
|
|
33904
|
-
const match = html.match(imgRegex);
|
|
33905
|
-
return match ? match[1] : null;
|
|
33906
|
-
}
|
|
33907
33934
|
function makeAbsoluteUrl(imageUrl, baseUrl) {
|
|
33908
33935
|
return imageUrl.startsWith("http") ? imageUrl : `${baseUrl}${imageUrl}`;
|
|
33909
33936
|
}
|
|
@@ -33918,8 +33945,7 @@ function generateRSSFeed(site, config) {
|
|
|
33918
33945
|
const rssItems = posts.map((post) => {
|
|
33919
33946
|
const postUrl = `${config.baseUrl}${post.url}`;
|
|
33920
33947
|
const pubDate = formatRSSDate(post.date);
|
|
33921
|
-
const
|
|
33922
|
-
const absoluteImageUrl = featuredImage ? makeAbsoluteUrl(featuredImage, config.baseUrl) : null;
|
|
33948
|
+
const absoluteImageUrl = post.image ? makeAbsoluteUrl(post.image, config.baseUrl) : null;
|
|
33923
33949
|
const author = config.authorEmail && config.authorName ? `${config.authorEmail} (${config.authorName})` : config.authorEmail || undefined;
|
|
33924
33950
|
return buildRSSItem({
|
|
33925
33951
|
title: post.title,
|
|
@@ -34083,18 +34109,10 @@ async function generatePostPages(site, config, outputDir) {
|
|
|
34083
34109
|
const batch = site.posts.slice(i, i + batchSize);
|
|
34084
34110
|
await Promise.all(batch.map(async (post) => {
|
|
34085
34111
|
const postPath = post.url.substring(1);
|
|
34086
|
-
const imageUrl = extractFirstImageUrl(post.html, config.baseUrl);
|
|
34087
|
-
const schemas = generatePostPageSchemas({
|
|
34088
|
-
post,
|
|
34089
|
-
site: config,
|
|
34090
|
-
imageUrl
|
|
34091
|
-
});
|
|
34092
|
-
const jsonLd = schemas.map((schema) => toScriptTag(schema)).join(`
|
|
34093
|
-
`);
|
|
34094
34112
|
const postHtml = import_nunjucks.default.render("post.njk", {
|
|
34095
34113
|
site: config,
|
|
34096
34114
|
post,
|
|
34097
|
-
jsonLd
|
|
34115
|
+
jsonLd: post.jsonLd || ""
|
|
34098
34116
|
});
|
|
34099
34117
|
await writeHtmlFile(outputDir, `${postPath}index.html`, postHtml);
|
|
34100
34118
|
}));
|
|
@@ -34452,6 +34470,16 @@ class SiteGenerator {
|
|
|
34452
34470
|
if (imageUrl) {
|
|
34453
34471
|
post.image = imageUrl;
|
|
34454
34472
|
}
|
|
34473
|
+
if (post.content) {
|
|
34474
|
+
post.wordCount = post.content.split(/\s+/).length;
|
|
34475
|
+
}
|
|
34476
|
+
const schemas = generatePostPageSchemas({
|
|
34477
|
+
post,
|
|
34478
|
+
site: this.options.config,
|
|
34479
|
+
imageUrl: post.image
|
|
34480
|
+
});
|
|
34481
|
+
post.jsonLd = schemas.map((schema) => toScriptTag(schema)).join(`
|
|
34482
|
+
`);
|
|
34455
34483
|
post.tags.forEach((tagName) => {
|
|
34456
34484
|
const tagSlug = import_slugify.default(tagName, { lower: true, strict: true });
|
|
34457
34485
|
post.tagSlugs[tagName] = tagSlug;
|
package/dist/index.js
CHANGED
|
@@ -8797,7 +8797,7 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
8797
8797
|
module.exports.createColors = createColors;
|
|
8798
8798
|
});
|
|
8799
8799
|
|
|
8800
|
-
// node_modules/
|
|
8800
|
+
// node_modules/postcss/lib/tokenize.js
|
|
8801
8801
|
var require_tokenize = __commonJS((exports, module) => {
|
|
8802
8802
|
var SINGLE_QUOTE = 39;
|
|
8803
8803
|
var DOUBLE_QUOTE = 34;
|
|
@@ -9011,7 +9011,7 @@ var require_tokenize = __commonJS((exports, module) => {
|
|
|
9011
9011
|
};
|
|
9012
9012
|
});
|
|
9013
9013
|
|
|
9014
|
-
// node_modules/
|
|
9014
|
+
// node_modules/postcss/lib/terminal-highlight.js
|
|
9015
9015
|
var require_terminal_highlight = __commonJS((exports, module) => {
|
|
9016
9016
|
var pico = require_picocolors();
|
|
9017
9017
|
var tokenizer = require_tokenize();
|
|
@@ -9072,7 +9072,7 @@ var require_terminal_highlight = __commonJS((exports, module) => {
|
|
|
9072
9072
|
module.exports = terminalHighlight;
|
|
9073
9073
|
});
|
|
9074
9074
|
|
|
9075
|
-
// node_modules/
|
|
9075
|
+
// node_modules/postcss/lib/css-syntax-error.js
|
|
9076
9076
|
var require_css_syntax_error = __commonJS((exports, module) => {
|
|
9077
9077
|
var pico = require_picocolors();
|
|
9078
9078
|
var terminalHighlight = require_terminal_highlight();
|
|
@@ -9172,7 +9172,7 @@ var require_css_syntax_error = __commonJS((exports, module) => {
|
|
|
9172
9172
|
CssSyntaxError.default = CssSyntaxError;
|
|
9173
9173
|
});
|
|
9174
9174
|
|
|
9175
|
-
// node_modules/
|
|
9175
|
+
// node_modules/postcss/lib/stringifier.js
|
|
9176
9176
|
var require_stringifier = __commonJS((exports, module) => {
|
|
9177
9177
|
var DEFAULT_RAW = {
|
|
9178
9178
|
after: `
|
|
@@ -9501,7 +9501,7 @@ var require_stringifier = __commonJS((exports, module) => {
|
|
|
9501
9501
|
Stringifier.default = Stringifier;
|
|
9502
9502
|
});
|
|
9503
9503
|
|
|
9504
|
-
// node_modules/
|
|
9504
|
+
// node_modules/postcss/lib/stringify.js
|
|
9505
9505
|
var require_stringify3 = __commonJS((exports, module) => {
|
|
9506
9506
|
var Stringifier = require_stringifier();
|
|
9507
9507
|
function stringify(node, builder) {
|
|
@@ -9512,13 +9512,13 @@ var require_stringify3 = __commonJS((exports, module) => {
|
|
|
9512
9512
|
stringify.default = stringify;
|
|
9513
9513
|
});
|
|
9514
9514
|
|
|
9515
|
-
// node_modules/
|
|
9515
|
+
// node_modules/postcss/lib/symbols.js
|
|
9516
9516
|
var require_symbols = __commonJS((exports, module) => {
|
|
9517
9517
|
exports.isClean = Symbol("isClean");
|
|
9518
9518
|
exports.my = Symbol("my");
|
|
9519
9519
|
});
|
|
9520
9520
|
|
|
9521
|
-
// node_modules/
|
|
9521
|
+
// node_modules/postcss/lib/node.js
|
|
9522
9522
|
var require_node2 = __commonJS((exports, module) => {
|
|
9523
9523
|
var CssSyntaxError = require_css_syntax_error();
|
|
9524
9524
|
var Stringifier = require_stringifier();
|
|
@@ -9687,7 +9687,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9687
9687
|
let index = this.parent.index(this);
|
|
9688
9688
|
return this.parent.nodes[index + 1];
|
|
9689
9689
|
}
|
|
9690
|
-
positionBy(opts) {
|
|
9690
|
+
positionBy(opts = {}) {
|
|
9691
9691
|
let pos = this.source.start;
|
|
9692
9692
|
if (opts.index) {
|
|
9693
9693
|
pos = this.positionInside(opts.index);
|
|
@@ -9715,7 +9715,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9715
9715
|
column += 1;
|
|
9716
9716
|
}
|
|
9717
9717
|
}
|
|
9718
|
-
return { column, line };
|
|
9718
|
+
return { column, line, offset: end };
|
|
9719
9719
|
}
|
|
9720
9720
|
prev() {
|
|
9721
9721
|
if (!this.parent)
|
|
@@ -9723,20 +9723,23 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9723
9723
|
let index = this.parent.index(this);
|
|
9724
9724
|
return this.parent.nodes[index - 1];
|
|
9725
9725
|
}
|
|
9726
|
-
rangeBy(opts) {
|
|
9726
|
+
rangeBy(opts = {}) {
|
|
9727
|
+
let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
|
|
9727
9728
|
let start = {
|
|
9728
9729
|
column: this.source.start.column,
|
|
9729
|
-
line: this.source.start.line
|
|
9730
|
+
line: this.source.start.line,
|
|
9731
|
+
offset: sourceOffset(inputString, this.source.start)
|
|
9730
9732
|
};
|
|
9731
9733
|
let end = this.source.end ? {
|
|
9732
9734
|
column: this.source.end.column + 1,
|
|
9733
|
-
line: this.source.end.line
|
|
9735
|
+
line: this.source.end.line,
|
|
9736
|
+
offset: typeof this.source.end.offset === "number" ? this.source.end.offset : sourceOffset(inputString, this.source.end) + 1
|
|
9734
9737
|
} : {
|
|
9735
9738
|
column: start.column + 1,
|
|
9736
|
-
line: start.line
|
|
9739
|
+
line: start.line,
|
|
9740
|
+
offset: start.offset + 1
|
|
9737
9741
|
};
|
|
9738
9742
|
if (opts.word) {
|
|
9739
|
-
let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
|
|
9740
9743
|
let stringRepresentation = inputString.slice(sourceOffset(inputString, this.source.start), sourceOffset(inputString, this.source.end));
|
|
9741
9744
|
let index = stringRepresentation.indexOf(opts.word);
|
|
9742
9745
|
if (index !== -1) {
|
|
@@ -9747,7 +9750,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9747
9750
|
if (opts.start) {
|
|
9748
9751
|
start = {
|
|
9749
9752
|
column: opts.start.column,
|
|
9750
|
-
line: opts.start.line
|
|
9753
|
+
line: opts.start.line,
|
|
9754
|
+
offset: sourceOffset(inputString, opts.start)
|
|
9751
9755
|
};
|
|
9752
9756
|
} else if (opts.index) {
|
|
9753
9757
|
start = this.positionInside(opts.index);
|
|
@@ -9755,7 +9759,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9755
9759
|
if (opts.end) {
|
|
9756
9760
|
end = {
|
|
9757
9761
|
column: opts.end.column,
|
|
9758
|
-
line: opts.end.line
|
|
9762
|
+
line: opts.end.line,
|
|
9763
|
+
offset: sourceOffset(inputString, opts.end)
|
|
9759
9764
|
};
|
|
9760
9765
|
} else if (typeof opts.endIndex === "number") {
|
|
9761
9766
|
end = this.positionInside(opts.endIndex);
|
|
@@ -9764,7 +9769,11 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9764
9769
|
}
|
|
9765
9770
|
}
|
|
9766
9771
|
if (end.line < start.line || end.line === start.line && end.column <= start.column) {
|
|
9767
|
-
end = {
|
|
9772
|
+
end = {
|
|
9773
|
+
column: start.column + 1,
|
|
9774
|
+
line: start.line,
|
|
9775
|
+
offset: start.offset + 1
|
|
9776
|
+
};
|
|
9768
9777
|
}
|
|
9769
9778
|
return { end, start };
|
|
9770
9779
|
}
|
|
@@ -9829,6 +9838,8 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9829
9838
|
} else if (typeof value === "object" && value.toJSON) {
|
|
9830
9839
|
fixed[name] = value.toJSON(null, inputs);
|
|
9831
9840
|
} else if (name === "source") {
|
|
9841
|
+
if (value == null)
|
|
9842
|
+
continue;
|
|
9832
9843
|
let inputId = inputs.get(value.input);
|
|
9833
9844
|
if (inputId == null) {
|
|
9834
9845
|
inputId = inputsNextIndex;
|
|
@@ -9864,7 +9875,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9864
9875
|
});
|
|
9865
9876
|
return result;
|
|
9866
9877
|
}
|
|
9867
|
-
warn(result, text, opts) {
|
|
9878
|
+
warn(result, text, opts = {}) {
|
|
9868
9879
|
let data = { node: this };
|
|
9869
9880
|
for (let i in opts)
|
|
9870
9881
|
data[i] = opts[i];
|
|
@@ -9875,7 +9886,7 @@ var require_node2 = __commonJS((exports, module) => {
|
|
|
9875
9886
|
Node.default = Node;
|
|
9876
9887
|
});
|
|
9877
9888
|
|
|
9878
|
-
// node_modules/
|
|
9889
|
+
// node_modules/postcss/lib/comment.js
|
|
9879
9890
|
var require_comment = __commonJS((exports, module) => {
|
|
9880
9891
|
var Node = require_node2();
|
|
9881
9892
|
|
|
@@ -9889,7 +9900,7 @@ var require_comment = __commonJS((exports, module) => {
|
|
|
9889
9900
|
Comment.default = Comment;
|
|
9890
9901
|
});
|
|
9891
9902
|
|
|
9892
|
-
// node_modules/
|
|
9903
|
+
// node_modules/postcss/lib/declaration.js
|
|
9893
9904
|
var require_declaration = __commonJS((exports, module) => {
|
|
9894
9905
|
var Node = require_node2();
|
|
9895
9906
|
|
|
@@ -9909,7 +9920,7 @@ var require_declaration = __commonJS((exports, module) => {
|
|
|
9909
9920
|
Declaration.default = Declaration;
|
|
9910
9921
|
});
|
|
9911
9922
|
|
|
9912
|
-
// node_modules/
|
|
9923
|
+
// node_modules/postcss/lib/container.js
|
|
9913
9924
|
var require_container = __commonJS((exports, module) => {
|
|
9914
9925
|
var Comment = require_comment();
|
|
9915
9926
|
var Declaration = require_declaration();
|
|
@@ -10308,7 +10319,7 @@ var require_container = __commonJS((exports, module) => {
|
|
|
10308
10319
|
};
|
|
10309
10320
|
});
|
|
10310
10321
|
|
|
10311
|
-
// node_modules/
|
|
10322
|
+
// node_modules/postcss/lib/at-rule.js
|
|
10312
10323
|
var require_at_rule = __commonJS((exports, module) => {
|
|
10313
10324
|
var Container = require_container();
|
|
10314
10325
|
|
|
@@ -10333,7 +10344,7 @@ var require_at_rule = __commonJS((exports, module) => {
|
|
|
10333
10344
|
Container.registerAtRule(AtRule);
|
|
10334
10345
|
});
|
|
10335
10346
|
|
|
10336
|
-
// node_modules/
|
|
10347
|
+
// node_modules/postcss/lib/document.js
|
|
10337
10348
|
var require_document = __commonJS((exports, module) => {
|
|
10338
10349
|
var Container = require_container();
|
|
10339
10350
|
var LazyResult;
|
|
@@ -12218,7 +12229,7 @@ var require_source_map = __commonJS((exports) => {
|
|
|
12218
12229
|
exports.SourceNode = require_source_node().SourceNode;
|
|
12219
12230
|
});
|
|
12220
12231
|
|
|
12221
|
-
// node_modules/
|
|
12232
|
+
// node_modules/postcss/lib/previous-map.js
|
|
12222
12233
|
var require_previous_map = __commonJS((exports, module) => {
|
|
12223
12234
|
var { existsSync, readFileSync } = __require("fs");
|
|
12224
12235
|
var { dirname, join } = __require("path");
|
|
@@ -12340,7 +12351,7 @@ var require_previous_map = __commonJS((exports, module) => {
|
|
|
12340
12351
|
PreviousMap.default = PreviousMap;
|
|
12341
12352
|
});
|
|
12342
12353
|
|
|
12343
|
-
// node_modules/
|
|
12354
|
+
// node_modules/postcss/lib/input.js
|
|
12344
12355
|
var require_input = __commonJS((exports, module) => {
|
|
12345
12356
|
var { nanoid } = require_non_secure();
|
|
12346
12357
|
var { isAbsolute, resolve } = __require("path");
|
|
@@ -12349,9 +12360,23 @@ var require_input = __commonJS((exports, module) => {
|
|
|
12349
12360
|
var CssSyntaxError = require_css_syntax_error();
|
|
12350
12361
|
var PreviousMap = require_previous_map();
|
|
12351
12362
|
var terminalHighlight = require_terminal_highlight();
|
|
12352
|
-
var
|
|
12363
|
+
var lineToIndexCache = Symbol("lineToIndexCache");
|
|
12353
12364
|
var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
|
|
12354
12365
|
var pathAvailable = Boolean(resolve && isAbsolute);
|
|
12366
|
+
function getLineToIndex(input) {
|
|
12367
|
+
if (input[lineToIndexCache])
|
|
12368
|
+
return input[lineToIndexCache];
|
|
12369
|
+
let lines = input.css.split(`
|
|
12370
|
+
`);
|
|
12371
|
+
let lineToIndex = new Array(lines.length);
|
|
12372
|
+
let prevIndex = 0;
|
|
12373
|
+
for (let i = 0, l = lines.length;i < l; i++) {
|
|
12374
|
+
lineToIndex[i] = prevIndex;
|
|
12375
|
+
prevIndex += lines[i].length + 1;
|
|
12376
|
+
}
|
|
12377
|
+
input[lineToIndexCache] = lineToIndex;
|
|
12378
|
+
return lineToIndex;
|
|
12379
|
+
}
|
|
12355
12380
|
|
|
12356
12381
|
class Input {
|
|
12357
12382
|
get from() {
|
|
@@ -12394,30 +12419,37 @@ var require_input = __commonJS((exports, module) => {
|
|
|
12394
12419
|
this.map.file = this.from;
|
|
12395
12420
|
}
|
|
12396
12421
|
error(message, line, column, opts = {}) {
|
|
12397
|
-
let endColumn, endLine, result;
|
|
12422
|
+
let endColumn, endLine, endOffset, offset, result;
|
|
12398
12423
|
if (line && typeof line === "object") {
|
|
12399
12424
|
let start = line;
|
|
12400
12425
|
let end = column;
|
|
12401
12426
|
if (typeof start.offset === "number") {
|
|
12402
|
-
|
|
12427
|
+
offset = start.offset;
|
|
12428
|
+
let pos = this.fromOffset(offset);
|
|
12403
12429
|
line = pos.line;
|
|
12404
12430
|
column = pos.col;
|
|
12405
12431
|
} else {
|
|
12406
12432
|
line = start.line;
|
|
12407
12433
|
column = start.column;
|
|
12434
|
+
offset = this.fromLineAndColumn(line, column);
|
|
12408
12435
|
}
|
|
12409
12436
|
if (typeof end.offset === "number") {
|
|
12410
|
-
|
|
12437
|
+
endOffset = end.offset;
|
|
12438
|
+
let pos = this.fromOffset(endOffset);
|
|
12411
12439
|
endLine = pos.line;
|
|
12412
12440
|
endColumn = pos.col;
|
|
12413
12441
|
} else {
|
|
12414
12442
|
endLine = end.line;
|
|
12415
12443
|
endColumn = end.column;
|
|
12444
|
+
endOffset = this.fromLineAndColumn(end.line, end.column);
|
|
12416
12445
|
}
|
|
12417
12446
|
} else if (!column) {
|
|
12418
|
-
|
|
12447
|
+
offset = line;
|
|
12448
|
+
let pos = this.fromOffset(offset);
|
|
12419
12449
|
line = pos.line;
|
|
12420
12450
|
column = pos.col;
|
|
12451
|
+
} else {
|
|
12452
|
+
offset = this.fromLineAndColumn(line, column);
|
|
12421
12453
|
}
|
|
12422
12454
|
let origin = this.origin(line, column, endLine, endColumn);
|
|
12423
12455
|
if (origin) {
|
|
@@ -12425,7 +12457,7 @@ var require_input = __commonJS((exports, module) => {
|
|
|
12425
12457
|
} else {
|
|
12426
12458
|
result = new CssSyntaxError(message, endLine === undefined ? line : { column, line }, endLine === undefined ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin);
|
|
12427
12459
|
}
|
|
12428
|
-
result.input = { column, endColumn, endLine, line, source: this.css };
|
|
12460
|
+
result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css };
|
|
12429
12461
|
if (this.file) {
|
|
12430
12462
|
if (pathToFileURL) {
|
|
12431
12463
|
result.input.url = pathToFileURL(this.file).toString();
|
|
@@ -12434,22 +12466,14 @@ var require_input = __commonJS((exports, module) => {
|
|
|
12434
12466
|
}
|
|
12435
12467
|
return result;
|
|
12436
12468
|
}
|
|
12469
|
+
fromLineAndColumn(line, column) {
|
|
12470
|
+
let lineToIndex = getLineToIndex(this);
|
|
12471
|
+
let index = lineToIndex[line - 1];
|
|
12472
|
+
return index + column - 1;
|
|
12473
|
+
}
|
|
12437
12474
|
fromOffset(offset) {
|
|
12438
|
-
let
|
|
12439
|
-
|
|
12440
|
-
let lines = this.css.split(`
|
|
12441
|
-
`);
|
|
12442
|
-
lineToIndex = new Array(lines.length);
|
|
12443
|
-
let prevIndex = 0;
|
|
12444
|
-
for (let i = 0, l = lines.length;i < l; i++) {
|
|
12445
|
-
lineToIndex[i] = prevIndex;
|
|
12446
|
-
prevIndex += lines[i].length + 1;
|
|
12447
|
-
}
|
|
12448
|
-
this[fromOffsetCache] = lineToIndex;
|
|
12449
|
-
} else {
|
|
12450
|
-
lineToIndex = this[fromOffsetCache];
|
|
12451
|
-
}
|
|
12452
|
-
lastLine = lineToIndex[lineToIndex.length - 1];
|
|
12475
|
+
let lineToIndex = getLineToIndex(this);
|
|
12476
|
+
let lastLine = lineToIndex[lineToIndex.length - 1];
|
|
12453
12477
|
let min = 0;
|
|
12454
12478
|
if (offset >= lastLine) {
|
|
12455
12479
|
min = lineToIndex.length - 1;
|
|
@@ -12538,7 +12562,7 @@ var require_input = __commonJS((exports, module) => {
|
|
|
12538
12562
|
}
|
|
12539
12563
|
});
|
|
12540
12564
|
|
|
12541
|
-
// node_modules/
|
|
12565
|
+
// node_modules/postcss/lib/root.js
|
|
12542
12566
|
var require_root = __commonJS((exports, module) => {
|
|
12543
12567
|
var Container = require_container();
|
|
12544
12568
|
var LazyResult;
|
|
@@ -12591,7 +12615,7 @@ var require_root = __commonJS((exports, module) => {
|
|
|
12591
12615
|
Container.registerRoot(Root);
|
|
12592
12616
|
});
|
|
12593
12617
|
|
|
12594
|
-
// node_modules/
|
|
12618
|
+
// node_modules/postcss/lib/list.js
|
|
12595
12619
|
var require_list = __commonJS((exports, module) => {
|
|
12596
12620
|
var list = {
|
|
12597
12621
|
comma(string) {
|
|
@@ -12649,7 +12673,7 @@ var require_list = __commonJS((exports, module) => {
|
|
|
12649
12673
|
list.default = list;
|
|
12650
12674
|
});
|
|
12651
12675
|
|
|
12652
|
-
// node_modules/
|
|
12676
|
+
// node_modules/postcss/lib/rule.js
|
|
12653
12677
|
var require_rule = __commonJS((exports, module) => {
|
|
12654
12678
|
var Container = require_container();
|
|
12655
12679
|
var list = require_list();
|
|
@@ -12675,7 +12699,7 @@ var require_rule = __commonJS((exports, module) => {
|
|
|
12675
12699
|
Container.registerRule(Rule);
|
|
12676
12700
|
});
|
|
12677
12701
|
|
|
12678
|
-
// node_modules/
|
|
12702
|
+
// node_modules/postcss/lib/fromJSON.js
|
|
12679
12703
|
var require_fromJSON = __commonJS((exports, module) => {
|
|
12680
12704
|
var AtRule = require_at_rule();
|
|
12681
12705
|
var Comment = require_comment();
|
|
@@ -12729,7 +12753,7 @@ var require_fromJSON = __commonJS((exports, module) => {
|
|
|
12729
12753
|
fromJSON.default = fromJSON;
|
|
12730
12754
|
});
|
|
12731
12755
|
|
|
12732
|
-
// node_modules/
|
|
12756
|
+
// node_modules/postcss/lib/map-generator.js
|
|
12733
12757
|
var require_map_generator = __commonJS((exports, module) => {
|
|
12734
12758
|
var { dirname, relative, resolve, sep } = __require("path");
|
|
12735
12759
|
var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
|
|
@@ -13059,7 +13083,7 @@ var require_map_generator = __commonJS((exports, module) => {
|
|
|
13059
13083
|
module.exports = MapGenerator;
|
|
13060
13084
|
});
|
|
13061
13085
|
|
|
13062
|
-
// node_modules/
|
|
13086
|
+
// node_modules/postcss/lib/parser.js
|
|
13063
13087
|
var require_parser = __commonJS((exports, module) => {
|
|
13064
13088
|
var AtRule = require_at_rule();
|
|
13065
13089
|
var Comment = require_comment();
|
|
@@ -13580,7 +13604,7 @@ var require_parser = __commonJS((exports, module) => {
|
|
|
13580
13604
|
module.exports = Parser;
|
|
13581
13605
|
});
|
|
13582
13606
|
|
|
13583
|
-
// node_modules/
|
|
13607
|
+
// node_modules/postcss/lib/parse.js
|
|
13584
13608
|
var require_parse2 = __commonJS((exports, module) => {
|
|
13585
13609
|
var Container = require_container();
|
|
13586
13610
|
var Input = require_input();
|
|
@@ -13614,7 +13638,7 @@ You tried to parse Less with ` + "the standard CSS parser; " + "try again with t
|
|
|
13614
13638
|
Container.registerParse(parse2);
|
|
13615
13639
|
});
|
|
13616
13640
|
|
|
13617
|
-
// node_modules/
|
|
13641
|
+
// node_modules/postcss/lib/warning.js
|
|
13618
13642
|
var require_warning = __commonJS((exports, module) => {
|
|
13619
13643
|
class Warning {
|
|
13620
13644
|
constructor(text, opts = {}) {
|
|
@@ -13648,7 +13672,7 @@ var require_warning = __commonJS((exports, module) => {
|
|
|
13648
13672
|
Warning.default = Warning;
|
|
13649
13673
|
});
|
|
13650
13674
|
|
|
13651
|
-
// node_modules/
|
|
13675
|
+
// node_modules/postcss/lib/result.js
|
|
13652
13676
|
var require_result = __commonJS((exports, module) => {
|
|
13653
13677
|
var Warning = require_warning();
|
|
13654
13678
|
|
|
@@ -13661,7 +13685,7 @@ var require_result = __commonJS((exports, module) => {
|
|
|
13661
13685
|
this.messages = [];
|
|
13662
13686
|
this.root = root;
|
|
13663
13687
|
this.opts = opts;
|
|
13664
|
-
this.css =
|
|
13688
|
+
this.css = "";
|
|
13665
13689
|
this.map = undefined;
|
|
13666
13690
|
}
|
|
13667
13691
|
toString() {
|
|
@@ -13685,7 +13709,7 @@ var require_result = __commonJS((exports, module) => {
|
|
|
13685
13709
|
Result.default = Result;
|
|
13686
13710
|
});
|
|
13687
13711
|
|
|
13688
|
-
// node_modules/
|
|
13712
|
+
// node_modules/postcss/lib/warn-once.js
|
|
13689
13713
|
var require_warn_once = __commonJS((exports, module) => {
|
|
13690
13714
|
var printed = {};
|
|
13691
13715
|
module.exports = function warnOnce(message) {
|
|
@@ -13698,7 +13722,7 @@ var require_warn_once = __commonJS((exports, module) => {
|
|
|
13698
13722
|
};
|
|
13699
13723
|
});
|
|
13700
13724
|
|
|
13701
|
-
// node_modules/
|
|
13725
|
+
// node_modules/postcss/lib/lazy-result.js
|
|
13702
13726
|
var require_lazy_result = __commonJS((exports, module) => {
|
|
13703
13727
|
var Container = require_container();
|
|
13704
13728
|
var Document = require_document();
|
|
@@ -14176,7 +14200,7 @@ var require_lazy_result = __commonJS((exports, module) => {
|
|
|
14176
14200
|
Document.registerLazyResult(LazyResult);
|
|
14177
14201
|
});
|
|
14178
14202
|
|
|
14179
|
-
// node_modules/
|
|
14203
|
+
// node_modules/postcss/lib/no-work-result.js
|
|
14180
14204
|
var require_no_work_result = __commonJS((exports, module) => {
|
|
14181
14205
|
var MapGenerator = require_map_generator();
|
|
14182
14206
|
var parse2 = require_parse2();
|
|
@@ -14290,7 +14314,7 @@ var require_no_work_result = __commonJS((exports, module) => {
|
|
|
14290
14314
|
NoWorkResult.default = NoWorkResult;
|
|
14291
14315
|
});
|
|
14292
14316
|
|
|
14293
|
-
// node_modules/
|
|
14317
|
+
// node_modules/postcss/lib/processor.js
|
|
14294
14318
|
var require_processor = __commonJS((exports, module) => {
|
|
14295
14319
|
var Document = require_document();
|
|
14296
14320
|
var LazyResult = require_lazy_result();
|
|
@@ -14299,7 +14323,7 @@ var require_processor = __commonJS((exports, module) => {
|
|
|
14299
14323
|
|
|
14300
14324
|
class Processor {
|
|
14301
14325
|
constructor(plugins = []) {
|
|
14302
|
-
this.version = "8.5.
|
|
14326
|
+
this.version = "8.5.6";
|
|
14303
14327
|
this.plugins = this.normalize(plugins);
|
|
14304
14328
|
}
|
|
14305
14329
|
normalize(plugins) {
|
|
@@ -14344,7 +14368,7 @@ var require_processor = __commonJS((exports, module) => {
|
|
|
14344
14368
|
Document.registerProcessor(Processor);
|
|
14345
14369
|
});
|
|
14346
14370
|
|
|
14347
|
-
// node_modules/
|
|
14371
|
+
// node_modules/postcss/lib/postcss.js
|
|
14348
14372
|
var require_postcss = __commonJS((exports, module) => {
|
|
14349
14373
|
var AtRule = require_at_rule();
|
|
14350
14374
|
var Comment = require_comment();
|
|
@@ -14963,6 +14987,15 @@ and ensure you are accounting for this risk.
|
|
|
14963
14987
|
}, options2.parser);
|
|
14964
14988
|
parser.write(html);
|
|
14965
14989
|
parser.end();
|
|
14990
|
+
if (options2.disallowedTagsMode === "escape" || options2.disallowedTagsMode === "recursiveEscape") {
|
|
14991
|
+
const lastParsedIndex = parser.endIndex;
|
|
14992
|
+
if (lastParsedIndex != null && lastParsedIndex >= 0 && lastParsedIndex < html.length) {
|
|
14993
|
+
const unparsed = html.substring(lastParsedIndex);
|
|
14994
|
+
result += escapeHtml(unparsed);
|
|
14995
|
+
} else if ((lastParsedIndex == null || lastParsedIndex < 0) && html.length > 0 && result === "") {
|
|
14996
|
+
result = escapeHtml(html);
|
|
14997
|
+
}
|
|
14998
|
+
}
|
|
14966
14999
|
return result;
|
|
14967
15000
|
function initializeState() {
|
|
14968
15001
|
result = "";
|
|
@@ -29913,7 +29946,7 @@ ${e}</tr>
|
|
|
29913
29946
|
if (i === null)
|
|
29914
29947
|
return O(n);
|
|
29915
29948
|
e = i;
|
|
29916
|
-
let s = `<img src="${e}" alt="${n}"`;
|
|
29949
|
+
let s = `<img src="${e}" alt="${O(n)}"`;
|
|
29917
29950
|
return t && (s += ` title="${O(t)}"`), s += ">", s;
|
|
29918
29951
|
}
|
|
29919
29952
|
text(e) {
|
|
@@ -31385,9 +31418,8 @@ function generateBlogPostingSchema(options2) {
|
|
|
31385
31418
|
if (post.tags && post.tags.length > 0) {
|
|
31386
31419
|
blogPosting.articleSection = post.tags[0];
|
|
31387
31420
|
}
|
|
31388
|
-
if (post.
|
|
31389
|
-
|
|
31390
|
-
blogPosting.wordCount = wordCount;
|
|
31421
|
+
if (post.wordCount) {
|
|
31422
|
+
blogPosting.wordCount = post.wordCount;
|
|
31391
31423
|
}
|
|
31392
31424
|
blogPosting.inLanguage = site.rssLanguage || "en-US";
|
|
31393
31425
|
return blogPosting;
|
|
@@ -31746,11 +31778,6 @@ function getTotalPages(totalItems, pageSize) {
|
|
|
31746
31778
|
}
|
|
31747
31779
|
|
|
31748
31780
|
// src/generators/feeds.ts
|
|
31749
|
-
function extractFirstImageUrl2(html) {
|
|
31750
|
-
const imgRegex = /<img[^>]+src=["']([^"']+)["']/;
|
|
31751
|
-
const match = html.match(imgRegex);
|
|
31752
|
-
return match ? match[1] : null;
|
|
31753
|
-
}
|
|
31754
31781
|
function makeAbsoluteUrl(imageUrl, baseUrl) {
|
|
31755
31782
|
return imageUrl.startsWith("http") ? imageUrl : `${baseUrl}${imageUrl}`;
|
|
31756
31783
|
}
|
|
@@ -31765,8 +31792,7 @@ function generateRSSFeed(site, config) {
|
|
|
31765
31792
|
const rssItems = posts.map((post) => {
|
|
31766
31793
|
const postUrl = `${config.baseUrl}${post.url}`;
|
|
31767
31794
|
const pubDate = formatRSSDate(post.date);
|
|
31768
|
-
const
|
|
31769
|
-
const absoluteImageUrl = featuredImage ? makeAbsoluteUrl(featuredImage, config.baseUrl) : null;
|
|
31795
|
+
const absoluteImageUrl = post.image ? makeAbsoluteUrl(post.image, config.baseUrl) : null;
|
|
31770
31796
|
const author = config.authorEmail && config.authorName ? `${config.authorEmail} (${config.authorName})` : config.authorEmail || undefined;
|
|
31771
31797
|
return buildRSSItem({
|
|
31772
31798
|
title: post.title,
|
|
@@ -31930,18 +31956,10 @@ async function generatePostPages(site, config, outputDir) {
|
|
|
31930
31956
|
const batch = site.posts.slice(i, i + batchSize);
|
|
31931
31957
|
await Promise.all(batch.map(async (post) => {
|
|
31932
31958
|
const postPath = post.url.substring(1);
|
|
31933
|
-
const imageUrl = extractFirstImageUrl(post.html, config.baseUrl);
|
|
31934
|
-
const schemas = generatePostPageSchemas({
|
|
31935
|
-
post,
|
|
31936
|
-
site: config,
|
|
31937
|
-
imageUrl
|
|
31938
|
-
});
|
|
31939
|
-
const jsonLd = schemas.map((schema) => toScriptTag(schema)).join(`
|
|
31940
|
-
`);
|
|
31941
31959
|
const postHtml = import_nunjucks.default.render("post.njk", {
|
|
31942
31960
|
site: config,
|
|
31943
31961
|
post,
|
|
31944
|
-
jsonLd
|
|
31962
|
+
jsonLd: post.jsonLd || ""
|
|
31945
31963
|
});
|
|
31946
31964
|
await writeHtmlFile(outputDir, `${postPath}index.html`, postHtml);
|
|
31947
31965
|
}));
|
|
@@ -32398,6 +32416,16 @@ class SiteGenerator {
|
|
|
32398
32416
|
if (imageUrl) {
|
|
32399
32417
|
post.image = imageUrl;
|
|
32400
32418
|
}
|
|
32419
|
+
if (post.content) {
|
|
32420
|
+
post.wordCount = post.content.split(/\s+/).length;
|
|
32421
|
+
}
|
|
32422
|
+
const schemas = generatePostPageSchemas({
|
|
32423
|
+
post,
|
|
32424
|
+
site: this.options.config,
|
|
32425
|
+
imageUrl: post.image
|
|
32426
|
+
});
|
|
32427
|
+
post.jsonLd = schemas.map((schema) => toScriptTag(schema)).join(`
|
|
32428
|
+
`);
|
|
32401
32429
|
post.tags.forEach((tagName) => {
|
|
32402
32430
|
const tagSlug = import_slugify.default(tagName, { lower: true, strict: true });
|
|
32403
32431
|
post.tagSlugs[tagName] = tagSlug;
|
package/dist/types.d.ts
CHANGED
|
@@ -64,6 +64,10 @@ export interface Post {
|
|
|
64
64
|
business?: Business;
|
|
65
65
|
/** Optional image URL (first image from post content, used for thumbnails and social sharing) */
|
|
66
66
|
image?: string;
|
|
67
|
+
/** Word count calculated from content (used for reading time and schema.org) */
|
|
68
|
+
wordCount?: number;
|
|
69
|
+
/** Cached JSON-LD structured data (pre-generated during initialization) */
|
|
70
|
+
jsonLd?: string;
|
|
67
71
|
}
|
|
68
72
|
/**
|
|
69
73
|
* Configuration for CSS processing
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunki",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"description": "An opinionated static site generator built with Bun featuring PostCSS integration and modern web development workflows",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
"commander": "^14.0.3",
|
|
51
51
|
"gray-matter": "^4.0.3",
|
|
52
52
|
"highlight.js": "^11.11.1",
|
|
53
|
-
"marked": "
|
|
53
|
+
"marked": "17.0.3",
|
|
54
54
|
"marked-alert": "^2.1.2",
|
|
55
55
|
"marked-highlight": "^2.2.3",
|
|
56
56
|
"nunjucks": "^3.2.4",
|
|
57
57
|
"postcss": "^8.5.6",
|
|
58
58
|
"postcss-cli": "^11.0.1",
|
|
59
|
-
"sanitize-html": "2.17.
|
|
59
|
+
"sanitize-html": "2.17.1",
|
|
60
60
|
"slugify": "^1.6.6"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
],
|
|
87
87
|
"engines": {
|
|
88
88
|
"bun": ">=1.3.9",
|
|
89
|
-
"node": ">=
|
|
89
|
+
"node": ">=24.0.0"
|
|
90
90
|
},
|
|
91
91
|
"engineStrict": true,
|
|
92
92
|
"publishConfig": {
|