@ripwords/myinvois-client 0.0.7 → 0.0.8

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.
Files changed (54) hide show
  1. package/bun.lock +25 -25
  2. package/dist/index.cjs +39 -19
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +2316 -463
  5. package/dist/index.js +16 -19
  6. package/package.json +17 -17
  7. package/src/api/platform/taxpayerLogin.ts +28 -0
  8. package/src/types/index.d.ts +12 -0
  9. package/src/types/unit/1X.d.ts +16 -0
  10. package/src/types/unit/2X.d.ts +62 -0
  11. package/src/types/unit/3X.d.ts +17 -0
  12. package/src/types/unit/4X.d.ts +44 -0
  13. package/src/types/unit/5X.d.ts +26 -0
  14. package/src/types/unit/6X.d.ts +12 -0
  15. package/src/types/unit/7X.d.ts +12 -0
  16. package/src/types/unit/8X.d.ts +15 -0
  17. package/src/types/unit/9X.d.ts +11 -0
  18. package/src/types/unit/AX.d.ts +202 -0
  19. package/src/types/unit/BX.d.ts +212 -0
  20. package/src/types/unit/CX.d.ts +238 -0
  21. package/src/types/unit/DX.d.ts +212 -0
  22. package/src/types/unit/EX.d.ts +196 -0
  23. package/src/types/unit/FX.d.ts +236 -0
  24. package/src/types/unit/GX.d.ts +254 -0
  25. package/src/types/unit/HX.d.ts +234 -0
  26. package/src/types/unit/IX.d.ts +28 -0
  27. package/src/types/unit/JX.d.ts +190 -0
  28. package/src/types/unit/KX.d.ts +284 -0
  29. package/src/types/unit/LX.d.ts +228 -0
  30. package/src/types/unit/MX.d.ts +288 -0
  31. package/src/types/unit/NX.d.ts +226 -0
  32. package/src/types/unit/OX.d.ts +34 -0
  33. package/src/types/unit/PX.d.ts +224 -0
  34. package/src/types/unit/QX.d.ts +94 -0
  35. package/src/types/unit/RX.d.ts +28 -0
  36. package/src/types/unit/SX.d.ts +56 -0
  37. package/src/types/unit/TX.d.ts +44 -0
  38. package/src/types/unit/UX.d.ts +14 -0
  39. package/src/types/unit/VX.d.ts +13 -0
  40. package/src/types/unit/WX.d.ts +34 -0
  41. package/src/types/unit/XX.d.ts +825 -0
  42. package/src/types/unit/YX.d.ts +17 -0
  43. package/src/types/unit/ZX.d.ts +19 -0
  44. package/src/types/unit-types.d.ts +71 -575
  45. package/src/utils/MyInvoisClient.ts +11 -33
  46. package/src/utils/getBaseUrl.ts +5 -0
  47. package/test/{MyInvoiClientRealData.test.ts → MyInvoiClientWithRealData.test.ts} +13 -1
  48. package/test/MyInvoisClient.test.ts +4 -7
  49. package/dist/cjs/index.cjs +0 -75
  50. package/dist/cjs/index.cjs.map +0 -1
  51. package/dist/cjs/multipart-parser-Bu3ikqFQ.cjs +0 -182
  52. package/dist/cjs/multipart-parser-Bu3ikqFQ.cjs.map +0 -1
  53. package/dist/cjs/node-qs2pnN6F.cjs +0 -4124
  54. package/dist/cjs/node-qs2pnN6F.cjs.map +0 -1
@@ -1,7 +1,5 @@
1
- interface TokenResponse {
2
- access_token: string
3
- expires_in: number
4
- }
1
+ import { getBaseUrl } from './getBaseUrl'
2
+ import { taxpayerLogin } from 'src/api/platform/taxpayerLogin'
5
3
 
