extra-request 10.2.1 → 11.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
@@ -100,7 +100,10 @@ function json<T extends JSONValue | JSONSerializable<any>>(
100
100
 
101
101
  #### csv
102
102
  ```ts
103
- function csv<T extends object>(payload: T[]): IRequestOptionsTransformer
103
+ function csv<Field extends string>(
104
+ header: NonEmptyArray<Field>
105
+ , data: Array<Record<Field, number | string>>
106
+ ): IRequestOptionsTransformer
104
107
  ```
105
108
 
106
109
  #### signal
@@ -1,2 +1,3 @@
1
1
  import { IRequestOptionsTransformer } from "../types.js";
2
- export declare function csv<T extends object>(payload: T[]): IRequestOptionsTransformer;
2
+ import { NonEmptyArray } from '@blackglory/prelude';
3
+ export declare function csv<Field extends string>(header: NonEmptyArray<Field>, data: Array<Record<Field, number | string>>): IRequestOptionsTransformer;
@@ -1,21 +1,20 @@
1
1
  import { Headers } from 'extra-fetch';
2
- import papaparse from 'papaparse';
3
- import { assert } from '@blackglory/prelude';
4
- const { unparse } = papaparse;
5
- export function csv(payload) {
6
- assert(payload.length > 0, 'payload must be a non-empty array');
2
+ import { unparse } from 'papaparse';
3
+ export function csv(header, data) {
7
4
  return (options) => {
8
5
  const headers = new Headers(options.headers);
9
6
  headers.set('Content-Type', 'text/csv');
10
7
  return {
11
8
  ...options,
12
9
  headers,
13
- payload: stringify(payload)
10
+ payload: stringify(header, data)
14
11
  };
15
12
  };
16
13
  }
17
- function stringify(data) {
18
- const fields = Object.keys(data[0]);
19
- return unparse({ data, fields });
14
+ function stringify(header, data) {
15
+ return unparse({
16
+ fields: header,
17
+ data: data
18
+ });
20
19
  }
21
20
  //# sourceMappingURL=csv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/transformers/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;AAE7B,MAAM,UAAU,GAAG,CAAmB,OAAY;IAChD,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAA;IAE/D,OAAO,CAAC,OAAwB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QAEvC,OAAO;YACL,GAAG,OAAO;YACV,OAAO;YACP,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;SAC5B,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAmB,IAAS;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/transformers/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,MAAM,UAAU,GAAG,CACjB,MAA4B,EAC5B,IAA2C;IAE3C,OAAO,CAAC,OAAwB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QAEvC,OAAO;YACL,GAAG,OAAO;YACV,OAAO;YACP,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;SACjC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAChB,MAA4B,EAC5B,IAA2C;IAE3C,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI;KACX,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-request",
3
- "version": "10.2.1",
3
+ "version": "11.0.0",
4
4
  "description": "Utilities for Request",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1,13 +1,12 @@
1
1
  import { Headers } from 'extra-fetch'
2
2
  import { IRequestOptions, IRequestOptionsTransformer } from '@src/types.js'
3
- import papaparse from 'papaparse'
4
- import { assert } from '@blackglory/prelude'
5
-
6
- const { unparse } = papaparse
7
-
8
- export function csv<T extends object>(payload: T[]): IRequestOptionsTransformer {
9
- assert(payload.length > 0, 'payload must be a non-empty array')
3
+ import { unparse } from 'papaparse'
4
+ import { NonEmptyArray } from '@blackglory/prelude'
10
5
 
6
+ export function csv<Field extends string>(
7
+ header: NonEmptyArray<Field>
8
+ , data: Array<Record<Field, number | string>>
9
+ ): IRequestOptionsTransformer {
11
10
  return (options: IRequestOptions) => {
12
11
  const headers = new Headers(options.headers)
13
12
  headers.set('Content-Type', 'text/csv')
@@ -15,12 +14,17 @@ export function csv<T extends object>(payload: T[]): IRequestOptionsTransformer
15
14
  return {
16
15
  ...options
17
16
  , headers
18
- , payload: stringify(payload)
17
+ , payload: stringify(header, data)
19
18
  }
20
19
  }
21
20
  }
22
21
 
23
- function stringify<T extends object>(data: T[]): string {
24
- const fields = Object.keys(data[0])
25
- return unparse({ data, fields })
22
+ function stringify<Field extends string>(
23
+ header: NonEmptyArray<Field>
24
+ , data: Array<Record<Field, number | string>>
25
+ ): string {
26
+ return unparse({
27
+ fields: header
28
+ , data: data
29
+ })
26
30
  }