Skip to content

Commit f933913

Browse files
committed
Merge branch 'release/2.2.0'
2 parents 25941f6 + 788347c commit f933913

File tree

130 files changed

+4029
-14997
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+4029
-14997
lines changed

.config/webpack/languages.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ const WebpackOnBuildPlugin = require('on-build-webpack');
1111
const fs = require('fs');
1212
const fsExtra = require('fs-extra');
1313

14-
const PACKAGE_FILENAME = process.env.HOT_FILENAME;
15-
1614
function getEntryJsFiles() {
1715
const entryObject = {};
1816
const filesInLanguagesDirectory = fs.readdirSync(SOURCE_LANGUAGES_DIRECTORY);

.eslintrc.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = {
44
plugins: [
55
'@typescript-eslint',
66
'license-header',
7+
'jsdoc',
78
],
89
parserOptions: {
910
tsconfigRootDir: __dirname,
@@ -67,6 +68,42 @@ module.exports = {
6768
'@typescript-eslint/no-unused-vars': ['warn', { 'argsIgnorePattern': '^_' }],
6869
'@typescript-eslint/no-explicit-any': 'warn',
6970
'@typescript-eslint/interface-name-prefix': 'warn',
71+
72+
"jsdoc/check-access": 'warn',
73+
"jsdoc/check-alignment": 'warn',
74+
"jsdoc/check-param-names": 'warn',
75+
"jsdoc/check-property-names": 'warn',
76+
"jsdoc/check-tag-names": 'warn',
77+
"jsdoc/check-types": 'warn',
78+
"jsdoc/empty-tags": 'warn',
79+
"jsdoc/implements-on-classes": 'warn',
80+
"jsdoc/multiline-blocks": 'warn',
81+
"jsdoc/newline-after-description": 'warn',
82+
"jsdoc/no-multi-asterisks": 'warn',
83+
"jsdoc/no-undefined-types": 'warn',
84+
"jsdoc/require-param-description": 'warn',
85+
"jsdoc/require-param-name": 'warn',
86+
"jsdoc/require-param-type": 'warn',
87+
"jsdoc/require-property-description": 'warn',
88+
"jsdoc/require-property-name": 'warn',
89+
"jsdoc/require-property-type": 'warn',
90+
"jsdoc/require-returns-check": 'warn',
91+
"jsdoc/require-returns-description": 'warn',
92+
"jsdoc/require-returns-type": 'warn',
93+
"jsdoc/require-yields": 'warn',
94+
"jsdoc/require-yields-check": 'warn',
95+
"jsdoc/tag-lines": 'warn',
96+
"jsdoc/valid-types": 'warn',
97+
"jsdoc/require-jsdoc": ['warn', {
98+
require: {
99+
ArrowFunctionExpression: true,
100+
ClassDeclaration: true,
101+
ClassExpression: true,
102+
FunctionDeclaration: true,
103+
FunctionExpression: true,
104+
MethodDefinition: true,
105+
}
106+
}],
70107
},
71108
overrides: [
72109
{

.github/workflows/publish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ jobs:
3535
publish_dir: docs/.vuepress/dist
3636
github_token: ${{ secrets.GITHUB_TOKEN }}
3737
publish_branch: gh-pages
38+
cname: hyperformula.handsontable.com # as in https://github.com/peaceiris/actions-gh-pages/blob/ba0b7df03e25ff29c924be8149041119e9421ea6/README.md#%EF%B8%8F-cname

.gitignore

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
.idea/
2-
commonjs/
3-
coverage/
4-
dist/
5-
doc/
6-
docs/api/
7-
docs/functions/
8-
docs/.vuepress/dist/
9-
docs/.vuepress/api-sidebar-relative.json
10-
docs/.vuepress/api-sidebar.json
11-
typedoc/
12-
es/
13-
languages/
14-
lib/
15-
test-jasmine/
16-
test-jest/
2+
.vscode
3+
/commonjs/
4+
/coverage/
5+
/dist/
6+
/doc/
7+
/docs/api/
8+
/docs/functions/
9+
/docs/.vuepress/dist/
10+
/docs/.vuepress/api-sidebar-relative.json
11+
/docs/.vuepress/api-sidebar.json
12+
/typedoc/
13+
/es/
14+
/languages/
15+
/lib/
16+
/test-jasmine/
17+
/test-jest/
1718
node_modules/
18-
typings/
19+
/typings/
1920

2021
*.iml
2122
dev*.html
22-
yarn-error.log
2323
.DS_Store

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
## [2.2.0] - 2022-11-17
10+
11+
### Added
12+
- Added an American English (`enUS`) language pack. It's a convenience alias: it contains the same translations as the existing British English (`enGB`) language pack. [#1025](https://github.com/handsontable/hyperformula/issues/1025)
13+
14+
### Fixed
15+
- Fixed functions VLOOKUP and HLOOKUP to handle duplicates in the way specified by the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#HLOOKUP) standard. [#1072](https://github.com/handsontable/hyperformula/issues/1072)
16+
- Fixed the MATCH function to handle descending ranges in the way specified by the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#MATCH) standard. [#1063](https://github.com/handsontable/hyperformula/issues/1063)
17+
918
## [2.1.0] - 2022-09-08
1019

1120
### Added

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525

2626
HyperFormula is a headless spreadsheet built on top of TypeScript. It is a parser and evaluator of Excel formulas for web applications. You can use it in a browser or as a service, with Node.js as your back-end technology.
2727
- High-speed Excel formula parsing and evaluating
28-
- A library of [380+ built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html) available in 16 languages
28+
- A library of nearly [400 built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html)
29+
- Support for [internationalization](https://hyperformula.handsontable.com/guide/i18n-features.html) with 17 built-in languages
2930
- Support for [custom functions](https://hyperformula.handsontable.com/guide/custom-functions.html)
3031
- Function syntax compatible with [Microsoft Excel](https://hyperformula.handsontable.com/guide/compatibility-with-microsoft-excel.html) and [Google Sheets](https://hyperformula.handsontable.com/guide/compatibility-with-google-sheets.html)
3132
- [Support for Node.js](https://hyperformula.handsontable.com/guide/server-side-installation.html#install-with-npm-or-yarn)

circle.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.

docs/.vuepress/config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ module.exports = {
203203
title: 'Internationalization',
204204
collapsable: false,
205205
children: [
206+
['/guide/i18n-features', 'Internationalization features'],
206207
['/guide/localizing-functions', 'Localizing functions'],
207208
['/guide/date-and-time-handling', 'Date and time handling'],
208209
]
@@ -226,6 +227,7 @@ module.exports = {
226227
['/guide/custom-functions', 'Custom functions'],
227228
['/guide/performance', 'Performance'],
228229
['/guide/known-limitations', 'Known limitations'],
230+
['/guide/file-import', 'File import'],
229231
]
230232
},
231233
{

docs/api-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This section contains information about the class for creating HyperFormula inst
1414
The snippet shows an example how to use `buildFromArray` which is one of [three static methods](/api/classes/hyperformula.html#factories) for creating an instance of HyperFormula:
1515
```javascript
1616
const sheetData = [
17-
['0', '=SUM(1,2,3)', '52'],
17+
['0', '=SUM(1, 2, 3)', '52'],
1818
['=SUM(A1:C1)', '', '=A1'],
1919
['2', '=SUM(A1:C1)', '91'],
2020
];

docs/guide/advanced-usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ console.log(winningTeam)
122122
## Demo
123123

124124
<iframe
125-
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.1.x/advanced-usage?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
125+
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.2.x/advanced-usage?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
126126
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
127127
title="handsontable/hyperformula-demos: advanced-usage"
128128
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"

docs/guide/arrays.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Use array formulas to perform an operation (or call a function) on multiple cell
77
In HyperFormula, an array can be:
88
* A range of cell addresses (e.g. `A1:A10`)
99
* A result of an arithmetic operation (e.g. `5*A1:B5`)
10-
* A result of a function (e.g. `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5,2,2))`)
10+
* A result of a function (e.g. `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5, 2, 2))`)
1111
* An **inline array**: an ad-hoc array that doesn't refer to any range of cells (e.g. `{1, 3, 5}`)
1212

1313
An array is inherently a two-dimensional object.
@@ -28,7 +28,7 @@ Every row must be of equal length.
2828
If an inline array contains a cell reference, and the cell's value changes, the array is not updated.
2929
:::
3030

31-
```js
31+
```
3232
= {1, 2, 3} // an inline array with a single row
3333
= {1, 2 ; 3, 4} // an inline array with two rows
3434
= SUM({1, 2, 3}) // an inline array as an argument of a function
@@ -49,20 +49,20 @@ You can enable the array arithmetic mode:
4949

5050
To enable the array arithmetic mode once, within a particular function or formula, use the `ARRAYFORMULA` function:
5151

52-
| Syntax | Example |
53-
| :--- | :--- |
54-
| `ARRAYFORMULA(your_array_formula)` | `=ARRAYFORMULA(A2:A5*B2:B5)` |
52+
| Syntax | Example |
53+
|:--------------------------------------------------|:----------------------------------|
54+
| `ARRAYFORMULA(your_array_formula)` | `=ARRAYFORMULA(A2:A5*B2:B5)` |
5555
| `ARRAYFORMULA(YOUR_FUNCTION(your_array_formula))` | `=ARRAYFORMULA(ISEVEN(A2:A5*10))` |
5656

5757
### Enabling the array arithmetic mode globally
5858

5959
To enable the array arithmetic mode by default, everywhere in your HyperFormula instance:
6060

61-
* In your HyperFormula [configuration](../api/interfaces/configparams.html#usearrayarithmetic), set the `useArrayArithmetic` option to `true`.
61+
* In your HyperFormula [configuration](../api/interfaces/configparams.md#usearrayarithmetic), set the `useArrayArithmetic` option to `true`.
6262

6363
With the array arithmetic mode enabled globally, you can operate on arrays without using the `ARRAYFORMULA` function:
6464

65-
```js
65+
```
6666
=A2:A5*B2:B5
6767
6868
ISEVEN(A2:A5*10)
@@ -85,7 +85,7 @@ You can operate on arrays just like on single values.
8585

8686
When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is enabled, each output array value is the result of your operation on the corresponding input array value.
8787

88-
```js
88+
```
8989
=ARRAYFORMULA(A2:A5*B2:B5)
9090
9191
// calculates:
@@ -100,7 +100,7 @@ You can pass arrays to functions that would normally accept [scalars](#about-arr
100100

101101
When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is enabled, and you pass an array to a [scalar](#about-arrays) function, that function produces an array on the output as well.
102102

103-
```js
103+
```
104104
=ARRAYFORMULA(ISEVEN(A2:A5*10))
105105
106106
// calculates:
@@ -114,7 +114,7 @@ When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is enabled
114114

115115
If an input array has a dimension of `1`, it's automatically repeated ("broadcast") on that dimension to match the size of the output.
116116

117-
```js
117+
```
118118
=ARRAYFORMULA(ISEVEN(A2:A5*B2))
119119
120120
// calculates:
@@ -128,17 +128,17 @@ If an input array has a dimension of `1`, it's automatically repeated ("broadcas
128128

129129
When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is enabled, you can filter an array, based on boolean arrays, using the `FILTER` function:
130130

131-
| Syntax | Example |
132-
| :--- | :--- |
133-
| `FILTER(your_array, BoolArray1[; BoolArray2[; ...]]` | `=ARRAYFORMULA(FILTER(A2:A5*10), {1,0,0,1})` |
131+
| Syntax | Example |
132+
|:-----------------------------------------------------|:------------------------------------------------|
133+
| `FILTER(your_array, BoolArray1[, BoolArray2[, ...]]` | `=ARRAYFORMULA(FILTER(A2:A5*10), {1, 0, 0, 1})` |
134134

135135
### Constraining an array's size
136136

137137
When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is enabled, you can constrain the size of the output array, using the `ARRAY_CONSTRAIN` function:
138138

139-
| Syntax | Example |
140-
| :--- | :--- |
141-
| `ARRAY_CONSTRAIN(your_array,height,width)` | `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5,2,2))` |
139+
| Syntax | Example |
140+
|:-------------------------------------------|:----------------------------------------------|
141+
| `ARRAY_CONSTRAIN(your_array,height,width)` | `=ARRAYFORMULA(ARRAY_CONSTRAIN(A2:E5, 2, 2))` |
142142

143143
If your specified output array size is smaller than the input array size, only the corresponding top-left cells of the input array are taken into account.
144144

@@ -160,7 +160,7 @@ When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is disable
160160

161161
When the [array arithmetic mode](#enabling-the-array-arithmetic-mode) is disabled, and you operate on a range of width/height equal to `1`, the behavior depends on your array formula's location:
162162

163-
| Your array formula's location | Behavior |
164-
| :--- | :--- |
163+
| Your array formula's location | Behavior |
164+
|:--------------------------------------------------|:---------------------------------------|
165165
| In the same row as as one of the range's elements | Only that particular element is taken. |
166-
| Any other cell | `#VALUE!` error |
166+
| Any other cell | `#VALUE!` error |

docs/guide/basic-operations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ This demo presents several basic operations integrated with a
389389
sample UI.
390390

391391
<iframe
392-
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.1.x/basic-operations?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
392+
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.2.x/basic-operations?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
393393
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
394394
title="handsontable/hyperformula-demos: basic-operations"
395395
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"

docs/guide/basic-usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ works. It's time to move on to a more
6565
## Demo
6666

6767
<iframe
68-
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.1.x/basic-usage?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
68+
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.2.x/basic-usage?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
6969
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
7070
title="handsontable/hyperformula-demos: basic-usage"
7171
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"

docs/guide/batch-operations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ can be sent as a single one.
118118
## Demo
119119

120120
<iframe
121-
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.1.x/batch-operations?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
121+
src="https://codesandbox.io/embed/github/handsontable/hyperformula-demos/tree/2.2.x/batch-operations?autoresize=1&fontsize=11&hidenavigation=1&theme=light&view=preview"
122122
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
123123
title="handsontable/hyperformula-demos: batch-operations"
124124
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"

0 commit comments

Comments
 (0)