@hcengineering/text-markdown 0.7.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/lib/__tests__/markdown.test.js +1044 -0
- package/lib/__tests__/markdown.test.js.map +7 -0
- package/lib/compare.js +100 -0
- package/lib/compare.js.map +7 -0
- package/lib/index.js +47 -0
- package/lib/index.js.map +7 -0
- package/lib/marks.js +59 -0
- package/lib/marks.js.map +7 -0
- package/lib/node.js +34 -0
- package/lib/node.js.map +7 -0
- package/lib/parser.js +724 -0
- package/lib/parser.js.map +7 -0
- package/lib/serializer.js +614 -0
- package/lib/serializer.js.map +7 -0
- package/package.json +59 -0
- package/src/__tests__/markdown.test.ts +1076 -0
- package/src/compare.ts +119 -0
- package/src/index.ts +47 -0
- package/src/marks.ts +46 -0
- package/src/node.ts +24 -0
- package/src/parser.ts +853 -0
- package/src/serializer.ts +833 -0
- package/tsconfig.json +12 -0
- package/types/__tests__/markdown.test.d.ts +9 -0
- package/types/__tests__/markdown.test.d.ts.map +1 -0
- package/types/compare.d.ts +10 -0
- package/types/compare.d.ts.map +1 -0
- package/types/index.d.ts +14 -0
- package/types/index.d.ts.map +1 -0
- package/types/marks.d.ts +8 -0
- package/types/marks.d.ts.map +1 -0
- package/types/node.d.ts +4 -0
- package/types/node.d.ts.map +1 -0
- package/types/parser.d.ts +50 -0
- package/types/parser.d.ts.map +1 -0
- package/types/serializer.d.ts +102 -0
- package/types/serializer.d.ts.map +1 -0
package/tsconfig.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./node_modules/@hcengineering/platform-rig/profiles/default/tsconfig.json",
|
|
3
|
+
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./lib",
|
|
7
|
+
"declarationDir": "./types",
|
|
8
|
+
"tsBuildInfoFile": ".build/build.tsbuildinfo"
|
|
9
|
+
},
|
|
10
|
+
"include": ["src/**/*"],
|
|
11
|
+
"exclude": ["node_modules", "lib", "dist", "types", "bundle"]
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/markdown.test.ts"],"names":[],"mappings":"AAuBA,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,IAAI,CAAC;QACb,UAAU,QAAQ,CAAC,CAAC;YAClB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAA;SACzC;KACF;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate Sørensen–Dice coefficient
|
|
3
|
+
*/
|
|
4
|
+
export declare function calcSørensenDiceCoefficient(a: string, b: string): number;
|
|
5
|
+
/**
|
|
6
|
+
* Perform markdown diff/comparison to understand do we have a major differences.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isMarkdownsEquals(source1: string, source2: string): boolean;
|
|
9
|
+
export declare function normalizeMarkdown(source: string): string;
|
|
10
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,wBAAgB,2BAA2B,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA8DzD"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MarkupNode } from '@hcengineering/text-core';
|
|
2
|
+
export * from './compare';
|
|
3
|
+
export * from './parser';
|
|
4
|
+
export * from './serializer';
|
|
5
|
+
/** @public */
|
|
6
|
+
export interface MarkdownOptions {
|
|
7
|
+
refUrl?: string;
|
|
8
|
+
imageUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
/** @public */
|
|
11
|
+
export declare function markupToMarkdown(markup: MarkupNode, options?: MarkdownOptions): string;
|
|
12
|
+
/** @public */
|
|
13
|
+
export declare function markdownToMarkup(markdown: string, options?: MarkdownOptions): MarkupNode;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIrD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc;AACd,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,cAAc;AACd,wBAAgB,gBAAgB,CAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAOvF;AAED,cAAc;AACd,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,UAAU,CAMzF"}
|
package/types/marks.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MarkupMark, MarkupMarkType } from '@hcengineering/text-core';
|
|
2
|
+
export declare function markAttrs(mark: MarkupMark): Record<string, string>;
|
|
3
|
+
export declare function isInSet(mark: MarkupMark, marks: MarkupMark[]): boolean;
|
|
4
|
+
export declare function addToSet(mark: MarkupMark, marks: MarkupMark[]): MarkupMark[];
|
|
5
|
+
export declare function removeFromSet(markType: MarkupMarkType, marks: MarkupMark[]): MarkupMark[];
|
|
6
|
+
export declare function sameSet(a?: MarkupMark[], b?: MarkupMark[]): boolean;
|
|
7
|
+
export declare function markEq(first: MarkupMark, other: MarkupMark): boolean;
|
|
8
|
+
//# sourceMappingURL=marks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marks.d.ts","sourceRoot":"","sources":["../src/marks.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGrE,wBAAgB,SAAS,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnE;AAED,wBAAgB,OAAO,CAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAEvE;AAED,wBAAgB,QAAQ,CAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAO7E;AAED,wBAAgB,aAAa,CAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAE1F;AAED,wBAAgB,OAAO,CAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAEpE;AAED,wBAAgB,MAAM,CAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAErE"}
|
package/types/node.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE5D,wBAAgB,WAAW,CAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CAE3D;AAED,wBAAgB,SAAS,CAAE,IAAI,EAAE,UAAU,GAAG,KAAK,CAElD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Attrs, MarkupMark, MarkupMarkType, MarkupNode, MarkupNodeType } from '@hcengineering/text-core';
|
|
2
|
+
import MarkdownIt, { type Token } from 'markdown-it';
|
|
3
|
+
import type { RuleCore } from 'markdown-it/lib/parser_core';
|
|
4
|
+
interface StateElement {
|
|
5
|
+
type: MarkupNodeType;
|
|
6
|
+
content: MarkupNode[];
|
|
7
|
+
attrs: Attrs;
|
|
8
|
+
}
|
|
9
|
+
declare class MarkdownParseState {
|
|
10
|
+
readonly refUrl: string;
|
|
11
|
+
readonly imageUrl: string;
|
|
12
|
+
stack: StateElement[];
|
|
13
|
+
marks: MarkupMark[];
|
|
14
|
+
tokenHandlers: Record<string, (state: MarkdownParseState, tok: Token) => void>;
|
|
15
|
+
constructor(tokenHandlers: Record<string, (state: MarkdownParseState, tok: Token) => void>, refUrl: string, imageUrl: string);
|
|
16
|
+
top(): StateElement | undefined;
|
|
17
|
+
push(elt: MarkupNode): void;
|
|
18
|
+
mergeWithLast(nodes: MarkupNode[], node: MarkupNode): boolean;
|
|
19
|
+
addText(text?: string): void;
|
|
20
|
+
openMark(mark: MarkupMark): void;
|
|
21
|
+
closeMark(mark: MarkupMarkType): void;
|
|
22
|
+
parseTokens(toks: Token[] | null): void;
|
|
23
|
+
addNode(type: MarkupNodeType, attrs: Attrs, content?: MarkupNode[]): MarkupNode;
|
|
24
|
+
openNode(type: MarkupNodeType, attrs: Attrs): void;
|
|
25
|
+
closeNode(): MarkupNode;
|
|
26
|
+
}
|
|
27
|
+
export declare const isInlineToken: (token?: Token) => boolean;
|
|
28
|
+
export declare const isParagraphToken: (token?: Token) => boolean;
|
|
29
|
+
export declare const isListItemToken: (token?: Token) => boolean;
|
|
30
|
+
export interface TaskListEnv {
|
|
31
|
+
tasklists: number;
|
|
32
|
+
}
|
|
33
|
+
export type HtmlParser = (html: string) => MarkupNode;
|
|
34
|
+
export interface MarkdownParserOptions {
|
|
35
|
+
refUrl: string;
|
|
36
|
+
imageUrl: string;
|
|
37
|
+
htmlParser?: HtmlParser;
|
|
38
|
+
}
|
|
39
|
+
export declare class MarkdownParser {
|
|
40
|
+
private readonly options;
|
|
41
|
+
tokenizer: MarkdownIt;
|
|
42
|
+
tokenHandlers: Record<string, (state: MarkdownParseState, tok: Token) => void>;
|
|
43
|
+
htmlParser: HtmlParser;
|
|
44
|
+
constructor(options: MarkdownParserOptions);
|
|
45
|
+
parse(text: string): MarkupNode;
|
|
46
|
+
htmlCommentRule: RuleCore;
|
|
47
|
+
listRule: RuleCore;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAExG,OAAO,UAAU,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AA8D3D,UAAU,YAAY;IACpB,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAA;CACb;AAGD,cAAM,kBAAkB;IAOpB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAP3B,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,CAAA;gBAG5E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,EACrE,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;IAO3B,GAAG,IAAK,YAAY,GAAG,SAAS;IAIhC,IAAI,CAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAO5B,aAAa,CAAE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO;IAY9D,OAAO,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAsB7B,QAAQ,CAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAKjC,SAAS,CAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAItC,WAAW,CAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI;IA8BxC,OAAO,CAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,UAAU,EAAO,GAAG,UAAU;IAcpF,QAAQ,CAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnD,SAAS,IAAK,UAAU;CAQzB;AA8ZD,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,KAAG,OAAmC,CAAA;AAEjF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,KAAK,KAAG,OAA2C,CAAA;AAE5F,eAAO,MAAM,eAAe,GAAI,QAAQ,KAAK,KAAG,OAA2C,CAAA;AAE3F,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAYD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAA;AAErD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,qBAAa,cAAc;IAKZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJrC,SAAS,EAAE,UAAU,CAAA;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,CAAA;IAC9E,UAAU,EAAE,UAAU,CAAA;gBAEQ,OAAO,EAAE,qBAAqB;IAW5D,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAahC,eAAe,EAAE,QAAQ,CAWxB;IAED,QAAQ,EAAE,QAAQ,CAgDjB;CACF"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { MarkupMark, MarkupNode } from '@hcengineering/text-core';
|
|
2
|
+
type FirstDelim = (i: number, attrs?: Record<string, any>, parentAttrs?: Record<string, any>) => string;
|
|
3
|
+
interface IState {
|
|
4
|
+
wrapBlock: (delim: string, firstDelim: string | null, node: MarkupNode, f: () => void) => void;
|
|
5
|
+
flushClose: (size: number) => void;
|
|
6
|
+
atBlank: () => void;
|
|
7
|
+
ensureNewLine: () => void;
|
|
8
|
+
write: (content: string) => void;
|
|
9
|
+
closeBlock: (node: any) => void;
|
|
10
|
+
text: (text: string, escape?: boolean) => void;
|
|
11
|
+
render: (node: MarkupNode, parent: MarkupNode, index: number) => void;
|
|
12
|
+
renderContent: (parent: MarkupNode) => void;
|
|
13
|
+
renderInline: (parent: MarkupNode) => void;
|
|
14
|
+
renderList: (node: MarkupNode, delim: string, firstDelim: FirstDelim) => void;
|
|
15
|
+
esc: (str: string, startOfLine?: boolean) => string;
|
|
16
|
+
htmlEsc: (str: string) => string;
|
|
17
|
+
quote: (str: string) => string;
|
|
18
|
+
repeat: (str: string, n: number) => string;
|
|
19
|
+
markString: (mark: MarkupMark, open: boolean, parent: MarkupNode, index: number) => string;
|
|
20
|
+
renderHtml: (node: MarkupNode) => string;
|
|
21
|
+
refUrl: string;
|
|
22
|
+
imageUrl: string;
|
|
23
|
+
inAutolink?: boolean;
|
|
24
|
+
renderAHref?: boolean;
|
|
25
|
+
}
|
|
26
|
+
type NodeProcessor = (state: IState, node: MarkupNode, parent: MarkupNode, index: number) => void;
|
|
27
|
+
interface InlineState {
|
|
28
|
+
active: MarkupMark[];
|
|
29
|
+
trailing: string;
|
|
30
|
+
parent: MarkupNode;
|
|
31
|
+
node?: MarkupNode;
|
|
32
|
+
marks: MarkupMark[];
|
|
33
|
+
}
|
|
34
|
+
export declare const storeNodes: Record<string, NodeProcessor>;
|
|
35
|
+
interface MarkProcessor {
|
|
36
|
+
open: ((_state: IState, mark: MarkupMark, parent: MarkupNode, index: number) => string) | string;
|
|
37
|
+
close: ((_state: IState, mark: MarkupMark, parent: MarkupNode, index: number) => string) | string;
|
|
38
|
+
mixable: boolean;
|
|
39
|
+
expelEnclosingWhitespace: boolean;
|
|
40
|
+
escape: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare const storeMarks: Record<string, MarkProcessor>;
|
|
43
|
+
export type HtmlWriter = (markup: MarkupNode) => string;
|
|
44
|
+
export interface StateOptions {
|
|
45
|
+
tightLists: boolean;
|
|
46
|
+
refUrl: string;
|
|
47
|
+
imageUrl: string;
|
|
48
|
+
htmlWriter?: HtmlWriter;
|
|
49
|
+
}
|
|
50
|
+
export declare class MarkdownState implements IState {
|
|
51
|
+
nodes: Record<string, NodeProcessor>;
|
|
52
|
+
marks: Record<string, MarkProcessor>;
|
|
53
|
+
delim: string;
|
|
54
|
+
out: string;
|
|
55
|
+
closed: boolean;
|
|
56
|
+
closedNode?: MarkupNode;
|
|
57
|
+
inTightList: boolean;
|
|
58
|
+
options: StateOptions;
|
|
59
|
+
refUrl: string;
|
|
60
|
+
imageUrl: string;
|
|
61
|
+
htmlWriter: HtmlWriter;
|
|
62
|
+
constructor(nodes?: Record<string, NodeProcessor>, marks?: Record<string, MarkProcessor>, options?: StateOptions);
|
|
63
|
+
flushClose(size: number): void;
|
|
64
|
+
private addDelim;
|
|
65
|
+
renderHtml(node: MarkupNode): string;
|
|
66
|
+
wrapBlock(delim: string, firstDelim: string | null, node: MarkupNode, f: () => void): void;
|
|
67
|
+
atBlank(): boolean;
|
|
68
|
+
ensureNewLine(): void;
|
|
69
|
+
write(content: string): void;
|
|
70
|
+
closeBlock(node: MarkupNode): void;
|
|
71
|
+
text(text: string, escape?: boolean): void;
|
|
72
|
+
render(node: MarkupNode, parent: MarkupNode, index: number): void;
|
|
73
|
+
renderContent(parent: MarkupNode): void;
|
|
74
|
+
reorderMixableMark(state: InlineState, mark: MarkupMark, i: number, len: number): void;
|
|
75
|
+
reorderMixableMarks(state: InlineState, len: number): void;
|
|
76
|
+
private checkSwitchMarks;
|
|
77
|
+
private switchMarks;
|
|
78
|
+
renderNodeInline(state: InlineState, index: number): void;
|
|
79
|
+
private checkOpenMarks;
|
|
80
|
+
private isNoEscapeRequire;
|
|
81
|
+
private renderMarkText;
|
|
82
|
+
private updateActiveMarks;
|
|
83
|
+
private checkCloseMarks;
|
|
84
|
+
private adjustLeading;
|
|
85
|
+
private isMarksHasExpelEnclosingWhitespace;
|
|
86
|
+
private adjustLeadingTextNode;
|
|
87
|
+
private updateHardBreakMarks;
|
|
88
|
+
private filterHardBreakMarks;
|
|
89
|
+
private isHardbreakText;
|
|
90
|
+
private isText;
|
|
91
|
+
renderInline(parent: MarkupNode): void;
|
|
92
|
+
renderList(node: MarkupNode, delim: string, firstDelim: FirstDelim): void;
|
|
93
|
+
renderListItem(node: MarkupNode, child: MarkupNode, i: number, isTight: boolean, delim: string, firstDelim: FirstDelim): void;
|
|
94
|
+
private flushListClose;
|
|
95
|
+
esc(str: string, startOfLine?: boolean): string;
|
|
96
|
+
htmlEsc(str: string): string;
|
|
97
|
+
quote(str: string): string;
|
|
98
|
+
repeat(str: string, n: number): string;
|
|
99
|
+
markString(mark: MarkupMark, open: boolean, parent: MarkupNode, index: number): string;
|
|
100
|
+
}
|
|
101
|
+
export {};
|
|
102
|
+
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
|