@podlite/publisher 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Upcoming
4
4
 
5
+ ## 0.0.5
6
+
7
+ - initial support for `=Include` blocks and Selectors (https://podlite.org/specification#Selectors)
8
+ - add support for embeded data using `=data` block
9
+ - refactor existed and added new plugins:
10
+ - docs-injector-plugin
11
+ - dump-pages-plugin
12
+ - include-resolve-plugin.spec
13
+ - prev-next-plugin
14
+
5
15
  ## 0.0.4
6
16
 
7
17
  - add template configuration attribute for site: `:templateFile<file path>`
@@ -0,0 +1,6 @@
1
+ import { PodliteWebPlugin, publishRecord } from '.';
2
+ interface docsInjectorPluginInitParams {
3
+ docs: publishRecord[];
4
+ }
5
+ declare const plugin: ({ docs }: docsInjectorPluginInitParams) => PodliteWebPlugin;
6
+ export default plugin;
@@ -0,0 +1,11 @@
1
+ const plugin = ({ docs = [] }) => {
2
+ const onExit = ctx => {
3
+ return { ...ctx };
4
+ };
5
+ const onProcess = (recs) => {
6
+ return [...recs, ...docs];
7
+ };
8
+ return [onProcess, onExit];
9
+ };
10
+ export default plugin;
11
+ //# sourceMappingURL=docs-injector-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-injector-plugin.js","sourceRoot":"","sources":["../src/docs-injector-plugin.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAgC,EAAoB,EAAE;IAC/E,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE;QACnB,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;IACnB,CAAC,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ interface dumpPagesPluginInitParams {
3
+ built_path: string;
4
+ }
5
+ declare const plugin: ({ built_path }: dumpPagesPluginInitParams) => PodliteWebPlugin;
6
+ export default plugin;
@@ -0,0 +1,21 @@
1
+ import { BUILT_PATH } from './constants';
2
+ import { streamWriteArray } from '.';
3
+ const plugin = ({ built_path = BUILT_PATH }) => {
4
+ let allRecords = [];
5
+ const outCtx = {};
6
+ const onExit = ctx => {
7
+ if (!ctx.testing) {
8
+ streamWriteArray(allRecords, `${built_path}/pages.json`)
9
+ .then(() => console.log('All pages written successfully'))
10
+ .catch(err => console.error('Error writing file:', err));
11
+ }
12
+ return { ...ctx, ...outCtx };
13
+ };
14
+ const onProcess = (recs) => {
15
+ allRecords.push(...recs);
16
+ return [...recs];
17
+ };
18
+ return [onProcess, onExit];
19
+ };
20
+ export default plugin;
21
+ //# sourceMappingURL=dump-pages-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump-pages-plugin.js","sourceRoot":"","sources":["../src/dump-pages-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAA4D,gBAAgB,EAAE,MAAM,GAAG,CAAA;AAK9F,MAAM,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU,EAA6B,EAAoB,EAAE;IAC1F,IAAI,UAAU,GAAoB,EAAE,CAAA;IAEpC,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YAChB,gBAAgB,CAAC,UAAU,EAAE,GAAG,UAAU,aAAa,CAAC;iBACrD,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;iBACzD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAA;SAC3D;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAC9B,CAAC,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ declare const plugin: () => PodliteWebPlugin;
3
+ export default plugin;
@@ -0,0 +1,41 @@
1
+ import { getTextContentFromNode, makeInterator } from '@podlite/schema';
2
+ import { runSelector } from '.';
3
+ const plugin = () => {
4
+ const outCtx = {};
5
+ const docsMap = new Map();
6
+ const onExit = ctx => ({ ...ctx, ...outCtx });
7
+ const processNode = (node, recs) => {
8
+ const rules = {
9
+ Include: node => {
10
+ const { content } = node;
11
+ const selector = getTextContentFromNode(content).trim();
12
+ console.warn(`[include] start resolve selector: ${selector}`);
13
+ if (selector) {
14
+ // try to resolve selector
15
+ const [block] = runSelector(selector, recs);
16
+ if (typeof block === 'object' && !('file' in block)) {
17
+ const updated = { content: block };
18
+ return { ...node, ...updated };
19
+ }
20
+ if (!block) {
21
+ console.warn(`[plugin: resolve ] selector ${selector} not found`);
22
+ }
23
+ }
24
+ return node;
25
+ },
26
+ };
27
+ return makeInterator(rules)(node, {});
28
+ };
29
+ const onProcess = (recs) => {
30
+ // convert all doc: links to file:: links
31
+ const docsWithIncludesResolves = recs.map(item => {
32
+ const node = processNode(item.node, recs);
33
+ // const node = item.node
34
+ return { ...item, node };
35
+ });
36
+ return docsWithIncludesResolves;
37
+ };
38
+ return [onProcess, onExit];
39
+ };
40
+ export default plugin;
41
+ //# sourceMappingURL=include-resolve-plugin.js.map
@@ -0,0 +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,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;SACF,CAAA;QACD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;QAC1C,yCAAyC;QACzC,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACzC,2BAA2B;YAC3B,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,OAAO,wBAAwB,CAAA;IACjC,CAAC,CAAA;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AACD,eAAe,MAAM,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ declare const plugin: () => PodliteWebPlugin;
3
+ export default plugin;
@@ -0,0 +1,30 @@
1
+ const plugin = () => {
2
+ const outCtx = {};
3
+ const onExit = ctx => ({ ...ctx, ...outCtx });
4
+ const onProcess = (recs) => {
5
+ const notPages = recs.filter(({ type = '' }) => type !== 'page');
6
+ recs.forEach(item => {
7
+ if (item.publishUrl) {
8
+ const allData = (item.type !== 'page' ? notPages : recs).filter(({ publishUrl }) => Boolean(publishUrl));
9
+ const articleIndex = allData.findIndex(({ publishUrl }) => publishUrl === item.publishUrl);
10
+ const prepareReference = (item) => {
11
+ if (item) {
12
+ const { pluginsData, node, ...rest } = item;
13
+ return rest;
14
+ }
15
+ return false;
16
+ };
17
+ const prev = prepareReference(allData[articleIndex - 1]);
18
+ const next = prepareReference(allData[articleIndex + 1]);
19
+ //
20
+ const navigate = { prev, next };
21
+ item.pluginsData = item.pluginsData || {};
22
+ item.pluginsData.navigate = navigate;
23
+ }
24
+ });
25
+ return recs;
26
+ };
27
+ return [onProcess, onExit];
28
+ };
29
+ export default plugin;
30
+ //# sourceMappingURL=prev-next-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prev-next-plugin.js","sourceRoot":"","sources":["../src/prev-next-plugin.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,GAAqB,EAAE;IACpC,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,EAAO,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;QACrE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;gBACxG,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC1F,MAAM,gBAAgB,GAAG,CAAC,IAAmB,EAAiB,EAAE;oBAC9D,IAAI,IAAI,EAAE;wBACR,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;wBAC3C,OAAO,IAAI,CAAA;qBACZ;oBACD,OAAO,KAAK,CAAA;gBACd,CAAC,CAAA;gBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAA;gBACxD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAA;gBACxD,EAAE;gBAEF,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;gBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;gBACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;aACrC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
package/esm/shared.d.ts CHANGED
@@ -34,3 +34,4 @@ export declare const addUrl: (items: publishRecord[]) => {
34
34
  sequence?: number;
35
35
  slug?: string;
36
36
  }[];
