soliddgen 0.6.0-beta.36
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/common/helpers.d.ts +9 -0
- package/dist/common/helpers.d.ts.map +1 -0
- package/dist/common/helpers.js +25 -0
- package/dist/common/helpers.js.map +1 -0
- package/dist/common/properties.d.ts +25 -0
- package/dist/common/properties.d.ts.map +1 -0
- package/dist/common/properties.js +129 -0
- package/dist/common/properties.js.map +1 -0
- package/dist/config.d.ts +59 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +14 -0
- package/dist/config.js.map +1 -0
- package/dist/doc-item.d.ts +6 -0
- package/dist/doc-item.d.ts.map +1 -0
- package/dist/doc-item.js +21 -0
- package/dist/doc-item.js.map +1 -0
- package/dist/hardhat/index.d.ts +2 -0
- package/dist/hardhat/index.d.ts.map +1 -0
- package/dist/hardhat/index.js +50 -0
- package/dist/hardhat/index.js.map +1 -0
- package/dist/hardhat/type-extensions.d.ts +12 -0
- package/dist/hardhat/type-extensions.d.ts.map +1 -0
- package/dist/hardhat/type-extensions.js +5 -0
- package/dist/hardhat/type-extensions.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +9 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +30 -0
- package/dist/main.js.map +1 -0
- package/dist/render.d.ts +9 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +66 -0
- package/dist/render.js.map +1 -0
- package/dist/render.test.d.ts +2 -0
- package/dist/render.test.d.ts.map +1 -0
- package/dist/render.test.js +42 -0
- package/dist/render.test.js.map +1 -0
- package/dist/site.d.ts +42 -0
- package/dist/site.d.ts.map +1 -0
- package/dist/site.js +86 -0
- package/dist/site.js.map +1 -0
- package/dist/site.test.d.ts +2 -0
- package/dist/site.test.d.ts.map +1 -0
- package/dist/site.test.js +52 -0
- package/dist/site.test.js.map +1 -0
- package/dist/templates.d.ts +23 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +124 -0
- package/dist/templates.js.map +1 -0
- package/dist/themes/markdown/helpers.d.ts +21 -0
- package/dist/themes/markdown/helpers.d.ts.map +1 -0
- package/dist/themes/markdown/helpers.js +49 -0
- package/dist/themes/markdown/helpers.js.map +1 -0
- package/dist/utils/ItemError.d.ts +5 -0
- package/dist/utils/ItemError.d.ts.map +1 -0
- package/dist/utils/ItemError.js +18 -0
- package/dist/utils/ItemError.js.map +1 -0
- package/dist/utils/arrays-equal.d.ts +3 -0
- package/dist/utils/arrays-equal.d.ts.map +1 -0
- package/dist/utils/arrays-equal.js +8 -0
- package/dist/utils/arrays-equal.js.map +1 -0
- package/dist/utils/assert-equal-types.d.ts +2 -0
- package/dist/utils/assert-equal-types.d.ts.map +1 -0
- package/dist/utils/assert-equal-types.js +3 -0
- package/dist/utils/assert-equal-types.js.map +1 -0
- package/dist/utils/clone.d.ts +7 -0
- package/dist/utils/clone.d.ts.map +1 -0
- package/dist/utils/clone.js +11 -0
- package/dist/utils/clone.js.map +1 -0
- package/dist/utils/ensure-array.d.ts +4 -0
- package/dist/utils/ensure-array.d.ts.map +1 -0
- package/dist/utils/ensure-array.js +13 -0
- package/dist/utils/ensure-array.js.map +1 -0
- package/dist/utils/execall.d.ts +7 -0
- package/dist/utils/execall.d.ts.map +1 -0
- package/dist/utils/execall.js +21 -0
- package/dist/utils/execall.js.map +1 -0
- package/dist/utils/fs-exists.d.ts +4 -0
- package/dist/utils/fs-exists.d.ts.map +1 -0
- package/dist/utils/fs-exists.js +31 -0
- package/dist/utils/fs-exists.js.map +1 -0
- package/dist/utils/is-child.d.ts +2 -0
- package/dist/utils/is-child.d.ts.map +1 -0
- package/dist/utils/is-child.js +12 -0
- package/dist/utils/is-child.js.map +1 -0
- package/dist/utils/item-type.d.ts +3 -0
- package/dist/utils/item-type.d.ts.map +1 -0
- package/dist/utils/item-type.js +10 -0
- package/dist/utils/item-type.js.map +1 -0
- package/dist/utils/map-keys.d.ts +2 -0
- package/dist/utils/map-keys.d.ts.map +1 -0
- package/dist/utils/map-keys.js +8 -0
- package/dist/utils/map-keys.js.map +1 -0
- package/dist/utils/map-values.d.ts +4 -0
- package/dist/utils/map-values.d.ts.map +1 -0
- package/dist/utils/map-values.js +22 -0
- package/dist/utils/map-values.js.map +1 -0
- package/dist/utils/memoized-getter.d.ts +4 -0
- package/dist/utils/memoized-getter.d.ts.map +1 -0
- package/dist/utils/memoized-getter.js +25 -0
- package/dist/utils/memoized-getter.js.map +1 -0
- package/dist/utils/natspec.d.ts +19 -0
- package/dist/utils/natspec.d.ts.map +1 -0
- package/dist/utils/natspec.js +117 -0
- package/dist/utils/natspec.js.map +1 -0
- package/dist/utils/read-item-docs.d.ts +3 -0
- package/dist/utils/read-item-docs.d.ts.map +1 -0
- package/dist/utils/read-item-docs.js +29 -0
- package/dist/utils/read-item-docs.js.map +1 -0
- package/dist/utils/scope.d.ts +6 -0
- package/dist/utils/scope.d.ts.map +1 -0
- package/dist/utils/scope.js +53 -0
- package/dist/utils/scope.js.map +1 -0
- package/dist/utils/test.d.ts +8 -0
- package/dist/utils/test.d.ts.map +1 -0
- package/dist/utils/test.js +14 -0
- package/dist/utils/test.js.map +1 -0
- package/lc3cxy2s.cjs +1 -0
- package/package.json +41 -0
- package/src/common/helpers.ts +22 -0
- package/src/common/properties.ts +138 -0
- package/src/config.ts +84 -0
- package/src/doc-item.ts +27 -0
- package/src/hardhat/index.ts +35 -0
- package/src/hardhat/type-extensions.ts +14 -0
- package/src/index.ts +13 -0
- package/src/main.ts +26 -0
- package/src/render.test.ts +64 -0
- package/src/render.ts +87 -0
- package/src/site.test.ts +68 -0
- package/src/site.ts +144 -0
- package/src/templates.ts +116 -0
- package/src/themes/markdown/common.hbs +34 -0
- package/src/themes/markdown/contract.hbs +8 -0
- package/src/themes/markdown/enum.hbs +9 -0
- package/src/themes/markdown/error.hbs +1 -0
- package/src/themes/markdown/event.hbs +1 -0
- package/src/themes/markdown/function.hbs +1 -0
- package/src/themes/markdown/helpers.ts +49 -0
- package/src/themes/markdown/modifier.hbs +1 -0
- package/src/themes/markdown/page.hbs +8 -0
- package/src/themes/markdown/struct.hbs +9 -0
- package/src/themes/markdown/user-defined-value-type.hbs +1 -0
- package/src/themes/markdown/variable.hbs +1 -0
- package/src/utils/ItemError.ts +13 -0
- package/src/utils/arrays-equal.ts +5 -0
- package/src/utils/assert-equal-types.ts +1 -0
- package/src/utils/clone.ts +6 -0
- package/src/utils/ensure-array.ts +12 -0
- package/src/utils/execall.ts +18 -0
- package/src/utils/fs-exists.ts +23 -0
- package/src/utils/is-child.ts +5 -0
- package/src/utils/item-type.ts +7 -0
- package/src/utils/map-keys.ts +4 -0
- package/src/utils/map-values.ts +19 -0
- package/src/utils/memoized-getter.ts +23 -0
- package/src/utils/natspec.ts +145 -0
- package/src/utils/read-item-docs.ts +26 -0
- package/src/utils/scope.ts +63 -0
- package/src/utils/test.ts +18 -0
package/dist/render.js
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.itemPartialName = exports.render = void 0;
|
7
|
+
const handlebars_1 = __importDefault(require("handlebars"));
|
8
|
+
const item_type_1 = require("./utils/item-type");
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
10
|
+
function render(site, templates, collapseNewlines) {
|
11
|
+
const renderPage = buildRenderer(templates);
|
12
|
+
const renderedPages = [];
|
13
|
+
for (const page of site.pages) {
|
14
|
+
let contents = renderPage(page, { data: { site } });
|
15
|
+
if (collapseNewlines) {
|
16
|
+
contents = contents.replace(/\n{3,}/g, '\n\n');
|
17
|
+
}
|
18
|
+
renderedPages.push({
|
19
|
+
id: page.id,
|
20
|
+
contents,
|
21
|
+
});
|
22
|
+
}
|
23
|
+
return renderedPages;
|
24
|
+
}
|
25
|
+
exports.render = render;
|
26
|
+
const itemPartialName = (item) => (0, item_type_1.itemType)(item).replace(/ /g, '-').toLowerCase();
|
27
|
+
exports.itemPartialName = itemPartialName;
|
28
|
+
function itemPartial(item, options) {
|
29
|
+
if (!item.__item_context) {
|
30
|
+
throw new Error(`Partial 'item' used in unsupported context (not a doc item)`);
|
31
|
+
}
|
32
|
+
const partial = options?.partials?.[(0, exports.itemPartialName)(item)];
|
33
|
+
if (!partial) {
|
34
|
+
throw new Error(`Missing partial '${(0, exports.itemPartialName)(item)}'`);
|
35
|
+
}
|
36
|
+
return partial(item, options);
|
37
|
+
}
|
38
|
+
function readmeHelper(H, path, opts) {
|
39
|
+
const items = opts.data.root.items;
|
40
|
+
const renderedItems = Object.fromEntries(items.map(item => [
|
41
|
+
item.name,
|
42
|
+
new H.SafeString(H.compile('{{>item}}')(item, opts)),
|
43
|
+
]));
|
44
|
+
return new H.SafeString(H.compile(fs_1.default.readFileSync(path, 'utf8'))(renderedItems, opts));
|
45
|
+
}
|
46
|
+
function buildRenderer(templates) {
|
47
|
+
const pageTemplate = templates.partials?.page;
|
48
|
+
if (pageTemplate === undefined) {
|
49
|
+
throw new Error(`Missing 'page' template`);
|
50
|
+
}
|
51
|
+
const H = handlebars_1.default.create();
|
52
|
+
for (const [name, getBody] of Object.entries(templates.partials ?? {})) {
|
53
|
+
let partial;
|
54
|
+
H.registerPartial(name, (...args) => {
|
55
|
+
partial ?? (partial = H.compile(getBody()));
|
56
|
+
return partial(...args);
|
57
|
+
});
|
58
|
+
}
|
59
|
+
H.registerHelper('readme', (path, opts) => readmeHelper(H, path, opts));
|
60
|
+
for (const [name, fn] of Object.entries(templates.helpers ?? {})) {
|
61
|
+
H.registerHelper(name, fn);
|
62
|
+
}
|
63
|
+
H.registerPartial('item', itemPartial);
|
64
|
+
return H.compile('{{>page}}');
|
65
|
+
}
|
66
|
+
//# sourceMappingURL=render.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"render.test.d.ts","sourceRoot":"","sources":["../src/render.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const test_1 = __importDefault(require("./utils/test"));
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const site_1 = require("./site");
|
9
|
+
const render_1 = require("./render");
|
10
|
+
/**
|
11
|
+
* @param contracts The name of the Solidity file whose contents should be considered.
|
12
|
+
*/
|
13
|
+
function testRender(title, file, spec, expected) {
|
14
|
+
const id = 'index.md';
|
15
|
+
const cfg = {
|
16
|
+
sourcesDir: 'test-contracts',
|
17
|
+
exclude: [],
|
18
|
+
pageExtension: '.md',
|
19
|
+
pages: (_, f) => path_1.default.parse(f.absolutePath).name === file ? id : undefined,
|
20
|
+
};
|
21
|
+
(0, test_1.default)(title, t => {
|
22
|
+
const site = (0, site_1.buildSite)(t.context.build, cfg);
|
23
|
+
const rendered = (0, render_1.render)(site, spec, spec.collapseNewlines);
|
24
|
+
t.is(rendered.length, 1);
|
25
|
+
t.is(rendered[0].contents, expected);
|
26
|
+
});
|
27
|
+
}
|
28
|
+
testRender('static page', 'S08_AB', { partials: { page: () => 'a page' } }, 'a page');
|
29
|
+
testRender('items', 'S08_AB', { partials: { page: () => '{{#each items}}{{name}}, {{/each}}' } }, 'A, B, ');
|
30
|
+
testRender('partials', 'S08_AB', {
|
31
|
+
partials: {
|
32
|
+
page: () => '{{#each items}}{{>part}}, {{/each}}',
|
33
|
+
part: () => '{{name}}',
|
34
|
+
},
|
35
|
+
}, 'A, B, ');
|
36
|
+
testRender('item partial', 'S08_AB', {
|
37
|
+
partials: {
|
38
|
+
page: () => '{{#each items}}{{>item}}, {{/each}}',
|
39
|
+
contract: () => '{{name}}',
|
40
|
+
},
|
41
|
+
}, 'A, B, ');
|
42
|
+
//# sourceMappingURL=render.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"render.test.js","sourceRoot":"","sources":["../src/render.test.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,gDAAwB;AACxB,iCAA8D;AAC9D,qCAAmD;AAQnD;;GAEG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,IAAY,EAAE,IAAc,EAAE,QAAgB;IAC/E,MAAM,EAAE,GAAG,UAAU,CAAC;IACtB,MAAM,GAAG,GAAe;QACtB,UAAU,EAAE,gBAAgB;QAC5B,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KAC3E,CAAC;IAEF,IAAA,cAAI,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE;QACd,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,UAAU,CAAC,aAAa,EACtB,QAAQ,EACR,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EACtC,QAAQ,CACT,CAAC;AAEF,UAAU,CAAC,OAAO,EAChB,QAAQ,EACR,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,oCAAoC,EAAE,EAAE,EAClE,QAAQ,CACT,CAAC;AAEF,UAAU,CAAC,UAAU,EACnB,QAAQ,EACR;IACE,QAAQ,EAAE;QACR,IAAI,EAAE,GAAG,EAAE,CAAC,qCAAqC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU;KACvB;CACF,EACD,QAAQ,CACT,CAAC;AAEF,UAAU,CAAC,cAAc,EACvB,QAAQ,EACR;IACE,QAAQ,EAAE;QACR,IAAI,EAAE,GAAG,EAAE,CAAC,qCAAqC;QACjD,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;KAC3B;CACF,EACD,QAAQ,CACT,CAAC"}
|
package/dist/site.d.ts
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
import { ContractDefinition, SourceUnit } from 'solidity-ast';
|
2
|
+
import { SolcOutput, SolcInput } from 'solidity-ast/solc';
|
3
|
+
import { ASTDereferencer, SrcDecoder } from 'solidity-ast/utils';
|
4
|
+
import { FullConfig } from './config';
|
5
|
+
import { DocItem } from './doc-item';
|
6
|
+
import { Properties } from './templates';
|
7
|
+
export interface Build {
|
8
|
+
input: SolcInput;
|
9
|
+
output: SolcOutput;
|
10
|
+
}
|
11
|
+
export interface BuildContext extends Build {
|
12
|
+
deref: ASTDereferencer;
|
13
|
+
decodeSrc: SrcDecoder;
|
14
|
+
}
|
15
|
+
export type SiteConfig = Pick<FullConfig, 'pages' | 'exclude' | 'sourcesDir' | 'pageExtension'>;
|
16
|
+
export type PageStructure = SiteConfig['pages'];
|
17
|
+
export type PageAssigner = ((item: DocItem, file: SourceUnit, config: SiteConfig) => string | undefined);
|
18
|
+
export declare const pageAssigner: Record<PageStructure & string, PageAssigner>;
|
19
|
+
export interface Site {
|
20
|
+
items: DocItemWithContext[];
|
21
|
+
pages: Page[];
|
22
|
+
}
|
23
|
+
export interface Page {
|
24
|
+
id: string;
|
25
|
+
items: DocItemWithContext[];
|
26
|
+
}
|
27
|
+
export declare const DOC_ITEM_CONTEXT: "__item_context";
|
28
|
+
export type DocItemWithContext = DocItem & {
|
29
|
+
[DOC_ITEM_CONTEXT]: DocItemContext;
|
30
|
+
};
|
31
|
+
export interface DocItemContext {
|
32
|
+
page?: string;
|
33
|
+
item: DocItemWithContext;
|
34
|
+
contract?: ContractDefinition;
|
35
|
+
file: DocItemContextFile;
|
36
|
+
build: BuildContext;
|
37
|
+
}
|
38
|
+
export interface DocItemContextFile extends SourceUnit {
|
39
|
+
relativePath: string;
|
40
|
+
}
|
41
|
+
export declare function buildSite(builds: Build[], siteConfig: SiteConfig, properties?: Properties): Site;
|
42
|
+
//# sourceMappingURL=site.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAmB,eAAe,EAAmC,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAA2B,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC,CAAC;AAChG,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzG,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,GAAG,MAAM,EAAE,YAAY,CAKrE,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,kBAA4B,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG;IAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAE,UAAe,GAAG,IAAI,CAsDpG"}
|
package/dist/site.js
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.buildSite = exports.DOC_ITEM_CONTEXT = exports.pageAssigner = void 0;
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const utils_1 = require("solidity-ast/utils");
|
9
|
+
const doc_item_1 = require("./doc-item");
|
10
|
+
const clone_1 = require("./utils/clone");
|
11
|
+
const is_child_1 = require("./utils/is-child");
|
12
|
+
const memoized_getter_1 = require("./utils/memoized-getter");
|
13
|
+
exports.pageAssigner = {
|
14
|
+
single: (_1, _2, { pageExtension: ext }) => 'index' + ext,
|
15
|
+
items: (item, _, { pageExtension: ext }) => item.name + ext,
|
16
|
+
files: (_, file, { pageExtension: ext, sourcesDir }) => path_1.default.relative(sourcesDir, file.absolutePath).replace('.sol', ext),
|
17
|
+
};
|
18
|
+
exports.DOC_ITEM_CONTEXT = '__item_context';
|
19
|
+
function buildSite(builds, siteConfig, properties = {}) {
|
20
|
+
const assign = typeof siteConfig.pages === 'string' ? exports.pageAssigner[siteConfig.pages] : siteConfig.pages;
|
21
|
+
const seen = new Set();
|
22
|
+
const items = [];
|
23
|
+
const pages = {};
|
24
|
+
for (let { input, output } of builds) {
|
25
|
+
// Clone because we will mutate in order to add item context.
|
26
|
+
output = { ...output, sources: (0, clone_1.clone)(output.sources) };
|
27
|
+
const deref = (0, utils_1.astDereferencer)(output);
|
28
|
+
const decodeSrc = (0, utils_1.srcDecoder)(input, output);
|
29
|
+
const build = { input, output, deref, decodeSrc };
|
30
|
+
for (const { ast } of Object.values(output.sources)) {
|
31
|
+
const isNewFile = !seen.has(ast.absolutePath);
|
32
|
+
seen.add(ast.absolutePath);
|
33
|
+
const relativePath = path_1.default.relative(siteConfig.sourcesDir, ast.absolutePath);
|
34
|
+
const file = Object.assign(ast, { relativePath });
|
35
|
+
for (const topLevelItem of file.nodes) {
|
36
|
+
if (!(0, doc_item_1.isDocItem)(topLevelItem))
|
37
|
+
continue;
|
38
|
+
const page = assignIfIncludedSource(assign, topLevelItem, file, siteConfig);
|
39
|
+
const withContext = defineContext(topLevelItem, build, file, page);
|
40
|
+
defineProperties(withContext, properties);
|
41
|
+
if (isNewFile && page !== undefined) {
|
42
|
+
(pages[page] ?? (pages[page] = [])).push(withContext);
|
43
|
+
items.push(withContext);
|
44
|
+
}
|
45
|
+
if (!(0, utils_1.isNodeType)('ContractDefinition', topLevelItem)) {
|
46
|
+
continue;
|
47
|
+
}
|
48
|
+
for (const item of topLevelItem.nodes) {
|
49
|
+
if (!(0, doc_item_1.isDocItem)(item))
|
50
|
+
continue;
|
51
|
+
if (isNewFile && page !== undefined)
|
52
|
+
items.push(item);
|
53
|
+
const contract = topLevelItem.nodeType === 'ContractDefinition' ? topLevelItem : undefined;
|
54
|
+
const withContext = defineContext(item, build, file, page, contract);
|
55
|
+
defineProperties(withContext, properties);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
return {
|
61
|
+
items,
|
62
|
+
pages: Object.entries(pages).map(([id, pageItems]) => ({ id, items: pageItems })),
|
63
|
+
};
|
64
|
+
}
|
65
|
+
exports.buildSite = buildSite;
|
66
|
+
function defineContext(item, build, file, page, contract) {
|
67
|
+
return Object.assign(item, {
|
68
|
+
[exports.DOC_ITEM_CONTEXT]: { build, file, contract, page, item: item },
|
69
|
+
});
|
70
|
+
}
|
71
|
+
function defineProperties(item, properties) {
|
72
|
+
for (const [prop, fn] of Object.entries(properties)) {
|
73
|
+
const original = item[prop];
|
74
|
+
(0, memoized_getter_1.defineGetterMemoized)(item, prop, () => fn(item.__item_context, original));
|
75
|
+
}
|
76
|
+
}
|
77
|
+
function assignIfIncludedSource(assign, item, file, config) {
|
78
|
+
return isFileIncluded(file.absolutePath, config)
|
79
|
+
? assign(item, file, config)
|
80
|
+
: undefined;
|
81
|
+
}
|
82
|
+
function isFileIncluded(file, config) {
|
83
|
+
return ((0, is_child_1.isChild)(file, config.sourcesDir) &&
|
84
|
+
config.exclude.every(e => !(0, is_child_1.isChild)(file, path_1.default.join(config.sourcesDir, e))));
|
85
|
+
}
|
86
|
+
//# sourceMappingURL=site.js.map
|
package/dist/site.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"site.js","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"site.test.d.ts","sourceRoot":"","sources":["../src/site.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const test_1 = __importDefault(require("./utils/test"));
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const site_1 = require("./site");
|
9
|
+
/**
|
10
|
+
* @param files The name of the Solidity file whose contents should be considered.
|
11
|
+
*/
|
12
|
+
function testPages(title, opts, expected) {
|
13
|
+
(0, test_1.default)(title, t => {
|
14
|
+
const { files, assign, exclude = [] } = opts;
|
15
|
+
const cfg = {
|
16
|
+
sourcesDir: 'test-contracts',
|
17
|
+
exclude,
|
18
|
+
pageExtension: '.md',
|
19
|
+
pages: (i, f) => files.includes(path_1.default.parse(f.absolutePath).name) ? assign(i, f, cfg) : undefined,
|
20
|
+
};
|
21
|
+
const site = (0, site_1.buildSite)(t.context.build, cfg);
|
22
|
+
const pages = site.pages.map(p => ({
|
23
|
+
id: p.id,
|
24
|
+
items: p.items.map(i => i.name),
|
25
|
+
})).sort((a, b) => a.id.localeCompare(b.id));
|
26
|
+
t.deepEqual(pages, expected);
|
27
|
+
});
|
28
|
+
}
|
29
|
+
testPages('assign to single page', {
|
30
|
+
files: ['S08_AB'],
|
31
|
+
assign: site_1.pageAssigner.single,
|
32
|
+
}, [{ id: 'index.md', items: ['A', 'B'] }]);
|
33
|
+
testPages('assign to item pages', {
|
34
|
+
files: ['S08_AB'],
|
35
|
+
assign: site_1.pageAssigner.items,
|
36
|
+
}, [
|
37
|
+
{ id: 'A.md', items: ['A'] },
|
38
|
+
{ id: 'B.md', items: ['B'] },
|
39
|
+
]);
|
40
|
+
testPages('assign to file pages', {
|
41
|
+
files: ['S08_AB', 'S08_C'],
|
42
|
+
assign: site_1.pageAssigner.files,
|
43
|
+
}, [
|
44
|
+
{ id: 'S08_AB.md', items: ['A', 'B'] },
|
45
|
+
{ id: 'S08_C.md', items: ['C'] },
|
46
|
+
]);
|
47
|
+
testPages('exclude', {
|
48
|
+
files: ['S08_AB', 'S08_E0'],
|
49
|
+
exclude: ['S08_E0.sol'],
|
50
|
+
assign: site_1.pageAssigner.single,
|
51
|
+
}, [{ id: 'index.md', items: ['A', 'B'] }]);
|
52
|
+
//# sourceMappingURL=site.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"site.test.js","sourceRoot":"","sources":["../src/site.test.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,gDAAwB;AACxB,iCAAiF;AAOjF;;GAEG;AACH,SAAS,SAAS,CAAC,KAAa,EAAE,IAAmE,EAAE,QAAuB;IAC5H,IAAA,cAAI,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE;QACd,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,GAAG,GAAe;YACtB,UAAU,EAAE,gBAAgB;YAC5B,OAAO;YACP,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACjG,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAChC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,CAAC,uBAAuB,EAC/B;IACE,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,MAAM,EAAE,mBAAY,CAAC,MAAM;CAC5B,EACD,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CACxC,CAAC;AAEF,SAAS,CAAC,sBAAsB,EAC9B;IACE,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,MAAM,EAAE,mBAAY,CAAC,KAAK;CAC3B,EACD;IACE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;IAC5B,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;CAC7B,CACF,CAAC;AAEF,SAAS,CAAC,sBAAsB,EAC9B;IACE,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,mBAAY,CAAC,KAAK;CAC3B,EACD;IACE,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IACtC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;CACjC,CACF,CAAC;AAEF,SAAS,CAAC,SAAS,EACjB;IACE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,MAAM,EAAE,mBAAY,CAAC,MAAM;CAC5B,EACD,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CACxC,CAAC"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { DocItemContext } from './site';
|
2
|
+
export type PropertyGetter = (ctx: DocItemContext, original?: unknown) => unknown;
|
3
|
+
export type Properties = Record<string, PropertyGetter>;
|
4
|
+
export interface Templates {
|
5
|
+
partials?: Record<string, () => string>;
|
6
|
+
helpers?: Record<string, (...args: unknown[]) => string>;
|
7
|
+
properties?: Record<string, PropertyGetter>;
|
8
|
+
}
|
9
|
+
/**
|
10
|
+
* Loads the templates that will be used for rendering a site based on a
|
11
|
+
* default theme and user templates.
|
12
|
+
*
|
13
|
+
* The result contains all partials, helpers, and property getters defined in
|
14
|
+
* the user templates and the default theme, where the user's take precedence
|
15
|
+
* if there is a clash. Additionally, all theme partials and helpers are
|
16
|
+
* included with the theme prefix, e.g. `markdown/contract` will be a partial.
|
17
|
+
*/
|
18
|
+
export declare function loadTemplates(defaultTheme: string, root: string, userTemplatesPath?: string): Promise<Templates>;
|
19
|
+
/**
|
20
|
+
* Read templates and helpers from a directory.
|
21
|
+
*/
|
22
|
+
export declare function readTemplates(partialsDir: string, helpersDir?: string): Promise<Required<Templates>>;
|
23
|
+
//# sourceMappingURL=templates.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAIxC,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA0BtH;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,SAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAM/G"}
|
@@ -0,0 +1,124 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
exports.readTemplates = exports.loadTemplates = void 0;
|
30
|
+
const path_1 = __importDefault(require("path"));
|
31
|
+
const fs_1 = __importStar(require("fs"));
|
32
|
+
const map_keys_1 = require("./utils/map-keys");
|
33
|
+
const defaultProperties = __importStar(require("./common/properties"));
|
34
|
+
/**
|
35
|
+
* Loads the templates that will be used for rendering a site based on a
|
36
|
+
* default theme and user templates.
|
37
|
+
*
|
38
|
+
* The result contains all partials, helpers, and property getters defined in
|
39
|
+
* the user templates and the default theme, where the user's take precedence
|
40
|
+
* if there is a clash. Additionally, all theme partials and helpers are
|
41
|
+
* included with the theme prefix, e.g. `markdown/contract` will be a partial.
|
42
|
+
*/
|
43
|
+
async function loadTemplates(defaultTheme, root, userTemplatesPath) {
|
44
|
+
const themes = await readThemes();
|
45
|
+
// Initialize templates with the default theme.
|
46
|
+
const templates = {
|
47
|
+
partials: { ...themes[defaultTheme]?.partials },
|
48
|
+
helpers: { ...themes[defaultTheme]?.helpers },
|
49
|
+
properties: { ...defaultProperties },
|
50
|
+
};
|
51
|
+
// Overwrite default theme with user templates.
|
52
|
+
if (userTemplatesPath) {
|
53
|
+
const userTemplates = await readTemplates(path_1.default.resolve(root, userTemplatesPath));
|
54
|
+
Object.assign(templates.partials, userTemplates.partials);
|
55
|
+
Object.assign(templates.helpers, userTemplates.helpers);
|
56
|
+
Object.assign(templates.properties, userTemplates.properties);
|
57
|
+
}
|
58
|
+
// Add partials and helpers from all themes, prefixed with the theme name.
|
59
|
+
for (const [themeName, theme] of Object.entries(themes)) {
|
60
|
+
const addPrefix = (k) => `${themeName}/${k}`;
|
61
|
+
Object.assign(templates.partials, (0, map_keys_1.mapKeys)(theme.partials, addPrefix));
|
62
|
+
Object.assign(templates.helpers, (0, map_keys_1.mapKeys)(theme.helpers, addPrefix));
|
63
|
+
}
|
64
|
+
return templates;
|
65
|
+
}
|
66
|
+
exports.loadTemplates = loadTemplates;
|
67
|
+
/**
|
68
|
+
* Read templates and helpers from a directory.
|
69
|
+
*/
|
70
|
+
async function readTemplates(partialsDir, helpersDir = partialsDir) {
|
71
|
+
return {
|
72
|
+
partials: await readPartials(partialsDir),
|
73
|
+
helpers: await readHelpers(helpersDir, 'helpers'),
|
74
|
+
properties: await readHelpers(helpersDir, 'properties'),
|
75
|
+
};
|
76
|
+
}
|
77
|
+
exports.readTemplates = readTemplates;
|
78
|
+
async function readPartials(dir) {
|
79
|
+
const partials = {};
|
80
|
+
for (const p of await fs_1.promises.readdir(dir)) {
|
81
|
+
const { name, ext } = path_1.default.parse(p);
|
82
|
+
if (ext === '.hbs') {
|
83
|
+
partials[name] = () => fs_1.default.readFileSync(path_1.default.join(dir, p), 'utf8');
|
84
|
+
}
|
85
|
+
}
|
86
|
+
return partials;
|
87
|
+
}
|
88
|
+
async function readHelpers(dir, name) {
|
89
|
+
var _a;
|
90
|
+
let helpersPath;
|
91
|
+
try {
|
92
|
+
helpersPath = require.resolve(path_1.default.join(dir, name));
|
93
|
+
}
|
94
|
+
catch {
|
95
|
+
return {};
|
96
|
+
}
|
97
|
+
const h = await (_a = helpersPath, Promise.resolve().then(() => __importStar(require(_a))));
|
98
|
+
const helpers = {};
|
99
|
+
for (const name in h) {
|
100
|
+
if (typeof h[name] === 'function') {
|
101
|
+
helpers[name] = h[name];
|
102
|
+
}
|
103
|
+
}
|
104
|
+
return helpers;
|
105
|
+
}
|
106
|
+
/**
|
107
|
+
* Reads all built-in themes into an object. Partials will always be found in
|
108
|
+
* src/themes, whereas helpers may instead be found in dist/themes if TypeScript
|
109
|
+
* can't be imported directly.
|
110
|
+
*/
|
111
|
+
async function readThemes() {
|
112
|
+
const themes = {};
|
113
|
+
// Handlebars partials are located in src and not in dist
|
114
|
+
const srcThemes = path_1.default.resolve(__dirname, '../src/themes');
|
115
|
+
const distThemes = path_1.default.resolve(__dirname, 'themes');
|
116
|
+
for (const theme of await fs_1.promises.readdir(srcThemes, { withFileTypes: true })) {
|
117
|
+
if (theme.isDirectory()) {
|
118
|
+
const { name } = theme;
|
119
|
+
themes[name] = await readTemplates(path_1.default.join(srcThemes, name), path_1.default.join(distThemes, name));
|
120
|
+
}
|
121
|
+
}
|
122
|
+
return themes;
|
123
|
+
}
|
124
|
+
//# sourceMappingURL=templates.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { HelperOptions } from 'handlebars';
|
2
|
+
export * from '../../common/helpers';
|
3
|
+
/**
|
4
|
+
* Returns a Markdown heading marker. An optional number increases the heading level.
|
5
|
+
*
|
6
|
+
* Input Output
|
7
|
+
* {{h}} {{name}} # Name
|
8
|
+
* {{h 2}} {{name}} ## Name
|
9
|
+
*/
|
10
|
+
export declare function h(opts: HelperOptions): string;
|
11
|
+
export declare function h(hsublevel: number, opts: HelperOptions): string;
|
12
|
+
/**
|
13
|
+
* Delineates a section where headings should be increased by 1 or a custom number.
|
14
|
+
*
|
15
|
+
* {{#hsection}}
|
16
|
+
* {{>partial-with-headings}}
|
17
|
+
* {{/hsection}}
|
18
|
+
*/
|
19
|
+
export declare function hsection(opts: HelperOptions): string;
|
20
|
+
export declare function hsection(hsublevel: number, opts: HelperOptions): string;
|
21
|
+
//# sourceMappingURL=helpers.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/themes/markdown/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,YAAY,CAAC;AAElD,cAAc,sBAAsB,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;AAC/C,wBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;AAMlE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;AACtD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC"}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.hsection = exports.h = void 0;
|
18
|
+
const handlebars_1 = require("handlebars");
|
19
|
+
__exportStar(require("../../common/helpers"), exports);
|
20
|
+
function h(hsublevel, opts) {
|
21
|
+
const { hlevel } = getHLevel(hsublevel, opts);
|
22
|
+
return new Array(hlevel).fill('#').join('');
|
23
|
+
}
|
24
|
+
exports.h = h;
|
25
|
+
;
|
26
|
+
function hsection(hsublevel, opts) {
|
27
|
+
let hlevel;
|
28
|
+
({ hlevel, opts } = getHLevel(hsublevel, opts));
|
29
|
+
opts.data = handlebars_1.Utils.createFrame(opts.data);
|
30
|
+
opts.data.hlevel = hlevel;
|
31
|
+
return opts.fn(this, opts);
|
32
|
+
}
|
33
|
+
exports.hsection = hsection;
|
34
|
+
/**
|
35
|
+
* Helper for dealing with the optional hsublevel argument.
|
36
|
+
*/
|
37
|
+
function getHLevel(hsublevel, opts) {
|
38
|
+
if (typeof hsublevel === 'number') {
|
39
|
+
opts = opts;
|
40
|
+
hsublevel = Math.max(1, hsublevel);
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
opts = hsublevel;
|
44
|
+
hsublevel = 1;
|
45
|
+
}
|
46
|
+
const contextHLevel = opts.data?.hlevel ?? 0;
|
47
|
+
return { opts, hlevel: contextHLevel + hsublevel };
|
48
|
+
}
|
49
|
+
//# sourceMappingURL=helpers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/themes/markdown/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAElD,uDAAqC;AAWrC,SAAgB,CAAC,CAAC,SAAiC,EAAE,IAAoB;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAHD,cAGC;AAAA,CAAC;AAWF,SAAgB,QAAQ,CAAgB,SAAiC,EAAE,IAAoB;IAC7F,IAAI,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,GAAG,kBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAe,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAND,4BAMC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,SAAiC,EAAE,IAAoB;IACxE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,IAAI,GAAG,IAAK,CAAC;QACb,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;KACpC;SAAM;QACL,IAAI,GAAG,SAAS,CAAC;QACjB,SAAS,GAAG,CAAC,CAAC;KACf;IACD,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;IACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,EAAE,CAAC;AACrD,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ItemError.d.ts","sourceRoot":"","sources":["../../src/utils/ItemError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,SAAS,CAAC;AAE/D,qBAAa,SAAU,SAAQ,KAAK;gBACtB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;CASlD"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ItemError = void 0;
|
4
|
+
const site_1 = require("../site");
|
5
|
+
class ItemError extends Error {
|
6
|
+
constructor(msg, item) {
|
7
|
+
const ctx = item[site_1.DOC_ITEM_CONTEXT];
|
8
|
+
const src = ctx && ctx.build.decodeSrc(item);
|
9
|
+
if (src) {
|
10
|
+
super(msg + ` (${src})`);
|
11
|
+
}
|
12
|
+
else {
|
13
|
+
super(msg);
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
17
|
+
exports.ItemError = ItemError;
|
18
|
+
//# sourceMappingURL=ItemError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ItemError.js","sourceRoot":"","sources":["../../src/utils/ItemError.ts"],"names":[],"mappings":";;;AAAA,kCAA+D;AAE/D,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,GAAW,EAAE,IAAwB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAgB,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;SAC1B;aAAM;YACL,KAAK,CAAC,GAAG,CAAC,CAAC;SACZ;IACH,CAAC;CACF;AAVD,8BAUC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"arrays-equal.d.ts","sourceRoot":"","sources":["../../src/utils/arrays-equal.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC;AACxD,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.arraysEqual = void 0;
|
4
|
+
function arraysEqual(a, b, mapFn = (x) => x) {
|
5
|
+
return a.length === b.length && a.every((x, i) => mapFn(x) === mapFn(b[i]));
|
6
|
+
}
|
7
|
+
exports.arraysEqual = arraysEqual;
|
8
|
+
//# sourceMappingURL=arrays-equal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"arrays-equal.js","sourceRoot":"","sources":["../../src/utils/arrays-equal.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CAAI,CAAM,EAAE,CAAM,EAAE,QAAQ,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAFD,kCAEC"}
|