ng2csv 3.0.0 → 4.0.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/README.md CHANGED
@@ -1,24 +1,123 @@
1
- # Ng2csv
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.7.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project ng2csv` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ng2csv`.
8
- > Note: Don't forget to add `--project ng2csv` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build ng2csv` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build ng2csv`, go to the dist folder `cd dist/ng2csv` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test ng2csv` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
1
+ # ng2csv
2
+
3
+ [![Node.js CI](https://github.com/rars/ng2csv/actions/workflows/node.js.yml/badge.svg)](https://github.com/rars/ng2csv/actions/workflows/node.js.yml)
4
+
5
+ Angular module for saving CSV files.
6
+
7
+ ## Quickstart
8
+
9
+ 1. Install `file-saver` and `ng2csv` modules from npm:
10
+ ```
11
+ npm install file-saver ng2csv --save
12
+ ```
13
+ 2. Import `Ng2CsvModule` to your app:
14
+
15
+ ```
16
+ import { BrowserModule } from '@angular/platform-browser';
17
+ import { NgModule } from '@angular/core';
18
+ import { Ng2CsvModule } from 'ng2csv';
19
+ import { AppComponent } from './app.component';
20
+
21
+ @NgModule({
22
+ declarations: [
23
+ AppComponent
24
+ ],
25
+ imports: [
26
+ BrowserModule,
27
+ Ng2CsvModule
28
+ ],
29
+ providers: [],
30
+ bootstrap: [AppComponent]
31
+ })
32
+ export class AppModule { }
33
+ ```
34
+
35
+ 3. Inject the `Ng2CsvService` into your component:
36
+
37
+ ```
38
+ import { Component } from '@angular/core';
39
+ import { Ng2CsvService } from 'ng2csv';
40
+
41
+ @Component({
42
+ selector: 'app-root',
43
+ templateUrl: './app.component.html',
44
+ styleUrls: ['./app.component.css'],
45
+ providers: [Ng2CsvService]
46
+ })
47
+ export class AppComponent {
48
+ public constructor(private ng2Csv: Ng2CsvService) {}
49
+
50
+ public download(): void {
51
+ this.ng2Csv.download([
52
+ {
53
+ id: 1,
54
+ name: 'Alice'
55
+ },
56
+ {
57
+ id: 2,
58
+ name: 'Bob'
59
+ }
60
+ ],
61
+ 'names.csv');
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Configuration
67
+
68
+ ### Auto mapping
69
+
70
+ Unless specified, an automatic mapping is used from the data to columns. It does this by looking at the properties available on the object and then enumerating them, one column for each, and using the `.toString()` method to serialise the values to the CSV data.
71
+
72
+ ### Row headers and ordering
73
+
74
+ You can output a subset of the data's properties to CSV by defining your own custom mapping. This allows you to specify the order columns are written in and what value is written for each row in each column.
75
+
76
+ ```
77
+ import { OrderedProjectionCsvRowMapper } from 'ng2csv';
78
+ // ...
79
+ const rowMapper = new OrderedProjectionCsvRowMapper<MyType>([
80
+ ['First Name', x => x.Name],
81
+ ['Identifier', x => 'N' + x.Id.toString()]
82
+ ]);
83
+ this.ng2Csv.download(myData, 'file.csv', rowMapper);
84
+ /*
85
+ Generates CSV:
86
+ "First Name","Identifier"
87
+ Alice,N1
88
+ Bob,N2
89
+ */
90
+ ```
91
+
92
+ ### Delimiters, header row
93
+
94
+ You can control what character is used to separate columns (e.g. to use ';' or tab separators rather than ',') and whether to include a header row.
95
+
96
+ ```
97
+ import { CsvConfiguration } from 'ng2csv';
98
+ // ...
99
+ const csvConfig = new CsvConfiguration();
100
+ csvConfig.delimiter = '\t';
101
+ csvConfig.includeHeaderRow = false;
102
+ this.ng2Csv.download(myData, 'file.csv', undefined, csvConfig);
103
+ ```
104
+
105
+ ### Null or undefined values
106
+
107
+ You can control how `null` or `undefined` values are written out in config.
108
+
109
+ ```
110
+ import { CsvConfiguration } from 'ng2csv';
111
+ // ...
112
+ const csvConfig = new CsvConfiguration();
113
+ csvConfig.outputValueForNull = 'NULL';
114
+ csvConfig.outputValueForUndefined = 'UNDEFINED';
115
+ ```
116
+
117
+ ## Contributions welcome!
118
+
119
+ If you have a feature or improvement you would like to see included, please raise an issue or a PR and I will review.
120
+
121
+ ## License
122
+
123
+ See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).
@@ -47,4 +47,4 @@ export class AutoCsvRowMapper {
47
47
  return Object.keys(allKeys);
48
48
  }
49
49
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jc3Ytcm93LW1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvbGliL2F1dG8tY3N2LXJvdy1tYXBwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFtQixJQUFTO1FBQzFCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYiwwREFBMEQsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FDYiwwQ0FBMEMsQ0FDM0MsQ0FBQztTQUNIO1FBRUQsTUFBTSxXQUFXLEdBQXdDLEVBQUUsQ0FBQztRQUU1RCxNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsR0FBRztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO2FBQzNCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksNkJBQTZCLENBQzFELFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN2QyxPQUFPLENBQUMsQ0FBSSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sYUFBYSxHQUFJLENBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7b0JBQ3pELE9BQU8sRUFBRSxDQUFDO2lCQUNYO2dCQUNELE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVM7UUFDMUIsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDc3ZSb3dNYXBwZXIgfSBmcm9tICcuL2Nzdi1yb3ctbWFwcGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE9yZGVyZWRQcm9qZWN0aW9uQ3N2Um93TWFwcGVyIH0gZnJvbSAnLi9vcmRlcmVkLXByb2plY3Rpb24tY3N2LXJvdy1tYXBwZXIuY2xhc3MnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEF1dG9Dc3ZSb3dNYXBwZXI8VD4gaW1wbGVtZW50cyBJQ3N2Um93TWFwcGVyPFQ+IHtcclxuXHJcbiAgcHJpdmF0ZSBkZXJpdmVkQ3N2Um93TWFwcGVyOiBPcmRlcmVkUHJvamVjdGlvbkNzdlJvd01hcHBlcjxUPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGE6IFRbXSkge1xyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnUGFyYW1ldGVyIFxcJ2RhdGFcXCcgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBvYmplY3RzLicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgZGF0YVswXSAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdQYXJhbWV0ZXIgXFwnZGF0YVxcJyBtdXN0IGNvbnRhaW4gb2JqZWN0cy4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJvamVjdGlvbnM6IEFycmF5PFtzdHJpbmcsIChvYmo6IFQpID0+IHN0cmluZ10+ID0gW107XHJcblxyXG4gICAgY29uc3QgYWxsS2V5czogc3RyaW5nW10gPSB0aGlzLmdldEFsbEtleXMoZGF0YSk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBhbGxLZXlzKSB7XHJcbiAgICAgIHByb2plY3Rpb25zLnB1c2goW1xyXG4gICAgICAgIGtleSxcclxuICAgICAgICB0aGlzLmNyZWF0ZVByb2plY3Rpb24oa2V5KVxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRlcml2ZWRDc3ZSb3dNYXBwZXIgPSBuZXcgT3JkZXJlZFByb2plY3Rpb25Dc3ZSb3dNYXBwZXI8VD4oXHJcbiAgICAgIHByb2plY3Rpb25zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbHVtbk5hbWVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLmRlcml2ZWRDc3ZSb3dNYXBwZXIuZ2V0Q29sdW1uTmFtZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXAob2JqOiBUKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVyaXZlZENzdlJvd01hcHBlci5tYXAob2JqKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJvamVjdGlvbihwcm9wZXJ0eTogc3RyaW5nKTogKG9iajogVCkgPT4gc3RyaW5nIHtcclxuICAgIHJldHVybiAoeDogVCkgPT4ge1xyXG4gICAgICBpZiAoeC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gKHggYXMgYW55KVtwcm9wZXJ0eV07XHJcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwcm9wZXJ0eVZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbGxLZXlzKG9ianM6IFRbXSk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGFsbEtleXM6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3Qgb2JqIG9mIG9ianMpIHtcclxuICAgICAgZm9yIChjb25zdCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xyXG4gICAgICAgIGFsbEtleXNbb2JqZWN0S2V5XSA9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYWxsS2V5cyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jc3Ytcm93LW1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvbGliL2F1dG8tY3N2LXJvdy1tYXBwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUYsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFtQixJQUFTO1FBQzFCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYiwwREFBMEQsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FDYiwwQ0FBMEMsQ0FDM0MsQ0FBQztTQUNIO1FBRUQsTUFBTSxXQUFXLEdBQXdDLEVBQUUsQ0FBQztRQUU1RCxNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsR0FBRztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO2FBQzNCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksNkJBQTZCLENBQzFELFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN2QyxPQUFPLENBQUMsQ0FBSSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sYUFBYSxHQUFJLENBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7b0JBQ3pELE9BQU8sRUFBRSxDQUFDO2lCQUNYO2dCQUNELE9BQU8sYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVM7UUFDMUIsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4QjtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDc3ZSb3dNYXBwZXIgfSBmcm9tICcuL2Nzdi1yb3ctbWFwcGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPcmRlcmVkUHJvamVjdGlvbkNzdlJvd01hcHBlciB9IGZyb20gJy4vb3JkZXJlZC1wcm9qZWN0aW9uLWNzdi1yb3ctbWFwcGVyLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEF1dG9Dc3ZSb3dNYXBwZXI8VD4gaW1wbGVtZW50cyBJQ3N2Um93TWFwcGVyPFQ+IHtcblxuICBwcml2YXRlIGRlcml2ZWRDc3ZSb3dNYXBwZXI6IE9yZGVyZWRQcm9qZWN0aW9uQ3N2Um93TWFwcGVyPFQ+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBUW10pIHtcbiAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1BhcmFtZXRlciBcXCdkYXRhXFwnIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygb2JqZWN0cy4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGFbMF0gIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdQYXJhbWV0ZXIgXFwnZGF0YVxcJyBtdXN0IGNvbnRhaW4gb2JqZWN0cy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2plY3Rpb25zOiBBcnJheTxbc3RyaW5nLCAob2JqOiBUKSA9PiBzdHJpbmddPiA9IFtdO1xuXG4gICAgY29uc3QgYWxsS2V5czogc3RyaW5nW10gPSB0aGlzLmdldEFsbEtleXMoZGF0YSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWxsS2V5cykge1xuICAgICAgcHJvamVjdGlvbnMucHVzaChbXG4gICAgICAgIGtleSxcbiAgICAgICAgdGhpcy5jcmVhdGVQcm9qZWN0aW9uKGtleSlcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVyaXZlZENzdlJvd01hcHBlciA9IG5ldyBPcmRlcmVkUHJvamVjdGlvbkNzdlJvd01hcHBlcjxUPihcbiAgICAgIHByb2plY3Rpb25zXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5OYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGVyaXZlZENzdlJvd01hcHBlci5nZXRDb2x1bW5OYW1lcygpO1xuICB9XG5cbiAgcHVibGljIG1hcChvYmo6IFQpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGVyaXZlZENzdlJvd01hcHBlci5tYXAob2JqKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUHJvamVjdGlvbihwcm9wZXJ0eTogc3RyaW5nKTogKG9iajogVCkgPT4gc3RyaW5nIHtcbiAgICByZXR1cm4gKHg6IFQpID0+IHtcbiAgICAgIGlmICh4Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gKHggYXMgYW55KVtwcm9wZXJ0eV07XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID09PSB1bmRlZmluZWQgfHwgcHJvcGVydHlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFsbEtleXMob2JqczogVFtdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGFsbEtleXM6IGFueSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBvYmogb2Ygb2Jqcykge1xuICAgICAgZm9yIChjb25zdCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgICAgICBhbGxLZXlzW29iamVjdEtleV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhhbGxLZXlzKTtcbiAgfVxufVxuIl19
@@ -8,4 +8,4 @@ export class CsvConfiguration {
8
8
  this.outputValueForUndefined = '';
9
9
  }
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWNvbmZpZ3VyYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzJjc3Yvc3JjL2xpYi9jc3YtY29uZmlndXJhdGlvbi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ1MsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osWUFBTyxHQUFHLE1BQU0sQ0FBQztRQUNqQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ3N2Q29uZmlndXJhdGlvbiB7XHJcbiAgcHVibGljIGRlbGltaXRlciA9ICcsJztcclxuICBwdWJsaWMgcXVvdGUgPSAnXCInO1xyXG4gIHB1YmxpYyBuZXdMaW5lID0gJ1xcclxcbic7XHJcbiAgcHVibGljIGluY2x1ZGVIZWFkZXJMaW5lID0gdHJ1ZTtcclxuICBwdWJsaWMgb3V0cHV0VmFsdWVGb3JOdWxsID0gJyc7XHJcbiAgcHVibGljIG91dHB1dFZhbHVlRm9yVW5kZWZpbmVkID0gJyc7XHJcbn1cclxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWNvbmZpZ3VyYXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzJjc3Yvc3JjL2xpYi9jc3YtY29uZmlndXJhdGlvbi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ1MsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osWUFBTyxHQUFHLE1BQU0sQ0FBQztRQUNqQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ3N2Q29uZmlndXJhdGlvbiB7XG4gIHB1YmxpYyBkZWxpbWl0ZXIgPSAnLCc7XG4gIHB1YmxpYyBxdW90ZSA9ICdcIic7XG4gIHB1YmxpYyBuZXdMaW5lID0gJ1xcclxcbic7XG4gIHB1YmxpYyBpbmNsdWRlSGVhZGVyTGluZSA9IHRydWU7XG4gIHB1YmxpYyBvdXRwdXRWYWx1ZUZvck51bGwgPSAnJztcbiAgcHVibGljIG91dHB1dFZhbHVlRm9yVW5kZWZpbmVkID0gJyc7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcyY3N2L3NyYy9saWIvY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDc3ZSb3dNYXBwZXI8VD4ge1xyXG4gIGdldENvbHVtbk5hbWVzKCk6IHN0cmluZ1tdO1xyXG4gIG1hcChvYmo6IFQpOiBzdHJpbmdbXTtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcyY3N2L3NyYy9saWIvY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDc3ZSb3dNYXBwZXI8VD4ge1xuICBnZXRDb2x1bW5OYW1lcygpOiBzdHJpbmdbXTtcbiAgbWFwKG9iajogVCk6IHN0cmluZ1tdO1xufVxuIl19
@@ -1,13 +1,12 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- class Ng2CsvModule {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule }); }
6
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule }); }
3
+ export class Ng2CsvModule {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule }); }
6
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule }); }
7
7
  }
8
- export { Ng2CsvModule };
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule, decorators: [{
10
9
  type: NgModule,
11
10
  args: [{}]
12
11
  }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvbGliL25nMmNzdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFekMsTUFDYSxZQUFZOzhHQUFaLFlBQVk7K0dBQVosWUFBWTsrR0FBWixZQUFZOztTQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBOZ01vZHVsZSh7fSlcclxuZXhwb3J0IGNsYXNzIE5nMkNzdk1vZHVsZSB7IH1cclxuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvbGliL25nMmNzdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZOytHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFFBQVE7bUJBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBOZzJDc3ZNb2R1bGUgeyB9XG4iXX0=
@@ -3,7 +3,7 @@ import { saveAs } from 'file-saver';
3
3
  import { AutoCsvRowMapper } from './auto-csv-row-mapper.class';
4
4
  import { CsvConfiguration } from './csv-configuration.class';
5
5
  import * as i0 from "@angular/core";
6
- class Ng2CsvService {
6
+ export class Ng2CsvService {
7
7
  download(data, filename, csvRowMapper, config = new CsvConfiguration()) {
8
8
  const csvData = this.convertToCsv(data, csvRowMapper, config);
9
9
  const mimeType = 'text/csv; header='
@@ -56,14 +56,13 @@ class Ng2CsvService {
56
56
  }
57
57
  return value;
58
58
  }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, providedIn: 'root' }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, providedIn: 'root' }); }
61
61
  }
62
- export { Ng2CsvService };
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, decorators: [{
64
63
  type: Injectable,
65
64
  args: [{
66
65
  providedIn: 'root'
67
66
  }]
68
67
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyY3N2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzJjc3Yvc3JjL2xpYi9uZzJjc3Yuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRzdELE1BR2EsYUFBYTtJQUNqQixRQUFRLENBQ1gsSUFBUyxFQUNULFFBQWdCLEVBQ2hCLFlBQStCLEVBQy9CLFNBQTJCLElBQUksZ0JBQWdCLEVBQUU7UUFDbkQsTUFBTSxPQUFPLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXRFLE1BQU0sUUFBUSxHQUFXLG1CQUFtQjtjQUN4QyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RCxNQUFNLE9BQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFlBQVksQ0FDZixJQUFTLEVBQ1QsWUFBK0IsRUFDL0IsU0FBMkIsSUFBSSxnQkFBZ0IsRUFBRTtRQUNuRCxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDOUIsWUFBWSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0M7UUFFRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFFMUIsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDNUIsTUFBTSxvQkFBb0IsR0FDeEIsR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7a0JBQ2xCLFlBQVksQ0FBQyxjQUFjLEVBQUU7cUJBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2tCQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkI7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2lCQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sd0JBQXdCLENBQzVCLEtBQWEsRUFDYixNQUF3QjtRQUMxQixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUM7YUFDbEM7WUFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUNkLE9BQU8sTUFBTSxDQUFDLHVCQUF1QixDQUFDO2FBQ3ZDO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FDaEIsS0FBYSxFQUNiLFNBQWlCO1FBQ25CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDbEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDakUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxjQUFjLENBQ2xCLEtBQWEsRUFDYixNQUF3QjtRQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztlQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4RDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0E5RVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7U0FFUCxhQUFhOzJGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgQXV0b0NzdlJvd01hcHBlciB9IGZyb20gJy4vYXV0by1jc3Ytcm93LW1hcHBlci5jbGFzcyc7XHJcbmltcG9ydCB7IENzdkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2Nzdi1jb25maWd1cmF0aW9uLmNsYXNzJztcclxuaW1wb3J0IHsgSUNzdlJvd01hcHBlciB9IGZyb20gJy4vY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nMkNzdlNlcnZpY2Uge1xyXG4gIHB1YmxpYyBkb3dubG9hZDxUPihcclxuICAgICAgZGF0YTogVFtdLFxyXG4gICAgICBmaWxlbmFtZTogc3RyaW5nLFxyXG4gICAgICBjc3ZSb3dNYXBwZXI/OiBJQ3N2Um93TWFwcGVyPFQ+LFxyXG4gICAgICBjb25maWc6IENzdkNvbmZpZ3VyYXRpb24gPSBuZXcgQ3N2Q29uZmlndXJhdGlvbigpKTogdm9pZCB7XHJcbiAgICBjb25zdCBjc3ZEYXRhOiBzdHJpbmcgPSB0aGlzLmNvbnZlcnRUb0NzdihkYXRhLCBjc3ZSb3dNYXBwZXIsIGNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgbWltZVR5cGU6IHN0cmluZyA9ICd0ZXh0L2NzdjsgaGVhZGVyPSdcclxuICAgICAgKyAoY29uZmlnLmluY2x1ZGVIZWFkZXJMaW5lID8gJ3ByZXNlbnQnIDogJ2Fic2VudCcpO1xyXG5cclxuICAgIGNvbnN0IGNzdkJsb2I6IEJsb2IgPSBuZXcgQmxvYihbY3N2RGF0YV0sIHsgdHlwZTogbWltZVR5cGUgfSk7XHJcbiAgICBzYXZlQXMoY3N2QmxvYiwgZmlsZW5hbWUsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnRUb0NzdjxUPihcclxuICAgICAgZGF0YTogVFtdLFxyXG4gICAgICBjc3ZSb3dNYXBwZXI/OiBJQ3N2Um93TWFwcGVyPFQ+LFxyXG4gICAgICBjb25maWc6IENzdkNvbmZpZ3VyYXRpb24gPSBuZXcgQ3N2Q29uZmlndXJhdGlvbigpKTogc3RyaW5nIHtcclxuICAgIGlmIChjc3ZSb3dNYXBwZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjc3ZSb3dNYXBwZXIgPSBuZXcgQXV0b0NzdlJvd01hcHBlcihkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByb3dzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb25maWcuaW5jbHVkZUhlYWRlckxpbmUpIHtcclxuICAgICAgY29uc3QgaGVhZGVyRmllbGRTZXBhcmF0b3IgPVxyXG4gICAgICAgIGAke2NvbmZpZy5xdW90ZX0ke2NvbmZpZy5kZWxpbWl0ZXJ9JHtjb25maWcucXVvdGV9YDtcclxuICAgICAgcm93cy5wdXNoKGNvbmZpZy5xdW90ZVxyXG4gICAgICAgICsgY3N2Um93TWFwcGVyLmdldENvbHVtbk5hbWVzKClcclxuICAgICAgICAgIC5tYXAoeCA9PiB0aGlzLmVzY2FwZVF1b3Rlcyh4LCBjb25maWcucXVvdGUpKVxyXG4gICAgICAgICAgLmpvaW4oaGVhZGVyRmllbGRTZXBhcmF0b3IpXHJcbiAgICAgICAgKyBjb25maWcucXVvdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIGRhdGEpIHtcclxuICAgICAgcm93cy5wdXNoKGNzdlJvd01hcHBlci5tYXAocm93KVxyXG4gICAgICAgIC5tYXAoeCA9PiB0aGlzLm1hcE51bGxPclVuZGVmaW5lZFZhbHVlcyh4LCBjb25maWcpKVxyXG4gICAgICAgIC5tYXAoeCA9PiB0aGlzLmVzY2FwZVJvd1ZhbHVlKHgsIGNvbmZpZykpXHJcbiAgICAgICAgLmpvaW4oY29uZmlnLmRlbGltaXRlcikpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByb3dzLmpvaW4oY29uZmlnLm5ld0xpbmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXBOdWxsT3JVbmRlZmluZWRWYWx1ZXMoXHJcbiAgICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICAgIGNvbmZpZzogQ3N2Q29uZmlndXJhdGlvbik6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgIGNhc2UgbnVsbDoge1xyXG4gICAgICAgIHJldHVybiBjb25maWcub3V0cHV0VmFsdWVGb3JOdWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5vdXRwdXRWYWx1ZUZvclVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVzY2FwZVF1b3RlcyhcclxuICAgICAgdmFsdWU6IHN0cmluZyxcclxuICAgICAgcXVvdGVDaGFyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoXHJcbiAgICAgIG5ldyBSZWdFeHAocXVvdGVDaGFyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyksICdnJyksXHJcbiAgICAgIHF1b3RlQ2hhciArIHF1b3RlQ2hhcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVzY2FwZVJvd1ZhbHVlKFxyXG4gICAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgICBjb25maWc6IENzdkNvbmZpZ3VyYXRpb24pOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlLmluZGV4T2YoY29uZmlnLmRlbGltaXRlcikgPiAtMVxyXG4gICAgICAgIHx8IHZhbHVlLmluZGV4T2YoY29uZmlnLnF1b3RlKSA+IC0xKSB7XHJcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IHRoaXMuZXNjYXBlUXVvdGVzKHZhbHVlLCBjb25maWcucXVvdGUpO1xyXG4gICAgICByZXR1cm4gYCR7Y29uZmlnLnF1b3RlfSR7ZXNjYXBlZFZhbHVlfSR7Y29uZmlnLnF1b3RlfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyY3N2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZzJjc3Yvc3JjL2xpYi9uZzJjc3Yuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxhQUFhO0lBQ2pCLFFBQVEsQ0FDWCxJQUFTLEVBQ1QsUUFBZ0IsRUFDaEIsWUFBK0IsRUFDL0IsU0FBMkIsSUFBSSxnQkFBZ0IsRUFBRTtRQUNuRCxNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQVcsbUJBQW1CO2NBQ3hDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRELE1BQU0sT0FBTyxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sWUFBWSxDQUNmLElBQVMsRUFDVCxZQUErQixFQUMvQixTQUEyQixJQUFJLGdCQUFnQixFQUFFO1FBQ25ELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM5QixZQUFZLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUVELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUUxQixJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtZQUM1QixNQUFNLG9CQUFvQixHQUN4QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztrQkFDbEIsWUFBWSxDQUFDLGNBQWMsRUFBRTtxQkFDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUM7a0JBQzNCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQjtRQUVELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7aUJBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2xELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyx3QkFBd0IsQ0FDNUIsS0FBYSxFQUNiLE1BQXdCO1FBQzFCLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDVCxPQUFPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzthQUNsQztZQUNELEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBQ2QsT0FBTyxNQUFNLENBQUMsdUJBQXVCLENBQUM7YUFDdkM7WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUNoQixLQUFhLEVBQ2IsU0FBaUI7UUFDbkIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUNsQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUNqRSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FDbEIsS0FBYSxFQUNiLE1BQXdCO1FBQzFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2VBQ2pDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQTlFVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgQXV0b0NzdlJvd01hcHBlciB9IGZyb20gJy4vYXV0by1jc3Ytcm93LW1hcHBlci5jbGFzcyc7XG5pbXBvcnQgeyBDc3ZDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jc3YtY29uZmlndXJhdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBJQ3N2Um93TWFwcGVyIH0gZnJvbSAnLi9jc3Ytcm93LW1hcHBlci5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZzJDc3ZTZXJ2aWNlIHtcbiAgcHVibGljIGRvd25sb2FkPFQ+KFxuICAgICAgZGF0YTogVFtdLFxuICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgIGNzdlJvd01hcHBlcj86IElDc3ZSb3dNYXBwZXI8VD4sXG4gICAgICBjb25maWc6IENzdkNvbmZpZ3VyYXRpb24gPSBuZXcgQ3N2Q29uZmlndXJhdGlvbigpKTogdm9pZCB7XG4gICAgY29uc3QgY3N2RGF0YTogc3RyaW5nID0gdGhpcy5jb252ZXJ0VG9Dc3YoZGF0YSwgY3N2Um93TWFwcGVyLCBjb25maWcpO1xuXG4gICAgY29uc3QgbWltZVR5cGU6IHN0cmluZyA9ICd0ZXh0L2NzdjsgaGVhZGVyPSdcbiAgICAgICsgKGNvbmZpZy5pbmNsdWRlSGVhZGVyTGluZSA/ICdwcmVzZW50JyA6ICdhYnNlbnQnKTtcblxuICAgIGNvbnN0IGNzdkJsb2I6IEJsb2IgPSBuZXcgQmxvYihbY3N2RGF0YV0sIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gICAgc2F2ZUFzKGNzdkJsb2IsIGZpbGVuYW1lLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb252ZXJ0VG9Dc3Y8VD4oXG4gICAgICBkYXRhOiBUW10sXG4gICAgICBjc3ZSb3dNYXBwZXI/OiBJQ3N2Um93TWFwcGVyPFQ+LFxuICAgICAgY29uZmlnOiBDc3ZDb25maWd1cmF0aW9uID0gbmV3IENzdkNvbmZpZ3VyYXRpb24oKSk6IHN0cmluZyB7XG4gICAgaWYgKGNzdlJvd01hcHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjc3ZSb3dNYXBwZXIgPSBuZXcgQXV0b0NzdlJvd01hcHBlcihkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3dzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGNvbmZpZy5pbmNsdWRlSGVhZGVyTGluZSkge1xuICAgICAgY29uc3QgaGVhZGVyRmllbGRTZXBhcmF0b3IgPVxuICAgICAgICBgJHtjb25maWcucXVvdGV9JHtjb25maWcuZGVsaW1pdGVyfSR7Y29uZmlnLnF1b3RlfWA7XG4gICAgICByb3dzLnB1c2goY29uZmlnLnF1b3RlXG4gICAgICAgICsgY3N2Um93TWFwcGVyLmdldENvbHVtbk5hbWVzKClcbiAgICAgICAgICAubWFwKHggPT4gdGhpcy5lc2NhcGVRdW90ZXMoeCwgY29uZmlnLnF1b3RlKSlcbiAgICAgICAgICAuam9pbihoZWFkZXJGaWVsZFNlcGFyYXRvcilcbiAgICAgICAgKyBjb25maWcucXVvdGUpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIGRhdGEpIHtcbiAgICAgIHJvd3MucHVzaChjc3ZSb3dNYXBwZXIubWFwKHJvdylcbiAgICAgICAgLm1hcCh4ID0+IHRoaXMubWFwTnVsbE9yVW5kZWZpbmVkVmFsdWVzKHgsIGNvbmZpZykpXG4gICAgICAgIC5tYXAoeCA9PiB0aGlzLmVzY2FwZVJvd1ZhbHVlKHgsIGNvbmZpZykpXG4gICAgICAgIC5qb2luKGNvbmZpZy5kZWxpbWl0ZXIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cy5qb2luKGNvbmZpZy5uZXdMaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwTnVsbE9yVW5kZWZpbmVkVmFsdWVzKFxuICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgIGNvbmZpZzogQ3N2Q29uZmlndXJhdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSBudWxsOiB7XG4gICAgICAgIHJldHVybiBjb25maWcub3V0cHV0VmFsdWVGb3JOdWxsO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5vdXRwdXRWYWx1ZUZvclVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlUXVvdGVzKFxuICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgIHF1b3RlQ2hhcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShcbiAgICAgIG5ldyBSZWdFeHAocXVvdGVDaGFyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyksICdnJyksXG4gICAgICBxdW90ZUNoYXIgKyBxdW90ZUNoYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVSb3dWYWx1ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICBjb25maWc6IENzdkNvbmZpZ3VyYXRpb24pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZS5pbmRleE9mKGNvbmZpZy5kZWxpbWl0ZXIpID4gLTFcbiAgICAgICAgfHwgdmFsdWUuaW5kZXhPZihjb25maWcucXVvdGUpID4gLTEpIHtcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IHRoaXMuZXNjYXBlUXVvdGVzKHZhbHVlLCBjb25maWcucXVvdGUpO1xuICAgICAgcmV0dXJuIGAke2NvbmZpZy5xdW90ZX0ke2VzY2FwZWRWYWx1ZX0ke2NvbmZpZy5xdW90ZX1gO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
@@ -9,4 +9,4 @@ export class OrderedProjectionCsvRowMapper {
9
9
  return this.projections.map(x => x[1](obj));
10
10
  }
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJlZC1wcm9qZWN0aW9uLWNzdi1yb3ctbWFwcGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcyY3N2L3NyYy9saWIvb3JkZXJlZC1wcm9qZWN0aW9uLWNzdi1yb3ctbWFwcGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsWUFDSSxXQUFnRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDc3ZSb3dNYXBwZXIgfSBmcm9tICcuL2Nzdi1yb3ctbWFwcGVyLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgT3JkZXJlZFByb2plY3Rpb25Dc3ZSb3dNYXBwZXI8VD5cclxuICAgIGltcGxlbWVudHMgSUNzdlJvd01hcHBlcjxUPiB7XHJcblxyXG4gIHByaXZhdGUgcHJvamVjdGlvbnM6IEFycmF5PFtzdHJpbmcsIChvYmo6IFQpID0+IHN0cmluZ10+O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICAgIHByb2plY3Rpb25zOiBBcnJheTxbc3RyaW5nLCAob2JqOiBUKSA9PiBzdHJpbmddPikge1xyXG4gICAgdGhpcy5wcm9qZWN0aW9ucyA9IHByb2plY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbHVtbk5hbWVzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25zLm1hcCh4ID0+IHhbMF0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hcChvYmo6IFQpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0aW9ucy5tYXAoeCA9PiB4WzFdKG9iaikpO1xyXG4gIH1cclxufVxyXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJlZC1wcm9qZWN0aW9uLWNzdi1yb3ctbWFwcGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcyY3N2L3NyYy9saWIvb3JkZXJlZC1wcm9qZWN0aW9uLWNzdi1yb3ctbWFwcGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsWUFDSSxXQUFnRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDc3ZSb3dNYXBwZXIgfSBmcm9tICcuL2Nzdi1yb3ctbWFwcGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPcmRlcmVkUHJvamVjdGlvbkNzdlJvd01hcHBlcjxUPlxuICAgIGltcGxlbWVudHMgSUNzdlJvd01hcHBlcjxUPiB7XG5cbiAgcHJpdmF0ZSBwcm9qZWN0aW9uczogQXJyYXk8W3N0cmluZywgKG9iajogVCkgPT4gc3RyaW5nXT47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvamVjdGlvbnM6IEFycmF5PFtzdHJpbmcsIChvYmo6IFQpID0+IHN0cmluZ10+KSB7XG4gICAgdGhpcy5wcm9qZWN0aW9ucyA9IHByb2plY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbk5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0aW9ucy5tYXAoeCA9PiB4WzBdKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXAob2JqOiBUKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25zLm1hcCh4ID0+IHhbMV0ob2JqKSk7XG4gIH1cbn1cbiJdfQ==
@@ -7,4 +7,4 @@ export * from './lib/auto-csv-row-mapper.class';
7
7
  export * from './lib/csv-configuration.class';
8
8
  export * from './lib/csv-row-mapper.interface';
9
9
  export * from './lib/ordered-projection-csv-row-mapper.class';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nMmNzdlxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nMmNzdi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmcyY3N2Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG8tY3N2LXJvdy1tYXBwZXIuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jc3YtY29uZmlndXJhdGlvbi5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nzdi1yb3ctbWFwcGVyLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29yZGVyZWQtcHJvamVjdGlvbi1jc3Ytcm93LW1hcHBlci5jbGFzcyc7XHJcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nMmNzdi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZzJjc3ZcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZzJjc3Yuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZzJjc3YubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG8tY3N2LXJvdy1tYXBwZXIuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3N2LWNvbmZpZ3VyYXRpb24uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3N2LXJvdy1tYXBwZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29yZGVyZWQtcHJvamVjdGlvbi1jc3Ytcm93LW1hcHBlci5jbGFzcyc7XG4iXX0=
@@ -127,10 +127,10 @@ class Ng2CsvService {
127
127
  }
128
128
  return value;
129
129
  }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, providedIn: 'root' }); }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, providedIn: 'root' }); }
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvService, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvService, decorators: [{
134
134
  type: Injectable,
135
135
  args: [{
136
136
  providedIn: 'root'
@@ -138,11 +138,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
138
138
  }] });
139
139
 
140
140
  class Ng2CsvModule {
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
142
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule }); }
143
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
142
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule }); }
143
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule }); }
144
144
  }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: Ng2CsvModule, decorators: [{
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: Ng2CsvModule, decorators: [{
146
146
  type: NgModule,
147
147
  args: [{}]
148
148
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"ng2csv.mjs","sources":["../../../projects/ng2csv/src/lib/ordered-projection-csv-row-mapper.class.ts","../../../projects/ng2csv/src/lib/auto-csv-row-mapper.class.ts","../../../projects/ng2csv/src/lib/csv-configuration.class.ts","../../../projects/ng2csv/src/lib/ng2csv.service.ts","../../../projects/ng2csv/src/lib/ng2csv.module.ts","../../../projects/ng2csv/src/public-api.ts","../../../projects/ng2csv/src/ng2csv.ts"],"sourcesContent":["import { ICsvRowMapper } from './csv-row-mapper.interface';\r\n\r\nexport class OrderedProjectionCsvRowMapper<T>\r\n implements ICsvRowMapper<T> {\r\n\r\n private projections: Array<[string, (obj: T) => string]>;\r\n\r\n public constructor(\r\n projections: Array<[string, (obj: T) => string]>) {\r\n this.projections = projections;\r\n }\r\n\r\n public getColumnNames(): string[] {\r\n return this.projections.map(x => x[0]);\r\n }\r\n\r\n public map(obj: T): string[] {\r\n return this.projections.map(x => x[1](obj));\r\n }\r\n}\r\n","import { ICsvRowMapper } from './csv-row-mapper.interface';\r\nimport { OrderedProjectionCsvRowMapper } from './ordered-projection-csv-row-mapper.class';\r\n\r\nexport class AutoCsvRowMapper<T> implements ICsvRowMapper<T> {\r\n\r\n private derivedCsvRowMapper: OrderedProjectionCsvRowMapper<T>;\r\n\r\n public constructor(data: T[]) {\r\n if (!data || data.length === 0) {\r\n throw new Error(\r\n 'Parameter \\'data\\' must be a non-empty array of objects.');\r\n }\r\n\r\n if (typeof data[0] !== 'object') {\r\n throw new Error(\r\n 'Parameter \\'data\\' must contain objects.'\r\n );\r\n }\r\n\r\n const projections: Array<[string, (obj: T) => string]> = [];\r\n\r\n const allKeys: string[] = this.getAllKeys(data);\r\n for (const key of allKeys) {\r\n projections.push([\r\n key,\r\n this.createProjection(key)\r\n ]);\r\n }\r\n\r\n this.derivedCsvRowMapper = new OrderedProjectionCsvRowMapper<T>(\r\n projections\r\n );\r\n }\r\n\r\n public getColumnNames(): string[] {\r\n return this.derivedCsvRowMapper.getColumnNames();\r\n }\r\n\r\n public map(obj: T): string[] {\r\n return this.derivedCsvRowMapper.map(obj);\r\n }\r\n\r\n private createProjection(property: string): (obj: T) => string {\r\n return (x: T) => {\r\n if (x.hasOwnProperty(property)) {\r\n const propertyValue = (x as any)[property];\r\n if (propertyValue === undefined || propertyValue === null) {\r\n return '';\r\n }\r\n return propertyValue.toString();\r\n } else {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n private getAllKeys(objs: T[]): string[] {\r\n const allKeys: any = {};\r\n\r\n for (const obj of objs) {\r\n for (const objectKey of Object.keys(obj)) {\r\n allKeys[objectKey] = 1;\r\n }\r\n }\r\n\r\n return Object.keys(allKeys);\r\n }\r\n}\r\n","export class CsvConfiguration {\r\n public delimiter = ',';\r\n public quote = '\"';\r\n public newLine = '\\r\\n';\r\n public includeHeaderLine = true;\r\n public outputValueForNull = '';\r\n public outputValueForUndefined = '';\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { saveAs } from 'file-saver';\r\nimport { AutoCsvRowMapper } from './auto-csv-row-mapper.class';\r\nimport { CsvConfiguration } from './csv-configuration.class';\r\nimport { ICsvRowMapper } from './csv-row-mapper.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Ng2CsvService {\r\n public download<T>(\r\n data: T[],\r\n filename: string,\r\n csvRowMapper?: ICsvRowMapper<T>,\r\n config: CsvConfiguration = new CsvConfiguration()): void {\r\n const csvData: string = this.convertToCsv(data, csvRowMapper, config);\r\n\r\n const mimeType: string = 'text/csv; header='\r\n + (config.includeHeaderLine ? 'present' : 'absent');\r\n\r\n const csvBlob: Blob = new Blob([csvData], { type: mimeType });\r\n saveAs(csvBlob, filename, true);\r\n }\r\n\r\n public convertToCsv<T>(\r\n data: T[],\r\n csvRowMapper?: ICsvRowMapper<T>,\r\n config: CsvConfiguration = new CsvConfiguration()): string {\r\n if (csvRowMapper === undefined) {\r\n csvRowMapper = new AutoCsvRowMapper(data);\r\n }\r\n\r\n const rows: string[] = [];\r\n\r\n if (config.includeHeaderLine) {\r\n const headerFieldSeparator =\r\n `${config.quote}${config.delimiter}${config.quote}`;\r\n rows.push(config.quote\r\n + csvRowMapper.getColumnNames()\r\n .map(x => this.escapeQuotes(x, config.quote))\r\n .join(headerFieldSeparator)\r\n + config.quote);\r\n }\r\n\r\n for (const row of data) {\r\n rows.push(csvRowMapper.map(row)\r\n .map(x => this.mapNullOrUndefinedValues(x, config))\r\n .map(x => this.escapeRowValue(x, config))\r\n .join(config.delimiter));\r\n }\r\n\r\n return rows.join(config.newLine);\r\n }\r\n\r\n private mapNullOrUndefinedValues(\r\n value: string,\r\n config: CsvConfiguration): string {\r\n switch (value) {\r\n case null: {\r\n return config.outputValueForNull;\r\n }\r\n case undefined: {\r\n return config.outputValueForUndefined;\r\n }\r\n default: {\r\n return value;\r\n }\r\n }\r\n }\r\n\r\n private escapeQuotes(\r\n value: string,\r\n quoteChar: string): string {\r\n return value.replace(\r\n new RegExp(quoteChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g'),\r\n quoteChar + quoteChar);\r\n }\r\n\r\n private escapeRowValue(\r\n value: string,\r\n config: CsvConfiguration): string {\r\n if (value.indexOf(config.delimiter) > -1\r\n || value.indexOf(config.quote) > -1) {\r\n const escapedValue = this.escapeQuotes(value, config.quote);\r\n return `${config.quote}${escapedValue}${config.quote}`;\r\n }\r\n return value;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule({})\r\nexport class Ng2CsvModule { }\r\n","/*\r\n * Public API Surface of ng2csv\r\n */\r\n\r\nexport * from './lib/ng2csv.service';\r\nexport * from './lib/ng2csv.module';\r\nexport * from './lib/auto-csv-row-mapper.class';\r\nexport * from './lib/csv-configuration.class';\r\nexport * from './lib/csv-row-mapper.interface';\r\nexport * from './lib/ordered-projection-csv-row-mapper.class';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng2csv.mjs","sources":["../../../projects/ng2csv/src/lib/ordered-projection-csv-row-mapper.class.ts","../../../projects/ng2csv/src/lib/auto-csv-row-mapper.class.ts","../../../projects/ng2csv/src/lib/csv-configuration.class.ts","../../../projects/ng2csv/src/lib/ng2csv.service.ts","../../../projects/ng2csv/src/lib/ng2csv.module.ts","../../../projects/ng2csv/src/public-api.ts","../../../projects/ng2csv/src/ng2csv.ts"],"sourcesContent":["import { ICsvRowMapper } from './csv-row-mapper.interface';\n\nexport class OrderedProjectionCsvRowMapper<T>\n implements ICsvRowMapper<T> {\n\n private projections: Array<[string, (obj: T) => string]>;\n\n public constructor(\n projections: Array<[string, (obj: T) => string]>) {\n this.projections = projections;\n }\n\n public getColumnNames(): string[] {\n return this.projections.map(x => x[0]);\n }\n\n public map(obj: T): string[] {\n return this.projections.map(x => x[1](obj));\n }\n}\n","import { ICsvRowMapper } from './csv-row-mapper.interface';\nimport { OrderedProjectionCsvRowMapper } from './ordered-projection-csv-row-mapper.class';\n\nexport class AutoCsvRowMapper<T> implements ICsvRowMapper<T> {\n\n private derivedCsvRowMapper: OrderedProjectionCsvRowMapper<T>;\n\n public constructor(data: T[]) {\n if (!data || data.length === 0) {\n throw new Error(\n 'Parameter \\'data\\' must be a non-empty array of objects.');\n }\n\n if (typeof data[0] !== 'object') {\n throw new Error(\n 'Parameter \\'data\\' must contain objects.'\n );\n }\n\n const projections: Array<[string, (obj: T) => string]> = [];\n\n const allKeys: string[] = this.getAllKeys(data);\n for (const key of allKeys) {\n projections.push([\n key,\n this.createProjection(key)\n ]);\n }\n\n this.derivedCsvRowMapper = new OrderedProjectionCsvRowMapper<T>(\n projections\n );\n }\n\n public getColumnNames(): string[] {\n return this.derivedCsvRowMapper.getColumnNames();\n }\n\n public map(obj: T): string[] {\n return this.derivedCsvRowMapper.map(obj);\n }\n\n private createProjection(property: string): (obj: T) => string {\n return (x: T) => {\n if (x.hasOwnProperty(property)) {\n const propertyValue = (x as any)[property];\n if (propertyValue === undefined || propertyValue === null) {\n return '';\n }\n return propertyValue.toString();\n } else {\n return '';\n }\n };\n }\n\n private getAllKeys(objs: T[]): string[] {\n const allKeys: any = {};\n\n for (const obj of objs) {\n for (const objectKey of Object.keys(obj)) {\n allKeys[objectKey] = 1;\n }\n }\n\n return Object.keys(allKeys);\n }\n}\n","export class CsvConfiguration {\n public delimiter = ',';\n public quote = '\"';\n public newLine = '\\r\\n';\n public includeHeaderLine = true;\n public outputValueForNull = '';\n public outputValueForUndefined = '';\n}\n","import { Injectable } from '@angular/core';\nimport { saveAs } from 'file-saver';\nimport { AutoCsvRowMapper } from './auto-csv-row-mapper.class';\nimport { CsvConfiguration } from './csv-configuration.class';\nimport { ICsvRowMapper } from './csv-row-mapper.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Ng2CsvService {\n public download<T>(\n data: T[],\n filename: string,\n csvRowMapper?: ICsvRowMapper<T>,\n config: CsvConfiguration = new CsvConfiguration()): void {\n const csvData: string = this.convertToCsv(data, csvRowMapper, config);\n\n const mimeType: string = 'text/csv; header='\n + (config.includeHeaderLine ? 'present' : 'absent');\n\n const csvBlob: Blob = new Blob([csvData], { type: mimeType });\n saveAs(csvBlob, filename, true);\n }\n\n public convertToCsv<T>(\n data: T[],\n csvRowMapper?: ICsvRowMapper<T>,\n config: CsvConfiguration = new CsvConfiguration()): string {\n if (csvRowMapper === undefined) {\n csvRowMapper = new AutoCsvRowMapper(data);\n }\n\n const rows: string[] = [];\n\n if (config.includeHeaderLine) {\n const headerFieldSeparator =\n `${config.quote}${config.delimiter}${config.quote}`;\n rows.push(config.quote\n + csvRowMapper.getColumnNames()\n .map(x => this.escapeQuotes(x, config.quote))\n .join(headerFieldSeparator)\n + config.quote);\n }\n\n for (const row of data) {\n rows.push(csvRowMapper.map(row)\n .map(x => this.mapNullOrUndefinedValues(x, config))\n .map(x => this.escapeRowValue(x, config))\n .join(config.delimiter));\n }\n\n return rows.join(config.newLine);\n }\n\n private mapNullOrUndefinedValues(\n value: string,\n config: CsvConfiguration): string {\n switch (value) {\n case null: {\n return config.outputValueForNull;\n }\n case undefined: {\n return config.outputValueForUndefined;\n }\n default: {\n return value;\n }\n }\n }\n\n private escapeQuotes(\n value: string,\n quoteChar: string): string {\n return value.replace(\n new RegExp(quoteChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g'),\n quoteChar + quoteChar);\n }\n\n private escapeRowValue(\n value: string,\n config: CsvConfiguration): string {\n if (value.indexOf(config.delimiter) > -1\n || value.indexOf(config.quote) > -1) {\n const escapedValue = this.escapeQuotes(value, config.quote);\n return `${config.quote}${escapedValue}${config.quote}`;\n }\n return value;\n }\n}\n","import { NgModule } from '@angular/core';\n\n@NgModule({})\nexport class Ng2CsvModule { }\n","/*\n * Public API Surface of ng2csv\n */\n\nexport * from './lib/ng2csv.service';\nexport * from './lib/ng2csv.module';\nexport * from './lib/auto-csv-row-mapper.class';\nexport * from './lib/csv-configuration.class';\nexport * from './lib/csv-row-mapper.interface';\nexport * from './lib/ordered-projection-csv-row-mapper.class';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ng2csv",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@angular/core": "^16.0.0",
8
+ "@angular/core": "^17.0.0",
9
9
  "file-saver": "^2.0.0"
10
10
  },
11
11
  "module": "fesm2022/ng2csv.mjs",