diff --git a/std/mime/multipart.ts b/std/mime/multipart.ts index 26860e3de5..d88ff3d136 100644 --- a/std/mime/multipart.ts +++ b/std/mime/multipart.ts @@ -8,13 +8,35 @@ type Writer = Deno.Writer; import { equal, findIndex, findLastIndex, hasPrefix } from "../bytes/mod.ts"; import { copyN } from "../io/ioutil.ts"; import { MultiReader } from "../io/readers.ts"; -import { FormFile } from "../multipart/formfile.ts"; import { extname } from "../path/mod.ts"; import { tempFile } from "../io/util.ts"; import { BufReader, BufWriter, UnexpectedEOFError } from "../io/bufio.ts"; import { encoder } from "../strings/mod.ts"; import { assertStrictEq } from "../testing/asserts.ts"; import { TextProtoReader } from "../textproto/mod.ts"; +import { hasOwnProperty } from "../util/has_own_property.ts"; + +/** FormFile object */ +export interface FormFile { + /** filename */ + filename: string; + /** content-type header value of file */ + type: string; + /** byte size of file */ + size: number; + /** in-memory content of file. Either content or tempfile is set */ + content?: Uint8Array; + /** temporal file path. + * Set if file size is bigger than specified max-memory size at reading form + * */ + tempfile?: string; +} + +/** Type guard for FormFile */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function isFormFile(x: any): x is FormFile { + return hasOwnProperty(x, "filename") && hasOwnProperty(x, "type"); +} function randomBoundary(): string { let boundary = "--------------------------"; diff --git a/std/mime/multipart_test.ts b/std/mime/multipart_test.ts index 4658ce9767..869932fbf8 100644 --- a/std/mime/multipart_test.ts +++ b/std/mime/multipart_test.ts @@ -10,12 +10,13 @@ import { import { test, runIfMain } from "../testing/mod.ts"; import * as path from "../path/mod.ts"; import { - matchAfterPrefix, + FormFile, MultipartReader, MultipartWriter, + isFormFile, + matchAfterPrefix, scanUntilBoundary } from "./multipart.ts"; -import { FormFile, isFormFile } from "../multipart/formfile.ts"; import { StringWriter } from "../io/writers.ts"; const e = new TextEncoder(); @@ -94,7 +95,7 @@ test(async function multipartMultipartWriter(): Promise { const mw = new MultipartWriter(buf); await mw.writeField("foo", "foo"); await mw.writeField("bar", "bar"); - const f = await open(path.resolve("./multipart/fixtures/sample.txt"), "r"); + const f = await open(path.resolve("./mime/testdata/sample.txt"), "r"); await mw.writeFile("file", "sample.txt", f); await mw.close(); }); @@ -173,7 +174,7 @@ test(async function multipartMultipartWriter3(): Promise { test(async function multipartMultipartReader(): Promise { // FIXME: path resolution - const o = await open(path.resolve("./multipart/fixtures/sample.txt")); + const o = await open(path.resolve("./mime/testdata/sample.txt")); const mr = new MultipartReader( o, "--------------------------434049563556637648550474" @@ -187,7 +188,7 @@ test(async function multipartMultipartReader(): Promise { }); test(async function multipartMultipartReader2(): Promise { - const o = await open(path.resolve("./multipart/fixtures/sample.txt")); + const o = await open(path.resolve("./mime/testdata/sample.txt")); const mr = new MultipartReader( o, "--------------------------434049563556637648550474" diff --git a/std/multipart/fixtures/sample.txt b/std/mime/testdata/sample.txt similarity index 100% rename from std/multipart/fixtures/sample.txt rename to std/mime/testdata/sample.txt diff --git a/std/multipart/formfile.ts b/std/multipart/formfile.ts deleted file mode 100644 index 0f7a3eb15a..0000000000 --- a/std/multipart/formfile.ts +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { hasOwnProperty } from "../util/has_own_property.ts"; - -/** FormFile object */ -export interface FormFile { - /** filename */ - filename: string; - /** content-type header value of file */ - type: string; - /** byte size of file */ - size: number; - /** in-memory content of file. Either content or tempfile is set */ - content?: Uint8Array; - /** temporal file path. - * Set if file size is bigger than specified max-memory size at reading form - * */ - tempfile?: string; -} - -/** Type guard for FormFile */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function isFormFile(x: any): x is FormFile { - return hasOwnProperty(x, "filename") && hasOwnProperty(x, "type"); -} diff --git a/std/multipart/formfile_test.ts b/std/multipart/formfile_test.ts deleted file mode 100644 index cc46168fb2..0000000000 --- a/std/multipart/formfile_test.ts +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { test } from "../testing/mod.ts"; -import { assertEquals } from "../testing/asserts.ts"; -import { isFormFile } from "./formfile.ts"; - -test(function multipartIsFormFile(): void { - assertEquals( - isFormFile({ - filename: "foo", - type: "application/json" - }), - true - ); - assertEquals( - isFormFile({ - filename: "foo" - }), - false - ); -}); - -test(function isFormFileShouldNotThrow(): void { - assertEquals( - isFormFile({ - filename: "foo", - type: "application/json", - hasOwnProperty: "bar" - }), - true - ); - assertEquals(isFormFile(Object.create(null)), false); -}); diff --git a/std/multipart/mod.ts b/std/multipart/mod.ts deleted file mode 100644 index 8e8a665a9b..0000000000 --- a/std/multipart/mod.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./formfile.ts";