Compare commits

..

111 Commits
7.4.1 ... 7.5.0

Author SHA1 Message Date
0e818c8d73 Version bump 2022-09-22 09:21:04 +01:00
401de9147c Merge pull request #1668 from dolanmiu/dependabot/npm_and_yarn/ts-loader-9.4.1
build(deps-dev): bump ts-loader from 9.3.1 to 9.4.1
2022-09-22 09:13:23 +01:00
563e10fa92 Merge pull request #1667 from dolanmiu/dependabot/npm_and_yarn/cspell-6.10.1
build(deps-dev): bump cspell from 6.9.0 to 6.10.1
2022-09-22 09:13:15 +01:00
a22c34d8c2 Merge pull request #1666 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.15
build(deps-dev): bump typedoc from 0.23.14 to 0.23.15
2022-09-22 09:13:06 +01:00
e549f8ae61 Merge pull request #1662 from dolanmiu/feat/tslint-to-eslint
TSLint to ESLint
2022-09-22 09:12:55 +01:00
0ac23d0646 Add tests and bump coverage 2022-09-22 07:19:14 +01:00
814d3892f2 build(deps-dev): bump ts-loader from 9.3.1 to 9.4.1
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 9.3.1 to 9.4.1.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/compare/v9.3.1...9.4.1)

---
updated-dependencies:
- dependency-name: ts-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-21 11:01:46 +00:00
07d1306a35 build(deps-dev): bump cspell from 6.9.0 to 6.10.1
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.9.0 to 6.10.1.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.9.0...v6.10.1)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 11:01:13 +00:00
5950055cca Fix linting and add new lint rules 2022-09-19 20:48:50 +01:00
d6dd468e84 build(deps-dev): bump typedoc from 0.23.14 to 0.23.15
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.14 to 0.23.15.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.14...v0.23.15)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 11:01:38 +00:00
9a221a01ab Merge pull request #1663 from dolanmiu/dependabot/npm_and_yarn/cspell-6.9.0
build(deps-dev): bump cspell from 6.8.2 to 6.9.0
2022-09-17 02:22:26 +01:00
2a78a29b08 build(deps-dev): bump cspell from 6.8.2 to 6.9.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.8.2 to 6.9.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.8.2...v6.9.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-16 11:00:59 +00:00
e90d97b813 Use new eslint-plugin-functional instead of tslint-immutable 2022-09-15 20:00:50 +01:00
d020d59b11 Merge branch 'master' into feat/tslint-to-eslint
# Conflicts:
#	src/file/numbering/level.spec.ts
#	src/file/numbering/level.ts
2022-09-15 18:04:48 +01:00
5d6d52a465 Merge pull request #1661 from dolanmiu/feat/is-legal-numbering
#1660 Add w:isLgl
2022-09-15 13:18:00 +01:00
ebb3f8137e #1660 Add w:isLgl 2022-09-15 13:08:49 +01:00
af7d275c27 Merge pull request #1636 from MLD5000/create-packer-stream
Create packer stream "toStream"
2022-09-15 13:04:15 +01:00
2b01a6006c Fix linting 2022-09-15 12:39:30 +01:00
9f3940746a Add tests for stream packer 2022-09-15 08:15:38 +01:00
9f729b3bb3 Merge pull request #1658 from dolanmiu/dependabot/npm_and_yarn/cspell-6.8.2
build(deps-dev): bump cspell from 6.8.1 to 6.8.2
2022-09-15 02:53:33 +01:00
2376fb5834 Merge pull request #1659 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.18
build(deps): bump @types/node from 18.7.16 to 18.7.18
2022-09-15 02:53:21 +01:00
0a1507599b build(deps): bump @types/node from 18.7.16 to 18.7.18
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.16 to 18.7.18.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 11:01:01 +00:00
42bb01c416 build(deps-dev): bump cspell from 6.8.1 to 6.8.2
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.8.1 to 6.8.2.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.8.1...v6.8.2)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 11:02:24 +00:00
cfb0ae7428 Merge pull request #1653 from dolanmiu/dependabot/npm_and_yarn/json-schema-0.4.0
build(deps): bump json-schema from 0.2.3 to 0.4.0
2022-09-11 05:33:31 +01:00
6b30f44da0 Merge pull request #1651 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.16
build(deps): bump @types/node from 18.7.13 to 18.7.16
2022-09-11 05:33:12 +01:00
a7f89ac58f Merge pull request #1650 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.14
build(deps-dev): bump typedoc from 0.23.11 to 0.23.14
2022-09-11 05:32:57 +01:00
38711f04bc build(deps): bump @types/node from 18.7.13 to 18.7.16
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.13 to 18.7.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-11 04:18:13 +00:00
78fd99c26e build(deps): bump json-schema from 0.2.3 to 0.4.0
Bumps [json-schema](https://github.com/kriszyp/json-schema) from 0.2.3 to 0.4.0.
- [Release notes](https://github.com/kriszyp/json-schema/releases)
- [Commits](https://github.com/kriszyp/json-schema/compare/v0.2.3...v0.4.0)

---
updated-dependencies:
- dependency-name: json-schema
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-11 04:17:47 +00:00
cae10d4611 Merge pull request #1648 from dolanmiu/dependabot/npm_and_yarn/types/prompt-1.1.3
build(deps-dev): bump @types/prompt from 1.1.2 to 1.1.3
2022-09-11 05:17:23 +01:00
40233dbf87 Merge pull request #1646 from dolanmiu/dependabot/npm_and_yarn/types/glob-8.0.0
build(deps-dev): bump @types/glob from 7.2.0 to 8.0.0
2022-09-11 05:17:12 +01:00
35865e46f0 build(deps-dev): bump typedoc from 0.23.11 to 0.23.14
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.11 to 0.23.14.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.11...v0.23.14)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 15:34:40 +00:00
ea565d8f71 build(deps-dev): bump @types/prompt from 1.1.2 to 1.1.3
Bumps [@types/prompt](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompt) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompt)

---
updated-dependencies:
- dependency-name: "@types/prompt"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 11:01:21 +00:00
859a3f4015 build(deps-dev): bump @types/glob from 7.2.0 to 8.0.0
Bumps [@types/glob](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/glob) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/glob)

