From 2c8bbbb43fad688085547bbfc6ca69dd1880c74a Mon Sep 17 00:00:00 2001 From: bokuweb Date: Thu, 30 Jan 2020 23:14:25 +0900 Subject: [PATCH] Improve js api (#28) * fix: improve js api * feat: Add builder * feat: improve js * fix: missing run property --- .gitignore | 3 +- README.md | 26 + docx-wasm/example/index.ts | 16 + docx-wasm/js/bookmark-end.ts | 6 + docx-wasm/js/bookmark-start.ts | 8 + docx-wasm/js/break.ts | 8 + docx-wasm/js/comment-end.ts | 6 + docx-wasm/js/comment.ts | 27 + docx-wasm/js/delete-text.ts | 7 + docx-wasm/js/delete.ts | 22 + docx-wasm/js/index.ts | 291 ++++++++++ docx-wasm/js/insert.ts | 20 + docx-wasm/js/level.ts | 37 ++ docx-wasm/js/numbering.ts | 13 + docx-wasm/js/paragraph.ts | 98 ++++ docx-wasm/js/run.ts | 76 +++ docx-wasm/js/tab.ts | 1 + docx-wasm/js/table-cell.ts | 34 ++ docx-wasm/js/table-row.ts | 10 + docx-wasm/js/table.ts | 40 ++ docx-wasm/js/text.ts | 7 + docx-wasm/package.json | 25 +- docx-wasm/pkg/docx_rs.d.ts | 405 -------------- docx-wasm/pkg/docx_rs.js | 967 --------------------------------- docx-wasm/pkg/docx_rs_bg.d.ts | 73 --- docx-wasm/pkg/docx_rs_bg.wasm | Bin 335781 -> 0 bytes docx-wasm/pkg/package.json | 12 +- docx-wasm/tsconfig.json | 18 + docx-wasm/webpack.common.js | 24 + docx-wasm/webpack.config.js | 25 - docx-wasm/webpack.dev.js | 15 + docx-wasm/webpack.prod.js | 13 + docx-wasm/yarn.lock | 98 +++- 33 files changed, 946 insertions(+), 1485 deletions(-) create mode 100644 docx-wasm/example/index.ts create mode 100644 docx-wasm/js/bookmark-end.ts create mode 100644 docx-wasm/js/bookmark-start.ts create mode 100644 docx-wasm/js/break.ts create mode 100644 docx-wasm/js/comment-end.ts create mode 100644 docx-wasm/js/comment.ts create mode 100644 docx-wasm/js/delete-text.ts create mode 100644 docx-wasm/js/delete.ts create mode 100644 docx-wasm/js/index.ts create mode 100644 docx-wasm/js/insert.ts create mode 100644 docx-wasm/js/level.ts create mode 100644 docx-wasm/js/numbering.ts create mode 100644 docx-wasm/js/paragraph.ts create mode 100644 docx-wasm/js/run.ts create mode 100644 docx-wasm/js/tab.ts create mode 100644 docx-wasm/js/table-cell.ts create mode 100644 docx-wasm/js/table-row.ts create mode 100644 docx-wasm/js/table.ts create mode 100644 docx-wasm/js/text.ts delete mode 100644 docx-wasm/pkg/docx_rs.d.ts delete mode 100644 docx-wasm/pkg/docx_rs.js delete mode 100644 docx-wasm/pkg/docx_rs_bg.d.ts delete mode 100644 docx-wasm/pkg/docx_rs_bg.wasm create mode 100644 docx-wasm/tsconfig.json create mode 100644 docx-wasm/webpack.common.js delete mode 100644 docx-wasm/webpack.config.js create mode 100644 docx-wasm/webpack.dev.js create mode 100644 docx-wasm/webpack.prod.js diff --git a/.gitignore b/.gitignore index be38787..523ce2d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ vrt/screenshot/actual vrt/screenshot/diff vrt/report.html reg.json -docx-core/tests/output/*.docx \ No newline at end of file +docx-core/tests/output/*.docx +docx-wasm/*.tgz \ No newline at end of file diff --git a/README.md b/README.md index 91be639..048028a 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,23 @@ ## Installation +### Rust + ``` [dependencies] docx-rs = "0.2.0" ``` +### Browser + +``` +yarn add docx-wasm +``` + ## Example +### Rust + ```rust use docx_rs::*; @@ -31,6 +41,22 @@ pub fn hello() -> Result<(), DocxError> { } ``` +### Browser + +```javascript +import { saveAs } from "file-saver"; + +// // Note that a dynamic `import` statement here is required due to webpack/webpack#6615, +import("docx-wasm").then(w => { + const buf = new w.Docx() + .addParagraph( + new w.Paragraph().addRun(new w.Run().addText("Hello world!!")) + ) + .build(); + saveAs(new Blob([buf]), "hello.docx"); +}); +``` + ### More examples - [Minimum](https://github.com/bokuweb/docx-rs/blob/master/docx-core/examples/hello.rs) diff --git a/docx-wasm/example/index.ts b/docx-wasm/example/index.ts new file mode 100644 index 0000000..e4383a0 --- /dev/null +++ b/docx-wasm/example/index.ts @@ -0,0 +1,16 @@ +import { saveAs } from "file-saver"; + +import("../js").then(w => { + const buf = new w.Docx() + .addParagraph( + new w.Paragraph().addRun(new w.Run().addText("Hello ")).addRun( + new w.Run() + .addText("World!!") + .bold() + .highlight("yellow") + .color("FF0000") + ) + ) + .build(); + saveAs(new Blob([buf]), "hello.docx"); +}); diff --git a/docx-wasm/js/bookmark-end.ts b/docx-wasm/js/bookmark-end.ts new file mode 100644 index 0000000..9ffb2e2 --- /dev/null +++ b/docx-wasm/js/bookmark-end.ts @@ -0,0 +1,6 @@ +export class BookmarkEnd { + id: string; + constructor(id: string) { + this.id = id; + } +} diff --git a/docx-wasm/js/bookmark-start.ts b/docx-wasm/js/bookmark-start.ts new file mode 100644 index 0000000..1ae6634 --- /dev/null +++ b/docx-wasm/js/bookmark-start.ts @@ -0,0 +1,8 @@ +export class BookmarkStart { + id: string; + name: string; + constructor(id: string, name: string) { + this.id = id; + this.name = name; + } +} diff --git a/docx-wasm/js/break.ts b/docx-wasm/js/break.ts new file mode 100644 index 0000000..3385125 --- /dev/null +++ b/docx-wasm/js/break.ts @@ -0,0 +1,8 @@ +export type BreakType = "page" | "column" | "textWrapping"; + +export class Break { + type: BreakType; + constructor(type: BreakType) { + this.type = type; + } +} diff --git a/docx-wasm/js/comment-end.ts b/docx-wasm/js/comment-end.ts new file mode 100644 index 0000000..4065e7c --- /dev/null +++ b/docx-wasm/js/comment-end.ts @@ -0,0 +1,6 @@ +export class CommentEnd { + id: number; + constructor(id: number) { + this.id = id; + } +} diff --git a/docx-wasm/js/comment.ts b/docx-wasm/js/comment.ts new file mode 100644 index 0000000..deb823f --- /dev/null +++ b/docx-wasm/js/comment.ts @@ -0,0 +1,27 @@ +import { Paragraph } from "./paragraph"; + +export class Comment { + id: number; + _author: string; + _date: string; + _paragraph: Paragraph; + + constructor(id: number) { + this.id = id; + } + + author(author: string) { + this._author = author; + return this; + } + + date(date: string) { + this._date = date; + return this; + } + + paragraph(p: Paragraph) { + this._paragraph = p; + return this; + } +} diff --git a/docx-wasm/js/delete-text.ts b/docx-wasm/js/delete-text.ts new file mode 100644 index 0000000..8d406d7 --- /dev/null +++ b/docx-wasm/js/delete-text.ts @@ -0,0 +1,7 @@ +export class DeleteText { + text: string; + + constructor(text: string) { + this.text = text; + } +} diff --git a/docx-wasm/js/delete.ts b/docx-wasm/js/delete.ts new file mode 100644 index 0000000..14392ff --- /dev/null +++ b/docx-wasm/js/delete.ts @@ -0,0 +1,22 @@ +import { Run } from "./run"; + +export class Delete { + run: Run; + + _author: string | null = null; + _date: string | null = null; + + constructor(run: Run) { + this.run = run; + } + + author(author: string) { + this._author = author; + return this; + } + + date(date: string) { + this._date = date; + return this; + } +} diff --git a/docx-wasm/js/index.ts b/docx-wasm/js/index.ts new file mode 100644 index 0000000..f749050 --- /dev/null +++ b/docx-wasm/js/index.ts @@ -0,0 +1,291 @@ +import { Paragraph } from "./paragraph"; +import { Insert } from "./insert"; +import { Delete } from "./delete"; +import { DeleteText } from "./delete-text"; +import { Table } from "./table"; +import { TableCell } from "./table-cell"; +import { Run } from "./run"; +import { Text } from "./text"; +import { Tab } from "./tab"; +import { Break } from "./break"; +import { Comment } from "./comment"; +import { CommentEnd } from "./comment-end"; +import { Numbering } from "./numbering"; +import { BookmarkStart } from "./bookmark-start"; +import { BookmarkEnd } from "./bookmark-end"; + +import * as wasm from "../pkg"; + +export class Docx { + children: (Paragraph | Table)[] = []; + numberings: Numbering[] = []; + + addParagraph(p: Paragraph) { + this.children.push(p); + return this; + } + + addTable(t: Table) { + this.children.push(t); + return this; + } + + addNumbering(num: Numbering) { + this.numberings.push(num); + return this; + } + + buildRun(r: Run) { + let run = wasm.createRun(); + r.children.forEach(child => { + if (child instanceof Text) { + run = run.add_text(child.text); + } else if (child instanceof DeleteText) { + run = run.add_delete_text(child.text); + } else if (child instanceof Tab) { + run = run.add_tab(); + } else if (child instanceof Break) { + if (child.type === "column") { + run = run.add_break(wasm.BreakType.Column); + } else if (child.type === "page") { + run = run.add_break(wasm.BreakType.Page); + } else if (child.type === "textWrapping") { + run = run.add_break(wasm.BreakType.TextWrapping); + } + } + }); + + if (typeof r.property.size !== "undefined") { + run = run.size(r.property.size); + } + + if (r.property.color) { + run = run.color(r.property.color); + } + + if (r.property.highlight) { + run = run.highlight(r.property.highlight); + } + + if (r.property.bold) { + run = run.bold(); + } + + if (r.property.italic) { + run = run.italic(); + } + + if (r.property.underline) { + run = run.underline(r.property.underline); + } + + if (r.property.vanish) { + run = run.vanish(); + } + + return run; + } + + buildInsert(i: Insert) { + const run = this.buildRun(i.run); + let insert = wasm.createInsert(run); + if (i._author) { + insert = insert.author(i._author); + } + if (i._date) { + insert = insert.date(i._date); + } + return insert; + } + + buildDelete(d: Delete) { + const run = this.buildRun(d.run); + let insert = wasm.createInsert(run); + if (d._author) { + insert = insert.author(d._author); + } + if (d._date) { + insert = insert.date(d._date); + } + return insert; + } + + buildComment(c: Comment) { + let comment = wasm.createComment(c.id); + if (c._paragraph) { + comment = comment.paragraph(this.buildParagraph(c._paragraph)); + } + if (c._author) { + comment = comment.author(c._author); + } + if (c._date) { + comment = comment.date(c._date); + } + return comment; + } + + buildParagraph(p: Paragraph) { + let paragraph = wasm.createParagraph(); + p.children.forEach(child => { + if (child instanceof Run) { + const run = this.buildRun(child); + paragraph = paragraph.add_run(run); + } else if (child instanceof Insert) { + const insert = this.buildInsert(child); + paragraph = paragraph.add_insert(insert); + } else if (child instanceof Delete) { + const del = this.buildDelete(child); + paragraph = paragraph.add_delete(del); + } else if (child instanceof BookmarkStart) { + paragraph = paragraph.add_bookmark_start(child.id, child.name); + } else if (child instanceof BookmarkEnd) { + paragraph = paragraph.add_bookmark_end(child.id); + } else if (child instanceof Comment) { + const comment = this.buildComment(child); + paragraph = paragraph.add_comment_start(comment); + } else if (child instanceof CommentEnd) { + paragraph = paragraph.add_comment_end(child.id); + } + }); + + switch (p.property.align) { + case "center": { + paragraph = paragraph.align(wasm.AlignmentType.Center); + break; + } + case "right": { + paragraph = paragraph.align(wasm.AlignmentType.Right); + break; + } + case "justified": { + paragraph = paragraph.align(wasm.AlignmentType.Justified); + break; + } + case "left": { + paragraph = paragraph.align(wasm.AlignmentType.Left); + break; + } + } + + if (typeof p.property.indent !== "undefined") { + const { indent } = p.property; + let kind; + switch (p.property.indent.specialIndentKind) { + case "firstLine": { + kind = wasm.SpecialIndentKind.FirstLine; + break; + } + case "hanging": { + paragraph = paragraph.align(wasm.SpecialIndentKind.Hanging); + break; + } + } + paragraph = paragraph.indent(indent.left, kind, indent.specialIndentSize); + } + + if (typeof p.property.numbering !== "undefined") { + const { numbering } = p.property; + paragraph = paragraph.numbering(numbering.id, numbering.level); + } + + if (typeof p.property.styleId !== "undefined") { + paragraph = paragraph.style(p.property.styleId); + } + + return paragraph; + } + + buildTable(t: Table) { + let table = wasm.createTable(); + t.rows.forEach(r => { + let row = wasm.createTableRow(); + r.cells.forEach(c => { + const cell = this.buildCell(c); + row = row.add_cell(cell); + }); + }); + table = table.set_grid(new Uint32Array(t.grid)); + + switch (t.property.align) { + case "center": { + table = table.align(wasm.TableAlignmentType.Center); + break; + } + case "right": { + table = table.align(wasm.TableAlignmentType.Right); + break; + } + case "left": { + table = table.align(wasm.TableAlignmentType.Left); + break; + } + } + return table; + } + + buildCell(c: TableCell) { + let cell = wasm.createTableCell(); + c.children.forEach(p => { + const paragraph = this.buildParagraph(p); + cell = cell.add_paragraph(paragraph); + }); + + if (c.property.verticalMerge === "continue") { + cell = cell.vertical_merge(wasm.VMergeType.Continue); + } else if (c.property.verticalMerge === "restart") { + cell = cell.vertical_merge(wasm.VMergeType.Restart); + } + + if (typeof c.property.gridSpan !== "undefined") { + cell = cell.grid_span(c.property.gridSpan); + } + + if (typeof c.property.width !== "undefined") { + cell = cell.width(c.property.width); + } + return cell; + } + + build() { + let docx = wasm.createDocx(); + this.children.forEach(child => { + if (child instanceof Paragraph) { + let p = this.buildParagraph(child); + docx = docx.add_paragraph(p); + } else if (child instanceof Table) { + let t = this.buildTable(child); + docx = docx.add_table(t); + } + }); + + this.numberings.forEach(n => { + let num = wasm.createNumbering(n.id); + n.levels.forEach(l => { + const level = wasm.createLevel(l.id, l.start, l.format, l.text, l.jc); + num = num.add_level(level); + }); + docx = docx.add_numbering(num); + }); + const buf = docx.build(); + docx.free(); + return buf; + } +} + +export * from "./paragraph"; +export * from "./insert"; +export * from "./delete"; +export * from "./table"; +export * from "./table-cell"; +export * from "./table-row"; +export * from "./run"; +export * from "./text"; +export * from "./comment"; +export * from "./comment-end"; +export * from "./numbering"; +export * from "./bookmark-start"; +export * from "./bookmark-end"; +export * from "./break"; +export * from "./delete-text"; +export * from "./level"; +export * from "./tab"; diff --git a/docx-wasm/js/insert.ts b/docx-wasm/js/insert.ts new file mode 100644 index 0000000..546c9d8 --- /dev/null +++ b/docx-wasm/js/insert.ts @@ -0,0 +1,20 @@ +import { Run } from "./run"; + +export class Insert { + run: Run; + _author: string | null = null; + _date: string | null = null; + constructor(run: Run) { + this.run = run; + } + + author(author: string) { + this._author = author; + return this; + } + + date(date: string) { + this._date = date; + return this; + } +} diff --git a/docx-wasm/js/level.ts b/docx-wasm/js/level.ts new file mode 100644 index 0000000..1a0f94c --- /dev/null +++ b/docx-wasm/js/level.ts @@ -0,0 +1,37 @@ +import { ParagraphProperty, SpecialIndentKind } from "./paragraph"; + +export class Level { + id: number; + start: number; + format: string; + text: string; + jc: string; + paragraphProperty: ParagraphProperty = {}; + + constructor( + id: number, + start: number, + format: string, + text: string, + jc: string + ) { + this.id = id; + this.start = start; + this.format = format; + this.text = text; + this.jc = jc; + } + + indent( + left: number, + specialIndentKind?: SpecialIndentKind, + specialIndentSize?: number + ) { + this.paragraphProperty.indent = { + left, + specialIndentKind, + specialIndentSize + }; + return this; + } +} diff --git a/docx-wasm/js/numbering.ts b/docx-wasm/js/numbering.ts new file mode 100644 index 0000000..580d712 --- /dev/null +++ b/docx-wasm/js/numbering.ts @@ -0,0 +1,13 @@ +import { Level } from "./level"; + +export class Numbering { + id: number; + levels: Level[]; + constructor(id: number) { + this.id = id; + } + addLevel(level: Level) { + this.levels.push(level); + return this; + } +} diff --git a/docx-wasm/js/paragraph.ts b/docx-wasm/js/paragraph.ts new file mode 100644 index 0000000..c6d883f --- /dev/null +++ b/docx-wasm/js/paragraph.ts @@ -0,0 +1,98 @@ +import { Run } from "./run"; +import { Insert } from "./insert"; +import { Delete } from "./delete"; +import { BookmarkStart } from "./bookmark-start"; +import { BookmarkEnd } from "./bookmark-end"; +import { Comment } from "./comment"; +import { CommentEnd } from "./comment-end"; + +export type ParagraphChild = + | Run + | Insert + | Delete + | BookmarkStart + | BookmarkEnd + | Comment + | CommentEnd; + +export type AlignmentType = "center" | "left" | "right" | "justified"; + +export type SpecialIndentKind = "firstLine" | "hanging"; + +export type ParagraphProperty = { + align?: AlignmentType; + styleId?: string; + indent?: { + left: number; + specialIndentKind?: SpecialIndentKind; + specialIndentSize?: number; + }; + numbering?: { + id: number; + level: number; + }; +}; + +export class Paragraph { + children: ParagraphChild[] = []; + property: ParagraphProperty = {}; + + addRun(run: Run) { + this.children.push(run); + return this; + } + + addInsert(ins: Insert) { + this.children.push(ins); + return this; + } + + addDelete(del: Delete) { + this.children.push(del); + return this; + } + + addBookmarkStart(id: string, name: string) { + this.children.push(new BookmarkStart(id, name)); + return this; + } + + addBookmarkEnd(id: string) { + this.children.push(new BookmarkEnd(id)); + return this; + } + + addCommentStart(comment: Comment) { + this.children.push(comment); + return this; + } + + addCommentEnd(end: CommentEnd) { + this.children.push(end); + return this; + } + + align(type: AlignmentType) { + this.property.align = type; + return this; + } + + style(id: string) { + this.property.styleId = id; + return this; + } + + indent( + left: number, + specialIndentKind?: SpecialIndentKind, + specialIndentSize?: number + ) { + this.property.indent = { left, specialIndentKind, specialIndentSize }; + return this; + } + + numbering(id: number, level: number) { + this.property.numbering = { id, level }; + return this; + } +} diff --git a/docx-wasm/js/run.ts b/docx-wasm/js/run.ts new file mode 100644 index 0000000..89113da --- /dev/null +++ b/docx-wasm/js/run.ts @@ -0,0 +1,76 @@ +import { Text } from "./text"; +import { DeleteText } from "./delete-text"; +import { Tab } from "./tab"; +import { Break, BreakType } from "./break"; + +export type RunChild = Text | DeleteText | Tab | Break; + +export type RunProperty = { + size?: number; + color?: string; + highlight?: string; + bold?: boolean; + italic?: boolean; + underline?: string; + vanish?: boolean; +}; + +export class Run { + children: RunChild[] = []; + property: RunProperty = {}; + + addText(text: string) { + this.children.push(new Text(text)); + return this; + } + + addDeleteText(text: string) { + this.children.push(new DeleteText(text)); + return this; + } + + addTab() { + this.children.push(new Tab()); + return this; + } + + addBreak(type: BreakType) { + this.children.push(new Break(type)); + return this; + } + + size(size: number) { + this.property.size = size; + return this; + } + + color(color: string) { + this.property.color = color; + return this; + } + + highlight(color: string) { + this.property.highlight = color; + return this; + } + + bold() { + this.property.bold = true; + return this; + } + + italic() { + this.property.italic = true; + return this; + } + + underline(type: string) { + this.property.underline = type; + return this; + } + + vanish() { + this.property.vanish = true; + return this; + } +} diff --git a/docx-wasm/js/tab.ts b/docx-wasm/js/tab.ts new file mode 100644 index 0000000..e995160 --- /dev/null +++ b/docx-wasm/js/tab.ts @@ -0,0 +1 @@ +export class Tab {} diff --git a/docx-wasm/js/table-cell.ts b/docx-wasm/js/table-cell.ts new file mode 100644 index 0000000..cc5cd14 --- /dev/null +++ b/docx-wasm/js/table-cell.ts @@ -0,0 +1,34 @@ +import { Paragraph } from "./paragraph"; + +export type VMergeType = "restart" | "continue"; + +export type CellProperty = { + verticalMerge?: VMergeType; + gridSpan?: number; + width?: number; +}; + +export class TableCell { + children: Paragraph[] = []; + property: CellProperty; + + addParagraph(p: Paragraph) { + this.children.push(p); + return this; + } + + verticalMerge(t: VMergeType) { + this.property.verticalMerge = t; + return this; + } + + gridSpan(v: number) { + this.property.gridSpan = v; + return this; + } + + width(v: number) { + this.property.width = v; + return this; + } +} diff --git a/docx-wasm/js/table-row.ts b/docx-wasm/js/table-row.ts new file mode 100644 index 0000000..1f12b25 --- /dev/null +++ b/docx-wasm/js/table-row.ts @@ -0,0 +1,10 @@ +import { TableCell } from "./table-cell"; + +export class TableRow { + cells: TableCell[] = []; + + addCell(cell: TableCell) { + this.cells.push(cell); + this; + } +} diff --git a/docx-wasm/js/table.ts b/docx-wasm/js/table.ts new file mode 100644 index 0000000..d30a983 --- /dev/null +++ b/docx-wasm/js/table.ts @@ -0,0 +1,40 @@ +import { TableRow } from "./table-row"; + +export type TableAlignmentType = "center" | "left" | "right"; + +export type TableProperty = { + indent?: number; + align?: TableAlignmentType; + width?: number; +}; + +export class Table { + rows: TableRow[] = []; + grid: number[] = []; + property: TableProperty; + + addRow(row: TableRow) { + this.rows.push(row); + return this; + } + + setGrid(grid: number[]) { + this.grid = grid; + return this; + } + + indent(v: number) { + this.property.indent = v; + return this; + } + + align(v: TableAlignmentType) { + this.property.align = v; + return this; + } + + width(w: number) { + this.property.width = w; + return this; + } +} diff --git a/docx-wasm/js/text.ts b/docx-wasm/js/text.ts new file mode 100644 index 0000000..0c5a248 --- /dev/null +++ b/docx-wasm/js/text.ts @@ -0,0 +1,7 @@ +export class Text { + text = ""; + + constructor(text: string) { + this.text = text; + } +} diff --git a/docx-wasm/package.json b/docx-wasm/package.json index 3f1fb50..5a23b79 100644 --- a/docx-wasm/package.json +++ b/docx-wasm/package.json @@ -1,12 +1,12 @@ { - "name": "docx-rs", - "version": "1.0.0", - "main": "index.js", + "name": "docx-wasm", + "version": "0.0.11", + "main": "dist/index.js", "author": "bokuweb ", "license": "MIT", "scripts": { - "build": "webpack", - "serve": "webpack-dev-server" + "build": "tsc -p .", + "serve": "webpack-dev-server --open --config webpack.dev.js" }, "resolutions": { "**/serialize-javascript": "2.1.2" @@ -15,8 +15,23 @@ "@wasm-tool/wasm-pack-plugin": "1.0.1", "html-webpack-plugin": "^3.2.0", "text-encoding": "^0.7.0", + "ts-loader": "^6.2.1", + "typescript": "^3.7.5", "webpack": "^4.29.4", "webpack-cli": "^3.1.1", "webpack-dev-server": "^3.1.0" + }, + "files": [ + "dist", + "pkg/docx_wasm_bg.d.ts", + "pkg/docx_wasm_bg.wasm", + "pkg/docx_wasm.d.ts", + "pkg/docx_wasm.js" + ], + "module": "dist/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@bokuweb/docx-wasm": "0.1.0", + "docx-wasm": "0.0.10" } } diff --git a/docx-wasm/pkg/docx_rs.d.ts b/docx-wasm/pkg/docx_rs.d.ts deleted file mode 100644 index a41339b..0000000 --- a/docx-wasm/pkg/docx_rs.d.ts +++ /dev/null @@ -1,405 +0,0 @@ -/* tslint:disable */ -/** -* @param {number} id -* @param {number} start -* @param {string} format -* @param {string} text -* @param {string} jc -* @returns {Level} -*/ -export function createLevel(id: number, start: number, format: string, text: string, jc: string): Level; -/** -* @param {Run} run -* @returns {Insert} -*/ -export function createInsert(run: Run): Insert; -/** -* @returns {Docx} -*/ -export function createDocx(): Docx; -/** -* @param {Run} run -* @returns {Delete} -*/ -export function createDelete(run: Run): Delete; -/** -* @returns {Table} -*/ -export function createTable(): Table; -/** -* @returns {Paragraph} -*/ -export function createParagraph(): Paragraph; -/** -* @param {number} id -* @returns {Numbering} -*/ -export function createNumbering(id: number): Numbering; -/** -* @returns {TableRow} -*/ -export function createTableRow(): TableRow; -/** -* @returns {Run} -*/ -export function createRun(): Run; -/** -* @param {number} id -* @returns {Comment} -*/ -export function createComment(id: number): Comment; -/** -* @returns {TableCell} -*/ -export function createTableCell(): TableCell; -export enum StyleType { - Paragraph, - Character, -} -/** -*/ -export enum VMergeType { - Continue, - Restart, -} -/** -*/ -export enum WidthType { - DXA, - Auto, -} -/** -*/ -export enum BorderType { - None, - Single, - Thick, - Double, - Dotted, - Dashed, - DotDash, - DotDotDash, - Triple, -} -/** -*/ -export enum AlignmentType { - Center, - Left, - Right, - Justified, -} -/** -*/ -export enum BreakType { - Page, - Column, - TextWrapping, -} -/** -*/ -export enum FontPitchType { - Default, - Fixed, - Variable, -} -/** -*/ -export enum TableAlignmentType { - Center, - Left, - Right, -} -/** -*/ -export enum SpecialIndentKind { - FirstLine, - Hanging, -} -/** -*/ -/** -*/ -export class Comment { - free(): void; -/** -* @param {string} author -* @returns {Comment} -*/ - author(author: string): Comment; -/** -* @param {string} date -* @returns {Comment} -*/ - date(date: string): Comment; -/** -* @param {Paragraph} p -* @returns {Comment} -*/ - paragraph(p: Paragraph): Comment; -/** -* @returns {number} -*/ - id(): number; -} -/** -*/ -export class Delete { - free(): void; -/** -* @param {string} author -* @returns {Delete} -*/ - author(author: string): Delete; -/** -* @param {string} date -* @returns {Delete} -*/ - date(date: string): Delete; -} -/** -*/ -export class Docx { - free(): void; -/** -* @param {Paragraph} p -* @returns {Docx} -*/ - add_paragraph(p: Paragraph): Docx; -/** -* @param {Table} t -* @returns {Docx} -*/ - add_table(t: Table): Docx; -/** -* @param {Numbering} num -* @returns {Docx} -*/ - add_numbering(num: Numbering): Docx; -/** -* @returns {Uint8Array} -*/ - build(): Uint8Array; -} -/** -*/ -export class Insert { - free(): void; -/** -* @param {string} author -* @returns {Insert} -*/ - author(author: string): Insert; -/** -* @param {string} date -* @returns {Insert} -*/ - date(date: string): Insert; -} -/** -*/ -export class Level { - free(): void; -/** -* @param {number} left -* @param {number | undefined} special_indent_kind -* @param {number | undefined} special_indent_size -* @returns {Level} -*/ - indent(left: number, special_indent_kind?: number, special_indent_size?: number): Level; -} -/** -*/ -export class Numbering { - free(): void; -/** -* @param {Level} level -* @returns {Numbering} -*/ - add_level(level: Level): Numbering; -} -/** -*/ -export class Paragraph { - free(): void; -/** -* @param {Run} run -* @returns {Paragraph} -*/ - add_run(run: Run): Paragraph; -/** -* @param {Insert} i -* @returns {Paragraph} -*/ - add_insert(i: Insert): Paragraph; -/** -* @param {Delete} d -* @returns {Paragraph} -*/ - add_delete(d: Delete): Paragraph; -/** -* @param {string} id -* @param {string} name -* @returns {Paragraph} -*/ - add_bookmark_start(id: string, name: string): Paragraph; -/** -* @param {string} id -* @returns {Paragraph} -*/ - add_bookmark_end(id: string): Paragraph; -/** -* @param {Comment} comment -* @returns {Paragraph} -*/ - add_comment_start(comment: Comment): Paragraph; -/** -* @param {number} id -* @returns {Paragraph} -*/ - add_comment_end(id: number): Paragraph; -/** -* @param {number} alignment_type -* @returns {Paragraph} -*/ - align(alignment_type: number): Paragraph; -/** -* @param {string} style_id -* @returns {Paragraph} -*/ - style(style_id: string): Paragraph; -/** -* @param {number} left -* @param {number | undefined} special_indent_kind -* @param {number | undefined} special_indent_size -* @returns {Paragraph} -*/ - indent(left: number, special_indent_kind?: number, special_indent_size?: number): Paragraph; -/** -* @param {number} id -* @param {number} level -* @returns {Paragraph} -*/ - numbering(id: number, level: number): Paragraph; -} -/** -*/ -export class Run { - free(): void; -/** -* @param {string} text -* @returns {Run} -*/ - add_text(text: string): Run; -/** -* @param {string} text -* @returns {Run} -*/ - add_delete_text(text: string): Run; -/** -* @returns {Run} -*/ - add_tab(): Run; -/** -* @param {number} break_type -* @returns {Run} -*/ - add_break(break_type: number): Run; -/** -* @param {number} size -* @returns {Run} -*/ - size(size: number): Run; -/** -* @param {string} color -* @returns {Run} -*/ - color(color: string): Run; -/** -* @param {string} color -* @returns {Run} -*/ - highlight(color: string): Run; -/** -* @returns {Run} -*/ - bold(): Run; -/** -* @returns {Run} -*/ - italic(): Run; -/** -* @param {string} line_type -* @returns {Run} -*/ - underline(line_type: string): Run; -/** -* @returns {Run} -*/ - vanish(): Run; -} -/** -*/ -export class Table { - free(): void; -/** -* @param {TableRow} row -* @returns {Table} -*/ - add_row(row: TableRow): Table; -/** -* @param {Uint32Array} grid -* @returns {Table} -*/ - set_grid(grid: Uint32Array): Table; -/** -* @param {number} v -* @returns {Table} -*/ - indent(v: number): Table; -/** -* @param {number} v -* @returns {Table} -*/ - align(v: number): Table; -/** -* @param {number} w -* @returns {Table} -*/ - width(w: number): Table; -} -/** -*/ -export class TableCell { - free(): void; -/** -* @param {Paragraph} p -* @returns {TableCell} -*/ - add_paragraph(p: Paragraph): TableCell; -/** -* @param {number} t -* @returns {TableCell} -*/ - vertical_merge(t: number): TableCell; -/** -* @param {number} v -* @returns {TableCell} -*/ - grid_span(v: number): TableCell; -/** -* @param {number} v -* @returns {TableCell} -*/ - width(v: number): TableCell; -} -/** -*/ -export class TableRow { - free(): void; -/** -* @param {TableCell} cell -* @returns {TableRow} -*/ - add_cell(cell: TableCell): TableRow; -} diff --git a/docx-wasm/pkg/docx_rs.js b/docx-wasm/pkg/docx_rs.js deleted file mode 100644 index 1fa8a6e..0000000 --- a/docx-wasm/pkg/docx_rs.js +++ /dev/null @@ -1,967 +0,0 @@ -import * as wasm from './docx_rs_bg.wasm'; - -let WASM_VECTOR_LEN = 0; - -let cachedTextEncoder = new TextEncoder('utf-8'); - -const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; -}); - -let cachegetUint8Memory = null; -function getUint8Memory() { - if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) { - cachegetUint8Memory = new Uint8Array(wasm.memory.buffer); - } - return cachegetUint8Memory; -} - -function passStringToWasm(arg) { - - let len = arg.length; - let ptr = wasm.__wbindgen_malloc(len); - - const mem = getUint8Memory(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = wasm.__wbindgen_realloc(ptr, len, len = offset + arg.length * 3); - const view = getUint8Memory().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - - offset += ret.written; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} -/** -* @param {number} id -* @param {number} start -* @param {string} format -* @param {string} text -* @param {string} jc -* @returns {Level} -*/ -export function createLevel(id, start, format, text, jc) { - const ret = wasm.createLevel(id, start, passStringToWasm(format), WASM_VECTOR_LEN, passStringToWasm(text), WASM_VECTOR_LEN, passStringToWasm(jc), WASM_VECTOR_LEN); - return Level.__wrap(ret); -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} -/** -* @param {Run} run -* @returns {Insert} -*/ -export function createInsert(run) { - _assertClass(run, Run); - const ptr0 = run.ptr; - run.ptr = 0; - const ret = wasm.createInsert(ptr0); - return Insert.__wrap(ret); -} - -/** -* @returns {Docx} -*/ -export function createDocx() { - const ret = wasm.createDocx(); - return Docx.__wrap(ret); -} - -let cachegetInt32Memory = null; -function getInt32Memory() { - if (cachegetInt32Memory === null || cachegetInt32Memory.buffer !== wasm.memory.buffer) { - cachegetInt32Memory = new Int32Array(wasm.memory.buffer); - } - return cachegetInt32Memory; -} - -function getArrayU8FromWasm(ptr, len) { - return getUint8Memory().subarray(ptr / 1, ptr / 1 + len); -} -/** -* @param {Run} run -* @returns {Delete} -*/ -export function createDelete(run) { - _assertClass(run, Run); - const ptr0 = run.ptr; - run.ptr = 0; - const ret = wasm.createDelete(ptr0); - return Delete.__wrap(ret); -} - -/** -* @returns {Table} -*/ -export function createTable() { - const ret = wasm.createTable(); - return Table.__wrap(ret); -} - -let cachegetUint32Memory = null; -function getUint32Memory() { - if (cachegetUint32Memory === null || cachegetUint32Memory.buffer !== wasm.memory.buffer) { - cachegetUint32Memory = new Uint32Array(wasm.memory.buffer); - } - return cachegetUint32Memory; -} - -function passArray32ToWasm(arg) { - const ptr = wasm.__wbindgen_malloc(arg.length * 4); - getUint32Memory().set(arg, ptr / 4); - WASM_VECTOR_LEN = arg.length; - return ptr; -} -/** -* @returns {Paragraph} -*/ -export function createParagraph() { - const ret = wasm.createParagraph(); - return Paragraph.__wrap(ret); -} - -/** -* @param {number} id -* @returns {Numbering} -*/ -export function createNumbering(id) { - const ret = wasm.createNumbering(id); - return Numbering.__wrap(ret); -} - -/** -* @returns {TableRow} -*/ -export function createTableRow() { - const ret = wasm.createTableRow(); - return TableRow.__wrap(ret); -} - -/** -* @returns {Run} -*/ -export function createRun() { - const ret = wasm.createRun(); - return Run.__wrap(ret); -} - -/** -* @param {number} id -* @returns {Comment} -*/ -export function createComment(id) { - const ret = wasm.createComment(id); - return Comment.__wrap(ret); -} - -/** -* @returns {TableCell} -*/ -export function createTableCell() { - const ret = wasm.createTableCell(); - return TableCell.__wrap(ret); -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -function getStringFromWasm(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len)); -} - -const heap = new Array(32); - -heap.fill(undefined); - -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function getObject(idx) { return heap[idx]; } - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -/** -*/ -export const StyleType = Object.freeze({ Paragraph:0,Character:1, }); -/** -*/ -export const VMergeType = Object.freeze({ Continue:0,Restart:1, }); -/** -*/ -export const WidthType = Object.freeze({ DXA:0,Auto:1, }); -/** -*/ -export const BorderType = Object.freeze({ None:0,Single:1,Thick:2,Double:3,Dotted:4,Dashed:5,DotDash:6,DotDotDash:7,Triple:8, }); -/** -*/ -export const AlignmentType = Object.freeze({ Center:0,Left:1,Right:2,Justified:3, }); -/** -*/ -export const BreakType = Object.freeze({ Page:0,Column:1,TextWrapping:2, }); -/** -*/ -export const FontPitchType = Object.freeze({ Default:0,Fixed:1,Variable:2, }); -/** -*/ -export const TableAlignmentType = Object.freeze({ Center:0,Left:1,Right:2, }); -/** -*/ -export const SpecialIndentKind = Object.freeze({ FirstLine:0,Hanging:1, }); -/** -*/ -export class Comment { - - static __wrap(ptr) { - const obj = Object.create(Comment.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_comment_free(ptr); - } - /** - * @param {string} author - * @returns {Comment} - */ - author(author) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.comment_author(ptr, passStringToWasm(author), WASM_VECTOR_LEN); - return Comment.__wrap(ret); - } - /** - * @param {string} date - * @returns {Comment} - */ - date(date) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.comment_date(ptr, passStringToWasm(date), WASM_VECTOR_LEN); - return Comment.__wrap(ret); - } - /** - * @param {Paragraph} p - * @returns {Comment} - */ - paragraph(p) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(p, Paragraph); - const ptr0 = p.ptr; - p.ptr = 0; - const ret = wasm.comment_paragraph(ptr, ptr0); - return Comment.__wrap(ret); - } - /** - * @returns {number} - */ - id() { - const ret = wasm.comment_id(this.ptr); - return ret >>> 0; - } -} -/** -*/ -export class Delete { - - static __wrap(ptr) { - const obj = Object.create(Delete.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_delete_free(ptr); - } - /** - * @param {string} author - * @returns {Delete} - */ - author(author) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.delete_author(ptr, passStringToWasm(author), WASM_VECTOR_LEN); - return Delete.__wrap(ret); - } - /** - * @param {string} date - * @returns {Delete} - */ - date(date) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.delete_date(ptr, passStringToWasm(date), WASM_VECTOR_LEN); - return Delete.__wrap(ret); - } -} -/** -*/ -export class Docx { - - static __wrap(ptr) { - const obj = Object.create(Docx.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_docx_free(ptr); - } - /** - * @param {Paragraph} p - * @returns {Docx} - */ - add_paragraph(p) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(p, Paragraph); - const ptr0 = p.ptr; - p.ptr = 0; - const ret = wasm.docx_add_paragraph(ptr, ptr0); - return Docx.__wrap(ret); - } - /** - * @param {Table} t - * @returns {Docx} - */ - add_table(t) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(t, Table); - const ptr0 = t.ptr; - t.ptr = 0; - const ret = wasm.docx_add_table(ptr, ptr0); - return Docx.__wrap(ret); - } - /** - * @param {Numbering} num - * @returns {Docx} - */ - add_numbering(num) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(num, Numbering); - const ptr0 = num.ptr; - num.ptr = 0; - const ret = wasm.docx_add_numbering(ptr, ptr0); - return Docx.__wrap(ret); - } - /** - * @returns {Uint8Array} - */ - build() { - const retptr = 8; - const ret = wasm.docx_build(retptr, this.ptr); - const memi32 = getInt32Memory(); - const v0 = getArrayU8FromWasm(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1]).slice(); - wasm.__wbindgen_free(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1] * 1); - return v0; - } -} -/** -*/ -export class Insert { - - static __wrap(ptr) { - const obj = Object.create(Insert.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_insert_free(ptr); - } - /** - * @param {string} author - * @returns {Insert} - */ - author(author) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.insert_author(ptr, passStringToWasm(author), WASM_VECTOR_LEN); - return Insert.__wrap(ret); - } - /** - * @param {string} date - * @returns {Insert} - */ - date(date) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.insert_date(ptr, passStringToWasm(date), WASM_VECTOR_LEN); - return Insert.__wrap(ret); - } -} -/** -*/ -export class Level { - - static __wrap(ptr) { - const obj = Object.create(Level.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_level_free(ptr); - } - /** - * @param {number} left - * @param {number | undefined} special_indent_kind - * @param {number | undefined} special_indent_size - * @returns {Level} - */ - indent(left, special_indent_kind, special_indent_size) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.level_indent(ptr, left, isLikeNone(special_indent_kind) ? 2 : special_indent_kind, !isLikeNone(special_indent_size), isLikeNone(special_indent_size) ? 0 : special_indent_size); - return Level.__wrap(ret); - } -} -/** -*/ -export class Numbering { - - static __wrap(ptr) { - const obj = Object.create(Numbering.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_numbering_free(ptr); - } - /** - * @param {Level} level - * @returns {Numbering} - */ - add_level(level) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(level, Level); - const ptr0 = level.ptr; - level.ptr = 0; - const ret = wasm.numbering_add_level(ptr, ptr0); - return Numbering.__wrap(ret); - } -} -/** -*/ -export class Paragraph { - - static __wrap(ptr) { - const obj = Object.create(Paragraph.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_paragraph_free(ptr); - } - /** - * @param {Run} run - * @returns {Paragraph} - */ - add_run(run) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(run, Run); - const ptr0 = run.ptr; - run.ptr = 0; - const ret = wasm.paragraph_add_run(ptr, ptr0); - return Paragraph.__wrap(ret); - } - /** - * @param {Insert} i - * @returns {Paragraph} - */ - add_insert(i) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(i, Insert); - const ptr0 = i.ptr; - i.ptr = 0; - const ret = wasm.paragraph_add_insert(ptr, ptr0); - return Paragraph.__wrap(ret); - } - /** - * @param {Delete} d - * @returns {Paragraph} - */ - add_delete(d) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(d, Delete); - const ptr0 = d.ptr; - d.ptr = 0; - const ret = wasm.paragraph_add_delete(ptr, ptr0); - return Paragraph.__wrap(ret); - } - /** - * @param {string} id - * @param {string} name - * @returns {Paragraph} - */ - add_bookmark_start(id, name) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_add_bookmark_start(ptr, passStringToWasm(id), WASM_VECTOR_LEN, passStringToWasm(name), WASM_VECTOR_LEN); - return Paragraph.__wrap(ret); - } - /** - * @param {string} id - * @returns {Paragraph} - */ - add_bookmark_end(id) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_add_bookmark_end(ptr, passStringToWasm(id), WASM_VECTOR_LEN); - return Paragraph.__wrap(ret); - } - /** - * @param {Comment} comment - * @returns {Paragraph} - */ - add_comment_start(comment) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(comment, Comment); - const ptr0 = comment.ptr; - comment.ptr = 0; - const ret = wasm.paragraph_add_comment_start(ptr, ptr0); - return Paragraph.__wrap(ret); - } - /** - * @param {number} id - * @returns {Paragraph} - */ - add_comment_end(id) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_add_comment_end(ptr, id); - return Paragraph.__wrap(ret); - } - /** - * @param {number} alignment_type - * @returns {Paragraph} - */ - align(alignment_type) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_align(ptr, alignment_type); - return Paragraph.__wrap(ret); - } - /** - * @param {string} style_id - * @returns {Paragraph} - */ - style(style_id) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_style(ptr, passStringToWasm(style_id), WASM_VECTOR_LEN); - return Paragraph.__wrap(ret); - } - /** - * @param {number} left - * @param {number | undefined} special_indent_kind - * @param {number | undefined} special_indent_size - * @returns {Paragraph} - */ - indent(left, special_indent_kind, special_indent_size) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_indent(ptr, left, isLikeNone(special_indent_kind) ? 2 : special_indent_kind, !isLikeNone(special_indent_size), isLikeNone(special_indent_size) ? 0 : special_indent_size); - return Paragraph.__wrap(ret); - } - /** - * @param {number} id - * @param {number} level - * @returns {Paragraph} - */ - numbering(id, level) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.paragraph_numbering(ptr, id, level); - return Paragraph.__wrap(ret); - } -} -/** -*/ -export class Run { - - static __wrap(ptr) { - const obj = Object.create(Run.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_run_free(ptr); - } - /** - * @param {string} text - * @returns {Run} - */ - add_text(text) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_add_text(ptr, passStringToWasm(text), WASM_VECTOR_LEN); - return Run.__wrap(ret); - } - /** - * @param {string} text - * @returns {Run} - */ - add_delete_text(text) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_add_delete_text(ptr, passStringToWasm(text), WASM_VECTOR_LEN); - return Run.__wrap(ret); - } - /** - * @returns {Run} - */ - add_tab() { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_add_tab(ptr); - return Run.__wrap(ret); - } - /** - * @param {number} break_type - * @returns {Run} - */ - add_break(break_type) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_add_break(ptr, break_type); - return Run.__wrap(ret); - } - /** - * @param {number} size - * @returns {Run} - */ - size(size) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_size(ptr, size); - return Run.__wrap(ret); - } - /** - * @param {string} color - * @returns {Run} - */ - color(color) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_color(ptr, passStringToWasm(color), WASM_VECTOR_LEN); - return Run.__wrap(ret); - } - /** - * @param {string} color - * @returns {Run} - */ - highlight(color) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_highlight(ptr, passStringToWasm(color), WASM_VECTOR_LEN); - return Run.__wrap(ret); - } - /** - * @returns {Run} - */ - bold() { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_bold(ptr); - return Run.__wrap(ret); - } - /** - * @returns {Run} - */ - italic() { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_italic(ptr); - return Run.__wrap(ret); - } - /** - * @param {string} line_type - * @returns {Run} - */ - underline(line_type) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_underline(ptr, passStringToWasm(line_type), WASM_VECTOR_LEN); - return Run.__wrap(ret); - } - /** - * @returns {Run} - */ - vanish() { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.run_vanish(ptr); - return Run.__wrap(ret); - } -} -/** -*/ -export class Table { - - static __wrap(ptr) { - const obj = Object.create(Table.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_table_free(ptr); - } - /** - * @param {TableRow} row - * @returns {Table} - */ - add_row(row) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(row, TableRow); - const ptr0 = row.ptr; - row.ptr = 0; - const ret = wasm.table_add_row(ptr, ptr0); - return Table.__wrap(ret); - } - /** - * @param {Uint32Array} grid - * @returns {Table} - */ - set_grid(grid) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.table_set_grid(ptr, passArray32ToWasm(grid), WASM_VECTOR_LEN); - return Table.__wrap(ret); - } - /** - * @param {number} v - * @returns {Table} - */ - indent(v) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.table_indent(ptr, v); - return Table.__wrap(ret); - } - /** - * @param {number} v - * @returns {Table} - */ - align(v) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.table_align(ptr, v); - return Table.__wrap(ret); - } - /** - * @param {number} w - * @returns {Table} - */ - width(w) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.table_width(ptr, w); - return Table.__wrap(ret); - } -} -/** -*/ -export class TableCell { - - static __wrap(ptr) { - const obj = Object.create(TableCell.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_tablecell_free(ptr); - } - /** - * @param {Paragraph} p - * @returns {TableCell} - */ - add_paragraph(p) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(p, Paragraph); - const ptr0 = p.ptr; - p.ptr = 0; - const ret = wasm.tablecell_add_paragraph(ptr, ptr0); - return TableCell.__wrap(ret); - } - /** - * @param {number} t - * @returns {TableCell} - */ - vertical_merge(t) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.tablecell_vertical_merge(ptr, t); - return TableCell.__wrap(ret); - } - /** - * @param {number} v - * @returns {TableCell} - */ - grid_span(v) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.tablecell_grid_span(ptr, v); - return TableCell.__wrap(ret); - } - /** - * @param {number} v - * @returns {TableCell} - */ - width(v) { - const ptr = this.ptr; - this.ptr = 0; - const ret = wasm.tablecell_width(ptr, v); - return TableCell.__wrap(ret); - } -} -/** -*/ -export class TableRow { - - static __wrap(ptr) { - const obj = Object.create(TableRow.prototype); - obj.ptr = ptr; - - return obj; - } - - free() { - const ptr = this.ptr; - this.ptr = 0; - - wasm.__wbg_tablerow_free(ptr); - } - /** - * @param {TableCell} cell - * @returns {TableRow} - */ - add_cell(cell) { - const ptr = this.ptr; - this.ptr = 0; - _assertClass(cell, TableCell); - const ptr0 = cell.ptr; - cell.ptr = 0; - const ret = wasm.tablerow_add_cell(ptr, ptr0); - return TableRow.__wrap(ret); - } -} - -export const __wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm(arg0, arg1); - return addHeapObject(ret); -}; - -export const __wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm(arg0, arg1)); -}; - -export const __wbindgen_rethrow = function(arg0) { - throw takeObject(arg0); -}; - diff --git a/docx-wasm/pkg/docx_rs_bg.d.ts b/docx-wasm/pkg/docx_rs_bg.d.ts deleted file mode 100644 index 9d3c686..0000000 --- a/docx-wasm/pkg/docx_rs_bg.d.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* tslint:disable */ -export const memory: WebAssembly.Memory; -export function __wbg_level_free(a: number): void; -export function createLevel(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number; -export function level_indent(a: number, b: number, c: number, d: number, e: number): number; -export function __wbg_insert_free(a: number): void; -export function createInsert(a: number): number; -export function insert_author(a: number, b: number, c: number): number; -export function insert_date(a: number, b: number, c: number): number; -export function __wbg_docx_free(a: number): void; -export function createDocx(): number; -export function docx_add_paragraph(a: number, b: number): number; -export function docx_add_table(a: number, b: number): number; -export function docx_add_numbering(a: number, b: number): number; -export function docx_build(a: number, b: number): void; -export function __wbg_delete_free(a: number): void; -export function createDelete(a: number): number; -export function delete_author(a: number, b: number, c: number): number; -export function delete_date(a: number, b: number, c: number): number; -export function __wbg_table_free(a: number): void; -export function createTable(): number; -export function table_add_row(a: number, b: number): number; -export function table_set_grid(a: number, b: number, c: number): number; -export function table_indent(a: number, b: number): number; -export function table_align(a: number, b: number): number; -export function table_width(a: number, b: number): number; -export function __wbg_paragraph_free(a: number): void; -export function createParagraph(): number; -export function paragraph_add_run(a: number, b: number): number; -export function paragraph_add_insert(a: number, b: number): number; -export function paragraph_add_delete(a: number, b: number): number; -export function paragraph_add_bookmark_start(a: number, b: number, c: number, d: number, e: number): number; -export function paragraph_add_bookmark_end(a: number, b: number, c: number): number; -export function paragraph_add_comment_start(a: number, b: number): number; -export function paragraph_add_comment_end(a: number, b: number): number; -export function paragraph_align(a: number, b: number): number; -export function paragraph_style(a: number, b: number, c: number): number; -export function paragraph_indent(a: number, b: number, c: number, d: number, e: number): number; -export function paragraph_numbering(a: number, b: number, c: number): number; -export function __wbg_numbering_free(a: number): void; -export function createNumbering(a: number): number; -export function numbering_add_level(a: number, b: number): number; -export function __wbg_tablerow_free(a: number): void; -export function createTableRow(): number; -export function tablerow_add_cell(a: number, b: number): number; -export function __wbg_run_free(a: number): void; -export function createRun(): number; -export function run_add_text(a: number, b: number, c: number): number; -export function run_add_delete_text(a: number, b: number, c: number): number; -export function run_add_tab(a: number): number; -export function run_add_break(a: number, b: number): number; -export function run_size(a: number, b: number): number; -export function run_color(a: number, b: number, c: number): number; -export function run_highlight(a: number, b: number, c: number): number; -export function run_bold(a: number): number; -export function run_italic(a: number): number; -export function run_underline(a: number, b: number, c: number): number; -export function run_vanish(a: number): number; -export function __wbg_comment_free(a: number): void; -export function createComment(a: number): number; -export function comment_author(a: number, b: number, c: number): number; -export function comment_date(a: number, b: number, c: number): number; -export function comment_paragraph(a: number, b: number): number; -export function comment_id(a: number): number; -export function __wbg_tablecell_free(a: number): void; -export function createTableCell(): number; -export function tablecell_add_paragraph(a: number, b: number): number; -export function tablecell_vertical_merge(a: number, b: number): number; -export function tablecell_grid_span(a: number, b: number): number; -export function tablecell_width(a: number, b: number): number; -export function __wbindgen_malloc(a: number): number; -export function __wbindgen_realloc(a: number, b: number, c: number): number; -export function __wbindgen_free(a: number, b: number): void; diff --git a/docx-wasm/pkg/docx_rs_bg.wasm b/docx-wasm/pkg/docx_rs_bg.wasm deleted file mode 100644 index 968698902eb8aa7e208881ad8f2aec4c979c3bc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335781 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" ], "version": "0.1.0", "files": [ - "docx_rs_bg.wasm", - "docx_rs.js", - "docx_rs.d.ts" + "index_bg.wasm", + "index.js", + "index.d.ts" ], - "module": "docx_rs.js", - "types": "docx_rs.d.ts", + "module": "index.js", + "types": "index.d.ts", "sideEffects": "false" } \ No newline at end of file diff --git a/docx-wasm/tsconfig.json b/docx-wasm/tsconfig.json new file mode 100644 index 0000000..c45030d --- /dev/null +++ b/docx-wasm/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "esNext", + "moduleResolution": "node", + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noEmitOnError": true, + "strictNullChecks": true, + "target": "es6", + "sourceMap": true, + "esModuleInterop": true, + "outDir": "dist", + "declaration": true + } +} diff --git a/docx-wasm/webpack.common.js b/docx-wasm/webpack.common.js new file mode 100644 index 0000000..84fa624 --- /dev/null +++ b/docx-wasm/webpack.common.js @@ -0,0 +1,24 @@ +const path = require("path"); +const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); + +module.exports = { + entry: "./example/index.ts", + output: { + path: path.resolve(__dirname, "dist"), + filename: "index.js" + }, + module: { + rules: [ + { + test: /\.ts$/, + use: "ts-loader", + exclude: /node_modules/ + } + ] + }, + resolve: { + extensions: [".ts", ".js"] + }, + plugins: [], + mode: "development" +}; diff --git a/docx-wasm/webpack.config.js b/docx-wasm/webpack.config.js deleted file mode 100644 index c7f59b1..0000000 --- a/docx-wasm/webpack.config.js +++ /dev/null @@ -1,25 +0,0 @@ -const path = require("path"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const webpack = require("webpack"); -const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); - -module.exports = { - entry: "./index.js", - output: { - path: path.resolve(__dirname, "dist"), - filename: "index.js" - }, - plugins: [ - new HtmlWebpackPlugin({ template: "assets/template.html" }), - new WasmPackPlugin({ - crateDirectory: path.resolve(__dirname, ".") - }), - // Have this example work in Edge which doesn't ship `TextEncoder` or - // `TextDecoder` at this time. - new webpack.ProvidePlugin({ - TextDecoder: ["text-encoding", "TextDecoder"], - TextEncoder: ["text-encoding", "TextEncoder"] - }) - ], - mode: "development" -}; diff --git a/docx-wasm/webpack.dev.js b/docx-wasm/webpack.dev.js new file mode 100644 index 0000000..6b094f7 --- /dev/null +++ b/docx-wasm/webpack.dev.js @@ -0,0 +1,15 @@ +const path = require("path"); +const merge = require("webpack-merge"); +const common = require("./webpack.common.js"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); + +module.exports = merge(common, { + plugins: [ + ...common.plugins, + new HtmlWebpackPlugin({ template: "assets/template.html" }) + // new WasmPackPlugin({ + // crateDirectory: path.resolve(__dirname, ".") + // }) + ] +}); diff --git a/docx-wasm/webpack.prod.js b/docx-wasm/webpack.prod.js new file mode 100644 index 0000000..14b3f73 --- /dev/null +++ b/docx-wasm/webpack.prod.js @@ -0,0 +1,13 @@ +const path = require("path"); +const merge = require("webpack-merge"); +const common = require("./webpack.common.js"); +const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); + +module.exports = merge(common, { + mode: "production", + plugins: [ + new WasmPackPlugin({ + crateDirectory: path.resolve(__dirname, ".") + }) + ] +}); diff --git a/docx-wasm/yarn.lock b/docx-wasm/yarn.lock index 25d9603..ece228c 100644 --- a/docx-wasm/yarn.lock +++ b/docx-wasm/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@bokuweb/docx-wasm@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@bokuweb/docx-wasm/-/docx-wasm-0.1.0.tgz#ab6ea97aa31d9166fac53908a91da618deabd39d" + integrity sha512-37IeYZVtO8o99zrCR95Owvx624q2LZ0or80ZrrJ5VJFLEoIn9jJngL1783983ZRYYRYSKQv6kh3qUzNUj6K9mg== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -476,6 +481,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -628,7 +640,7 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@2.4.2, chalk@^2.4.1: +chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1116,6 +1128,21 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +docx-wasm@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/docx-wasm/-/docx-wasm-0.0.10.tgz#d32b217ac7cbe7c0cda075c2e1788db23296e88b" + integrity sha512-559IyPaKI+PKbXifJMr9qVVqs1fzIs+awhIuDkinl/5zpFdVrHyqfj43h55eNFxMmbZ1x6tijruLlAcNgcKHTw== + dependencies: + "@bokuweb/docx-wasm" "0.1.0" + docx-wasm "^0.0.9" + +docx-wasm@^0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/docx-wasm/-/docx-wasm-0.0.9.tgz#ddd47229087e8bbcdfac492f80e4110f71502935" + integrity sha512-HMu2gCcXhSaGUYByOP1ZgjttgGHfFh/nOGL7c58aYoEsSvRXePJHefYCDd1gAZLe7Bf0qsfpsylRfRJLir9dLQ== + dependencies: + "@bokuweb/docx-wasm" "0.1.0" + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -1228,6 +1255,15 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" +enhanced-resolve@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -1467,6 +1503,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -2144,6 +2187,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -2289,7 +2337,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -2401,6 +2449,14 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -2430,6 +2486,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -3009,6 +3073,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +picomatch@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3407,7 +3476,7 @@ semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -3873,6 +3942,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -3893,6 +3969,17 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +ts-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.1.tgz#67939d5772e8a8c6bdaf6277ca023a4812da02ef" + integrity sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -3916,6 +4003,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^3.7.5: + version "3.7.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== + uglify-js@3.4.x: version "3.4.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"