js-stream-sas7bdat 0.1.0
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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/class/datasetSas7BDat.d.ts +80 -0
- package/dist/class/datasetSas7BDat.d.ts.map +1 -0
- package/dist/class/datasetSas7BDat.js +294 -0
- package/dist/class/datasetSas7BDat.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/datasetSas7BDat.d.ts +87 -0
- package/dist/interfaces/datasetSas7BDat.d.ts.map +1 -0
- package/dist/interfaces/datasetSas7BDat.js +3 -0
- package/dist/interfaces/datasetSas7BDat.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Dmitry Kolosov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# js-stream-sas7bdat
|
|
2
|
+
*js-stream-sas7bdat* is a TypeScript library for streaming and processing SAS7BDAT files in Node.js environment. It provides functionalities to read data and metadata from SAS7BDAT files using [ReadStat](https://github.com/WizardMac/ReadStat) library.
|
|
3
|
+
The output format matches CDISC Dataset-JSON 1.1 format.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
* Stream SAS7BDAT files
|
|
7
|
+
* Extract metadata from SAS7BDAT files
|
|
8
|
+
* Read observations as an iterable
|
|
9
|
+
* Get unique values from observations
|
|
10
|
+
* Filter data
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
Install the library using npm:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
npm install js-stream-sas7bdat
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
```TypeScript
|
|
21
|
+
dataset = new DatasetSas7BDat(filePath, [options])
|
|
22
|
+
```
|
|
23
|
+
### Creating Dataset-SAS7BDAT instance
|
|
24
|
+
```TypeScript
|
|
25
|
+
import DatasetSas7BDat from 'js-stream-sas7bdat';
|
|
26
|
+
|
|
27
|
+
dataset = new DatasetSas7BDat('/path/to/dataset.sas7bdat')
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
#### Example
|
|
31
|
+
```TypeScript
|
|
32
|
+
const dataset = new DatasetSas7BDat('/path/to/dataset.sas7bdat');
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Getting Metadata
|
|
36
|
+
```TypeScript
|
|
37
|
+
const metadata = await dataset.getMetadata();
|
|
38
|
+
```
|
|
39
|
+
### Reading Observations
|
|
40
|
+
```TypeScript
|
|
41
|
+
// Read first 500 records of a dataset
|
|
42
|
+
const data = await dataset.getData({start: 0, length: 500})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Reading Observations as iterable
|
|
46
|
+
```TypeScript
|
|
47
|
+
// Read dataset starting from position 10 (11th record in the dataset)
|
|
48
|
+
for await (const record of dataset.readRecords({start: 10, filterColumns: ["studyId", "uSubjId"], type: "object"})) {
|
|
49
|
+
console.log(record);
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Getting Unique Values
|
|
54
|
+
```TypeScript
|
|
55
|
+
const uniqueValues = await dataset.getUniqueValues({ columns: ["studyId", "uSubjId"], limit: 100 });
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Applying Filters
|
|
59
|
+
You can apply filters to the data when reading observations using the `js-array-filter` package.
|
|
60
|
+
|
|
61
|
+
#### Example
|
|
62
|
+
```TypeScript
|
|
63
|
+
import Filter from 'js-array-filter';
|
|
64
|
+
|
|
65
|
+
// Define a filter
|
|
66
|
+
const filter = new Filter('dataset-json1.1', metadata.columns, {
|
|
67
|
+
conditions: [
|
|
68
|
+
{ variable: 'AGE', operator: 'gt', value: 55 },
|
|
69
|
+
{ variable: 'DCDECOD', operator: 'eq', value: 'STUDY TERMINATED BY SPONSOR' }
|
|
70
|
+
],
|
|
71
|
+
connectors: ['or']
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Apply the filter when reading data
|
|
75
|
+
const filteredData = await dataset.getData({
|
|
76
|
+
start: 0,
|
|
77
|
+
filter: filter,
|
|
78
|
+
filterColumns: ['USUBJID', 'DCDECOD', 'AGE']
|
|
79
|
+
});
|
|
80
|
+
console.log(filteredData);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Methods
|
|
84
|
+
|
|
85
|
+
### `getMetadata`
|
|
86
|
+
|
|
87
|
+
Returns the metadata of the SAS7BDAT file.
|
|
88
|
+
|
|
89
|
+
#### Returns
|
|
90
|
+
|
|
91
|
+
- `Promise<Metadata>`: A promise that resolves to the metadata of the dataset.
|
|
92
|
+
|
|
93
|
+
#### Example
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const metadata = await dataset.getMetadata();
|
|
97
|
+
console.log(metadata);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### `getData`
|
|
101
|
+
|
|
102
|
+
Reads observations from the dataset.
|
|
103
|
+
|
|
104
|
+
#### Parameters
|
|
105
|
+
|
|
106
|
+
- `props` (object): An object containing the following properties:
|
|
107
|
+
- `start` (number, optional): The starting position for reading data.
|
|
108
|
+
- `length` (number, optional): The number of records to read. Defaults to reading all records.
|
|
109
|
+
- `type` (DataType, optional): The type of the returned object ("array" or "object"). Defaults to "array".
|
|
110
|
+
- `filterColumns` (string[], optional): The list of columns to return when type is "object". If empty, all columns are returned.
|
|
111
|
+
- `filter` (Filter, optional): A Filter instance from js-array-filter package used to filter data records.
|
|
112
|
+
|
|
113
|
+
#### Returns
|
|
114
|
+
|
|
115
|
+
- `Promise<(ItemDataArray | ItemDataObject)[]>`: A promise that resolves to an array of data records.
|
|
116
|
+
|
|
117
|
+
#### Example
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
const data = await dataset.getData({ start: 0, length: 500, type: "object", filterColumns: ["studyId", "uSubjId"] });
|
|
121
|
+
console.log(data);
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `readRecords`
|
|
125
|
+
|
|
126
|
+
Reads observations as an iterable.
|
|
127
|
+
|
|
128
|
+
#### Parameters
|
|
129
|
+
|
|
130
|
+
- `props` (object, optional): An object containing the following properties:
|
|
131
|
+
- `start` (number, optional): The starting position for reading data. Defaults to 0.
|
|
132
|
+
- `type` (DataType, optional): The type of data to return ("array" or "object"). Defaults to "array".
|
|
133
|
+
- `filterColumns` (string[], optional): An array of column names to include in the returned data.
|
|
134
|
+
|
|
135
|
+
#### Returns
|
|
136
|
+
|
|
137
|
+
- `AsyncGenerator<ItemDataArray | ItemDataObject, void, undefined>`: An async generator that yields data records.
|
|
138
|
+
|
|
139
|
+
#### Example
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
for await (const record of dataset.readRecords({ start: 10, filterColumns: ["studyId", "uSubjId"], type: "object" })) {
|
|
143
|
+
console.log(record);
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `getUniqueValues`
|
|
148
|
+
|
|
149
|
+
Gets unique values for variables.
|
|
150
|
+
|
|
151
|
+
#### Parameters
|
|
152
|
+
|
|
153
|
+
- `props` (object): An object containing the following properties:
|
|
154
|
+
- `columns` (string[]): An array of column names to get unique values for.
|
|
155
|
+
- `limit` (number, optional): The maximum number of unique values to return for each column. Defaults to 100.
|
|
156
|
+
- `bufferLength` (number, optional): The buffer length for reading data. Defaults to 1000.
|
|
157
|
+
- `sort` (boolean, optional): Whether to sort the unique values. Defaults to true.
|
|
158
|
+
|
|
159
|
+
#### Returns
|
|
160
|
+
|
|
161
|
+
- `Promise<UniqueValues>`: A promise that resolves to an object containing unique values for the specified columns.
|
|
162
|
+
|
|
163
|
+
#### Example
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
const uniqueValues = await dataset.getUniqueValues({
|
|
167
|
+
columns: ["studyId", "uSubjId"],
|
|
168
|
+
limit: 100,
|
|
169
|
+
bufferLength: 1000,
|
|
170
|
+
sort: true
|
|
171
|
+
});
|
|
172
|
+
console.log(uniqueValues);
|
|
173
|
+
```
|
|
174
|
+
----
|
|
175
|
+
|
|
176
|
+
## Running Tests
|
|
177
|
+
Run the tests using Jest:
|
|
178
|
+
```sh
|
|
179
|
+
npm test
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
This project is licensed under the MIT License. See the LICENSE file for details.
|
|
184
|
+
|
|
185
|
+
## Author
|
|
186
|
+
Dmitry Kolosov
|
|
187
|
+
|
|
188
|
+
## Contributing
|
|
189
|
+
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
|
|
190
|
+
|
|
191
|
+
For more details, refer to the source code and the documentation.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { ItemDataArray, ItemDataObject, DatasetMetadata, UniqueValues, DataType } from './../interfaces/datasetSas7BDat';
|
|
3
|
+
import Filter from 'js-array-filter';
|
|
4
|
+
declare class DatasetSas7BDat {
|
|
5
|
+
filePath: string;
|
|
6
|
+
stats: fs.Stats | null;
|
|
7
|
+
metadata: DatasetMetadata;
|
|
8
|
+
currentPosition: number;
|
|
9
|
+
allRowsRead: boolean;
|
|
10
|
+
private metadataLoaded;
|
|
11
|
+
private encoding;
|
|
12
|
+
/**
|
|
13
|
+
* Initialize SAS7BDAT reader.
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param filePath - Path to the file.
|
|
16
|
+
* @param options - Configuration options
|
|
17
|
+
* @param options.encoding - File encoding. Default is 'utf8'.
|
|
18
|
+
* @param options.checkExists - Throw error if file does not exist. Default is false.
|
|
19
|
+
*/
|
|
20
|
+
constructor(filePath: string, options?: {
|
|
21
|
+
encoding?: BufferEncoding;
|
|
22
|
+
checkExists?: boolean;
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Get SAS7BDAT metadata
|
|
26
|
+
* @return An object with file metadata.
|
|
27
|
+
*/
|
|
28
|
+
getMetadata(): Promise<DatasetMetadata>;
|
|
29
|
+
/**
|
|
30
|
+
* Maps SAS data types to Dataset-JSON compatible types
|
|
31
|
+
*/
|
|
32
|
+
private mapSasTypeToJsonType;
|
|
33
|
+
/**
|
|
34
|
+
* Read observations.
|
|
35
|
+
* @param start - The first row number to read.
|
|
36
|
+
* @param length - The number of records to read.
|
|
37
|
+
* @param type - The type of the returned object.
|
|
38
|
+
* @param filterColumns - The list of columns to return when type is object. If empty, all columns are returned.
|
|
39
|
+
* @param filter - A filter class object used to filter data records when reading the dataset.
|
|
40
|
+
* @return An array of observations.
|
|
41
|
+
*/
|
|
42
|
+
getData(props: {
|
|
43
|
+
start?: number;
|
|
44
|
+
length?: number;
|
|
45
|
+
type?: DataType;
|
|
46
|
+
filterColumns?: string[];
|
|
47
|
+
filter?: Filter;
|
|
48
|
+
}): Promise<(ItemDataArray | ItemDataObject)[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Read observations as an iterable.
|
|
51
|
+
* @param start - The first row number to read.
|
|
52
|
+
* @param bufferLength - The number of records to read in a chunk.
|
|
53
|
+
* @param type - The type of the returned object.
|
|
54
|
+
* @param filterColumns - The list of columns to return when type is object. If empty, all columns are returned.
|
|
55
|
+
* @return An iterable object.
|
|
56
|
+
*/
|
|
57
|
+
readRecords(props?: {
|
|
58
|
+
start?: number;
|
|
59
|
+
bufferLength?: number;
|
|
60
|
+
type?: DataType;
|
|
61
|
+
filterColumns?: string[];
|
|
62
|
+
}): AsyncGenerator<ItemDataArray | ItemDataObject, void, undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Get unique values observations.
|
|
65
|
+
* @param columns - The list of variables for which to obtain the unique observations.
|
|
66
|
+
* @param limit - The maximum number of values to store. 0 - no limit.
|
|
67
|
+
* @param bufferLength - The number of records to read in a chunk.
|
|
68
|
+
* @param sort - Controls whether to sort the unique values.
|
|
69
|
+
* @return An array of observations.
|
|
70
|
+
*/
|
|
71
|
+
getUniqueValues(props: {
|
|
72
|
+
columns: string[];
|
|
73
|
+
limit?: number;
|
|
74
|
+
addCount?: boolean;
|
|
75
|
+
bufferLength?: number;
|
|
76
|
+
sort?: boolean;
|
|
77
|
+
}): Promise<UniqueValues>;
|
|
78
|
+
}
|
|
79
|
+
export default DatasetSas7BDat;
|
|
80
|
+
//# sourceMappingURL=datasetSas7BDat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasetSas7BDat.d.ts","sourceRoot":"","sources":["../../src/class/datasetSas7BDat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACH,aAAa,EACb,cAAc,EACd,eAAe,EACf,YAAY,EACZ,QAAQ,EAGX,MAAM,iCAAiC,CAAC;AACzC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAmBrC,cAAM,eAAe;IAEjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAEvB,QAAQ,EAAE,eAAe,CAAC;IAE1B,eAAe,EAAE,MAAM,CAAC;IAExB,WAAW,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,cAAc,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAiB;IAEjC;;;;;;;OAOG;gBAEC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;IA8CL;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAsC7C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;;;;OAQG;IACG,OAAO,CAAC,KAAK,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC;IAgF/C;;;;;;;OAOG;IACI,WAAW,CAAC,KAAK,CAAC,EAAE;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,GAAG,cAAc,CAAC,aAAa,GAAG,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC;IAsCnE;;;;;;;OAOG;IACG,eAAe,CAAC,KAAK,EAAE;QACzB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,YAAY,CAAC;CAgF5B;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
// Import C++ binding with proper error handling
|
|
9
|
+
let readSas7bdat;
|
|
10
|
+
let getSAS7BDATMetadata;
|
|
11
|
+
try {
|
|
12
|
+
// Try to load from Release build
|
|
13
|
+
const binding = require('../../build/Release/readstat_binding.node');
|
|
14
|
+
readSas7bdat = binding.readSas7bdat;
|
|
15
|
+
getSAS7BDATMetadata = binding.getSAS7BDATMetadata;
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
if (err instanceof Error) {
|
|
19
|
+
throw new Error('Cannot load SAS7BDAT native module. Make sure the module is properly built using node-gyp. ' + err.message);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Main class for SAS7BDAT dataset;
|
|
23
|
+
class DatasetSas7BDat {
|
|
24
|
+
/**
|
|
25
|
+
* Initialize SAS7BDAT reader.
|
|
26
|
+
* @constructor
|
|
27
|
+
* @param filePath - Path to the file.
|
|
28
|
+
* @param options - Configuration options
|
|
29
|
+
* @param options.encoding - File encoding. Default is 'utf8'.
|
|
30
|
+
* @param options.checkExists - Throw error if file does not exist. Default is false.
|
|
31
|
+
*/
|
|
32
|
+
constructor(filePath, options) {
|
|
33
|
+
this.filePath = filePath;
|
|
34
|
+
this.currentPosition = 0;
|
|
35
|
+
const { encoding = 'utf8', checkExists = false } = options || {};
|
|
36
|
+
this.encoding = encoding;
|
|
37
|
+
this.allRowsRead = false;
|
|
38
|
+
this.metadataLoaded = false;
|
|
39
|
+
this.metadata = {
|
|
40
|
+
datasetJSONCreationDateTime: '',
|
|
41
|
+
datasetJSONVersion: '',
|
|
42
|
+
records: -1,
|
|
43
|
+
name: '',
|
|
44
|
+
label: '',
|
|
45
|
+
columns: [],
|
|
46
|
+
};
|
|
47
|
+
// Get all possible encoding values from BufferEncoding type
|
|
48
|
+
const validEncodings = [
|
|
49
|
+
'ascii',
|
|
50
|
+
'utf8',
|
|
51
|
+
'utf16le',
|
|
52
|
+
'ucs2',
|
|
53
|
+
'base64',
|
|
54
|
+
'latin1',
|
|
55
|
+
];
|
|
56
|
+
// Check encoding
|
|
57
|
+
if (!validEncodings.includes(this.encoding)) {
|
|
58
|
+
throw new Error(`Unsupported encoding ${this.encoding}`);
|
|
59
|
+
}
|
|
60
|
+
// Check if file exists;
|
|
61
|
+
if (!fs_1.default.existsSync(this.filePath)) {
|
|
62
|
+
if (checkExists === true) {
|
|
63
|
+
throw new Error(`Could not read file ${this.filePath}`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.stats = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.stats = fs_1.default.statSync(this.filePath);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get SAS7BDAT metadata
|
|
75
|
+
* @return An object with file metadata.
|
|
76
|
+
*/
|
|
77
|
+
async getMetadata() {
|
|
78
|
+
if (this.metadataLoaded) {
|
|
79
|
+
return this.metadata;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const sasMetadata = getSAS7BDATMetadata(this.filePath);
|
|
83
|
+
// Map ReadStat metadata to our DatasetMetadata interface
|
|
84
|
+
this.metadata = {
|
|
85
|
+
datasetJSONCreationDateTime: new Date(sasMetadata.CreationDateTime || '').toISOString(),
|
|
86
|
+
dbLastModifiedDateTime: new Date(sasMetadata.ModifiedDateTime || '').toISOString(),
|
|
87
|
+
datasetJSONVersion: '',
|
|
88
|
+
records: sasMetadata.records,
|
|
89
|
+
name: sasMetadata.name || '',
|
|
90
|
+
label: sasMetadata.label || '',
|
|
91
|
+
columns: sasMetadata.columns.map(col => {
|
|
92
|
+
const parsedColumn = {
|
|
93
|
+
itemOID: col.itemOID,
|
|
94
|
+
name: col.name,
|
|
95
|
+
label: col.label || '',
|
|
96
|
+
length: col.length || 1,
|
|
97
|
+
dataType: 'string',
|
|
98
|
+
};
|
|
99
|
+
if (col.dataType) {
|
|
100
|
+
parsedColumn.dataType = this.mapSasTypeToJsonType(col.dataType);
|
|
101
|
+
}
|
|
102
|
+
return parsedColumn;
|
|
103
|
+
}),
|
|
104
|
+
};
|
|
105
|
+
this.metadataLoaded = true;
|
|
106
|
+
return this.metadata;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
throw new Error(`Failed to read SAS7BDAT metadata: ${error}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Maps SAS data types to Dataset-JSON compatible types
|
|
114
|
+
*/
|
|
115
|
+
mapSasTypeToJsonType(sasType) {
|
|
116
|
+
// Map SAS types to Dataset-JSON compatible types
|
|
117
|
+
switch (sasType.toLowerCase()) {
|
|
118
|
+
case 'double':
|
|
119
|
+
return 'double';
|
|
120
|
+
case 'text':
|
|
121
|
+
return 'string';
|
|
122
|
+
default:
|
|
123
|
+
return 'string';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Read observations.
|
|
128
|
+
* @param start - The first row number to read.
|
|
129
|
+
* @param length - The number of records to read.
|
|
130
|
+
* @param type - The type of the returned object.
|
|
131
|
+
* @param filterColumns - The list of columns to return when type is object. If empty, all columns are returned.
|
|
132
|
+
* @param filter - A filter class object used to filter data records when reading the dataset.
|
|
133
|
+
* @return An array of observations.
|
|
134
|
+
*/
|
|
135
|
+
async getData(props) {
|
|
136
|
+
// Check if metadata is loaded
|
|
137
|
+
if (this.metadataLoaded === false) {
|
|
138
|
+
await this.getMetadata();
|
|
139
|
+
}
|
|
140
|
+
let { filterColumns = [] } = props;
|
|
141
|
+
// Convert filterColumns to lowercase for case-insensitive comparison
|
|
142
|
+
filterColumns = filterColumns.map((item) => item.toLowerCase());
|
|
143
|
+
// Check if metadata is loaded
|
|
144
|
+
if (this.metadata.columns.length === 0 ||
|
|
145
|
+
this.metadata.records === -1) {
|
|
146
|
+
return Promise.reject(new Error('Metadata is not loaded or there are no columns'));
|
|
147
|
+
}
|
|
148
|
+
const { start = 0, length, type = 'array', filter } = props;
|
|
149
|
+
// Check if start and length are valid
|
|
150
|
+
if ((typeof length === 'number' && length <= 0) ||
|
|
151
|
+
start < 0 ||
|
|
152
|
+
start > this.metadata.records) {
|
|
153
|
+
return Promise.reject(new Error('Invalid start/length parameter values'));
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
// Get the column indices for filtering if needed
|
|
157
|
+
const filterColumnIndices = filterColumns.length > 0
|
|
158
|
+
? filterColumns.map(column => this.metadata.columns.findIndex(item => item.name.toLowerCase() === column.toLowerCase()))
|
|
159
|
+
: [];
|
|
160
|
+
// Read data from the SAS7BDAT file
|
|
161
|
+
let data = readSas7bdat(this.filePath, start, length);
|
|
162
|
+
// If we have a filter, apply it
|
|
163
|
+
if (filter) {
|
|
164
|
+
data = data.filter((row) => filter.filterRow(row));
|
|
165
|
+
}
|
|
166
|
+
// If we're returning arrays and have filtered columns, filter the arrays
|
|
167
|
+
if (type === 'array' && filterColumnIndices.length > 0) {
|
|
168
|
+
return data.map((row) => filterColumnIndices.map(index => row[index]));
|
|
169
|
+
}
|
|
170
|
+
else if (type === 'object') {
|
|
171
|
+
// Convert to object format
|
|
172
|
+
data = data.map((row) => {
|
|
173
|
+
const obj = {};
|
|
174
|
+
this.metadata.columns.forEach((column, index) => {
|
|
175
|
+
if (filterColumns.length === 0 || filterColumnIndices.includes(index)) {
|
|
176
|
+
obj[column.name] = row[index];
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
return obj;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
return data;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
throw new Error(`Failed to read SAS7BDAT data: ${error}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Read observations as an iterable.
|
|
190
|
+
* @param start - The first row number to read.
|
|
191
|
+
* @param bufferLength - The number of records to read in a chunk.
|
|
192
|
+
* @param type - The type of the returned object.
|
|
193
|
+
* @param filterColumns - The list of columns to return when type is object. If empty, all columns are returned.
|
|
194
|
+
* @return An iterable object.
|
|
195
|
+
*/
|
|
196
|
+
async *readRecords(props) {
|
|
197
|
+
// Check if metadata is loaded
|
|
198
|
+
if (this.metadataLoaded === false) {
|
|
199
|
+
await this.getMetadata();
|
|
200
|
+
}
|
|
201
|
+
const { start = 0, bufferLength = 1000, type, filterColumns, } = props || {};
|
|
202
|
+
let currentPosition = start;
|
|
203
|
+
while (true) {
|
|
204
|
+
const data = await this.getData({
|
|
205
|
+
start: currentPosition,
|
|
206
|
+
length: bufferLength,
|
|
207
|
+
type,
|
|
208
|
+
filterColumns,
|
|
209
|
+
});
|
|
210
|
+
if (!data || data.length === 0) {
|
|
211
|
+
this.allRowsRead = true;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
yield* data;
|
|
215
|
+
currentPosition += data.length;
|
|
216
|
+
if (currentPosition >= this.metadata.records) {
|
|
217
|
+
this.allRowsRead = true;
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get unique values observations.
|
|
224
|
+
* @param columns - The list of variables for which to obtain the unique observations.
|
|
225
|
+
* @param limit - The maximum number of values to store. 0 - no limit.
|
|
226
|
+
* @param bufferLength - The number of records to read in a chunk.
|
|
227
|
+
* @param sort - Controls whether to sort the unique values.
|
|
228
|
+
* @return An array of observations.
|
|
229
|
+
*/
|
|
230
|
+
async getUniqueValues(props) {
|
|
231
|
+
const { limit = 0, bufferLength = 1000, sort = true, addCount = false } = props;
|
|
232
|
+
let { columns } = props;
|
|
233
|
+
const result = {};
|
|
234
|
+
// Check if metadata is loaded
|
|
235
|
+
if (this.metadataLoaded === false) {
|
|
236
|
+
await this.getMetadata();
|
|
237
|
+
}
|
|
238
|
+
const notFoundColumns = [];
|
|
239
|
+
// Use the case of the columns as specified in the metadata
|
|
240
|
+
columns = columns.map((item) => {
|
|
241
|
+
const column = this.metadata.columns.find((column) => column.name.toLowerCase() === item.toLowerCase());
|
|
242
|
+
if (column === undefined) {
|
|
243
|
+
notFoundColumns.push(item);
|
|
244
|
+
return '';
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
return column.name;
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
if (notFoundColumns.length > 0) {
|
|
251
|
+
return Promise.reject(new Error(`Columns ${notFoundColumns.join(', ')} not found`));
|
|
252
|
+
}
|
|
253
|
+
// Store number of unique values found
|
|
254
|
+
const uniqueCount = {};
|
|
255
|
+
columns.forEach((column) => {
|
|
256
|
+
uniqueCount[column] = 0;
|
|
257
|
+
result[column] = { values: [], counts: {} };
|
|
258
|
+
});
|
|
259
|
+
let isFinished = false;
|
|
260
|
+
for await (const row of this.readRecords({
|
|
261
|
+
bufferLength,
|
|
262
|
+
type: 'object',
|
|
263
|
+
filterColumns: columns,
|
|
264
|
+
})) {
|
|
265
|
+
columns.forEach((column) => {
|
|
266
|
+
if ((limit === 0 || uniqueCount[column] < limit) &&
|
|
267
|
+
!result[column].values.includes(row[column])) {
|
|
268
|
+
result[column].values.push(row[column]);
|
|
269
|
+
uniqueCount[column] += 1;
|
|
270
|
+
}
|
|
271
|
+
if (addCount) {
|
|
272
|
+
const valueId = row[column] === null ? 'null' : String(row[column]);
|
|
273
|
+
result[column].counts[valueId] = result[column].counts[valueId] > 0
|
|
274
|
+
? (result[column].counts[valueId] + 1)
|
|
275
|
+
: 1;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
// Check if all unique values are found
|
|
279
|
+
isFinished = limit !== 0 && Object.keys(uniqueCount).every((key) => uniqueCount[key] >= limit);
|
|
280
|
+
if (isFinished) {
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Sort result
|
|
285
|
+
if (sort) {
|
|
286
|
+
Object.keys(result).forEach((key) => {
|
|
287
|
+
result[key].values.sort();
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
exports.default = DatasetSas7BDat;
|
|
294
|
+
//# sourceMappingURL=datasetSas7BDat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasetSas7BDat.js","sourceRoot":"","sources":["../../src/class/datasetSas7BDat.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,yBAAyB,CAAC;AAEtD,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DatasetSas7BDat = void 0;
|
|
7
|
+
const datasetSas7BDat_1 = __importDefault(require("./class/datasetSas7BDat"));
|
|
8
|
+
exports.DatasetSas7BDat = datasetSas7BDat_1.default;
|
|
9
|
+
exports.default = datasetSas7BDat_1.default;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAsD;AAG7C,0BAHF,yBAAe,CAGE;AADxB,kBAAe,yBAAe,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export type ItemType = 'string' | 'integer' | 'float' | 'double' | 'decimal' | 'boolean' | 'date' | 'time' | 'datetime' | 'URI';
|
|
2
|
+
export type ItemTargetType = 'integer' | 'decimal';
|
|
3
|
+
export type ItemDataObject = {
|
|
4
|
+
[name: string]: string | number | boolean | null;
|
|
5
|
+
};
|
|
6
|
+
export type ItemDataArray = Array<string | number | boolean | null>;
|
|
7
|
+
export interface SourceSystem {
|
|
8
|
+
name: string;
|
|
9
|
+
version: string;
|
|
10
|
+
}
|
|
11
|
+
export interface Sas7BDatColumn {
|
|
12
|
+
itemOID: string;
|
|
13
|
+
name: string;
|
|
14
|
+
label?: string;
|
|
15
|
+
dataType?: string;
|
|
16
|
+
length?: number;
|
|
17
|
+
displayFormat?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface Sas7BDatMetadata {
|
|
20
|
+
name: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
filePath?: string;
|
|
23
|
+
fileFormat?: string;
|
|
24
|
+
fileFormatVersion?: number;
|
|
25
|
+
records: number;
|
|
26
|
+
CreationDateTime?: number;
|
|
27
|
+
ModifiedDateTime?: number;
|
|
28
|
+
columns: Sas7BDatColumn[];
|
|
29
|
+
sourceSystem?: {
|
|
30
|
+
name: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
};
|
|
33
|
+
encoding?: string;
|
|
34
|
+
compression?: string;
|
|
35
|
+
tableLabel?: string;
|
|
36
|
+
is64Bit?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface ItemDescription {
|
|
39
|
+
itemOID: string;
|
|
40
|
+
name: string;
|
|
41
|
+
label: string;
|
|
42
|
+
dataType: ItemType;
|
|
43
|
+
targetDataType?: ItemType;
|
|
44
|
+
length?: number;
|
|
45
|
+
displayFormat?: string;
|
|
46
|
+
keySequence?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface Dataset {
|
|
49
|
+
datasetJSONCreationDateTime: string;
|
|
50
|
+
datasetJSONVersion: string;
|
|
51
|
+
records: number;
|
|
52
|
+
name: string;
|
|
53
|
+
label: string;
|
|
54
|
+
columns: Array<ItemDescription>;
|
|
55
|
+
rows: Array<ItemDataArray>;
|
|
56
|
+
dbLastModifiedDateTime?: string;
|
|
57
|
+
fileOID?: string;
|
|
58
|
+
originator?: string;
|
|
59
|
+
sourceSystem?: SourceSystem;
|
|
60
|
+
studyOID?: string;
|
|
61
|
+
metaDataVersionOID?: string;
|
|
62
|
+
metaDataRef?: string;
|
|
63
|
+
itemGroupOID?: string;
|
|
64
|
+
}
|
|
65
|
+
export type DatasetMetadata = Omit<Dataset, 'rows'>;
|
|
66
|
+
export type MetadataAttributes = keyof DatasetMetadata;
|
|
67
|
+
export type ParsedAttributes = {
|
|
68
|
+
[name in MetadataAttributes]: boolean;
|
|
69
|
+
};
|
|
70
|
+
export type DataType = 'array' | 'object';
|
|
71
|
+
export interface UniqueValues {
|
|
72
|
+
[name: string]: {
|
|
73
|
+
values: (string | number | boolean | null)[];
|
|
74
|
+
counts: {
|
|
75
|
+
[name: string]: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export interface SasItemDescription {
|
|
80
|
+
itemOID: string;
|
|
81
|
+
name: string;
|
|
82
|
+
label: string;
|
|
83
|
+
dataType: string;
|
|
84
|
+
length?: number;
|
|
85
|
+
displayFormat?: string;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=datasetSas7BDat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasetSas7BDat.d.ts","sourceRoot":"","sources":["../../src/interfaces/datasetSas7BDat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasetSas7BDat.js","sourceRoot":"","sources":["../../src/interfaces/datasetSas7BDat.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/interfaces/datasetSas7BDat.ts","../node_modules/js-array-filter/dist/interfaces/filter.d.ts","../node_modules/js-array-filter/dist/class/filter.d.ts","../node_modules/js-array-filter/dist/utils/constants.d.ts","../node_modules/js-array-filter/dist/utils/filterRegex.d.ts","../node_modules/js-array-filter/dist/index.d.ts","../src/class/datasetSas7BDat.ts","../src/index.ts","../src/interfaces/jsonStream.d.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[61,73,115],[73,115],[73,115,172],[61,62,63,64,65,73,115],[61,63,73,115],[73,115,128,165],[73,115,167],[73,115,168],[73,115,174,177],[73,112,115],[73,114,115],[115],[73,115,120,150],[73,115,116,121,127,128,135,147,158],[73,115,116,117,127,135],[68,69,70,73,115],[73,115,118,159],[73,115,119,120,128,136],[73,115,120,147,155],[73,115,121,123,127,135],[73,114,115,122],[73,115,123,124],[73,115,127],[73,115,125,127],[73,114,115,127],[73,115,127,128,129,147,158],[73,115,127,128,129,142,147,150],[73,110,115,163],[73,110,115,123,127,130,135,147,158],[73,115,127,128,130,131,135,147,155,158],[73,115,130,132,147,155,158],[71,72,73,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[73,115,127,133],[73,115,134,158],[73,115,123,127,135,147],[73,115,136],[73,115,137],[73,114,115,138],[73,112,113,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164],[73,115,140],[73,115,141],[73,115,127,142,143],[73,115,142,144,159,161],[73,115,127,147,148,149,150],[73,115,147,149],[73,115,147,148],[73,115,150],[73,115,151],[73,112,115,147],[73,115,127,153,154],[73,115,153,154],[73,115,120,135,147,155],[73,115,156],[73,115,135,157],[73,115,130,141,158],[73,115,120,159],[73,115,147,160],[73,115,134,161],[73,115,162],[73,115,120,127,129,138,147,158,161,163],[73,115,147,164],[73,115,182],[73,115,170,176],[73,115,174],[73,115,171,175],[53,73,115],[53,54,55,56,73,115],[73,115,173],[73,82,86,115,158],[73,82,115,147,158],[73,77,115],[73,79,82,115,155,158],[73,115,135,155],[73,115,165],[73,77,115,165],[73,79,82,115,135,158],[73,74,75,78,81,115,127,147,158],[73,82,89,115],[73,74,80,115],[73,82,103,104,115],[73,78,82,115,150,158,165],[73,103,115,165],[73,76,77,115,165],[73,82,115],[73,76,77,78,79,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,115],[73,82,97,115],[73,82,89,90,115],[73,80,82,90,91,115],[73,81,115],[73,74,77,82,115],[73,82,86,90,91,115],[73,86,115],[73,80,82,85,115,158],[73,74,79,82,89,115],[73,115,147],[73,77,82,103,115,163,165],[52,57,73,115,128],[58,73,115]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf50252189be958e4c07de5b64574be6654cb7defd11e1ef53decdd386f1212e","signature":"91d313597fdf6f4a330359fa0fd7f65726ffa325690a5ed577170871d1eb8990"},{"version":"d739f5c68bd696b401af024d3356d16f763e3c0e75c631c9bec3b2a8d6019f23","impliedFormat":1},{"version":"91127c0ac3aacd8800d13d2c6249a7095736c04d23856ce182ccf72affb64db5","impliedFormat":1},{"version":"65bf953297b36f0065812b5bb87ea7c9c1b1af5915058181ce868d9e7943bd67","impliedFormat":1},{"version":"e6a759119b7657954e5e31973bf8c36ba7cc53cb2922a12658a83345eb394198","impliedFormat":1},{"version":"2fb3c5d21bd59ca454da05d29feea1dd0b374c93e2854c86d66f3780391800aa","impliedFormat":1},{"version":"03ff5a104ea24ee878331ef0a43c45f38b23db9b7c87ea7223c4f8be2a0c55e1","signature":"b44ccd368259a38b89e86cebfbebae1a49a528ad497e99808edd576da1af9b8e"},{"version":"0b5e0a17496b97265233486980626e7f7635adb6f17b1681412c2f42ae15b137","signature":"a855baf108231f5d93440c2804e5bac5e1d78277e8c4f2be5836180455c48982"},"7dcabcd334d977091d48dda93f57bfef697e0b50f99378043405ea7fe94e3bf5",{"version":"d50ab0815120231ab511558a753c33b2806b42cabe006356fb0bb763fc30e865","impliedFormat":1},{"version":"cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","impliedFormat":1},{"version":"32ddc6ad753ae79571bbf28cebff7a383bf7f562ac5ef5d25c94ef7f71609d49","impliedFormat":1},{"version":"93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","impliedFormat":1},{"version":"6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","impliedFormat":1},{"version":"9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","impliedFormat":1},{"version":"785b9d575b49124ce01b46f5b9402157c7611e6532effa562ac6aebec0074dfc","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"91c1a729db5b28b2fc32bafa7a53611d417bc3f03f649278d4fd948aa4dec898","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ff5a53a58e756d2661b73ba60ffe274231a4432d21f7a2d0d9e4f6aa99f4283","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"c72ccc191348ac1933226cab7a814cfda8b29a827d1df5dbebfe516a6fd734a8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8bea55446a296d289fbc762f61954a0e3e38ffbcacc06e47e0cba491030e3235","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"d63ff33a2fa221b36a4da0dd5a3dad3156f3dd0fe1baf43a186e607d4ba5af99","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f58ebc40c84046ba4c25cf7e86e1ae92c3f064fb641af6c46a5acebf0b8b20b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","impliedFormat":1},{"version":"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","impliedFormat":1},{"version":"7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","impliedFormat":1},{"version":"f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","impliedFormat":1},{"version":"6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"db25694be959314fd1e868d72e567746db1db9e2001fae545d12d2a8c1bba1b8","impliedFormat":1},{"version":"43883cf3635bb1846cbdc6c363787b76227677388c74f7313e3f0edb380840fa","impliedFormat":1},{"version":"2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"2cec1a31729b9b01e9294c33fc9425d336eff067282809761ad2e74425d6d2a5","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","impliedFormat":1},{"version":"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","impliedFormat":1},{"version":"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","impliedFormat":1},{"version":"e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750","impliedFormat":1}],"root":[52,[58,60]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"jsx":4,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"strict":true,"strictNullChecks":true,"target":8},"referencedMap":[[63,1],[61,2],[170,2],[173,3],[172,2],[66,4],[62,1],[64,5],[65,1],[67,2],[166,6],[167,2],[168,7],[169,8],[178,9],[179,2],[112,10],[113,10],[114,11],[73,12],[115,13],[116,14],[117,15],[68,2],[71,16],[69,2],[70,2],[118,17],[119,18],[120,19],[121,20],[122,21],[123,22],[124,22],[126,23],[125,24],[127,25],[128,26],[129,27],[111,28],[72,2],[130,29],[131,30],[132,31],[165,32],[133,33],[134,34],[135,35],[136,36],[137,37],[138,38],[139,39],[140,40],[141,41],[142,42],[143,42],[144,43],[145,2],[146,2],[147,44],[149,45],[148,46],[150,47],[151,48],[152,49],[153,50],[154,51],[155,52],[156,53],[157,54],[158,55],[159,56],[160,57],[161,58],[162,59],[163,60],[164,61],[180,2],[181,2],[182,2],[183,62],[171,2],[177,63],[175,64],[176,65],[54,66],[57,67],[53,2],[55,66],[56,2],[174,68],[50,2],[51,2],[9,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[20,2],[21,2],[4,2],[22,2],[26,2],[23,2],[24,2],[25,2],[27,2],[28,2],[29,2],[5,2],[30,2],[31,2],[32,2],[33,2],[6,2],[37,2],[34,2],[35,2],[36,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[1,2],[89,69],[99,70],[88,69],[109,71],[80,72],[79,73],[108,74],[102,75],[107,76],[82,77],[96,78],[81,79],[105,80],[77,81],[76,74],[106,82],[78,83],[83,84],[84,2],[87,84],[74,2],[110,85],[100,86],[91,87],[92,88],[94,89],[90,90],[93,91],[103,74],[85,92],[86,93],[95,94],[75,95],[98,86],[97,84],[101,2],[104,96],[58,97],[59,98],[52,2],[60,2]],"version":"5.7.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "js-stream-sas7bdat",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Stream SAS7BDAT files using ReadStat C library",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "jest",
|
|
12
|
+
"build": "node-gyp rebuild --arch=x64 --dist-url=https://electronjs.org/headers && rm -rf dist && tsc",
|
|
13
|
+
"install": "node-gyp rebuild",
|
|
14
|
+
"release": "npm run lint && npm run test && npm run build && npm publish",
|
|
15
|
+
"lint": "eslint . --ignore-pattern 'dist'"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"readstat",
|
|
19
|
+
"sas7bdat"
|
|
20
|
+
],
|
|
21
|
+
"prettier": {
|
|
22
|
+
"tabWidth": 4
|
|
23
|
+
},
|
|
24
|
+
"jest": {
|
|
25
|
+
"preset": "ts-jest",
|
|
26
|
+
"testEnvironment": "node",
|
|
27
|
+
"transform": {
|
|
28
|
+
"^.+\\.ts?$": "ts-jest"
|
|
29
|
+
},
|
|
30
|
+
"transformIgnorePatterns": [
|
|
31
|
+
"<rootDir>/node_modules/"
|
|
32
|
+
],
|
|
33
|
+
"moduleNameMapper": {
|
|
34
|
+
"^class/(.*)$": "<rootDir>/src/class/$1",
|
|
35
|
+
"^interfaces/(.*)$": "<rootDir>/src/interfaces/$1"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/defineEditor/js-stream-sas7bdat.git"
|
|
41
|
+
},
|
|
42
|
+
"author": "Dmitry Kolosov",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/jest": "^29.5.14",
|
|
46
|
+
"@types/node": "^22.12.0",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^8.22.0",
|
|
48
|
+
"@typescript-eslint/parser": "^8.22.0",
|
|
49
|
+
"typescript-eslint": "^8.22.0",
|
|
50
|
+
"eslint": "^9.19.0",
|
|
51
|
+
"husky": "^9.1.7",
|
|
52
|
+
"ts-jest": "^29.2.5",
|
|
53
|
+
"typescript": "^5.7.3",
|
|
54
|
+
"node-gyp": "^11.1.0"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"node-addon-api": "^5.0.0",
|
|
58
|
+
"js-array-filter": "^0.1.4"
|
|
59
|
+
},
|
|
60
|
+
"husky": {
|
|
61
|
+
"hooks": {
|
|
62
|
+
"pre-commit": "npm run lint"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|