---
updated-dependencies:
- dependency-name: "@types/glob"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-31 11:01:19 +00:00
ebcb37cbed Fix ESLinting errors and remove TSLint 2022-08-31 08:59:27 +01:00
1bdf9a4987 Initial ESlint conversion 2022-08-31 07:52:27 +01:00
d7a9cb2168 Merge pull request #1640 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.11
build(deps-dev): bump typedoc from 0.23.10 to 0.23.11
2022-08-28 06:08:29 +01:00
8890e13ccb Merge pull request #1641 from dolanmiu/dependabot/npm_and_yarn/cspell-6.8.1
build(deps-dev): bump cspell from 6.8.0 to 6.8.1
2022-08-28 06:08:13 +01:00
87e1844f04 build(deps-dev): bump cspell from 6.8.0 to 6.8.1
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.8.0 to 6.8.1.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.8.0...v6.8.1)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 11:01:29 +00:00
388030c6ec build(deps-dev): bump typedoc from 0.23.10 to 0.23.11
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.10 to 0.23.11.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.10...v0.23.11)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 11:00:54 +00:00
d5bd407802 Merge pull request #1601 from AdaEniac/patch-3
Update hyperlink.ts
2022-08-25 01:54:31 +01:00
ba4dc2ed54 Fix formatting 2022-08-25 01:40:14 +01:00
c982e64996 formatting 2022-08-24 13:01:15 -05:00
0425939668 Merge pull request #1638 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.13
build(deps): bump @types/node from 18.7.11 to 18.7.13
2022-08-24 13:22:07 +01:00
48b804b765 build(deps): bump @types/node from 18.7.11 to 18.7.13
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.11 to 18.7.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-24 11:01:27 +00:00
246ae6e6bc Merge pull request #1637 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.11
build(deps): bump @types/node from 18.7.9 to 18.7.11
2022-08-24 02:36:11 +01:00
efa5b65e45 build(deps): bump @types/node from 18.7.9 to 18.7.11
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.9 to 18.7.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 11:00:56 +00:00
f4f6ee5055 Created toStream example 2022-08-22 15:26:52 -05:00
1a630bcb4d Added toStream export function
New Function returns a NodeJS readable stream that allows piping DOCX document data to stream.
2022-08-22 13:25:59 -07:00
600fef21f6 Update webpack.config.ts for nodestreams
Without this alias, JSZip throws a "nodestream not supported on this platform" error.  This addition resolves the issue.
2022-08-22 13:24:12 -07:00
b779ee79a5 Merge pull request #1633 from Volper212/master
Add toString to Packer
2022-08-22 18:40:38 +01:00
08537944ae Merge pull request #1635 from dolanmiu/dependabot/npm_and_yarn/cspell-6.8.0
build(deps-dev): bump cspell from 6.6.1 to 6.8.0
2022-08-22 18:30:49 +01:00
004b3641eb Merge pull request #1634 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.9
build(deps): bump @types/node from 18.7.4 to 18.7.9
2022-08-22 18:30:40 +01:00
b6be05a931 Add test for Packer.toString 2022-08-22 19:08:29 +02:00
191cc071c2 build(deps-dev): bump cspell from 6.6.1 to 6.8.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.6.1 to 6.8.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.6.1...v6.8.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 11:01:11 +00:00
9e52c46ad3 build(deps): bump @types/node from 18.7.4 to 18.7.9
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.4 to 18.7.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 11:00:51 +00:00
21f7662a77 Add toString to Packer 2022-08-17 18:52:19 +02:00
d4d7f92df8 Merge pull request #1629 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.4
build(deps): bump @types/node from 18.7.2 to 18.7.4
2022-08-15 12:13:25 +01:00
a3180fd70d build(deps): bump @types/node from 18.7.2 to 18.7.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.2 to 18.7.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 11:01:06 +00:00
3dc4f8e87a Merge pull request #1626 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.2
build(deps): bump @types/node from 18.7.1 to 18.7.2
2022-08-15 11:21:47 +01:00
64393d92a5 build(deps): bump @types/node from 18.7.1 to 18.7.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.1 to 18.7.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-12 11:00:49 +00:00
1fbd405e41 Merge pull request #1625 from dolanmiu/dependabot/npm_and_yarn/cspell-6.6.1
build(deps-dev): bump cspell from 6.6.0 to 6.6.1
2022-08-12 00:42:24 +01:00
f711aa1b58 Merge pull request #1624 from dolanmiu/dependabot/npm_and_yarn/types/node-18.7.1
build(deps): bump @types/node from 18.6.5 to 18.7.1
2022-08-12 00:42:10 +01:00
e2e527ce44 build(deps-dev): bump cspell from 6.6.0 to 6.6.1
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.6.0 to 6.6.1.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.6.0...v6.6.1)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-11 11:02:44 +00:00
bb7f48c021 build(deps): bump @types/node from 18.6.5 to 18.7.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.5 to 18.7.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-11 11:02:08 +00:00
ad9b64e7ae Merge pull request #1620 from dolanmiu/dependabot/npm_and_yarn/cspell-6.6.0
build(deps-dev): bump cspell from 6.5.0 to 6.6.0
2022-08-11 04:11:38 +01:00
ef2ee6d00d Merge pull request #1621 from dolanmiu/dependabot/npm_and_yarn/tsconfig-paths-4.1.0
build(deps-dev): bump tsconfig-paths from 4.0.0 to 4.1.0
2022-08-11 04:11:27 +01:00
2d259c4edc Merge pull request #1623 from dolanmiu/dependabot/npm_and_yarn/types/node-18.6.5
build(deps): bump @types/node from 18.6.4 to 18.6.5
2022-08-11 04:11:16 +01:00
b286e3ae09 build(deps): bump @types/node from 18.6.4 to 18.6.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.4 to 18.6.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-09 11:00:59 +00:00
ec3e193672 build(deps-dev): bump tsconfig-paths from 4.0.0 to 4.1.0
Bumps [tsconfig-paths](https://github.com/dividab/tsconfig-paths) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/dividab/tsconfig-paths/releases)
- [Changelog](https://github.com/dividab/tsconfig-paths/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dividab/tsconfig-paths/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: tsconfig-paths
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 11:01:39 +00:00
40a2fcd81e build(deps-dev): bump cspell from 6.5.0 to 6.6.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.5.0 to 6.6.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.5.0...v6.6.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 11:01:22 +00:00
7e876bad7e Merge pull request #1617 from dolanmiu/dependabot/npm_and_yarn/types/node-18.6.4
build(deps): bump @types/node from 18.6.3 to 18.6.4
2022-08-05 22:44:28 +01:00
aefa3b102c build(deps): bump @types/node from 18.6.3 to 18.6.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.3 to 18.6.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 11:01:13 +00:00
4d1f295a26 Merge pull request #1616 from dolanmiu/dependabot/npm_and_yarn/jszip-3.10.1
build(deps): bump jszip from 3.10.0 to 3.10.1
2022-08-04 03:14:28 +01:00
56a31faf7e build(deps): bump jszip from 3.10.0 to 3.10.1
Bumps [jszip](https://github.com/Stuk/jszip) from 3.10.0 to 3.10.1.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/main/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.10.0...v3.10.1)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-03 11:00:52 +00:00
f3afef01b0 Merge pull request #1612 from dolanmiu/dependabot/npm_and_yarn/tsconfig-paths-webpack-plugin-4.0.0
build(deps-dev): bump tsconfig-paths-webpack-plugin from 3.5.2 to 4.0.0
2022-08-03 01:55:48 +01:00
ea38655c48 Merge pull request #1610 from dolanmiu/dependabot/npm_and_yarn/types/node-18.6.3
build(deps): bump @types/node from 18.6.1 to 18.6.3
2022-08-03 01:55:39 +01:00
972d06b492 Merge pull request #1611 from dolanmiu/dependabot/npm_and_yarn/cspell-6.5.0
build(deps-dev): bump cspell from 6.4.2 to 6.5.0
2022-08-03 01:55:16 +01:00
8538489136 Merge pull request #1613 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.10
build(deps-dev): bump typedoc from 0.23.9 to 0.23.10
2022-08-03 01:55:06 +01:00
4f28464b99 build(deps-dev): bump typedoc from 0.23.9 to 0.23.10
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.9 to 0.23.10.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.9...v0.23.10)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:02:18 +00:00
049e111797 build(deps-dev): bump tsconfig-paths-webpack-plugin from 3.5.2 to 4.0.0
Bumps [tsconfig-paths-webpack-plugin](https://github.com/dividab/tsconfig-paths-webpack-plugin) from 3.5.2 to 4.0.0.
- [Release notes](https://github.com/dividab/tsconfig-paths-webpack-plugin/releases)
- [Changelog](https://github.com/dividab/tsconfig-paths-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dividab/tsconfig-paths-webpack-plugin/compare/v3.5.2...v4.0.0)

---
updated-dependencies:
- dependency-name: tsconfig-paths-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:01:57 +00:00
96199c4b12 build(deps-dev): bump cspell from 6.4.2 to 6.5.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.4.2 to 6.5.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.4.2...v6.5.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:01:36 +00:00
cf23789edf build(deps): bump @types/node from 18.6.1 to 18.6.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.1 to 18.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:01:08 +00:00
48724e5b08 Fix spelling 2022-07-31 15:23:06 +01:00
40c778d244 Add Carbon adverts 2022-07-29 00:29:54 +01:00
ff0c44ecfc Merge pull request #1606 from dolanmiu/dependabot/npm_and_yarn/cspell-6.4.2
build(deps-dev): bump cspell from 6.4.1 to 6.4.2
2022-07-26 23:39:51 +01:00
828cc15ea3 build(deps-dev): bump cspell from 6.4.1 to 6.4.2
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.4.1 to 6.4.2.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.4.1...v6.4.2)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 11:01:24 +00:00
bbbe55b706 Merge pull request #1602 from dolanmiu/dependabot/npm_and_yarn/types/node-18.6.1
build(deps): bump @types/node from 18.0.6 to 18.6.1
2022-07-25 18:29:16 +01:00
cd98bdec9b Merge pull request #1603 from dolanmiu/dependabot/npm_and_yarn/cspell-6.4.1
build(deps-dev): bump cspell from 6.4.0 to 6.4.1
2022-07-25 18:29:08 +01:00
59767bddfe Merge pull request #1604 from dolanmiu/dependabot/npm_and_yarn/webpack-5.74.0
build(deps-dev): bump webpack from 5.73.0 to 5.74.0
2022-07-25 18:28:55 +01:00
035ae40b97 Merge pull request #1605 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.9
build(deps-dev): bump typedoc from 0.23.8 to 0.23.9
2022-07-25 18:28:47 +01:00
f7603bfdfc build(deps-dev): bump typedoc from 0.23.8 to 0.23.9
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.8 to 0.23.9.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.8...v0.23.9)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 11:11:30 +00:00
754201a9a2 build(deps-dev): bump webpack from 5.73.0 to 5.74.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.73.0 to 5.74.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.73.0...v5.74.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 11:11:00 +00:00
d0af7e4781 build(deps-dev): bump cspell from 6.4.0 to 6.4.1
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.4.0...v6.4.1)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 11:10:40 +00:00
ecf0bf8cdd build(deps): bump @types/node from 18.0.6 to 18.6.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.6 to 18.6.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 11:10:18 +00:00
85bafb3eef Update hyperlink.ts
ExternalHyperlink extends XmlComponent
2022-07-23 15:03:04 +08:00
efe378e94f Merge pull request #1600 from dolanmiu/dependabot/npm_and_yarn/terser-5.14.2
build(deps): bump terser from 5.13.1 to 5.14.2
2022-07-21 03:25:10 +01:00
614cb74d47 build(deps): bump terser from 5.13.1 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.13.1 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-21 02:17:11 +00:00
df4190321e Merge pull request #1598 from dolanmiu/dependabot/npm_and_yarn/types/sinon-10.0.13
build(deps-dev): bump @types/sinon from 10.0.12 to 10.0.13
2022-07-21 03:16:43 +01:00
56c3574a2b Merge pull request #1599 from dolanmiu/dependabot/npm_and_yarn/cspell-6.4.0
build(deps-dev): bump cspell from 6.3.0 to 6.4.0
2022-07-21 03:16:36 +01:00
51b11c7035 build(deps-dev): bump cspell from 6.3.0 to 6.4.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.3.0...v6.4.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 11:01:32 +00:00
564693cf22 build(deps-dev): bump @types/sinon from 10.0.12 to 10.0.13
Bumps [@types/sinon](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sinon) from 10.0.12 to 10.0.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sinon)

---
updated-dependencies:
- dependency-name: "@types/sinon"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 11:01:05 +00:00
50a6bed92f Merge pull request #1595 from dolanmiu/dependabot/npm_and_yarn/types/node-18.0.6
build(deps): bump @types/node from 18.0.4 to 18.0.6
2022-07-19 01:55:25 +01:00
ef54b3cf2e Merge pull request #1596 from dolanmiu/dependabot/npm_and_yarn/cspell-6.3.0
build(deps-dev): bump cspell from 6.2.3 to 6.3.0
2022-07-19 01:55:20 +01:00
ebf06250b1 Merge pull request #1597 from dolanmiu/dependabot/npm_and_yarn/typedoc-0.23.8
build(deps-dev): bump typedoc from 0.23.7 to 0.23.8
2022-07-19 01:54:54 +01:00
56f9c22ac6 build(deps-dev): bump typedoc from 0.23.7 to 0.23.8
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.7 to 0.23.8.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.7...v0.23.8)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 11:06:40 +00:00
384242974b build(deps-dev): bump cspell from 6.2.3 to 6.3.0
Bumps [cspell](https://github.com/streetsidesoftware/cspell) from 6.2.3 to 6.3.0.
- [Release notes](https://github.com/streetsidesoftware/cspell/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell/compare/v6.2.3...v6.3.0)

---
updated-dependencies:
- dependency-name: cspell
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 11:06:11 +00:00
7717d95cab build(deps): bump @types/node from 18.0.4 to 18.0.6
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.4 to 18.0.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 11:05:26 +00:00
5b69a32c11 Merge pull request #1593 from dolanmiu/dependabot/npm_and_yarn/types/node-18.0.4
build(deps): bump @types/node from 18.0.3 to 18.0.4
2022-07-16 05:18:30 +01:00
24abf51c8c Merge pull request #1594 from dolanmiu/dependabot/npm_and_yarn/ts-node-10.9.1
build(deps-dev): bump ts-node from 10.8.2 to 10.9.1
2022-07-16 05:18:23 +01:00
80c5092dc1 build(deps-dev): bump ts-node from 10.8.2 to 10.9.1
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.8.2 to 10.9.1.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.8.2...v10.9.1)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-14 11:01:18 +00:00
15ffa4d98b build(deps): bump @types/node from 18.0.3 to 18.0.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.3 to 18.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-14 11:00:53 +00:00
250 changed files with 5701 additions and 1438 deletions

270
.eslintrc.js Normal file
View File

@ -0,0 +1,270 @@
/*
👋 Hi! This file was autogenerated by tslint-to-eslint-config.
https://github.com/typescript-eslint/tslint-to-eslint-config
It represents the closest reasonable ESLint configuration to this
project's original TSLint configuration.
We recommend eventually switching this configuration to extend from
the recommended rulesets in typescript-eslint.
https://github.com/typescript-eslint/tslint-to-eslint-config/blob/master/docs/FAQs.md
Happy linting! 💖
*/
module.exports = {
extends: "eslint:recommended",
env: {
browser: true,
es6: true,
node: true,
},
parser: "@typescript-eslint/parser",
parserOptions: {
project: "tsconfig.json",
sourceType: "module",
},
plugins: [
"eslint-plugin-import",
"eslint-plugin-no-null",
"eslint-plugin-unicorn",
"eslint-plugin-jsdoc",
"eslint-plugin-prefer-arrow",
"@typescript-eslint",
"functional",
],
root: true,
rules: {
"no-undef": "off",
"no-extra-boolean-cast": "off",
"no-alert": "error",
"no-self-compare": "error",
"no-unreachable-loop": "error",
"no-template-curly-in-string": "error",
"no-unused-private-class-members": "error",
"no-extend-native": "error",
"no-floating-decimal": "error",
"no-implied-eval": "error",
"no-iterator": "error",
"no-lone-blocks": "error",
"no-loop-func": "error",
"no-new-object": "error",
"no-proto": "error",
"no-useless-catch": "error",
"one-var-declaration-per-line": "error",
"prefer-arrow-callback": "error",
"prefer-destructuring": "error",
"prefer-exponentiation-operator": "error",
"prefer-promise-reject-errors": "error",
"prefer-regex-literals": "error",
"prefer-spread": "error",
"prefer-template": "error",
"require-await": "error",
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": [
"error",
{
default: "array",
},
],
"@typescript-eslint/ban-types": [
"error",
{
types: {
Object: {
message: "Avoid using the `Object` type. Did you mean `object`?",
},
Function: {
message: "Avoid using the `Function` type. Prefer a specific function type, like `() => void`.",
},
Boolean: {
message: "Avoid using the `Boolean` type. Did you mean `boolean`?",
},
Number: {
message: "Avoid using the `Number` type. Did you mean `number`?",
},
String: {
message: "Avoid using the `String` type. Did you mean `string`?",
},
Symbol: {
message: "Avoid using the `Symbol` type. Did you mean `symbol`?",
},
},
},
],
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/dot-notation": "error",
"@typescript-eslint/explicit-function-return-type": [
"error",
{
allowExpressions: false,
allowTypedFunctionExpressions: false,
allowHigherOrderFunctions: false,
allowDirectConstAssertionInArrowFunctions: true,
allowConciseArrowFunctionExpressionsStartingWithVoid: true,
},
],
"@typescript-eslint/explicit-member-accessibility": [
"error",
{
accessibility: "explicit",
overrides: {
accessors: "explicit",
},
},
],
"@typescript-eslint/explicit-module-boundary-types": [
"error",
{
allowArgumentsExplicitlyTypedAsAny: true,
allowDirectConstAssertionInArrowFunctions: true,
allowHigherOrderFunctions: false,
allowTypedFunctionExpressions: false,
},
],
"@typescript-eslint/naming-convention": [
"error",
{
selector: ["objectLiteralProperty"],
leadingUnderscore: "allow",
format: ["camelCase", "PascalCase"],
filter: {
regex: "(^[a-z]+:.+)|_attr|[0-9]",
match: false,
},
},
],
"@typescript-eslint/no-empty-function": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-parameter-properties": "off",
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/no-shadow": [
"error",
{
hoist: "all",
},
],
"@typescript-eslint/no-this-alias": "error",
"@typescript-eslint/no-unused-expressions": "error",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "error",
"@typescript-eslint/prefer-function-type": "error",
"@typescript-eslint/prefer-namespace-keyword": "error",
"@typescript-eslint/prefer-readonly": "error",
"@typescript-eslint/triple-slash-reference": [
"error",
{
path: "always",
types: "prefer-import",
lib: "always",
},
],
"@typescript-eslint/typedef": [
"error",
{
parameter: true,
propertyDeclaration: true,
},
],
"@typescript-eslint/unified-signatures": "error",
"arrow-body-style": "error",
complexity: "off",
"consistent-return": "error",
"constructor-super": "error",
curly: "error",
"dot-notation": "off",
eqeqeq: ["error", "smart"],
"guard-for-in": "error",
"id-denylist": ["error", "any", "Number", "number", "String", "string", "Boolean", "boolean", "Undefined", "undefined"],
"id-match": "error",
"import/no-default-export": "error",
"import/no-extraneous-dependencies": "off",
"import/no-internal-modules": "off",
"import/order": "error",
indent: "off",
"jsdoc/check-alignment": "error",
"jsdoc/check-indentation": "off",
"jsdoc/newline-after-description": "error",
"max-classes-per-file": "off",
"max-len": "off",
"new-parens": "error",
"no-bitwise": "error",
"no-caller": "error",
"no-cond-assign": "error",
"no-console": "error",
"no-debugger": "error",
"no-duplicate-case": "error",
"no-duplicate-imports": "error",
"no-empty": "error",
"no-empty-function": "off",
"no-eval": "error",
"no-extra-bind": "error",
"no-fallthrough": "off",
"no-invalid-this": "off",
"no-multiple-empty-lines": "error",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-null/no-null": "error",
"no-param-reassign": "error",
"no-redeclare": "error",
"no-return-await": "error",
"no-sequences": "error",
"no-shadow": "off",
"no-sparse-arrays": "error",
"no-template-curly-in-string": "error",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-undef-init": "error",
"no-underscore-dangle": ["error", { allow: ["_attr"] }],
"no-unsafe-finally": "error",
"no-unused-expressions": "off",
"no-unused-labels": "error",
"no-use-before-define": "off",
"no-useless-constructor": "error",
"no-var": "error",
"object-shorthand": "off",
"one-var": ["error", "never"],
"prefer-arrow/prefer-arrow-functions": "error",
"prefer-const": "error",
"prefer-object-spread": "error",
radix: "error",
"space-in-parens": ["error", "never"],
"spaced-comment": [
"error",
"always",
{
markers: ["/"],
},
],
"unicorn/filename-case": "error",
"unicorn/prefer-ternary": "error",
"use-isnan": "error",
"valid-typeof": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"functional/immutable-data": [
"error",
{
assumeTypes: true,
ignoreImmediateMutation: true,
ignoreAccessorPattern: ["**.root*", "**.numberingReferences*", "**.sections*", "**.properties*"],
},
],
"functional/no-method-signature": "error",
"functional/no-mixed-type": "error",
"functional/prefer-readonly-type": "error",
"no-unused-vars": ["error", { argsIgnorePattern: "^[_]+$" }],
},
overrides: [
{
files: ["*.spec.ts"],
rules: {
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/dot-notation": "off",
"prefer-destructuring": "off",
},
},
],
};

