@podlite/publisher 0.0.19 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.podlite +6 -0
- package/esm/include-resolve-plugin.js +9 -7
- package/esm/include-resolve-plugin.js.map +1 -1
- package/esm/shared.d.ts +2 -1
- package/esm/shared.js +5 -68
- package/esm/shared.js.map +1 -1
- package/lib/include-resolve-plugin.js +9 -7
- package/lib/shared.d.ts +2 -1
- package/lib/shared.js +7 -69
- package/package.json +2 -2
package/CHANGELOG.podlite
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
=head1 Upcoming
|
|
4
4
|
|
|
5
|
+
=head1 0.0.20
|
|
6
|
+
|
|
7
|
+
=item extend Selector parsing: C<file:> scheme with suffix-match against C<publishRecord.file>, and pipe-separated block-name filters (e.g. C<file:terms.podlite | defn, para>). C<include-resolve-plugin> now inlines every matched block at the C<=include> location, not just the first
|
|
8
|
+
=item add glob support in C<file:> selectors: C<**> (any depth), C<*> (within segment), C<?> (single char). Enables patterns like C<=include file:00-DayByDay/**/term-*.podlite | defn> for full auto-aggregation across a directory tree
|
|
9
|
+
=item move C<parseSelector> and C<runSelector> implementation to C<@podlite/schema>. These names are still re-exported from this package, so downstream consumers that import them from C<@podlite/publisher> keep working without changes. The move breaks a circular-dependency risk for renderer-side packages that need selector mechanics (e.g. live-preview C<=include> resolution)
|
|
10
|
+
|
|
5
11
|
=head1 0.0.11
|
|
6
12
|
|
|
7
13
|
=item implement Selector for `doc:<NAME|ID>`
|
|
@@ -29,15 +29,17 @@ const plugin = () => {
|
|
|
29
29
|
const selector = getTextContentFromNode(content).trim();
|
|
30
30
|
console.warn(`[include] start resolve selector: ${selector}`);
|
|
31
31
|
if (selector) {
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
const result = runSelector(selector, recs);
|
|
33
|
+
const blocks = [];
|
|
34
|
+
for (const item of result) {
|
|
35
|
+
if (typeof item === 'object' && item !== null && !('file' in item)) {
|
|
36
|
+
blocks.push(item);
|
|
37
|
+
}
|
|
37
38
|
}
|
|
38
|
-
if (
|
|
39
|
-
|
|
39
|
+
if (blocks.length > 0) {
|
|
40
|
+
return { ...node, content: blocks };
|
|
40
41
|
}
|
|
42
|
+
console.warn(`[plugin: resolve ] selector ${selector} not found`);
|
|
41
43
|
}
|
|
42
44
|
return node;
|
|
43
45
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"include-resolve-plugin.js","sourceRoot":"","sources":["../src/include-resolve-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,sBAAsB,EAAa,aAAa,EAAW,MAAM,iBAAiB,CAAA;AACnH,OAAO,EAA4D,WAAW,EAAE,MAAM,GAAG,CAAA;AAEzF,MAAM,MAAM,GAAG,GAAqB,EAAE;IACpC,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,IAAqB,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG;YACZ,uDAAuD;YACvD,OAAO,EAAE,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;gBACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;gBACvD,OAAO,CAAC,IAAI,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAA;gBAC7D,IAAI,QAAQ,EAAE;oBACZ,0BAA0B;oBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;wBACnD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;wBAClC,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAA;qBAC/B;oBACD,IAAI,CAAC,KAAK,EAAE;wBACV,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,YAAY,CAAC,CAAA;qBAClE;iBACF;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,EAAE,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;gBACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;gBACvD,OAAO,CAAC,IAAI,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAA;gBAC7D,IAAI,QAAQ,EAAE;oBACZ,
|
|
1
|
+
{"version":3,"file":"include-resolve-plugin.js","sourceRoot":"","sources":["../src/include-resolve-plugin.ts"],"names":[],"mappings":"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"}
|
package/esm/shared.d.ts
CHANGED
|
@@ -34,4 +34,5 @@ export declare const addUrl: (items: publishRecord[]) => {
|
|
|
34
34
|
sequence?: number;
|
|
35
35
|
slug?: string;
|
|
36
36
|
}[];
|
|
37
|
-
export
|
|
37
|
+
export { runSelector, parseSelector } from '@podlite/schema';
|
|
38
|
+
export type { SelectorDoc, ParsedSelector } from '@podlite/schema';
|
package/esm/shared.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getFromTree,
|
|
1
|
+
import { getFromTree, makeAttrs, makeInterator, } from '@podlite/schema';
|
|
2
2
|
import { podlite as podlite_core } from 'podlite';
|
|
3
3
|
// now we add base60 letters
|
|
4
4
|
import translit from 'iso_9';
|
|
@@ -154,71 +154,8 @@ export const addUrl = (items) => {
|
|
|
154
154
|
return { ...item, shortUrl, publishUrl, sources };
|
|
155
155
|
});
|
|
156
156
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const anchorMatch = selector.match(docWithAnchorPattern);
|
|
162
|
-
if (anchorMatch) {
|
|
163
|
-
return {
|
|
164
|
-
scheme: anchorMatch[1],
|
|
165
|
-
document: anchorMatch[2],
|
|
166
|
-
anchor: anchorMatch[3],
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
const getDocIDs = (doc) => {
|
|
171
|
-
const ids = [];
|
|
172
|
-
// for (const item of [doc]) {
|
|
173
|
-
getFromTree(doc.node, 'NAME', 'TITLE').map(block => {
|
|
174
|
-
const conf = makeAttrs(block, {});
|
|
175
|
-
const title = getTextContentFromNode(block).trim();
|
|
176
|
-
if (conf.exists('id')) {
|
|
177
|
-
const id = conf.getFirstValue('id');
|
|
178
|
-
if (id) {
|
|
179
|
-
ids.push(id);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
ids.push(title);
|
|
183
|
-
});
|
|
184
|
-
return ids;
|
|
185
|
-
};
|
|
186
|
-
function getMapIDsBlocks(srcNode) {
|
|
187
|
-
const ids = [];
|
|
188
|
-
const idsMap = new Map();
|
|
189
|
-
const t = getFromTree(srcNode, { type: 'block' }).map(i => {
|
|
190
|
-
const id = getNodeId(i, {});
|
|
191
|
-
if (id) {
|
|
192
|
-
idsMap.set(id, i);
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
return idsMap;
|
|
196
|
-
}
|
|
197
|
-
export const runSelector = (selector, docs) => {
|
|
198
|
-
const paresedSelector = parseSelector(selector);
|
|
199
|
-
if (paresedSelector) {
|
|
200
|
-
const { scheme, document, anchor } = paresedSelector;
|
|
201
|
-
const filters = [];
|
|
202
|
-
if (scheme === 'doc') {
|
|
203
|
-
filters.push((doc) => {
|
|
204
|
-
return getDocIDs(doc).includes(document);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
// Return documents that successfully pass all the filters.
|
|
208
|
-
const subdocs = docs.filter(item => !filters.some(fn => !fn(item)));
|
|
209
|
-
if (anchor) {
|
|
210
|
-
const collected_blocks = [];
|
|
211
|
-
for (const d of subdocs) {
|
|
212
|
-
const idsMap = getMapIDsBlocks(d.node);
|
|
213
|
-
const block = idsMap.get(anchor);
|
|
214
|
-
if (block) {
|
|
215
|
-
collected_blocks.push(block);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return collected_blocks;
|
|
219
|
-
}
|
|
220
|
-
return subdocs.map(d => d.node);
|
|
221
|
-
}
|
|
222
|
-
return [];
|
|
223
|
-
};
|
|
157
|
+
// Selector mechanics live in @podlite/schema (pure AST queries, no I/O).
|
|
158
|
+
// Re-exported here for backward compatibility with downstream code that
|
|
159
|
+
// imports `runSelector` from the publisher barrel.
|
|
160
|
+
export { runSelector, parseSelector } from '@podlite/schema';
|
|
224
161
|
//# sourceMappingURL=shared.js.map
|
package/esm/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,15 +31,17 @@ const plugin = () => {
|
|
|
31
31
|
const selector = (0, schema_1.getTextContentFromNode)(content).trim();
|
|
32
32
|
console.warn(`[include] start resolve selector: ${selector}`);
|
|
33
33
|
if (selector) {
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
const result = (0, _1.runSelector)(selector, recs);
|
|
35
|
+
const blocks = [];
|
|
36
|
+
for (const item of result) {
|
|
37
|
+
if (typeof item === 'object' && item !== null && !('file' in item)) {
|
|
38
|
+
blocks.push(item);
|
|
39
|
+
}
|
|
39
40
|
}
|
|
40
|
-
if (
|
|
41
|
-
|
|
41
|
+
if (blocks.length > 0) {
|
|
42
|
+
return { ...node, content: blocks };
|
|
42
43
|
}
|
|
44
|
+
console.warn(`[plugin: resolve ] selector ${selector} not found`);
|
|
43
45
|
}
|
|
44
46
|
return node;
|
|
45
47
|
},
|
package/lib/shared.d.ts
CHANGED
|
@@ -34,4 +34,5 @@ export declare const addUrl: (items: publishRecord[]) => {
|
|
|
34
34
|
sequence?: number;
|
|
35
35
|
slug?: string;
|
|
36
36
|
}[];
|
|
37
|
-
export
|
|
37
|
+
export { runSelector, parseSelector } from '@podlite/schema';
|
|
38
|
+
export type { SelectorDoc, ParsedSelector } from '@podlite/schema';
|
package/lib/shared.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runSelector = exports.addUrl = exports.getAllArticles = exports.isExistsPubdate = exports.isExistsDocBlocks = exports.makeAstFromSrc = exports.defaultLangForFile = exports.getLangFromFilename = void 0;
|
|
6
|
+
exports.parseSelector = exports.runSelector = exports.addUrl = exports.getAllArticles = exports.isExistsPubdate = exports.isExistsDocBlocks = exports.makeAstFromSrc = exports.defaultLangForFile = exports.getLangFromFilename = void 0;
|
|
7
7
|
const schema_1 = require("@podlite/schema");
|
|
8
8
|
const podlite_1 = require("podlite");
|
|
9
9
|
// now we add base60 letters
|
|
@@ -166,72 +166,10 @@ const addUrl = (items) => {
|
|
|
166
166
|
});
|
|
167
167
|
};
|
|
168
168
|
exports.addUrl = addUrl;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
return {
|
|
176
|
-
scheme: anchorMatch[1],
|
|
177
|
-
document: anchorMatch[2],
|
|
178
|
-
anchor: anchorMatch[3],
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
const getDocIDs = (doc) => {
|
|
183
|
-
const ids = [];
|
|
184
|
-
// for (const item of [doc]) {
|
|
185
|
-
(0, schema_1.getFromTree)(doc.node, 'NAME', 'TITLE').map(block => {
|
|
186
|
-
const conf = (0, schema_1.makeAttrs)(block, {});
|
|
187
|
-
const title = (0, schema_1.getTextContentFromNode)(block).trim();
|
|
188
|
-
if (conf.exists('id')) {
|
|
189
|
-
const id = conf.getFirstValue('id');
|
|
190
|
-
if (id) {
|
|
191
|
-
ids.push(id);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
ids.push(title);
|
|
195
|
-
});
|
|
196
|
-
return ids;
|
|
197
|
-
};
|
|
198
|
-
function getMapIDsBlocks(srcNode) {
|
|
199
|
-
const ids = [];
|
|
200
|
-
const idsMap = new Map();
|
|
201
|
-
const t = (0, schema_1.getFromTree)(srcNode, { type: 'block' }).map(i => {
|
|
202
|
-
const id = (0, schema_1.getNodeId)(i, {});
|
|
203
|
-
if (id) {
|
|
204
|
-
idsMap.set(id, i);
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
return idsMap;
|
|
208
|
-
}
|
|
209
|
-
const runSelector = (selector, docs) => {
|
|
210
|
-
const paresedSelector = parseSelector(selector);
|
|
211
|
-
if (paresedSelector) {
|
|
212
|
-
const { scheme, document, anchor } = paresedSelector;
|
|
213
|
-
const filters = [];
|
|
214
|
-
if (scheme === 'doc') {
|
|
215
|
-
filters.push((doc) => {
|
|
216
|
-
return getDocIDs(doc).includes(document);
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
// Return documents that successfully pass all the filters.
|
|
220
|
-
const subdocs = docs.filter(item => !filters.some(fn => !fn(item)));
|
|
221
|
-
if (anchor) {
|
|
222
|
-
const collected_blocks = [];
|
|
223
|
-
for (const d of subdocs) {
|
|
224
|
-
const idsMap = getMapIDsBlocks(d.node);
|
|
225
|
-
const block = idsMap.get(anchor);
|
|
226
|
-
if (block) {
|
|
227
|
-
collected_blocks.push(block);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return collected_blocks;
|
|
231
|
-
}
|
|
232
|
-
return subdocs.map(d => d.node);
|
|
233
|
-
}
|
|
234
|
-
return [];
|
|
235
|
-
};
|
|
236
|
-
exports.runSelector = runSelector;
|
|
169
|
+
// Selector mechanics live in @podlite/schema (pure AST queries, no I/O).
|
|
170
|
+
// Re-exported here for backward compatibility with downstream code that
|
|
171
|
+
// imports `runSelector` from the publisher barrel.
|
|
172
|
+
var schema_2 = require("@podlite/schema");
|
|
173
|
+
Object.defineProperty(exports, "runSelector", { enumerable: true, get: function () { return schema_2.runSelector; } });
|
|
174
|
+
Object.defineProperty(exports, "parseSelector", { enumerable: true, get: function () { return schema_2.parseSelector; } });
|
|
237
175
|
//# sourceMappingURL=shared.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@podlite/publisher",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "Publishing toolkit for Podlite — transform documents to HTML, generate sites",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"homepage": "https://podlite.org",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"transform"
|
|
54
54
|
],
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@podlite/schema": "0.0.
|
|
56
|
+
"@podlite/schema": "0.0.40",
|
|
57
57
|
"crc-32": "^1.2.2",
|
|
58
58
|
"gray-matter": "^4.0.3",
|
|
59
59
|
"iso_9": "^1.0.4",
|