6
4
  export class MyInvoisClient {
7
5
  private readonly baseUrl: string
@@ -19,40 +17,20 @@ export class MyInvoisClient {
19
17
  ) {
20
18
  this.clientId = clientId
21
19
  this.clientSecret = clientSecret
20
+ this.baseUrl = getBaseUrl(environment)
22
21
  this.debug = debug
23
- if (environment === 'sandbox') {
24
- this.baseUrl = 'https://preprod-api.myinvois.hasil.gov.my'
25
- } else {
26
- this.baseUrl = 'https://api.myinvois.hasil.gov.my'
27
- }
28
22
  }
29
23
 
30
24
  private async refreshToken() {
31
- try {
32
- const response = await fetch(`${this.baseUrl}/connect/token`, {
33
- method: 'POST',
34
- headers: {
35
- 'Content-Type': 'application/x-www-form-urlencoded',
36
- },
37
- body: new URLSearchParams({
38
- grant_type: 'client_credentials',
39
- client_id: this.clientId,
40
- client_secret: this.clientSecret,
41
- scope: 'InvoicingAPI',
42
- }),
43
- })
44
-
45
- const tokenResponse: TokenResponse = await response.json()
25
+ const tokenResponse = await taxpayerLogin({
26
+ clientId: this.clientId,
27
+ clientSecret: this.clientSecret,
28
+ baseUrl: this.baseUrl,
29
+ debug: this.debug,
30
+ })
46
31
 
47
- this.token = tokenResponse.access_token
48
- this.tokenExpiration = new Date(
49
- Date.now() + tokenResponse.expires_in * 1000,
50
- )
51
- } catch (error) {
52
- if (this.debug) {
53
- console.error(error)
54
- }
55
- }
32
+ this.token = tokenResponse.token
33
+ this.tokenExpiration = tokenResponse.tokenExpiration
56
34
  }
57
35
 
58
36
  private async getToken() {
@@ -0,0 +1,5 @@
1
+ export const getBaseUrl = (environment: 'sandbox' | 'production') => {
2
+ return environment === 'sandbox'
3
+ ? 'https://preprod-api.myinvois.hasil.gov.my'
4
+ : 'https://api.myinvois.hasil.gov.my'
5
+ }
@@ -1,8 +1,20 @@
1
1
  import { describe, it, expect } from 'vitest'
2
2
  import { MyInvoisClient } from '../src/utils/MyInvoisClient'
3
3
 
4
- describe('MyInvoisClientRealData', () => {
4
+ describe('MyInvoisClientWithRealData', () => {
5
5
  it('should verify TIN with real data', async () => {
6
+ // Skip the test if the environment variables are not set
7
+ if (
8
+ !process.env.CLIENT_ID ||
9
+ !process.env.CLIENT_SECRET ||
10
+ !process.env.TIN_VALUE ||
11
+ !process.env.NRIC_VALUE
12
+ ) {
13
+ expect
14
+ .soft(false, 'Skipping test: Missing required environment variables')
15
+ .toBe(true)
16
+ return
17
+ }
6
18
  const client = new MyInvoisClient(
7
19
  process.env.CLIENT_ID!,
8
20
  process.env.CLIENT_SECRET!,
@@ -122,12 +122,12 @@ describe('MyInvoisClient', () => {
122
122
  } as Response)
123
123
 
124
124
  // First call to get token
125
- await client.verifyTin(process.env.TIN_VALUE!, process.env.NRIC_VALUE!)
125
+ await client.verifyTin('123', '456')
126
126
 
127
- vi.advanceTimersByTime(10)
127
+ vi.setSystemTime(new Date(Date.now() + 1000))
128
128
 
129
129
  // Second call should reuse token
130
- await client.verifyTin(process.env.TIN_VALUE!, process.env.NRIC_VALUE!)
130
+ await client.verifyTin('123', '456')
131
131
 
132
132
  // Token endpoint should only be called once
133
133
  expect(mockFetch).toHaveBeenCalledWith(
@@ -182,10 +182,7 @@ describe('MyInvoisClient', () => {
182
182
  } as Response)
183
183
  .mockRejectedValueOnce(new Error('Invalid TIN'))
184
184
 
185
- const result = await client.verifyTin(
186
- process.env.TIN_VALUE!,
187
- process.env.NRIC_VALUE!,
188
- )
185
+ const result = await client.verifyTin('123', '456')
189
186
 
190
187
  expect(result).toBe(false)
191
188
  })
@@ -1,75 +0,0 @@
1
- "use strict";
2
-
3
- //#region src/utils/MyInvoisClient.ts
4
- var MyInvoisClient = class {
5
- baseUrl;
6
- clientId;
7
- clientSecret;
8
- debug;
9
- token = "";
10
- tokenExpiration;
11
- constructor(clientId, clientSecret, environment, debug = false) {
12
- this.clientId = clientId;
13
- this.clientSecret = clientSecret;
14
- this.debug = debug;
15
- if (environment === "sandbox") this.baseUrl = "https://preprod-api.myinvois.hasil.gov.my";
16
- else this.baseUrl = "https://api.myinvois.hasil.gov.my";
17
- }
18
- async refreshToken() {
19
- try {
20
- const response = await fetch(`${this.baseUrl}/connect/token`, {
21
- method: "POST",
22
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
23
- body: new URLSearchParams({
24
- grant_type: "client_credentials",
25
- client_id: this.clientId,
26
- client_secret: this.clientSecret,
27
- scope: "InvoicingAPI"
28
- })
29
- });
30
- const tokenResponse = await response.json();
31
- this.token = tokenResponse.access_token;
32
- this.tokenExpiration = new Date(Date.now() + tokenResponse.expires_in * 1e3);
33
- } catch (error) {
34
- if (this.debug) console.error(error);
35
- }
36
- }
37
- async getToken() {
38
- if (!this.tokenExpiration || this.tokenExpiration < new Date()) {
39
- if (this.debug) console.log("Refreshing token");
40
- await this.refreshToken();
41
- }
42
- return this.token;
43
- }
44
- async fetch(path, options = {}) {
45
- const token = await this.getToken();
46
- return fetch(`${this.baseUrl}${path}`, {
47
- ...options,
48
- headers: {
49
- ...options.headers,
50
- Authorization: `Bearer ${token}`
51
- }
52
- });
53
- }
54
- /**
55
- * Validates a TIN against a NRIC
56
- *
57
- * @param tin
58
- * @param nric
59
- * @returns
60
- */
61
- async verifyTin(tin, nric) {
62
- try {
63
- const response = await this.fetch(`/api/v1.0/taxpayer/validate/${tin}?idType=NRIC&idValue=${nric}`, { method: "GET" });
64
- if (response.status === 200) return true;
65
- return false;
66
- } catch (error) {
67
- if (this.debug) console.error(error);
68
- return false;
69
- }
70
- }
71
- };
72
-
73
- //#endregion
74
- exports.MyInvoisClient = MyInvoisClient
75
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["clientId: string","clientSecret: string","environment: 'sandbox' | 'production'","debug: boolean","tokenResponse: TokenResponse","path: string","options: Parameters<typeof fetch>[1]","tin: string","nric: string"],"sources":["../../src/utils/MyInvoisClient.ts"],"sourcesContent":["interface TokenResponse {\n access_token: string\n expires_in: number\n}\n\nexport class MyInvoisClient {\n private readonly baseUrl: string\n private readonly clientId: string\n private readonly clientSecret: string\n private readonly debug: boolean\n private token = ''\n private tokenExpiration: Date | undefined\n\n constructor(\n clientId: string,\n clientSecret: string,\n environment: 'sandbox' | 'production',\n debug: boolean = false,\n ) {\n this.clientId = clientId\n this.clientSecret = clientSecret\n this.debug = debug\n if (environment === 'sandbox') {\n this.baseUrl = 'https://preprod-api.myinvois.hasil.gov.my'\n } else {\n this.baseUrl = 'https://api.myinvois.hasil.gov.my'\n }\n }\n\n private async refreshToken() {\n try {\n const response = await fetch(`${this.baseUrl}/connect/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: this.clientId,\n client_secret: this.clientSecret,\n scope: 'InvoicingAPI',\n }),\n })\n\n const tokenResponse: TokenResponse = await response.json()\n\n this.token = tokenResponse.access_token\n this.tokenExpiration = new Date(\n Date.now() + tokenResponse.expires_in * 1000,\n )\n } catch (error) {\n if (this.debug) {\n console.error(error)\n }\n }\n }\n\n private async getToken() {\n if (!this.tokenExpiration || this.tokenExpiration < new Date()) {\n if (this.debug) {\n console.log('Refreshing token')\n }\n await this.refreshToken()\n }\n\n return this.token\n }\n\n private async fetch(path: string, options: Parameters<typeof fetch>[1] = {}) {\n const token = await this.getToken()\n\n return fetch(`${this.baseUrl}${path}`, {\n ...options,\n headers: { ...options.headers, Authorization: `Bearer ${token}` },\n })\n }\n\n /**\n * Validates a TIN against a NRIC\n *\n * @param tin\n * @param nric\n * @returns\n */\n async verifyTin(tin: string, nric: string) {\n try {\n const response = await this.fetch(\n `/api/v1.0/taxpayer/validate/${tin}?idType=NRIC&idValue=${nric}`,\n {\n method: 'GET',\n },\n )\n\n if (response.status === 200) {\n return true\n }\n\n return false\n } catch (error) {\n if (this.debug) {\n console.error(error)\n }\n return false\n }\n }\n}\n"],"mappings":";;;IAKa,iBAAN,MAAqB;CAC1B,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAQ,QAAQ;CAChB,AAAQ;CAER,YACEA,UACAC,cACAC,aACAC,QAAiB,OACjB;AACA,OAAK,WAAW;AAChB,OAAK,eAAe;AACpB,OAAK,QAAQ;AACb,MAAI,gBAAgB,UAClB,MAAK,UAAU;MAEf,MAAK,UAAU;CAElB;CAED,MAAc,eAAe;AAC3B,MAAI;GACF,MAAM,WAAW,MAAM,OAAO,EAAE,KAAK,QAAQ,iBAAiB;IAC5D,QAAQ;IACR,SAAS,EACP,gBAAgB,oCACjB;IACD,MAAM,IAAI,gBAAgB;KACxB,YAAY;KACZ,WAAW,KAAK;KAChB,eAAe,KAAK;KACpB,OAAO;IACR;GACF,EAAC;GAEF,MAAMC,gBAA+B,MAAM,SAAS,MAAM;AAE1D,QAAK,QAAQ,cAAc;AAC3B,QAAK,kBAAkB,IAAI,KACzB,KAAK,KAAK,GAAG,cAAc,aAAa;EAE3C,SAAQ,OAAO;AACd,OAAI,KAAK,MACP,SAAQ,MAAM,MAAM;EAEvB;CACF;CAED,MAAc,WAAW;AACvB,OAAK,KAAK,mBAAmB,KAAK,kBAAkB,IAAI,QAAQ;AAC9D,OAAI,KAAK,MACP,SAAQ,IAAI,mBAAmB;AAEjC,SAAM,KAAK,cAAc;EAC1B;AAED,SAAO,KAAK;CACb;CAED,MAAc,MAAMC,MAAcC,UAAuC,CAAE,GAAE;EAC3E,MAAM,QAAQ,MAAM,KAAK,UAAU;AAEnC,SAAO,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG;GACrC,GAAG;GACH,SAAS;IAAE,GAAG,QAAQ;IAAS,gBAAgB,SAAS,MAAM;GAAG;EAClE,EAAC;CACH;;;;;;;;CASD,MAAM,UAAUC,KAAaC,MAAc;AACzC,MAAI;GACF,MAAM,WAAW,MAAM,KAAK,OACzB,8BAA8B,IAAI,uBAAuB,KAAK,GAC/D,EACE,QAAQ,MACT,EACF;AAED,OAAI,SAAS,WAAW,IACtB,QAAO;AAGT,UAAO;EACR,SAAQ,OAAO;AACd,OAAI,KAAK,MACP,SAAQ,MAAM,MAAM;AAEtB,UAAO;EACR;CACF;AACF"}
@@ -1,182 +0,0 @@
1
- "use strict";
2
- const require_node = require('./node-qs2pnN6F.cjs');
3
- const node_http = require_node.__toESM(require("node:http"));
4
- const node_https = require_node.__toESM(require("node:https"));
5
- const node_zlib = require_node.__toESM(require("node:zlib"));
6
- const node_stream = require_node.__toESM(require("node:stream"));
7
- const node_buffer = require_node.__toESM(require("node:buffer"));
8
- const node_util = require_node.__toESM(require("node:util"));
9
- const node_url = require_node.__toESM(require("node:url"));
10
- const node_net = require_node.__toESM(require("node:net"));
11
- const node_fs = require_node.__toESM(require("node:fs"));
12
- const node_path = require_node.__toESM(require("node:path"));
13
-
14
- //#region node_modules/node-fetch-native/dist/chunks/multipart-parser.mjs
15
- var U = Object.defineProperty;
16
- var E = (_, o) => U(_, "name", {
17
- value: o,
18
- configurable: !0
19
- });
20
- let D = 0;
21
- const t = {
22
- START_BOUNDARY: D++,
23
- HEADER_FIELD_START: D++,
24
- HEADER_FIELD: D++,
25
- HEADER_VALUE_START: D++,
26
- HEADER_VALUE: D++,
27
- HEADER_VALUE_ALMOST_DONE: D++,
28
- HEADERS_ALMOST_DONE: D++,
29
- PART_DATA_START: D++,
30
- PART_DATA: D++,
31
- END: D++
32
- };
33
- let F = 1;
34
- const u = {
35
- PART_BOUNDARY: F,
36
- LAST_BOUNDARY: F *= 2
37
- }, g = 10, N = 13, V = 32, S = 45, Y = 58, x = 97, C = 122, I = E((_) => _ | 32, "lower"), p = E(() => {}, "noop");
38
- var M = class {
39
- static {
40
- E(this, "MultipartParser");
41
- }
42
- constructor(o) {
43
- this.index = 0, this.flags = 0, this.onHeaderEnd = p, this.onHeaderField = p, this.onHeadersEnd = p, this.onHeaderValue = p, this.onPartBegin = p, this.onPartData = p, this.onPartEnd = p, this.boundaryChars = {}, o = `\r
44
- --` + o;
45
- const n = new Uint8Array(o.length);
46
- for (let r = 0; r < o.length; r++) n[r] = o.charCodeAt(r), this.boundaryChars[n[r]] = !0;
47
- this.boundary = n, this.lookbehind = new Uint8Array(this.boundary.length + 8), this.state = t.START_BOUNDARY;
48
- }
49
- write(o) {
50
- let n = 0;
51
- const r = o.length;
52
- let d = this.index, { lookbehind: l, boundary: c, boundaryChars: m, index: e, state: i, flags: A } = this;
53
- const H = this.boundary.length, O = H - 1, y = o.length;
54
- let a, L;
55
- const f = E((h) => {
56
- this[h + "Mark"] = n;
57
- }, "mark"), s = E((h) => {
58
- delete this[h + "Mark"];
59
- }, "clear"), T = E((h, P, R, k) => {
60
- (P === void 0 || P !== R) && this[h](k && k.subarray(P, R));
61
- }, "callback"), b = E((h, P) => {
62
- const R = h + "Mark";
63
- R in this && (P ? (T(h, this[R], n, o), delete this[R]) : (T(h, this[R], o.length, o), this[R] = 0));
64
- }, "dataCallback");
65
- for (n = 0; n < r; n++) switch (a = o[n], i) {
66
- case t.START_BOUNDARY:
67
- if (e === c.length - 2) {
68
- if (a === S) A |= u.LAST_BOUNDARY;
69
- else if (a !== N) return;
70
- e++;
71
- break;
72
- } else if (e - 1 === c.length - 2) {
73
- if (A & u.LAST_BOUNDARY && a === S) i = t.END, A = 0;
74
- else if (!(A & u.LAST_BOUNDARY) && a === g) e = 0, T("onPartBegin"), i = t.HEADER_FIELD_START;
75
- else return;
76
- break;
77
- }
78
- a !== c[e + 2] && (e = -2), a === c[e + 2] && e++;
79
- break;
80
- case t.HEADER_FIELD_START: i = t.HEADER_FIELD, f("onHeaderField"), e = 0;
81
- case t.HEADER_FIELD:
82
- if (a === N) {
83
- s("onHeaderField"), i = t.HEADERS_ALMOST_DONE;
84
- break;
85
- }
86
- if (e++, a === S) break;
87
- if (a === Y) {
88
- if (e === 1) return;
89
- b("onHeaderField", !0), i = t.HEADER_VALUE_START;
90
- break;
91
- }
92
- if (L = I(a), L < x || L > C) return;
93
- break;
94
- case t.HEADER_VALUE_START:
95
- if (a === V) break;
96
- f("onHeaderValue"), i = t.HEADER_VALUE;
97
- case t.HEADER_VALUE:
98
- a === N && (b("onHeaderValue", !0), T("onHeaderEnd"), i = t.HEADER_VALUE_ALMOST_DONE);
99
- break;
100
- case t.HEADER_VALUE_ALMOST_DONE:
101
- if (a !== g) return;
102
- i = t.HEADER_FIELD_START;
103
- break;
104
- case t.HEADERS_ALMOST_DONE:
105
- if (a !== g) return;
106
- T("onHeadersEnd"), i = t.PART_DATA_START;
107
- break;
108
- case t.PART_DATA_START: i = t.PART_DATA, f("onPartData");
109
- case t.PART_DATA:
110
- if (d = e, e === 0) {
111
- for (n += O; n < y && !(o[n] in m);) n += H;
112
- n -= O, a = o[n];
113
- }
114
- if (e < c.length) c[e] === a ? (e === 0 && b("onPartData", !0), e++) : e = 0;
115
- else if (e === c.length) e++, a === N ? A |= u.PART_BOUNDARY : a === S ? A |= u.LAST_BOUNDARY : e = 0;
116
- else if (e - 1 === c.length) if (A & u.PART_BOUNDARY) {
117
- if (e = 0, a === g) {
118
- A &= ~u.PART_BOUNDARY, T("onPartEnd"), T("onPartBegin"), i = t.HEADER_FIELD_START;
119
- break;
120
- }
121
- } else A & u.LAST_BOUNDARY && a === S ? (T("onPartEnd"), i = t.END, A = 0) : e = 0;
122
- if (e > 0) l[e - 1] = a;
123
- else if (d > 0) {
124
- const h = new Uint8Array(l.buffer, l.byteOffset, l.byteLength);
125
- T("onPartData", 0, d, h), d = 0, f("onPartData"), n--;
126
- }
127
- break;
128
- case t.END: break;
129
- default: throw new Error(`Unexpected state entered: ${i}`);
130
- }
131
- b("onHeaderField"), b("onHeaderValue"), b("onPartData"), this.index = e, this.state = i, this.flags = A;
132
- }
133
- end() {
134
- if (this.state === t.HEADER_FIELD_START && this.index === 0 || this.state === t.PART_DATA && this.index === this.boundary.length) this.onPartEnd();
135
- else if (this.state !== t.END) throw new Error("MultipartParser.end(): stream ended unexpectedly");
136
- }
137
- };
138
- function $(_) {
139
- const o = _.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
140
- if (!o) return;
141
- const n = o[2] || o[3] || "";
142
- let r = n.slice(n.lastIndexOf("\\") + 1);
143
- return r = r.replace(/%22/g, "\""), r = r.replace(/&#(\d{4});/g, (d, l) => String.fromCharCode(l)), r;
144
- }
145
- E($, "_fileName");
146
- async function v(_, o) {
147
- if (!/multipart/i.test(o)) throw new TypeError("Failed to fetch");
148
- const n = o.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
149
- if (!n) throw new TypeError("no or bad content-type header, no multipart boundary");
150
- const r = new M(n[1] || n[2]);
151
- let d, l, c, m, e, i;
152
- const A = [], H = new require_node.Zt(), O = E((s) => {
153
- c += f.decode(s, { stream: !0 });
154
- }, "onPartData"), y = E((s) => {
155
- A.push(s);
156
- }, "appendToFile"), a = E(() => {
157
- const s = new require_node.Yr(A, i, { type: e });
158
- H.append(m, s);
159
- }, "appendFileToFormData"), L = E(() => {
160
- H.append(m, c);
161
- }, "appendEntryToFormData"), f = new TextDecoder("utf-8");
162
- f.decode(), r.onPartBegin = function() {
163
- r.onPartData = O, r.onPartEnd = L, d = "", l = "", c = "", m = "", e = "", i = null, A.length = 0;
164
- }, r.onHeaderField = function(s) {
165
- d += f.decode(s, { stream: !0 });
166
- }, r.onHeaderValue = function(s) {
167
- l += f.decode(s, { stream: !0 });
168
- }, r.onHeaderEnd = function() {
169
- if (l += f.decode(), d = d.toLowerCase(), d === "content-disposition") {
170
- const s = l.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
171
- s && (m = s[2] || s[3] || ""), i = $(l), i && (r.onPartData = y, r.onPartEnd = a);
172
- } else d === "content-type" && (e = l);
173
- l = "", d = "";
174
- };
175
- for await (const s of _) r.write(s);
176
- return r.end(), H;
177
- }
178
- E(v, "toFormData");
179
-
180
- //#endregion
181
- exports.toFormData = v
182
- //# sourceMappingURL=multipart-parser-Bu3ikqFQ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multipart-parser-Bu3ikqFQ.cjs","names":["w","B"],"sources":["../../node_modules/node-fetch-native/dist/chunks/multipart-parser.mjs"],"sourcesContent":["var U=Object.defineProperty;var E=(_,o)=>U(_,\"name\",{value:o,configurable:!0});import\"node:fs\";import\"node:path\";import{FormData as w,File as B}from\"../node.mjs\";import\"node:http\";import\"node:https\";import\"node:zlib\";import\"node:stream\";import\"node:buffer\";import\"node:util\";import\"../shared/node-fetch-native.DfbY2q-x.mjs\";import\"node:url\";import\"node:net\";let D=0;const t={START_BOUNDARY:D++,HEADER_FIELD_START:D++,HEADER_FIELD:D++,HEADER_VALUE_START:D++,HEADER_VALUE:D++,HEADER_VALUE_ALMOST_DONE:D++,HEADERS_ALMOST_DONE:D++,PART_DATA_START:D++,PART_DATA:D++,END:D++};let F=1;const u={PART_BOUNDARY:F,LAST_BOUNDARY:F*=2},g=10,N=13,V=32,S=45,Y=58,x=97,C=122,I=E(_=>_|32,\"lower\"),p=E(()=>{},\"noop\");class M{static{E(this,\"MultipartParser\")}constructor(o){this.index=0,this.flags=0,this.onHeaderEnd=p,this.onHeaderField=p,this.onHeadersEnd=p,this.onHeaderValue=p,this.onPartBegin=p,this.onPartData=p,this.onPartEnd=p,this.boundaryChars={},o=`\\r\n--`+o;const n=new Uint8Array(o.length);for(let r=0;r<o.length;r++)n[r]=o.charCodeAt(r),this.boundaryChars[n[r]]=!0;this.boundary=n,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=t.START_BOUNDARY}write(o){let n=0;const r=o.length;let d=this.index,{lookbehind:l,boundary:c,boundaryChars:m,index:e,state:i,flags:A}=this;const H=this.boundary.length,O=H-1,y=o.length;let a,L;const f=E(h=>{this[h+\"Mark\"]=n},\"mark\"),s=E(h=>{delete this[h+\"Mark\"]},\"clear\"),T=E((h,P,R,k)=>{(P===void 0||P!==R)&&this[h](k&&k.subarray(P,R))},\"callback\"),b=E((h,P)=>{const R=h+\"Mark\";R in this&&(P?(T(h,this[R],n,o),delete this[R]):(T(h,this[R],o.length,o),this[R]=0))},\"dataCallback\");for(n=0;n<r;n++)switch(a=o[n],i){case t.START_BOUNDARY:if(e===c.length-2){if(a===S)A|=u.LAST_BOUNDARY;else if(a!==N)return;e++;break}else if(e-1===c.length-2){if(A&u.LAST_BOUNDARY&&a===S)i=t.END,A=0;else if(!(A&u.LAST_BOUNDARY)&&a===g)e=0,T(\"onPartBegin\"),i=t.HEADER_FIELD_START;else return;break}a!==c[e+2]&&(e=-2),a===c[e+2]&&e++;break;case t.HEADER_FIELD_START:i=t.HEADER_FIELD,f(\"onHeaderField\"),e=0;case t.HEADER_FIELD:if(a===N){s(\"onHeaderField\"),i=t.HEADERS_ALMOST_DONE;break}if(e++,a===S)break;if(a===Y){if(e===1)return;b(\"onHeaderField\",!0),i=t.HEADER_VALUE_START;break}if(L=I(a),L<x||L>C)return;break;case t.HEADER_VALUE_START:if(a===V)break;f(\"onHeaderValue\"),i=t.HEADER_VALUE;case t.HEADER_VALUE:a===N&&(b(\"onHeaderValue\",!0),T(\"onHeaderEnd\"),i=t.HEADER_VALUE_ALMOST_DONE);break;case t.HEADER_VALUE_ALMOST_DONE:if(a!==g)return;i=t.HEADER_FIELD_START;break;case t.HEADERS_ALMOST_DONE:if(a!==g)return;T(\"onHeadersEnd\"),i=t.PART_DATA_START;break;case t.PART_DATA_START:i=t.PART_DATA,f(\"onPartData\");case t.PART_DATA:if(d=e,e===0){for(n+=O;n<y&&!(o[n]in m);)n+=H;n-=O,a=o[n]}if(e<c.length)c[e]===a?(e===0&&b(\"onPartData\",!0),e++):e=0;else if(e===c.length)e++,a===N?A|=u.PART_BOUNDARY:a===S?A|=u.LAST_BOUNDARY:e=0;else if(e-1===c.length)if(A&u.PART_BOUNDARY){if(e=0,a===g){A&=~u.PART_BOUNDARY,T(\"onPartEnd\"),T(\"onPartBegin\"),i=t.HEADER_FIELD_START;break}}else A&u.LAST_BOUNDARY&&a===S?(T(\"onPartEnd\"),i=t.END,A=0):e=0;if(e>0)l[e-1]=a;else if(d>0){const h=new Uint8Array(l.buffer,l.byteOffset,l.byteLength);T(\"onPartData\",0,d,h),d=0,f(\"onPartData\"),n--}break;case t.END:break;default:throw new Error(`Unexpected state entered: ${i}`)}b(\"onHeaderField\"),b(\"onHeaderValue\"),b(\"onPartData\"),this.index=e,this.state=i,this.flags=A}end(){if(this.state===t.HEADER_FIELD_START&&this.index===0||this.state===t.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==t.END)throw new Error(\"MultipartParser.end(): stream ended unexpectedly\")}}function $(_){const o=_.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);if(!o)return;const n=o[2]||o[3]||\"\";let r=n.slice(n.lastIndexOf(\"\\\\\")+1);return r=r.replace(/%22/g,'\"'),r=r.replace(/&#(\\d{4});/g,(d,l)=>String.fromCharCode(l)),r}E($,\"_fileName\");async function v(_,o){if(!/multipart/i.test(o))throw new TypeError(\"Failed to fetch\");const n=o.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);if(!n)throw new TypeError(\"no or bad content-type header, no multipart boundary\");const r=new M(n[1]||n[2]);let d,l,c,m,e,i;const A=[],H=new w,O=E(s=>{c+=f.decode(s,{stream:!0})},\"onPartData\"),y=E(s=>{A.push(s)},\"appendToFile\"),a=E(()=>{const s=new B(A,i,{type:e});H.append(m,s)},\"appendFileToFormData\"),L=E(()=>{H.append(m,c)},\"appendEntryToFormData\"),f=new TextDecoder(\"utf-8\");f.decode(),r.onPartBegin=function(){r.onPartData=O,r.onPartEnd=L,d=\"\",l=\"\",c=\"\",m=\"\",e=\"\",i=null,A.length=0},r.onHeaderField=function(s){d+=f.decode(s,{stream:!0})},r.onHeaderValue=function(s){l+=f.decode(s,{stream:!0})},r.onHeaderEnd=function(){if(l+=f.decode(),d=d.toLowerCase(),d===\"content-disposition\"){const s=l.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);s&&(m=s[2]||s[3]||\"\"),i=$(l),i&&(r.onPartData=y,r.onPartEnd=a)}else d===\"content-type\"&&(e=l);l=\"\",d=\"\"};for await(const s of _)r.write(s);return r.end(),H}E(v,\"toFormData\");export{v as toFormData};\n"],"x_google_ignoreList":[0],"mappings":"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"}