37
+ export declare const runSelector: (selector: string, docs: publishRecord[]) => publishRecord[] | PodNode[];
package/esm/shared.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getFromTree, makeAttrs, makeInterator } from '@podlite/schema';
1
+ import { getFromTree, getNodeId, getTextContentFromNode, 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,4 +154,74 @@ export const addUrl = (items) => {
154
154
  return { ...item, shortUrl, publishUrl, sources };
155
155
  });
156
156
  };
157
+ const parseSelector = (selector) => {
158
+ // doc:File1#data1
159
+ const docWithAnchorPattern = /^([^:]+):([^#]+)#(.+)$/;
160
+ // Try doc:name#anchor pattern first
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
+ // console.log(`[incliude] `)
205
+ return getDocIDs(doc).includes(document);
206
+ });
207
+ }
208
+ // Return documents that successfully pass all the filters.
209
+ const subdocs = docs.filter(item => !filters.some(fn => !fn(item)));
210
+ console.warn(`[include] fouond ${subdocs.length} docs for ${document}`);
211
+ if (anchor) {
212
+ const collected_blocks = [];
213
+ for (const d of subdocs) {
214
+ const idsMap = getMapIDsBlocks(d.node);
215
+ const block = idsMap.get(anchor);
216
+ if (block) {
217
+ collected_blocks.push(block);
218
+ }
219
+ }
220
+ console.warn(`[include] found ${collected_blocks.length} blocks for anchor: ${anchor}`);
221
+ return collected_blocks;
222
+ }
223
+ }
224
+ console.log(`[include] no any blocks found for ${selector}`);
225
+ return [];
226
+ };
157
227
  //# 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":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { getFromTree, getTextContentFromNode, makeAttrs, makeInterator } from '@podlite/schema';
