ethstorage-sdk
Version:
eip-4844 blobs upload sdk
1 lines • 3.74 kB
Source Map (JSON)
{"version":3,"sources":["../src/node/file.ts"],"sourcesContent":["import fs from 'fs';\n\nexport function assertArgument(\n check: boolean,\n message: string,\n name: string,\n value: unknown\n): asserts check {\n if (!check) {\n const error = new Error(message) as Error & { code?: string; argument?: string; value?: unknown };\n error.code = \"INVALID_ARGUMENT\";\n error.argument = name;\n error.value = value;\n throw error;\n }\n}\n\nexport class NodeFile {\n isNodeJs: boolean;\n\n filePath: string;\n type: string;\n size: number;\n start: number;\n end: number;\n\n constructor(filePath: string, start: number = 0, end: number = 0, type: string = '') {\n this.isNodeJs = true;\n this.filePath = filePath;\n this.type = type;\n\n assertArgument(fs.existsSync(filePath), \"invalid file path\", \"file\", filePath);\n const stat = fs.statSync(filePath);\n this.start = Math.min(start, stat.size - 1);\n this.end = end == 0 ? stat.size : Math.min(end, stat.size);\n this.size = this.end - this.start;\n assertArgument(this.size > 0, \"invalid file size\", \"file\", this.size);\n }\n\n slice(start: number, end: number): NodeFile {\n const newStart = this.start + start;\n const newEnd = newStart + (end - start);\n assertArgument(newStart < newEnd && newEnd <= this.end, \"invalid slice range\", \"file\", { start, end });\n return new NodeFile(this.filePath, newStart, newEnd, this.type);\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n const start = this.start;\n const end = this.end;\n const length = end - start;\n\n const arrayBuffer = new ArrayBuffer(length);\n const uint8Array = new Uint8Array(arrayBuffer);\n const fd = fs.openSync(this.filePath, 'r');\n fs.readSync(fd, uint8Array, 0, length, start);\n fs.closeSync(fd);\n return arrayBuffer;\n }\n\n async text(): Promise<string> {\n const buffer = await this.arrayBuffer();\n return new TextDecoder().decode(buffer);\n }\n\n stream(): fs.ReadStream {\n const start = this.start;\n const end = this.end;\n return fs.createReadStream(this.filePath, { start, end });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AAER,SAAS,eACZ,OACA,SACA,MACA,OACa;AACb,MAAI,CAAC,OAAO;AACR,UAAM,QAAQ,IAAI,MAAM,OAAO;AAC/B,UAAM,OAAO;AACb,UAAM,WAAW;AACjB,UAAM,QAAQ;AACd,UAAM;AAAA,EACV;AACJ;AAEO,IAAM,WAAN,MAAM,UAAS;AAAA,EASlB,YAAY,UAAkB,QAAgB,GAAG,MAAc,GAAG,OAAe,IAAI;AACjF,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,OAAO;AAEZ,mBAAe,UAAAA,QAAG,WAAW,QAAQ,GAAG,qBAAqB,QAAQ,QAAQ;AAC7E,UAAM,OAAO,UAAAA,QAAG,SAAS,QAAQ;AACjC,SAAK,QAAQ,KAAK,IAAI,OAAO,KAAK,OAAO,CAAC;AAC1C,SAAK,MAAM,OAAO,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI;AACzD,SAAK,OAAO,KAAK,MAAM,KAAK;AAC5B,mBAAe,KAAK,OAAO,GAAG,qBAAqB,QAAQ,KAAK,IAAI;AAAA,EACxE;AAAA,EAEA,MAAM,OAAe,KAAuB;AACxC,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,SAAS,YAAY,MAAM;AACjC,mBAAe,WAAW,UAAU,UAAU,KAAK,KAAK,uBAAuB,QAAQ,EAAE,OAAO,IAAI,CAAC;AACrG,WAAO,IAAI,UAAS,KAAK,UAAU,UAAU,QAAQ,KAAK,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,cAAoC;AACtC,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,KAAK;AACjB,UAAM,SAAS,MAAM;AAErB,UAAM,cAAc,IAAI,YAAY,MAAM;AAC1C,UAAM,aAAa,IAAI,WAAW,WAAW;AAC7C,UAAM,KAAK,UAAAA,QAAG,SAAS,KAAK,UAAU,GAAG;AACzC,cAAAA,QAAG,SAAS,IAAI,YAAY,GAAG,QAAQ,KAAK;AAC5C,cAAAA,QAAG,UAAU,EAAE;AACf,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAwB;AAC1B,UAAM,SAAS,MAAM,KAAK,YAAY;AACtC,WAAO,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,EAC1C;AAAA,EAEA,SAAwB;AACpB,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,KAAK;AACjB,WAAO,UAAAA,QAAG,iBAAiB,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,EAC5D;AACJ;","names":["fs"]}