6
.nycrc
View File

@ -1,9 +1,9 @@
{
"check-coverage": true,
"statements": 99.62,
"branches": 96.81,
"statements": 99.72,
"branches": 97.95,
"functions": 99.82,
"lines": 99.62,
"lines": 99.71,
"include": [
"src/**/*.ts"
],

View File

@ -1,5 +1,3 @@
{
"recommendations": [
"streetsidesoftware.code-spell-checker"
]
"recommendations": ["streetsidesoftware.code-spell-checker", "dbaeumer.vscode-eslint"]
}

30
demo/74-nodejs-stream.ts Normal file
View File

@ -0,0 +1,30 @@
// Exporting the document as a stream
// Import from 'docx' rather than '../build' if you install from npm
import * as fs from "fs";
import { Document, Packer, Paragraph, TextRun } from "../build";
const doc = new Document({
sections: [
{
properties: {},
children: [
new Paragraph({
children: [
new TextRun("Hello World"),
new TextRun({
text: "Foo Bar",
bold: true,
}),
new TextRun({
text: "\tGithub is the best",
bold: true,
}),
],
}),
],
},
],
});
const stream = Packer.toStream(doc);
stream.pipe(fs.createWriteStream("My Document.docx"));

View File

@ -8,11 +8,11 @@
- Follow Prettier standards, and consider using the [Prettier VSCode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) plugin.
- Follow the `TSLint` rules
- Follow the `ESLint` rules
## Always think about the user
Put yourself in their position, and imagine how they would feel about your feature you wrote.
Put yourself in their position, and imagine how they would feel about the feature you wrote.
1. Is it easy to use?
2. Has it been documented well?

View File

@ -16,6 +16,7 @@
<body>
<div id="app"></div>
<script src="//cdn.jsdelivr.net/npm/docsify-plugin-carbon@1/index.min.js"></script>
<script>
window.$docsify = {
name: "docx",
@ -24,6 +25,12 @@
subMaxLevel: 2,
search: "auto",
coverpage: true,
plugins: [
// Change to your Carbon property ID
// cSpell:disable
DocsifyCarbon.create("CEAIP237", "docx"),
// cSpell:enable
],
};
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>

5561
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "docx",
"version": "7.4.1",
"version": "7.5.0",
"description": "Easily generate .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser.",
"main": "build/index.js",
"scripts": {
@ -9,7 +9,7 @@
"test.coverage": "nyc npm test",
"test.watch": "npm test -- --watch",
"prepublishOnly": "npm run build --production",
"lint": "tslint --project .",
"lint": "eslint -c .eslintrc.js --ext .ts src",
"build": "npm run webpack && npm run fix-types",
"webpack": "rimraf ./build && webpack --config ./webpack.config.ts",
"demo": "npm run build && npm run ts-node --skip-project ./demo",
@ -64,7 +64,7 @@
"homepage": "https://github.com/dolanmiu/docx#readme",
"devDependencies": {
"@types/chai": "^4.2.15",
"@types/glob": "^7.1.4",
"@types/glob": "^8.0.0",
"@types/mocha": "^9.0.0",
"@types/prompt": "^1.1.1",
"@types/request-promise": "^4.1.42",
@ -72,10 +72,19 @@
"@types/sinon": "^10.0.0",
"@types/unzipper": "^0.10.4",
"@types/webpack": "^5.0.0",
"@typescript-eslint/eslint-plugin": "^5.36.1",
"@typescript-eslint/parser": "^5.36.1",
"buffer": "^6.0.3",
"chai": "^3.5.0",
"cspell": "^6.2.2",
"docsify-cli": "^4.3.0",
"eslint": "^8.23.0",
"eslint-plugin-functional": "^4.3.1",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jsdoc": "^39.3.6",
"eslint-plugin-no-null": "^1.0.2",
"eslint-plugin-prefer-arrow": "^1.2.3",
"eslint-plugin-unicorn": "^43.0.2",
"glob": "^8.0.1",
"jszip": "^3.1.5",
"mocha": "^10.0.0",
@ -94,9 +103,7 @@
"ts-loader": "^9.0.0",
"ts-node": "^10.2.1",
"tsconfig-paths": "^4.0.0",
"tsconfig-paths-webpack-plugin": "^3.5.2",
"tslint": "^6.1.3",
"tslint-immutable": "^6.0.1",
"tsconfig-paths-webpack-plugin": "^4.0.0",
"typedoc": "^0.23.2",
"typescript": "4.7.4",
"unzipper": "^0.10.11",

View File

@ -1,7 +1,7 @@
import { IMediaData, Media } from "@file/media";
export class ImageReplacer {
public replace(xmlData: string, mediaData: IMediaData[], offset: number): string {
public replace(xmlData: string, mediaData: readonly IMediaData[], offset: number): string {
let currentXmlData = xmlData;
mediaData.forEach((image, i) => {
@ -11,7 +11,7 @@ export class ImageReplacer {
return currentXmlData;
}
public getMediaData(xmlData: string, media: Media): IMediaData[] {
public getMediaData(xmlData: string, media: Media): readonly IMediaData[] {
return media.Array.filter((image) => xmlData.search(`{${image.fileName}}`) > 0);
}
}

View File

@ -25,7 +25,7 @@ describe("Compiler", () => {
});
describe("#compile()", () => {
it("should pack all the content", async function () {
it("should pack all the content", function () {
this.timeout(99999999);
const file = new File({
sections: [],
@ -53,7 +53,7 @@ describe("Compiler", () => {
expect(fileNames).to.include("_rels/.rels");
});
it("should pack all additional headers and footers", async function () {
it("should pack all additional headers and footers", function () {
const file = new File({
sections: [
{

View File

@ -20,10 +20,10 @@ interface IXmlifyedFileMapping {
readonly Numbering: IXmlifyedFile;
readonly Relationships: IXmlifyedFile;
readonly FileRelationships: IXmlifyedFile;
readonly Headers: IXmlifyedFile[];
readonly Footers: IXmlifyedFile[];
readonly HeaderRelationships: IXmlifyedFile[];
readonly FooterRelationships: IXmlifyedFile[];
readonly Headers: readonly IXmlifyedFile[];
readonly Footers: readonly IXmlifyedFile[];
readonly HeaderRelationships: readonly IXmlifyedFile[];
readonly FooterRelationships: readonly IXmlifyedFile[];
readonly ContentTypes: IXmlifyedFile;
readonly CustomProperties: IXmlifyedFile;
readonly AppProperties: IXmlifyedFile;
@ -38,7 +38,7 @@ export class Compiler {
private readonly imageReplacer: ImageReplacer;
private readonly numberingReplacer: NumberingReplacer;
constructor() {
public constructor() {
this.formatter = new Formatter();
this.imageReplacer = new ImageReplacer();
this.numberingReplacer = new NumberingReplacer();
@ -47,15 +47,15 @@ export class Compiler {
public compile(file: File, prettifyXml?: boolean | PrettifyType): JSZip {
const zip = new JSZip();
const xmlifiedFileMapping = this.xmlifyFile(file, prettifyXml);
const map = new Map<string, IXmlifyedFile | IXmlifyedFile[]>(Object.entries(xmlifiedFileMapping));
const map = new Map<string, IXmlifyedFile | readonly IXmlifyedFile[]>(Object.entries(xmlifiedFileMapping));
for (const [, obj] of map) {
if (Array.isArray(obj)) {
for (const subFile of obj) {
for (const subFile of obj as readonly IXmlifyedFile[]) {
zip.file(subFile.path, subFile.data);
}
} else {
zip.file(obj.path, obj.data);
zip.file((obj as IXmlifyedFile).path, (obj as IXmlifyedFile).data);
}
}

View File

@ -1,7 +1,7 @@
import { ConcreteNumbering } from "@file/numbering";
export class NumberingReplacer {
public replace(xmlData: string, concreteNumberings: ConcreteNumbering[]): string {
public replace(xmlData: string, concreteNumberings: readonly ConcreteNumbering[]): string {
let currentXmlData = xmlData;
for (const concreteNumbering of concreteNumberings) {

View File

@ -37,6 +37,14 @@ describe("Packer", () => {
});
});
describe("#toString()", () => {
it("should return a non-empty string", async () => {
const result = await Packer.toString(file);
assert.isAbove(result.length, 0);
});
});
describe("#toBuffer()", () => {
it("should create a standard docx file", async function () {
this.timeout(99999999);
@ -47,7 +55,7 @@ describe("Packer", () => {
});
it("should handle exception if it throws any", () => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const compiler = stub((Packer as any).compiler, "compile");
compiler.throwsException();
@ -57,7 +65,7 @@ describe("Packer", () => {
});
after(() => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(Packer as any).compiler.compile.restore();
});
});
@ -72,7 +80,7 @@ describe("Packer", () => {
});
it("should handle exception if it throws any", () => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const compiler = stub((Packer as any).compiler, "compile");
compiler.throwsException();
@ -82,14 +90,14 @@ describe("Packer", () => {
});
after(() => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(Packer as any).compiler.compile.restore();
});
});
describe("#toBlob()", () => {
it("should create a standard docx file", async () => {
// tslint:disable-next-line: no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
stub((Packer as any).compiler, "compile").callsFake(() => ({
// tslint:disable-next-line: no-empty
generateAsync: () => mock({}),
@ -100,7 +108,7 @@ describe("Packer", () => {
});
it("should handle exception if it throws any", () => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const compiler = stub((Packer as any).compiler, "compile");
compiler.throwsException();
@ -110,7 +118,57 @@ describe("Packer", () => {
});
afterEach(() => {
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(Packer as any).compiler.compile.restore();
});
});
describe("#toStream()", () => {
it("should create a standard docx file", async () => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
stub((Packer as any).compiler, "compile").callsFake(() => ({
// tslint:disable-next-line: no-empty
generateNodeStream: () => ({
on: (event: string, cb: () => void) => {
if (event === "end") {
cb();
}
},
}),
}));
const stream = await Packer.toStream(file);
return new Promise((resolve, reject) => {
stream.on("error", () => {
reject(new Error());
});
stream.on("end", () => {
resolve();
});
});
});
it("should handle exception if it throws any", () => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const compiler = stub((Packer as any).compiler, "compile").callsFake(() => ({
// tslint:disable-next-line: no-empty
on: (event: string, cb: () => void) => {
if (event === "error") {
cb();
}
},
}));
compiler.throwsException();
try {
Packer.toStream(file);
} catch (error) {
assert.isDefined(error);
}
});
afterEach(() => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(Packer as any).compiler.compile.restore();
});
});

View File

@ -1,3 +1,4 @@
import { Stream } from "stream";
import { File } from "@file/file";
import { Compiler } from "./next-compiler";
@ -13,6 +14,17 @@ export enum PrettifyType {
}
export class Packer {
public static async toString(file: File, prettify?: boolean | PrettifyType): Promise<string> {
const zip = this.compiler.compile(file, prettify);
const zipData = await zip.generateAsync({
type: "string",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
compression: "DEFLATE",
});
return zipData;
}
public static async toBuffer(file: File, prettify?: boolean | PrettifyType): Promise<Buffer> {
const zip = this.compiler.compile(file, prettify);
const zipData = await zip.generateAsync({
@ -46,5 +58,17 @@ export class Packer {
return zipData;
}
public static toStream(file: File, prettify?: boolean | PrettifyType): Stream {
const zip = this.compiler.compile(file, prettify);
const zipData = zip.generateNodeStream({
type: "nodebuffer",
streamFiles: true,
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
compression: "DEFLATE",
});
return zipData;
}
private static readonly compiler = new Compiler();
}

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { AppPropertiesAttributes } from "./app-properties-attributes";
export class AppProperties extends XmlComponent {
constructor() {
public constructor() {
super("Properties");
this.root.push(

View File

@ -33,7 +33,7 @@ export interface IBorderOptions {
}
export class BorderElement extends XmlComponent {
constructor(elementName: string, { color, size, space, style }: IBorderOptions) {
public constructor(elementName: string, { color, size, space, style }: IBorderOptions) {
super(elementName);
this.root.push(
new BordersAttributes({

View File

@ -4,7 +4,7 @@ import { Default } from "./default/default";
import { Override } from "./override/override";
export class ContentTypes extends XmlComponent {
constructor() {
public constructor() {
super("Types");
this.root.push(

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { DefaultAttributes } from "./default-attributes";
export class Default extends XmlComponent {
constructor(contentType: string, extension?: string) {
public constructor(contentType: string, extension?: string) {
super("Default");
this.root.push(

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { OverrideAttributes } from "./override-attributes";
export class Override extends XmlComponent {
constructor(contentType: string, partName?: string) {
public constructor(contentType: string, partName?: string) {
super("Override");
this.root.push(

View File

@ -12,7 +12,7 @@ import { Paragraph } from "../paragraph";
import { IStylesOptions } from "../styles";
export interface IPropertiesOptions {
readonly sections: ISectionOptions[];
readonly sections: readonly ISectionOptions[];
readonly title?: string;
readonly subject?: string;
readonly creator?: string;
@ -26,7 +26,7 @@ export interface IPropertiesOptions {
readonly comments?: ICommentsOptions;
readonly footnotes?: {
readonly [key: string]: {
readonly children: Paragraph[];
readonly children: readonly Paragraph[];
};
};
readonly background?: IDocumentBackgroundOptions;
@ -35,7 +35,7 @@ export interface IPropertiesOptions {
readonly updateFields?: boolean;
};
readonly compatabilityModeVersion?: number;
readonly customProperties?: ICustomPropertyOptions[];
readonly customProperties?: readonly ICustomPropertyOptions[];
readonly evenAndOddHeaderAndFooters?: boolean;
}
@ -64,7 +64,7 @@ export interface IPropertiesOptions {
/* cSpell:enable */
export class CoreProperties extends XmlComponent {
constructor(options: Omit<IPropertiesOptions, "sections">) {
public constructor(options: Omit<IPropertiesOptions, "sections">) {
super("cp:coreProperties");
this.root.push(
new DocumentAttributes({
@ -102,7 +102,7 @@ export class CoreProperties extends XmlComponent {
}
class TimestampElement extends XmlComponent {
constructor(name: string) {
public constructor(name: string) {
super(name);
this.root.push(
new DocumentAttributes({

View File

@ -3,11 +3,12 @@ import { CustomPropertiesAttributes } from "./custom-properties-attributes";
import { CustomProperty, ICustomPropertyOptions } from "./custom-property";
export class CustomProperties extends XmlComponent {
// tslint:disable-next-line:readonly-keyword
// eslint-disable-next-line functional/prefer-readonly-type
private nextId: number;
// eslint-disable-next-line functional/prefer-readonly-type
private readonly properties: CustomProperty[] = [];
constructor(properties: ICustomPropertyOptions[]) {
public constructor(properties: readonly ICustomPropertyOptions[]) {
super("Properties");
this.root.push(
@ -32,6 +33,7 @@ export class CustomProperties extends XmlComponent {
}
public addCustomProperty(property: ICustomPropertyOptions): void {
// eslint-disable-next-line functional/immutable-data
this.properties.push(new CustomProperty(this.nextId++, property));
}
}

View File

@ -7,7 +7,7 @@ export interface ICustomPropertyOptions {
}
export class CustomProperty extends XmlComponent {
constructor(id: number, properties: ICustomPropertyOptions) {
public constructor(id: number, properties: ICustomPropertyOptions) {
super("property");
this.root.push(
new CustomPropertyAttributes({
@ -21,7 +21,7 @@ export class CustomProperty extends XmlComponent {
}
export class CustomPropertyValue extends XmlComponent {
constructor(value: string) {
public constructor(value: string) {
super("vt:lpwstr");
this.root.push(value);
}

View File

@ -7,9 +7,7 @@ describe("DocumentWrapper", () => {
it("should create", () => {
const file = new DocumentWrapper({ background: {} });
// tslint:disable-next-line: no-unused-expression
expect(file.View).to.be.ok;
// tslint:disable-next-line: no-unused-expression
expect(file.Relationships).to.be.ok;
});
});

View File

@ -13,7 +13,7 @@ export class DocumentWrapper implements IViewWrapper {
private readonly document: Document;
private readonly relationships: Relationships;
constructor(options: IDocumentOptions) {
public constructor(options: IDocumentOptions) {
this.document = new Document(options);
this.relationships = new Relationships();
}

View File

@ -4,9 +4,10 @@ import { IContext, IXmlableObject, XmlComponent } from "@file/xml-components";
import { ISectionPropertiesOptions, SectionProperties } from "./section-properties/section-properties";
export class Body extends XmlComponent {
// eslint-disable-next-line functional/prefer-readonly-type
private readonly sections: SectionProperties[] = [];
constructor() {
public constructor() {
super("w:body");
}
@ -16,6 +17,7 @@ export class Body extends XmlComponent {
* The spec says:
* - section element should be in the last paragraph of the section
* - last section should be direct child of body
*
* @param options new section options
*/
public addSection(options: ISectionPropertiesOptions): void {

View File

@ -14,7 +14,7 @@ export class ColumnAttributes extends XmlAttributeComponent<IColumnAttributes> {
}
export class Column extends XmlComponent {
constructor({ width, space }: IColumnAttributes) {
public constructor({ width, space }: IColumnAttributes) {
super("w:col");
this.root.push(
new ColumnAttributes({

View File

@ -13,6 +13,13 @@ describe("Columns", () => {
expect(tree["w:cols"]).to.deep.equal({ _attr: { "w:num": 3, "w:space": 720 } });
});
it("should create set space and count to undefined if they are undefined", () => {
const columns = new Columns({});
const tree = new Formatter().format(columns);
expect(tree["w:cols"]).to.deep.equal({ _attr: {} });
});
it("should ignore individual column attributes if equalWidth is true", () => {
const unequalColumns = [new Column({ width: 1000, space: 400 }), new Column({ width: 2000 })];
const columns = new Columns({ count: 3, space: 720, equalWidth: true, children: unequalColumns });

View File

@ -17,7 +17,7 @@ export interface IColumnsAttributes {
readonly count?: number;
readonly separate?: boolean;
readonly equalWidth?: boolean;
readonly children?: Column[];
readonly children?: readonly Column[];
}
export class ColumnsAttributes extends XmlAttributeComponent<IColumnsAttributes> {
@ -30,7 +30,7 @@ export class ColumnsAttributes extends XmlAttributeComponent<IColumnsAttributes>
}
export class Columns extends XmlComponent {
constructor({ space, count, separate, equalWidth, children }: IColumnsAttributes) {
public constructor({ space, count, separate, equalWidth, children }: IColumnsAttributes) {
super("w:cols");
this.root.push(
new ColumnsAttributes({

View File

@ -38,7 +38,7 @@ export class DocGridAttributes extends XmlAttributeComponent<IDocGridAttributesP
}
export class DocumentGrid extends XmlComponent {
constructor(linePitch: number, charSpace?: number, type?: DocumentGridType) {
public constructor(linePitch: number, charSpace?: number, type?: DocumentGridType) {
super("w:docGrid");
this.root.push(

View File

@ -52,7 +52,7 @@ export enum HeaderFooterType {
FOOTER = "w:footerReference",
}
export class HeaderFooterReference extends XmlComponent {
constructor(type: HeaderFooterType, options: IHeaderFooterOptions) {
public constructor(type: HeaderFooterType, options: IHeaderFooterOptions) {
super(type);
this.root.push(

View File

@ -39,7 +39,7 @@ export class LineNumberAttributes extends XmlAttributeComponent<ILineNumberAttri
}
export class LineNumberType extends XmlComponent {
constructor({ countBy, start, restart, distance }: ILineNumberAttributes) {
public constructor({ countBy, start, restart, distance }: ILineNumberAttributes) {
super("w:lnNumType");
this.root.push(
new LineNumberAttributes({

View File

@ -71,7 +71,7 @@ class PageBordersAttributes extends XmlAttributeComponent<IPageBorderAttributes>
// <xsd:attribute name="offsetFrom" type="ST_PageBorderOffset" use="optional" default="text"/>
// </xsd:complexType>
export class PageBorders extends IgnoreIfEmptyXmlComponent {
constructor(options?: IPageBordersOptions) {
public constructor(options?: IPageBordersOptions) {
super("w:pgBorders");
if (!options) {

View File

@ -33,7 +33,7 @@ export class PageMarginAttributes extends XmlAttributeComponent<IPageMarginAttri
}
export class PageMargin extends XmlComponent {
constructor(
public constructor(
top: number | string,
right: number | string,
bottom: number | string,

View File

@ -41,7 +41,7 @@ export class PageNumberTypeAttributes extends XmlAttributeComponent<IPageNumberT
};
}
export class PageNumberType extends XmlComponent {
constructor({ start, formatType, separator }: IPageNumberTypeAttributes) {
public constructor({ start, formatType, separator }: IPageNumberTypeAttributes) {
super("w:pgNumType");
this.root.push(
new PageNumberTypeAttributes({

View File

@ -33,7 +33,7 @@ export class PageSizeAttributes extends XmlAttributeComponent<IPageSizeAttribute
}
export class PageSize extends XmlComponent {
constructor(width: number | string, height: number | string, orientation: PageOrientation) {
public constructor(width: number | string, height: number | string, orientation: PageOrientation) {
super("w:pgSz");
const flip = orientation === PageOrientation.LANDSCAPE;

View File

@ -10,7 +10,7 @@ class PageTextDirectionAttributes extends XmlAttributeComponent<{ readonly val:
}
export class PageTextDirection extends XmlComponent {
constructor(value: PageTextDirectionType) {
public constructor(value: PageTextDirectionType) {
super("w:textDirection");
this.root.push(

View File

@ -30,7 +30,7 @@ export class SectionTypeAttributes extends XmlAttributeComponent<{
}
export class Type extends XmlComponent {
constructor(value: SectionType) {
public constructor(value: SectionType) {
super("w:type");
this.root.push(new SectionTypeAttributes({ val: value }));
}

View File

@ -92,7 +92,7 @@ export const sectionPageSizeDefaults = {
};
export class SectionProperties extends XmlComponent {
constructor({
public constructor({
page: {
size: {
width = sectionPageSizeDefaults.WIDTH,

View File

@ -63,7 +63,7 @@ export interface IDocumentBackgroundOptions {
// </xsd:complexType>
export class DocumentBackground extends XmlComponent {
constructor(options: IDocumentBackgroundOptions) {
public constructor(options: IDocumentBackgroundOptions) {
super("w:background");
this.root.push(

View File

@ -33,7 +33,7 @@ export interface IDocumentOptions {
export class Document extends XmlComponent {
private readonly body: Body;
constructor(options: IDocumentOptions) {
public constructor(options: IDocumentOptions) {
super("w:document");
this.root.push(
new DocumentAttributes({

View File

@ -6,8 +6,8 @@ import { IDrawingOptions } from "../drawing";
import { TextWrappingType } from "../text-wrap";
import { Anchor } from "./anchor";
function createAnchor(drawingOptions: IDrawingOptions): Anchor {
return new Anchor(
const createAnchor = (drawingOptions: IDrawingOptions): Anchor =>
new Anchor(
{
fileName: "test.png",
stream: new Buffer(""),
@ -34,7 +34,6 @@ function createAnchor(drawingOptions: IDrawingOptions): Anchor {
},
drawingOptions,
);
}
describe("Anchor", () => {
let anchor: Anchor;

View File

@ -37,7 +37,7 @@ import { AnchorAttributes } from "./anchor-attributes";
// <xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/>
// </xsd:complexType>
export class Anchor extends XmlComponent {
constructor(mediaData: IMediaData, transform: IMediaDataTransformation, drawingOptions: IDrawingOptions) {
public constructor(mediaData: IMediaData, transform: IMediaDataTransformation, drawingOptions: IDrawingOptions) {
super("wp:anchor");
const floating: IFloating = {

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { DocPropertiesAttributes } from "./doc-properties-attributes";
export class DocProperties extends XmlComponent {
constructor() {
public constructor() {
super("wp:docPr");
this.root.push(

View File

@ -6,8 +6,8 @@ import { Drawing, IDrawingOptions } from "./drawing";
const imageBase64Data = `iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAACzVBMVEUAAAAAAAAAAAAAAAA/AD8zMzMqKiokJCQfHx8cHBwZGRkuFxcqFSonJyckJCQiIiIfHx8eHh4cHBwoGhomGSYkJCQhISEfHx8eHh4nHR0lHBwkGyQjIyMiIiIgICAfHx8mHh4lHh4kHR0jHCMiGyIhISEgICAfHx8lHx8kHh4jHR0hHCEhISEgICAlHx8kHx8jHh4jHh4iHSIhHCEhISElICAkHx8jHx8jHh4iHh4iHSIhHSElICAkICAjHx8jHx8iHh4iHh4hHiEhHSEkICAjHx8iHx8iHx8hHh4hHiEkHSEjHSAjHx8iHx8iHx8hHh4kHiEkHiEjHSAiHx8hHx8hHh4kHiEjHiAjHSAiHx8iHx8hHx8kHh4jHiEjHiAjHiAiICAiHx8kHx8jHh4jHiEjHiAiHiAiHSAiHx8jHx8jHx8jHiAiHiAiHiAiHSAiHx8jHx8jHx8iHiAiHiAiHiAjHx8jHx8jHx8jHx8iHiAiHiAiHiAjHx8jHx8jHx8iHx8iHSAiHiAjHiAjHx8jHx8hHx8iHx8iHyAiHiAjHiAjHiAjHh4hHx8iHx8iHx8iHyAjHSAjHiAjHiAjHh4hHx8iHx8iHx8jHyAjHiAhHh4iHx8iHx8jHyAjHSAjHSAhHiAhHh4iHx8iHx8jHx8jHyAjHSAjHSAiHh4iHh4jHx8jHx8jHyAjHyAhHSAhHSAiHh4iHh4jHx8jHx8jHyAhHyAhHSAiHSAiHh4jHh4jHx8jHx8jHyAhHyAhHSAiHSAjHR4jHh4jHx8jHx8hHyAhHyAiHSAjHSAjHR4jHh4jHx8hHx8hHyAhHyAiHyAjHSAjHR4jHR4hHh4hHx8hHyAiHyAjHyAjHSAjHR4jHR4hHh4hHx8hHyAjHyAjHyAjHSAjHR4hHR4hHR4hHx8iHyAjHyAjHyAjHSAhHR4hHR4hHR4hHx8jHyAjHyAjHyAjHyC9S2xeAAAA7nRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFxgZGhscHR4fICEiIyQlJicoKSorLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZISUpLTE1OUFFSU1RVVllaW1xdXmBhYmNkZWZnaGprbG1ub3Byc3R1dnd4eXp8fn+AgYKDhIWGiImKi4yNj5CRkpOUlZaXmJmam5ydnp+goaKjpKaoqqusra6vsLGys7S1tri5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+fkZpVQAABcBJREFUGBntwftjlQMcBvDnnLNL22qzJjWlKLHFVogyty3SiFq6EZliqZGyhnSxsLlMRahYoZKRFcul5dKFCatYqWZaNKvWtrPz/A2+7/b27qRzec/lPfvl/XxgMplMJpPJZDKZAtA9HJ3ppnIez0KnSdtC0RCNznHdJrbrh85wdSlVVRaEXuoGamYi5K5430HNiTiEWHKJg05eRWgNfKeV7RxbqUhGKPV/207VupQ8is0IoX5vtFC18SqEHaK4GyHTZ2kzVR8PBTCO4oANIZL4ShNVZcOhKKeYg9DoWdhI1ec3os2VFI0JCIUez5+i6st0qJZRrEAIJCw+QdW223BG/EmKwTBc/IJ/qfp2FDrkUnwFo8U9dZyqnaPhxLqfYjyM1S3vb6p+GGOBszsojoTDSDFz6qj66R4LzvYJxVMwUNRjf1H1ywQr/megg2RzLximy8waqvbda8M5iijegVEiHjlM1W/3h+FcXesphsMY4dMOUnUgOxyuPEzxPQwRNvV3qg5Nj4BreyimwADWe/dRVTMjEm6MoGLzGwtystL6RyOY3qSqdlYU3FpLZw1VW0sK5943MvUCKwJ1noNtjs6Ohge76Zq9ZkfpigU5WWkDYuCfbs1U5HWFR8/Qq4a9W0uK5k4ZmdrTCl8spGIePLPlbqqsc1Afe83O0hULc8alDYiBd7ZyitYMeBfR55rR2fOKP6ioPk2dGvZ+UVI0d8rtqT2tcCexlqK2F3wRn5Q+YVbBqrLKOupkr9lZujAOrmS0UpTb4JeIPkNHZ+cXr6uoPk2vyuBSPhWLEKj45PQJuQWryyqP0Z14uGLdROHIRNBEXDR09EP5r62rOHCazhrD4VKPwxTH+sIA3ZPTJ+YuWV22n+IruHFDC8X2CBjnPoolcGc2FYUwzmsUWXDHsoGKLBhmN0VvuBVfTVE/AAbpaid5CB4MbaLY1QXGuIViLTyZQcVyGGMuxWPwaA0Vk2GI9RRp8Ci2iuLkIBjhT5LNUfAspZFiTwyC72KK7+DNg1SsRvCNp3gZXq2k4iEEXSHFJHgVXUlxejCCbTvFAHiXdIJiXxyCK7KJ5FHoMZGK9xBcwyg2QpdlVMxEUM2iyIMuXXZQNF+HswxMsSAAJRQjoE//eoqDCXBSTO6f1xd+O0iyNRY6jaWi1ALNYCocZROj4JdEikroVkjFk9DcStXxpdfCD2MoXodu4RUU9ptxxmXssOfxnvDVcxRTod9FxyhqLoAqis5aPhwTDp9spRgEH2Q6KLbYoKqlaKTm6Isp0C/sJMnjFvhiERXPQvUNRe9p29lhR04CdBpC8Sl8YiuncIxEuzUUg4Dkgj+paVozygY9plPMh28SaymO9kabAopREGF3vt9MzeFFl8G7lRSZ8FFGK8XX4VA8QjEd7XrM3M0OXz8YCy+qKBLgq3wqnofiTorF0Ax56Rg1J1elW+BBAsVe+My6iYq7IK6keBdOIseV2qn5Pb8f3MqkWAXf9ThM8c8lAOIotuFsF875lRrH5klRcG0+xcPwQ1oLxfeRAP4heQTnGL78X2rqlw2DK59SXAV/zKaiGMAuko5InCt68mcOan5+ohf+z1pP8lQY/GHZQMV4YD3FpXDp4qerqbF/lBWBswyi+AL+ia+maLgcRRQj4IYlY/UpauqKBsPJAxQF8NM1TRQ/RudSPAD34rK3scOuR8/HGcspxsJfOVS8NZbiGXiUtPgINU3v3WFDmx8pEuG3EiqKKVbCC1vm2iZqap5LAtCtleQf8F9sFYWDohzeJczYyQ4V2bEZFGsQgJRGqqqhS2phHTWn9lDkIhBTqWqxQZ+IsRvtdHY9AvI2VX2hW68nfqGmuQsCEl3JdjfCF8OW1bPdtwhQ0gm2mQzfRE3a7KCYj0BNZJs8+Kxf/r6WtTEI2FIqlsMfFgRB5A6KUnSe/vUkX0AnuvUIt8SjM1m6wWQymUwmk8lkMgXRf5vi8rLQxtUhAAAAAElFTkSuQmCC`;
function createDrawing(drawingOptions?: IDrawingOptions): Drawing {
return new Drawing(
const createDrawing = (drawingOptions?: IDrawingOptions): Drawing =>
new Drawing(
{
fileName: "test.jpg",
stream: Buffer.from(imageBase64Data, "base64"),
@ -24,7 +24,6 @@ function createDrawing(drawingOptions?: IDrawingOptions): Drawing {
},
drawingOptions,
);
}
describe("Drawing", () => {
let currentBreak: Drawing;

View File

@ -25,7 +25,7 @@ export interface IDrawingOptions {
export class Drawing extends XmlComponent {
private readonly inline: Inline;
constructor(imageData: IMediaData, drawingOptions: IDrawingOptions = {}) {
public constructor(imageData: IMediaData, drawingOptions: IDrawingOptions = {}) {
super("w:drawing");
if (!drawingOptions.floating) {

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { EffectExtentAttributes } from "./effect-extent-attributes";
export class EffectExtent extends XmlComponent {
constructor() {
public constructor() {
super("wp:effectExtent");
this.root.push(

View File

@ -5,7 +5,7 @@ import { ExtentAttributes } from "./extent-attributes";
export class Extent extends XmlComponent {
private readonly attributes: ExtentAttributes;
constructor(x: number, y: number) {
public constructor(x: number, y: number) {
super("wp:extent");
this.attributes = new ExtentAttributes({

View File

@ -3,7 +3,7 @@ import { HorizontalPositionAlign, VerticalPositionAlign } from "@file/shared/ali
import { XmlComponent } from "@file/xml-components";
export class Align extends XmlComponent {
constructor(value: HorizontalPositionAlign | VerticalPositionAlign) {
public constructor(value: HorizontalPositionAlign | VerticalPositionAlign) {
super("wp:align");
this.root.push(value);
}

View File

@ -13,7 +13,7 @@ class HorizontalPositionAttributes extends XmlAttributeComponent<{
}
export class HorizontalPosition extends XmlComponent {
constructor(horizontalPosition: IHorizontalPositionOptions) {
public constructor(horizontalPosition: IHorizontalPositionOptions) {
super("wp:positionH");
this.root.push(

View File

@ -2,7 +2,7 @@
import { XmlComponent } from "@file/xml-components";
export class PositionOffset extends XmlComponent {
constructor(offsetValue: number) {
public constructor(offsetValue: number) {
super("wp:posOffset");
this.root.push(offsetValue.toString());
}

View File

@ -12,7 +12,7 @@ class SimplePosAttributes extends XmlAttributeComponent<{
}
export class SimplePos extends XmlComponent {
constructor() {
public constructor() {
super("wp:simplePos");
// NOTE: It's not fully supported in Microsoft Word, but this element is needed anyway

View File

@ -13,7 +13,7 @@ class VerticalPositionAttributes extends XmlAttributeComponent<{
}
export class VerticalPosition extends XmlComponent {
constructor(verticalPosition: IVerticalPositionOptions) {
public constructor(verticalPosition: IVerticalPositionOptions) {
super("wp:positionV");
this.root.push(

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { GraphicFrameLockAttributes } from "./graphic-frame-lock-attributes";
export class GraphicFrameLocks extends XmlComponent {
constructor() {
public constructor() {
super("a:graphicFrameLocks");
this.root.push(

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { GraphicFrameLocks } from "./graphic-frame-locks/graphic-frame-locks";
export class GraphicFrameProperties extends XmlComponent {
constructor() {
public constructor() {
super("wp:cNvGraphicFramePr");
this.root.push(new GraphicFrameLocks());

View File

@ -7,7 +7,7 @@ import { Pic } from "./pic";
export class GraphicData extends XmlComponent {
private readonly pic: Pic;
constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
public constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
super("a:graphicData");
this.root.push(

View File

@ -6,7 +6,7 @@ import { SourceRectangle } from "./source-rectangle";
import { Stretch } from "./stretch";
export class BlipFill extends XmlComponent {
constructor(mediaData: IMediaData) {
public constructor(mediaData: IMediaData) {
super("pic:blipFill");
this.root.push(new Blip(mediaData));

View File

@ -12,7 +12,7 @@ class BlipAttributes extends XmlAttributeComponent<{
}
export class Blip extends XmlComponent {
constructor(mediaData: IMediaData) {
public constructor(mediaData: IMediaData) {
super("a:blip");
this.root.push(
new BlipAttributes({

View File

@ -1,7 +1,7 @@
import { XmlComponent } from "@file/xml-components";
export class SourceRectangle extends XmlComponent {
constructor() {
public constructor() {
super("a:srcRect");
}
}

View File

@ -1,13 +1,13 @@
import { XmlComponent } from "@file/xml-components";
class FillRectangle extends XmlComponent {
constructor() {
public constructor() {
super("a:fillRect");
}
}
export class Stretch extends XmlComponent {
constructor() {
public constructor() {
super("a:stretch");
this.root.push(new FillRectangle());
}

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { PicLocks } from "./pic-locks/pic-locks";
export class ChildNonVisualProperties extends XmlComponent {
constructor() {
public constructor() {
super("pic:cNvPicPr");
this.root.push(new PicLocks());

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { PicLocksAttributes } from "./pic-locks-attributes";
export class PicLocks extends XmlComponent {
constructor() {
public constructor() {
super("a:picLocks");
this.root.push(
new PicLocksAttributes({

View File

@ -3,7 +3,7 @@ import { ChildNonVisualProperties } from "./child-non-visual-pic-properties/chil
import { NonVisualProperties } from "./non-visual-properties/non-visual-properties";
export class NonVisualPicProperties extends XmlComponent {
constructor() {
public constructor() {
super("pic:nvPicPr");
this.root.push(new NonVisualProperties());

View File

@ -2,7 +2,7 @@ import { XmlComponent } from "@file/xml-components";
import { NonVisualPropertiesAttributes } from "./non-visual-properties-attributes";
export class NonVisualProperties extends XmlComponent {
constructor() {
public constructor() {
super("pic:cNvPr");
this.root.push(

View File

@ -8,7 +8,7 @@ import { PicAttributes } from "./pic-attributes";
import { ShapeProperties } from "./shape-properties/shape-properties";
export class Pic extends XmlComponent {
constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
public constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
super("pic:pic");
this.root.push(

View File

@ -5,7 +5,7 @@ import { ExtentsAttributes } from "./extents-attributes";
export class Extents extends XmlComponent {
private readonly attributes: ExtentsAttributes;
constructor(x: number, y: number) {
public constructor(x: number, y: number) {
super("a:ext");
this.attributes = new ExtentsAttributes({

View File

@ -21,7 +21,7 @@ export class FormAttributes extends XmlAttributeComponent<{
export class Form extends XmlComponent {
private readonly extents: Extents;
constructor(options: IMediaDataTransformation) {
public constructor(options: IMediaDataTransformation) {
super("a:xfrm");
this.root.push(

View File

@ -3,7 +3,7 @@ import { XmlComponent } from "@file/xml-components";
import { OffsetAttributes } from "./off-attributes";
export class Offset extends XmlComponent {
constructor() {
public constructor() {
super("a:off");
this.root.push(

View File

@ -1,7 +1,7 @@
import { XmlComponent } from "@file/xml-components";
export class NoFill extends XmlComponent {
constructor() {
public constructor() {
super("a:noFill");
}
}

View File

@ -3,7 +3,7 @@ import { XmlComponent } from "@file/xml-components";
import { NoFill } from "./no-fill";
export class Outline extends XmlComponent {
constructor() {
public constructor() {
super("a:ln");
this.root.push(new NoFill());

View File

@ -2,7 +2,7 @@
import { XmlComponent } from "@file/xml-components";
export class AdjustmentValues extends XmlComponent {
constructor() {
public constructor() {
super("a:avLst");
}
}

View File

@ -4,7 +4,7 @@ import { AdjustmentValues } from "./adjustment-values/adjustment-values";
import { PresetGeometryAttributes } from "./preset-geometry-attributes";
export class PresetGeometry extends XmlComponent {
constructor() {
public constructor() {
super("a:prstGeom");
this.root.push(

View File

@ -10,7 +10,7 @@ import { ShapePropertiesAttributes } from "./shape-properties-attributes";
export class ShapeProperties extends XmlComponent {
private readonly form: Form;
constructor(transform: IMediaDataTransformation) {
public constructor(transform: IMediaDataTransformation) {
super("pic:spPr");
this.root.push(

View File

@ -14,7 +14,7 @@ class GraphicAttributes extends XmlAttributeComponent<{
export class Graphic extends XmlComponent {
private readonly data: GraphicData;
constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
public constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
super("a:graphic");
this.root.push(
new GraphicAttributes({

View File

@ -26,7 +26,7 @@ export class Inline extends XmlComponent {
private readonly extent: Extent;
private readonly graphic: Graphic;
constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
public constructor(mediaData: IMediaData, transform: IMediaDataTransformation) {
super("wp:inline");
this.root.push(

View File

@ -2,7 +2,7 @@
import { XmlComponent } from "@file/xml-components";
export class WrapNone extends XmlComponent {
constructor() {
public constructor() {
super("wp:wrapNone");
}
}

View File

@ -1,8 +1,9 @@
// http://officeopenxml.com/drwPicFloating-textWrap.php
import { XmlAttributeComponent, XmlComponent } from "@file/xml-components";
import { ITextWrapping, TextWrappingSide } from ".";
import { IDistance } from "../drawing";
import { IMargins } from "../floating";
import { ITextWrapping, TextWrappingSide } from "./text-wrapping";
interface IWrapSquareAttributes extends IDistance {
readonly wrapText?: TextWrappingSide;
@ -19,7 +20,7 @@ class WrapSquareAttributes extends XmlAttributeComponent<IWrapSquareAttributes>
}
export class WrapSquare extends XmlComponent {
constructor(
public constructor(
textWrapping: ITextWrapping,
margins: IMargins = {
top: 0,

View File

@ -14,7 +14,7 @@ class WrapTightAttributes extends XmlAttributeComponent<{
}
export class WrapTight extends XmlComponent {
constructor(
public constructor(
margins: IMargins = {
top: 0,
bottom: 0,

View File

@ -14,7 +14,7 @@ class WrapTopAndBottomAttributes extends XmlAttributeComponent<{
}
export class WrapTopAndBottom extends XmlComponent {
constructor(
public constructor(
margins: IMargins = {
top: 0,
bottom: 0,

View File

@ -6,6 +6,7 @@ import { sectionMarginDefaults, sectionPageSizeDefaults } from "./document";
import { File } from "./file";
import { Footer, Header } from "./header";
import { Paragraph } from "./paragraph";
import { Media } from "./media";
const PAGE_SIZE_DEFAULTS = {
"w:h": sectionPageSizeDefaults.HEIGHT,
@ -397,7 +398,6 @@ describe("File", () => {
sections: [],
});
// tslint:disable-next-line: no-unused-expression
expect(doc.Comments).to.not.be.undefined;
});
});
@ -409,8 +409,61 @@ describe("File", () => {
sections: [],
});
// tslint:disable-next-line: no-unused-expression
expect(doc.Numbering).to.not.be.undefined;
});
});
describe("#getters", () => {
it("should have defined getters", () => {
const doc = new File({
sections: [],
});
expect(doc.CoreProperties).to.not.be.undefined;
expect(doc.Media).to.not.be.undefined;
expect(doc.FileRelationships).to.not.be.undefined;
expect(doc.Headers).to.not.be.undefined;
expect(doc.Footers).to.not.be.undefined;
expect(doc.ContentTypes).to.not.be.undefined;
expect(doc.CustomProperties).to.not.be.undefined;
expect(doc.AppProperties).to.not.be.undefined;
expect(doc.FootNotes).to.not.be.undefined;
expect(doc.Settings).to.not.be.undefined;
expect(doc.Comments).to.not.be.undefined;
});
});
describe("#templates", () => {
// Test will be deprecated when import-dotx and templates are deprecated
it("should work with template", () => {
const doc = new File(
{
sections: [],
},
{
template: {
currentRelationshipId: 1,
headers: [],
footers: [],
styles: "",
titlePageIsDefined: true,
media: new Media(),
},
},
);
expect(doc).to.not.be.undefined;
});
});
describe("#externalStyles", () => {
it("should work with external styles", () => {
const doc = new File({
sections: [],
externalStyles: "",
});
expect(doc.Styles).to.not.be.undefined;
});
});
});

View File

@ -33,15 +33,17 @@ export interface ISectionOptions {
readonly even?: Footer;
};
readonly properties?: ISectionPropertiesOptions;
readonly children: (Paragraph | Table | TableOfContents)[];
readonly children: readonly (Paragraph | Table | TableOfContents)[];
}
export class File {
// tslint:disable-next-line:readonly-keyword
// eslint-disable-next-line functional/prefer-readonly-type
private currentRelationshipId: number = 1;
private readonly documentWrapper: DocumentWrapper;
// eslint-disable-next-line functional/prefer-readonly-type
private readonly headers: IDocumentHeader[] = [];
// eslint-disable-next-line functional/prefer-readonly-type
private readonly footers: IDocumentFooter[] = [];
private readonly coreProperties: CoreProperties;
private readonly numbering: Numbering;
@ -55,7 +57,7 @@ export class File {
private readonly styles: Styles;
private readonly comments: Comments;
constructor(options: IPropertiesOptions, fileProperties: IFileProperties = {}) {
public constructor(options: IPropertiesOptions, fileProperties: IFileProperties = {}) {
this.coreProperties = new CoreProperties({
...options,
creator: options.creator ?? "Un-named",
@ -63,13 +65,7 @@ export class File {
lastModifiedBy: options.lastModifiedBy ?? "Un-named",
});
this.numbering = new Numbering(
options.numbering
? options.numbering
: {
config: [],
},
);
this.numbering = new Numbering(options.numbering ? options.numbering : { config: [] });
this.comments = new Comments(options.comments ?? { children: [] });
this.fileRelationships = new Relationships();
@ -132,7 +128,7 @@ export class File {
}
if (options.footnotes) {
// tslint:disable-next-line: forin
// eslint-disable-next-line guard-for-in
for (const key in options.footnotes) {
this.footnotesWrapper.View.createFootNote(parseFloat(key), options.footnotes[key].children);
}
@ -160,6 +156,7 @@ export class File {
}
private createHeader(header: Header): HeaderWrapper {
// eslint-disable-next-line functional/immutable-data
const wrapper = new HeaderWrapper(this.media, this.currentRelationshipId++);
for (const child of header.options.children) {
@ -171,6 +168,7 @@ export class File {
}
private createFooter(footer: Footer): FooterWrapper {
// eslint-disable-next-line functional/immutable-data
const wrapper = new FooterWrapper(this.media, this.currentRelationshipId++);
for (const child of footer.options.children) {
@ -182,6 +180,7 @@ export class File {
}
private addHeaderToDocument(header: HeaderWrapper, type: HeaderFooterReferenceType = HeaderFooterReferenceType.DEFAULT): void {
// eslint-disable-next-line functional/immutable-data
this.headers.push({ header, type });
this.documentWrapper.Relationships.createRelationship(
header.View.ReferenceId,
@ -192,6 +191,7 @@ export class File {
}
private addFooterToDocument(footer: FooterWrapper, type: HeaderFooterReferenceType = HeaderFooterReferenceType.DEFAULT): void {
// eslint-disable-next-line functional/immutable-data
this.footers.push({ footer, type });
this.documentWrapper.Relationships.createRelationship(
footer.View.ReferenceId,
@ -224,26 +224,31 @@ export class File {
);
this.documentWrapper.Relationships.createRelationship(
// eslint-disable-next-line functional/immutable-data
this.currentRelationshipId++,
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",
"styles.xml",
);
this.documentWrapper.Relationships.createRelationship(
// eslint-disable-next-line functional/immutable-data
this.currentRelationshipId++,
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
"numbering.xml",
);
this.documentWrapper.Relationships.createRelationship(
// eslint-disable-next-line functional/immutable-data
this.currentRelationshipId++,
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
"footnotes.xml",
);
this.documentWrapper.Relationships.createRelationship(
// eslint-disable-next-line functional/immutable-data
this.currentRelationshipId++,
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",
"settings.xml",
);
this.documentWrapper.Relationships.createRelationship(
// eslint-disable-next-line functional/immutable-data
this.currentRelationshipId++,
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
"comments.xml",
@ -274,11 +279,11 @@ export class File {
return this.fileRelationships;
}
public get Headers(): HeaderWrapper[] {
public get Headers(): readonly HeaderWrapper[] {
return this.headers.map((item) => item.header);
}
public get Footers(): FooterWrapper[] {
public get Footers(): readonly FooterWrapper[] {
return this.footers.map((item) => item.footer);
}

View File

@ -41,7 +41,7 @@ describe("FooterWrapper", () => {
it("should call the underlying footer's addChildElement", () => {
const file = new FooterWrapper(new Media(), 1);
const spy = sinon.spy(file.View, "addChildElement");
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
file.addChildElement({} as any);
expect(spy.called).to.equal(true);

View File

@ -17,7 +17,7 @@ export class FooterWrapper implements IViewWrapper {
private readonly footer: Footer;
private readonly relationships: Relationships;
constructor(private readonly media: Media, referenceId: number, initContent?: XmlComponent) {
public constructor(private readonly media: Media, referenceId: number, initContent?: XmlComponent) {
this.footer = new Footer(referenceId, initContent);
this.relationships = new Relationships();
}

View File

@ -7,7 +7,7 @@ import { FooterAttributes } from "./footer-attributes";
export class Footer extends InitializableXmlComponent {
private readonly refId: number;
constructor(referenceNumber: number, initContent?: XmlComponent) {
public constructor(referenceNumber: number, initContent?: XmlComponent) {
super("w:ftr", initContent);
this.refId = referenceNumber;
if (!initContent) {

View File

@ -7,9 +7,7 @@ describe("FootnotesWrapper", () => {
it("should create", () => {
const file = new FootnotesWrapper();
// tslint:disable-next-line: no-unused-expression
expect(file.View).to.be.ok;
// tslint:disable-next-line: no-unused-expression
expect(file.Relationships).to.be.ok;
});
});

View File

@ -6,7 +6,7 @@ export class FootnotesWrapper implements IViewWrapper {
private readonly footnotess: FootNotes;
private readonly relationships: Relationships;
constructor() {
public constructor() {
this.footnotess = new FootNotes();
this.relationships = new Relationships();
}

View File

@ -12,11 +12,11 @@ export enum FootnoteType {
export interface IFootnoteOptions {
readonly id: number;
readonly type?: FootnoteType;
readonly children: Paragraph[];
readonly children: readonly Paragraph[];
}
export class Footnote extends XmlComponent {
constructor(options: IFootnoteOptions) {
public constructor(options: IFootnoteOptions) {
super("w:footnote");
this.root.push(
new FootnoteAttributes({

View File

@ -2,7 +2,7 @@ import { Run } from "@file/paragraph";
import { ContinuationSeperator } from "./continuation-seperator";
export class ContinuationSeperatorRun extends Run {
constructor() {
public constructor() {
super({});
this.root.push(new ContinuationSeperator());

View File

@ -1,7 +1,7 @@
import { XmlComponent } from "@file/xml-components";
export class ContinuationSeperator extends XmlComponent {
constructor() {
public constructor() {
super("w:continuationSeparator");
}
}

View File

@ -3,7 +3,7 @@ import { Run } from "@file/paragraph";
import { FootnoteRef } from "./footnote-ref";
export class FootnoteRefRun extends Run {
constructor() {
public constructor() {
super({
style: "FootnoteReference",
});

View File

@ -1,7 +1,7 @@
import { XmlComponent } from "@file/xml-components";
export class FootnoteRef extends XmlComponent {
constructor() {
public constructor() {
super("w:footnoteRef");
}
}

View File

@ -10,7 +10,7 @@ export class FootNoteReferenceRunAttributes extends XmlAttributeComponent<{
}
export class FootnoteReference extends XmlComponent {
constructor(id: number) {
public constructor(id: number) {
super("w:footnoteReference");
this.root.push(
@ -22,7 +22,7 @@ export class FootnoteReference extends XmlComponent {
}
export class FootnoteReferenceRun extends Run {
constructor(id: number) {
public constructor(id: number) {
super({ style: "FootnoteReference" });
this.root.push(new FootnoteReference(id));

View File

@ -2,7 +2,7 @@ import { Run } from "@file/paragraph";
import { Seperator } from "./seperator";
export class SeperatorRun extends Run {
constructor() {
public constructor() {
super({});
this.root.push(new Seperator());

View File

@ -1,7 +1,7 @@
import { XmlComponent } from "@file/xml-components";
export class Seperator extends XmlComponent {
constructor() {
public constructor() {
super("w:separator");
}
}

View File

@ -7,7 +7,7 @@ import { SeperatorRun } from "./footnote/run/seperator-run";
import { FootnotesAttributes } from "./footnotes-attributes";
export class FootNotes extends XmlComponent {
constructor() {
public constructor() {
super("w:footnotes");
this.root.push(
@ -67,7 +67,7 @@ export class FootNotes extends XmlComponent {
this.root.push(spacing);
}
public createFootNote(id: number, paragraph: Paragraph[]): void {
public createFootNote(id: number, paragraph: readonly Paragraph[]): void {
const footnote = new Footnote({
id: id,
children: paragraph,

View File

@ -41,7 +41,7 @@ describe("HeaderWrapper", () => {
it("should call the underlying header's addChildElement", () => {
const file = new HeaderWrapper(new Media(), 1);
const spy = sinon.spy(file.View, "addChildElement");
// tslint:disable-next-line:no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any
file.addChildElement({} as any);
expect(spy.called).to.equal(true);

View File

@ -17,7 +17,7 @@ export class HeaderWrapper implements IViewWrapper {
private readonly header: Header;
private readonly relationships: Relationships;
constructor(private readonly media: Media, referenceId: number, initContent?: XmlComponent) {
public constructor(private readonly media: Media, referenceId: number, initContent?: XmlComponent) {
this.header = new Header(referenceId, initContent);
this.relationships = new Relationships();
}

View File

@ -2,13 +2,21 @@ import { Paragraph } from "./paragraph";
import { Table } from "./table";
export interface IHeaderOptions {
readonly children: (Paragraph | Table)[];
readonly children: readonly (Paragraph | Table)[];
}
export class Header {
constructor(public readonly options: IHeaderOptions = { children: [] }) {}
public readonly options: IHeaderOptions;
public constructor(options: IHeaderOptions = { children: [] }) {
this.options = options;
}
}
export class Footer {
constructor(public readonly options: IHeaderOptions = { children: [] }) {}
public readonly options: IHeaderOptions;
public constructor(options: IHeaderOptions = { children: [] }) {
this.options = options;
}
}

View File

@ -7,7 +7,7 @@ import { HeaderAttributes } from "./header-attributes";
export class Header extends InitializableXmlComponent {
private readonly refId: number;
constructor(referenceNumber: number, initContent?: XmlComponent) {
public constructor(referenceNumber: number, initContent?: XmlComponent) {
super("w:hdr", initContent);
this.refId = referenceNumber;

View File

@ -37,6 +37,7 @@ describe("Media", () => {
});
it("should return UInt8Array if atob is present", () => {
// eslint-disable-next-line functional/immutable-data
global.atob = () => "atob result";
const image = new Media().addMedia("", {
@ -45,11 +46,12 @@ describe("Media", () => {
});
expect(image.stream).to.be.an.instanceof(Uint8Array);
// tslint:disable-next-line: no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any, functional/immutable-data
(global as any).atob = undefined;
});
it("should use data as is if its not a string", () => {
// eslint-disable-next-line functional/immutable-data
global.atob = () => "atob result";
const image = new Media().addMedia(Buffer.from(""), {
@ -58,7 +60,7 @@ describe("Media", () => {
});
expect(image.stream).to.be.an.instanceof(Uint8Array);
// tslint:disable-next-line: no-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any, functional/immutable-data
(global as any).atob = undefined;
});
});

View File

@ -13,9 +13,10 @@ export interface IMediaTransformation {
}
export class Media {
// eslint-disable-next-line functional/prefer-readonly-type
private readonly map: Map<string, IMediaData>;
constructor() {
public constructor() {
this.map = new Map<string, IMediaData>();
}
@ -68,6 +69,7 @@ export class Media {
.map((c) => c.charCodeAt(0)),
);
} else {
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
const b = require("buf" + "fer");
return new b.Buffer(dataURI, "base64");
}

Some files were not shown because too many files have changed in this diff Show More