2
2
  import { BUILT_PATH, INDEX_PATH, POSTS_PATH, PUBLIC_PATH } from './constants';
3
3
  import * as fs from 'fs';
4
- import { streamWriteArray } from '.';
4
+ import { processFile } from '.';
5
5
  import pathFs from 'path';
6
6
  const plugin = ({ public_path = PUBLIC_PATH, indexFilePath = `${POSTS_PATH}/${INDEX_PATH}`, built_path = BUILT_PATH, site_url, }) => {
7
7
  let indexPage;
@@ -71,25 +71,10 @@ const plugin = ({ public_path = PUBLIC_PATH, indexFilePath = `${POSTS_PATH}/${IN
71
71
  siteInfo: siteData,
72
72
  };
73
73
  if (!ctx.testing) {
74
- streamWriteArray(allRecords, `${built_path}/pages.json`)
75
- .then(() => console.log('All pages written successfully'))
76
- .catch(err => console.error('Error writing file:', err));
77
74
  fs.writeFileSync(`${built_path}/data.json`, JSON.stringify(dataJson));
78
75
  fs.writeFileSync(`${built_path}/siteInfo.json`, JSON.stringify(siteData, null, 2));
79
76
  fs.writeFileSync(`${built_path}/imagesMap.json`, JSON.stringify(imagesMap, null, 2));
80
77
  }
81
- // prepare data for LastArticles component
82
- if (!ctx.testing) {
83
- const source = () => allRecords.filter(i => i.publishUrl).filter(({ type = '' }) => type !== 'page');
84
- const articles = source().reverse().slice(0, 10);
85
- // if (!articles[articles.length - 1]) {
86
- // throw new Error('No articles found' + JSON.stringify({'articles.length - 1':articles.length - 1, articles, 'allRecords':allRecords.length}, null, 2))
87
- // }
88
- // const lastArticleUrl = articles[articles.length - 1].publishUrl
89
- // const articleIndex = source().findIndex(({ publishUrl }) => publishUrl === lastArticleUrl)
90
- // const prev = source()[articleIndex - 1]
91
- fs.writeFileSync(`${built_path}/lastArticles.json`, JSON.stringify({ articles, prev: {} }, null, 2));
92
- }
93
78
  // process GlobalStyles
94
79
  let stylesContent = '';
95
80
  if (siteData.globalStyles) {
@@ -127,8 +112,19 @@ const plugin = ({ public_path = PUBLIC_PATH, indexFilePath = `${POSTS_PATH}/${IN
127
112
  throw new Error('Index page not found. Used path: ' + indexFilePath);
128
113
  }
129
114
  indexPage.publishUrl = '/';
130
- allRecords.push(...recs);
131
- return recs;
115
+ const articlesJSON = JSON.stringify(recs.filter(i => i.publishUrl).filter(({ type = '' }) => type !== 'page'));
116
+ const storeFile = `
117
+ =begin pod
118
+ =for NAME :id<PLUGIN_DATA>
119
+ SITE DATA
120
+ =begin data :id<articles>
121
+ ${articlesJSON}
122
+ =end data
123
+ =end pod
124
+ `;
125
+ const storeDoc = processFile('virtual/site-data-plugin.podlite', storeFile);
126
+ allRecords.push(...recs, storeDoc);
127
+ return [...recs, storeDoc];
132
128
  };
133
129
  return [onProcess, onExit];
134
130
  };
@@ -1 +1 @@
1
- {"version":3,"file":"site-data-plugin.js","sourceRoot":"","sources":["../src/site-data-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site-data-plugin.js","sourceRoot":"","sources":["../src/site-data-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PodliteWebPlugin, publishRecord } from '.';
2
+ interface docsInjectorPluginInitParams {
3
+ docs: publishRecord[];
4
+ }
5
+ declare const plugin: ({ docs }: docsInjectorPluginInitParams) => PodliteWebPlugin;
6
+ export default plugin;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const plugin = ({ docs = [] }) => {
4
+ const onExit = ctx => {
5
+ return { ...ctx };
6
+ };
7
+ const onProcess = (recs) => {
8
+ return [...recs, ...docs];
9
+ };
10
+ return [onProcess, onExit];
11
+ };
12
+ exports.default = plugin;
13
+ //# sourceMappingURL=docs-injector-plugin.js.map
@@ -0,0 +1,6 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ interface dumpPagesPluginInitParams {
3
+ built_path: string;
4
+ }
5
+ declare const plugin: ({ built_path }: dumpPagesPluginInitParams) => PodliteWebPlugin;
6
+ export default plugin;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("./constants");
4
+ const _1 = require(".");
5
+ const plugin = ({ built_path = constants_1.BUILT_PATH }) => {
6
+ let allRecords = [];
7
+ const outCtx = {};
8
+ const onExit = ctx => {
9
+ if (!ctx.testing) {
10
+ (0, _1.streamWriteArray)(allRecords, `${built_path}/pages.json`)
11
+ .then(() => console.log('All pages written successfully'))
12
+ .catch(err => console.error('Error writing file:', err));
13
+ }
14
+ return { ...ctx, ...outCtx };
15
+ };
16
+ const onProcess = (recs) => {
17
+ allRecords.push(...recs);
18
+ return [...recs];
19
+ };
20
+ return [onProcess, onExit];
21
+ };
22
+ exports.default = plugin;
23
+ //# sourceMappingURL=dump-pages-plugin.js.map
@@ -0,0 +1,3 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ declare const plugin: () => PodliteWebPlugin;
3
+ export default plugin;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require("@podlite/schema");
4
+ const _1 = require(".");
5
+ const plugin = () => {
6
+ const outCtx = {};
7
+ const docsMap = new Map();
8
+ const onExit = ctx => ({ ...ctx, ...outCtx });
9
+ const processNode = (node, recs) => {
10
+ const rules = {
11
+ Include: node => {
12
+ const { content } = node;
13
+ const selector = (0, schema_1.getTextContentFromNode)(content).trim();
14
+ console.warn(`[include] start resolve selector: ${selector}`);
15
+ if (selector) {
16
+ // try to resolve selector
17
+ const [block] = (0, _1.runSelector)(selector, recs);
18
+ if (typeof block === 'object' && !('file' in block)) {
19
+ const updated = { content: block };
20
+ return { ...node, ...updated };
21
+ }
22
+ if (!block) {
23
+ console.warn(`[plugin: resolve ] selector ${selector} not found`);
24
+ }
25
+ }
26
+ return node;
27
+ },
28
+ };
29
+ return (0, schema_1.makeInterator)(rules)(node, {});
30
+ };
31
+ const onProcess = (recs) => {
32
+ // convert all doc: links to file:: links
33
+ const docsWithIncludesResolves = recs.map(item => {
34
+ const node = processNode(item.node, recs);
35
+ // const node = item.node
36
+ return { ...item, node };
37
+ });
38
+ return docsWithIncludesResolves;
39
+ };
40
+ return [onProcess, onExit];
41
+ };
42
+ exports.default = plugin;
43
+ //# sourceMappingURL=include-resolve-plugin.js.map
@@ -0,0 +1,3 @@
1
+ import { PodliteWebPlugin } from '.';
2
+ declare const plugin: () => PodliteWebPlugin;
3
+ export default plugin;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const plugin = () => {
4
+ const outCtx = {};
5
+ const onExit = ctx => ({ ...ctx, ...outCtx });
6
+ const onProcess = (recs) => {
7
+ const notPages = recs.filter(({ type = '' }) => type !== 'page');
8
+ recs.forEach(item => {
9
+ if (item.publishUrl) {
10
+ const allData = (item.type !== 'page' ? notPages : recs).filter(({ publishUrl }) => Boolean(publishUrl));
11
+ const articleIndex = allData.findIndex(({ publishUrl }) => publishUrl === item.publishUrl);
12
+ const prepareReference = (item) => {
13
+ if (item) {
14
+ const { pluginsData, node, ...rest } = item;
15
+ return rest;
16
+ }
17
+ return false;
18
+ };
19
+ const prev = prepareReference(allData[articleIndex - 1]);
20
+ const next = prepareReference(allData[articleIndex + 1]);
21
+ //
22
+ const navigate = { prev, next };
23
+ item.pluginsData = item.pluginsData || {};
24
+ item.pluginsData.navigate = navigate;
25
+ }
26
+ });
27
+ return recs;
28
+ };
29
+ return [onProcess, onExit];
30
+ };
31
+ exports.default = plugin;
32
+ //# sourceMappingURL=prev-next-plugin.js.map
package/lib/shared.d.ts CHANGED
@@ -34,3 +34,4 @@ export declare const addUrl: (items: publishRecord[]) => {
34
34
  sequence?: number;
35
35
  slug?: string;
36
36
  }[];
37
+ export declare const runSelector: (selector: string, docs: publishRecord[]) => publishRecord[] | PodNode[];
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.addUrl = exports.getAllArticles = exports.isExistsPubdate = exports.isExistsDocBlocks = exports.makeAstFromSrc = exports.defaultLangForFile = exports.getLangFromFilename = void 0;
6
+ 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,4 +166,75 @@ const addUrl = (items) => {
166
166
  });
167
167
  };
168
168
  exports.addUrl = addUrl;
169
+ const parseSelector = (selector) => {
170
+ // doc:File1#data1
171
+ const docWithAnchorPattern = /^([^:]+):([^#]+)#(.+)$/;
172
+ // Try doc:name#anchor pattern first
173
+ const anchorMatch = selector.match(docWithAnchorPattern);
174
+ if (anchorMatch) {
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
+ // console.log(`[incliude] `)
217
+ return getDocIDs(doc).includes(document);
218
+ });
219
+ }
220
+ // Return documents that successfully pass all the filters.
221
+ const subdocs = docs.filter(item => !filters.some(fn => !fn(item)));
222
+ console.warn(`[include] fouond ${subdocs.length} docs for ${document}`);
223
+ if (anchor) {
224
+ const collected_blocks = [];
225
+ for (const d of subdocs) {
226
+ const idsMap = getMapIDsBlocks(d.node);
227
+ const block = idsMap.get(anchor);
228
+ if (block) {
229
+ collected_blocks.push(block);
230
+ }
231
+ }
232
+ console.warn(`[include] found ${collected_blocks.length} blocks for anchor: ${anchor}`);
233
+ return collected_blocks;
234
+ }
235
+ }
236
+ console.log(`[include] no any blocks found for ${selector}`);
237
+ return [];
238
+ };
239
+ exports.runSelector = runSelector;
169
240
  //# sourceMappingURL=shared.js.map
@@ -95,25 +95,10 @@ const plugin = ({ public_path = constants_1.PUBLIC_PATH, indexFilePath = `${cons
95
95
  siteInfo: siteData,
96
96
  };
97
97
  if (!ctx.testing) {
98
- (0, _1.streamWriteArray)(allRecords, `${built_path}/pages.json`)
99
- .then(() => console.log('All pages written successfully'))
100
- .catch(err => console.error('Error writing file:', err));
101
98
  fs.writeFileSync(`${built_path}/data.json`, JSON.stringify(dataJson));
102
99
  fs.writeFileSync(`${built_path}/siteInfo.json`, JSON.stringify(siteData, null, 2));
103
100
  fs.writeFileSync(`${built_path}/imagesMap.json`, JSON.stringify(imagesMap, null, 2));
104
101
  }
105
- // prepare data for LastArticles component
106
- if (!ctx.testing) {
107
- const source = () => allRecords.filter(i => i.publishUrl).filter(({ type = '' }) => type !== 'page');
108
- const articles = source().reverse().slice(0, 10);
109
- // if (!articles[articles.length - 1]) {
110
- // throw new Error('No articles found' + JSON.stringify({'articles.length - 1':articles.length - 1, articles, 'allRecords':allRecords.length}, null, 2))
111
- // }
112
- // const lastArticleUrl = articles[articles.length - 1].publishUrl
113
- // const articleIndex = source().findIndex(({ publishUrl }) => publishUrl === lastArticleUrl)
114
- // const prev = source()[articleIndex - 1]
115
- fs.writeFileSync(`${built_path}/lastArticles.json`, JSON.stringify({ articles, prev: {} }, null, 2));
116
- }
117
102
  // process GlobalStyles
118
103
  let stylesContent = '';
119
104
  if (siteData.globalStyles) {
@@ -151,8 +136,19 @@ const plugin = ({ public_path = constants_1.PUBLIC_PATH, indexFilePath = `${cons
151
136
  throw new Error('Index page not found. Used path: ' + indexFilePath);
152
137
  }
153
138
  indexPage.publishUrl = '/';
154
- allRecords.push(...recs);
155
- return recs;
139
+ const articlesJSON = JSON.stringify(recs.filter(i => i.publishUrl).filter(({ type = '' }) => type !== 'page'));
140
+ const storeFile = `
141
+ =begin pod
142
+ =for NAME :id<PLUGIN_DATA>
143
+ SITE DATA
144
+ =begin data :id<articles>
145
+ ${articlesJSON}
146
+ =end data
147
+ =end pod
148
+ `;
149
+ const storeDoc = (0, _1.processFile)('virtual/site-data-plugin.podlite', storeFile);
150
+ allRecords.push(...recs, storeDoc);
151
+ return [...recs, storeDoc];
156
152
  };
157
153
  return [onProcess, onExit];
158
154
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@podlite/publisher",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Library that powers publishing and CLI tools for the Podlite markup language",
5
5
  "main": "lib/index.js",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  "markup-language"
34
34
  ],
35
35
  "dependencies": {
36
- "@podlite/schema": "0.0.23",
36
+ "@podlite/schema": "0.0.24",
37
37
  "crc-32": "^1.2.2",
38
38
  "gray-matter": "^4.0.3",
39
39
  "iso_9": "^1.0.4",