qvdjs 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,7 +37,7 @@ files, and validate output in your own Qlik environment** before relying on it.
37
37
  Qlik file and writing it back reproduces its symbol table byte for byte, whichever way it was read; a
38
38
  value you change is written as Qlik stores that kind of value. Where that boundary lies is the first
39
39
  thing worth reading:
40
- [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v0.10/overview/what-a-round-trip-preserves/).
40
+ [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v1.0/overview/what-a-round-trip-preserves/).
41
41
 
42
42
  ## Four ways to open a file
43
43
 
@@ -79,7 +79,7 @@ Reaching for `fromQvd` when you wanted one of the other three is the common mist
79
79
  `fromQvd(path, {maxRows: 0})` is **not** a substitute for `readMetadata`: it loads no rows but still
80
80
  parses the whole symbol table, which grows with the data.
81
81
 
82
- → [Choosing an entry point](https://qvdjs.ptarmiganlabs.com/v0.10/getting-started/)
82
+ → [Choosing an entry point](https://qvdjs.ptarmiganlabs.com/v1.0/getting-started/)
83
83
 
84
84
  ## What a cell holds
85
85
 
@@ -125,7 +125,7 @@ NULL. A dual value - a `QvdDual`, or an object with exactly the keys `number` an
125
125
  as a dual, which is how a number gets the text Qlik displays. As in Qlik, a field holds one text per
126
126
  number, the first written. Anything else is refused with a `QvdValidationError`.
127
127
 
128
- → [Writing a QVD](https://qvdjs.ptarmiganlabs.com/v0.10/guides/)
128
+ → [Writing a QVD](https://qvdjs.ptarmiganlabs.com/v1.0/guides/)
129
129
 
130
130
  ## Reading part of a file
131
131
 
@@ -165,7 +165,7 @@ try {
165
165
  When it is `iterate()` that overflowed, the context carries `recommendedChunkSize` as well, so a
166
166
  caller cannot mistake one recommendation for the other.
167
167
 
168
- → [Memory and file size limits](https://qvdjs.ptarmiganlabs.com/v0.10/overview/memory-and-file-size-limits/)
168
+ → [Memory and file size limits](https://qvdjs.ptarmiganlabs.com/v1.0/overview/memory-and-file-size-limits/)
169
169
 
170
170
  ## Metadata
171
171
 
@@ -182,7 +182,7 @@ df.setFileMetadata({tableName: 'UpdatedProducts'});
182
182
  await df.toQvd('products-v2.qvd');
183
183
  ```
184
184
 
185
- → [Metadata reference](https://qvdjs.ptarmiganlabs.com/v0.10/reference/)
185
+ → [Metadata reference](https://qvdjs.ptarmiganlabs.com/v1.0/reference/)
186
186
 
187
187
  ## File paths are sandboxed
188
188
 
@@ -197,7 +197,7 @@ await QvdDataFrame.fromQvd(anyPath, {allowedDir: '/'}); // deliberately unrestri
197
197
  Containment is decided by the filesystem — both paths are resolved through symlinks and compared by
198
198
  device and inode — so a link inside the allowed directory pointing out of it is refused.
199
199
 
200
- → [Path security](https://qvdjs.ptarmiganlabs.com/v0.10/overview/path-security/)
200
+ → [Path security](https://qvdjs.ptarmiganlabs.com/v1.0/overview/path-security/)
201
201
 
202
202
  ## Errors
203
203
 
@@ -210,7 +210,7 @@ underlying Node error.
210
210
  `error.name` is always the class name, in the CommonJS and ES module builds alike, so it works across
211
211
  a module boundary where `instanceof` may not.
212
212
 
213
- → [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v0.10/troubleshooting/)
213
+ → [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v1.0/troubleshooting/)
214
214
 
215
215
  ## Known limitations
216
216
 
@@ -223,7 +223,7 @@ Honest boundaries rather than an issue list — these are the ones that change w
223
223
  | **Writes are not atomic** | `toQvd()` writes in place. A failure part-way through leaves the previous file damaged. Write to a temporary path and rename if that matters. |
224
224
  | **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. |
225
225
 
226
- → [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v0.10/overview/what-a-round-trip-preserves/)
226
+ → [What a round trip preserves](https://qvdjs.ptarmiganlabs.com/v1.0/overview/what-a-round-trip-preserves/)
227
227
 
228
228
  ## Documentation
229
229
 
@@ -232,12 +232,12 @@ where everything above is covered properly:
232
232
 
233
233
  | | |
234
234
  | ------------------------------------------------------------------------- | ----------------------------------------------------------------- |
235
- | [Getting started](https://qvdjs.ptarmiganlabs.com/v0.10/getting-started/) | Install, choose an entry point, first read and write |
236
- | [Guides](https://qvdjs.ptarmiganlabs.com/v0.10/guides/) | One page per task, runnable sample code |
237
- | [Concepts](https://qvdjs.ptarmiganlabs.com/v0.10/concepts/) | The QVD format, symbols and duals, bit stuffing, the memory model |
238
- | [Reference](https://qvdjs.ptarmiganlabs.com/v0.10/reference/) | Every class, method, option and error |
239
- | [Performance](https://qvdjs.ptarmiganlabs.com/v0.10/performance/) | Measured baselines, and how to read them |
240
- | [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v0.10/troubleshooting/) | What each failure means, and what to do about it |
235
+ | [Getting started](https://qvdjs.ptarmiganlabs.com/v1.0/getting-started/) | Install, choose an entry point, first read and write |
236
+ | [Guides](https://qvdjs.ptarmiganlabs.com/v1.0/guides/) | One page per task, runnable sample code |
237
+ | [Concepts](https://qvdjs.ptarmiganlabs.com/v1.0/concepts/) | The QVD format, symbols and duals, bit stuffing, the memory model |
238
+ | [Reference](https://qvdjs.ptarmiganlabs.com/v1.0/reference/) | Every class, method, option and error |
239
+ | [Performance](https://qvdjs.ptarmiganlabs.com/v1.0/performance/) | Measured baselines, and how to read them |
240
+ | [Troubleshooting](https://qvdjs.ptarmiganlabs.com/v1.0/troubleshooting/) | What each failure means, and what to do about it |
241
241
 
242
242
  Benchmarks run weekly and publish to
243
243
  [ptarmiganlabs.github.io/qvdjs](https://ptarmiganlabs.github.io/qvdjs/).
package/dist/index.cjs CHANGED
@@ -748,7 +748,7 @@ function resolveDeepestExisting(target) {
748
748
  function isWithinDirectoryOnDisk(resolvedBaseDir, resolvedPath) {
749
749
  let baseStat;
750
750
  try {
751
- baseStat = fs__default.default.statSync(fs__default.default.realpathSync(resolvedBaseDir));
751
+ baseStat = fs__default.default.statSync(fs__default.default.realpathSync(resolvedBaseDir), { bigint: true });
752
752
  } catch {
753
753
  return null;
754
754
  }
@@ -759,7 +759,7 @@ function isWithinDirectoryOnDisk(resolvedBaseDir, resolvedPath) {
759
759
  for (; ; ) {
760
760
  let stat;
761
761
  try {
762
- stat = fs__default.default.statSync(current);
762
+ stat = fs__default.default.statSync(current, { bigint: true });
763
763
  } catch {
764
764
  return null;
765
765
  }