qvdjs 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,7 +38,7 @@ files, and validate output in your own Qlik environment** before relying on it.
38
38
  Qlik file and writing it back reproduces its symbol table byte for byte, whichever way it was read; a
39
39
  value you change is written as Qlik stores that kind of value. Where that boundary lies is the first
40
40
  thing worth reading:
41
- [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v1.0/overview/what-a-round-trip-preserves/).
41
+ [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v2.0/overview/what-a-round-trip-preserves/).
42
42
 
43
43
  ## Checked against Qlik Sense
44
44
 
@@ -65,7 +65,7 @@ Two differences are by design: Qlik often gives a field more bits in the index t
65
65
  where qvdjs uses the fewest, and qvdjs adds no tags or number formats of its own - Qlik works tags out
66
66
  when it loads a file. QVD is also QlikView's format, but QlikView is not part of the comparison.
67
67
 
68
- → [Checked against Qlik Sense](https://qvdjs.ptarmiganlabs.com/v1.0/overview/checked-against-qlik-sense/)
68
+ → [Checked against Qlik Sense](https://qvdjs.ptarmiganlabs.com/v2.0/overview/checked-against-qlik-sense/)
69
69
 
70
70
  ## Four ways to open a file
71
71
 
@@ -107,7 +107,7 @@ Reaching for `fromQvd` when you wanted one of the other three is the common mist
107
107
  `fromQvd(path, {maxRows: 0})` is **not** a substitute for `readMetadata`: it loads no rows but still
108
108
  parses the whole symbol table, which grows with the data.
109
109
 
110
- → [Choosing an entry point](https://qvdjs.ptarmiganlabs.com/v1.0/getting-started/)
110
+ → [Choosing an entry point](https://qvdjs.ptarmiganlabs.com/v2.0/getting-started/)
111
111
 
112
112
  ## What a cell holds
113
113
 
@@ -171,7 +171,7 @@ NULL. A dual value - a `QvdDual`, or an object with exactly the keys `number` an
171
171
  as a dual, which is how a number gets the text Qlik displays. As in Qlik, a field holds one text per
172
172
  number, the first written. Anything else is refused with a `QvdValidationError`.
173
173
 
174
- → [Writing a QVD](https://qvdjs.ptarmiganlabs.com/v1.0/guides/)
174
+ → [Writing a QVD](https://qvdjs.ptarmiganlabs.com/v2.0/guides/)
175
175
 
176
176
  ## Reading part of a file
177
177
 
@@ -211,7 +211,7 @@ try {
211
211
  When it is `iterate()` that overflowed, the context carries `recommendedChunkSize` as well, so a
212
212
  caller cannot mistake one recommendation for the other.
213
213
 
214
- → [Memory and file size limits](https://qvdjs.ptarmiganlabs.com/v1.0/overview/memory-and-file-size-limits/)
214
+ → [Memory and file size limits](https://qvdjs.ptarmiganlabs.com/v2.0/overview/memory-and-file-size-limits/)
215
215
 
216
216
  ## Metadata
217
217
 
@@ -228,7 +228,7 @@ df.setFileMetadata({tableName: 'UpdatedProducts'});
228
228
  await df.toQvd('products-v2.qvd');
229
229
  ```
230
230
 
231
- → [Metadata reference](https://qvdjs.ptarmiganlabs.com/v1.0/reference/)
231
+ → [Metadata reference](https://qvdjs.ptarmiganlabs.com/v2.0/reference/)
232
232
 
233
233
  ## File paths are sandboxed
234
234
 
@@ -252,7 +252,7 @@ is a different file at that name. Either is a `QvdSecurityError` whose `context.
252
252
  swapped for a symlink in the moment between the check and the open — is the one gap left, so keep
253
253
  the allowed directory's own subdirectories out of untrusted hands.
254
254
 
255
- → [Path security](https://qvdjs.ptarmiganlabs.com/v1.0/overview/path-security/)
255
+ → [Path security](https://qvdjs.ptarmiganlabs.com/v2.0/overview/path-security/)
256
256
 
257
257
  ## Errors
258
258
 
@@ -273,7 +273,7 @@ without reporting an error; `error.context.filePosition` says where the file sto
273
273
  `error.name` is always the class name, in the CommonJS and ES module builds alike, so it works across
274
274
  a module boundary where `instanceof` may not.
275
275
 
276
- → [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v1.0/troubleshooting/)
276
+ → [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v2.0/troubleshooting/)
277
277
 
278
278
  ## Known limitations
279
279
 
@@ -286,7 +286,7 @@ Honest boundaries rather than an issue list — these are the ones that change w
286
286
  | **A killed process can leave a temporary file** | A write builds `<name>.qvdjs-<hex>.tmp` beside the QVD and removes it however the write ends — unless the process is killed outright, or the removal is itself refused, in which case the error names the file in `context.temporaryFile`. The QVD is untouched either way, and such a file can be deleted. `{atomic: false}` writes none when it rewrites a QVD that exists, and damages the QVD instead; a QVD that does not exist yet is renamed into place in either mode. |
287
287
  | **The writer takes numbers, strings, dual values and `null`** | Anything else - a `Date`, a boolean, an array, a `QvdSymbol` - is refused with a `QvdValidationError` naming the field and the row. Convert first: a `Date` to `new QvdDual(dateToQlikSerial(date), text)`, the serial and the text Qlik shows, which is how Qlik stores a date; a boolean to `-1` and `0`, as a Qlik comparison stores it. |
288
288
 
289
- → [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v1.0/overview/what-a-round-trip-preserves/)
289
+ → [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v2.0/overview/what-a-round-trip-preserves/)
290
290
 
291
291
  ## Documentation
292
292
 
@@ -295,13 +295,13 @@ where everything above is covered properly:
295
295
 
296
296
  | | |
297
297
  | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
298
- | [Getting started](https://qvdjs.ptarmiganlabs.com/v1.0/getting-started/) | Install, choose an entry point, first read and write |
299
- | [Guides](https://qvdjs.ptarmiganlabs.com/v1.0/guides/) | One page per task, runnable sample code |
300
- | [Concepts](https://qvdjs.ptarmiganlabs.com/v1.0/concepts/) | The QVD format, symbols and duals, bit stuffing, the memory model |
301
- | [Reference](https://qvdjs.ptarmiganlabs.com/v1.0/reference/) | Every class, method, option and error |
302
- | [Performance](https://qvdjs.ptarmiganlabs.com/v1.0/performance/) | Measured baselines, and how to read them |
303
- | [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v1.0/troubleshooting/) | What each failure means, and what to do about it |
304
- | [Checked against Qlik Sense](https://qvdjs.ptarmiganlabs.com/v1.0/overview/checked-against-qlik-sense/) | How qvdjs's output is compared with Qlik Sense's |
298
+ | [Getting started](https://qvdjs.ptarmiganlabs.com/v2.0/getting-started/) | Install, choose an entry point, first read and write |
299
+ | [Guides](https://qvdjs.ptarmiganlabs.com/v2.0/guides/) | One page per task, runnable sample code |
300
+ | [Concepts](https://qvdjs.ptarmiganlabs.com/v2.0/concepts/) | The QVD format, symbols and duals, bit stuffing, the memory model |
301
+ | [Reference](https://qvdjs.ptarmiganlabs.com/v2.0/reference/) | Every class, method, option and error |
302
+ | [Performance](https://qvdjs.ptarmiganlabs.com/v2.0/performance/) | Measured baselines, and how to read them |
303
+ | [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v2.0/troubleshooting/) | What each failure means, and what to do about it |
304
+ | [Checked against Qlik Sense](https://qvdjs.ptarmiganlabs.com/v2.0/overview/checked-against-qlik-sense/) | How qvdjs's output is compared with Qlik Sense's |
305
305
 
306
306
  Benchmarks run weekly and publish to
307
307
  [ptarmiganlabs.github.io/qvdjs](https://ptarmiganlabs.github.io/qvdjs/).