summaryrefslogtreecommitdiff
path: root/tests/specs/npm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs/npm')
-rw-r--r--tests/specs/npm/esm_import_cjs_default/__test__.jsonc4
-rw-r--r--tests/specs/npm/esm_import_cjs_default/main.out58
-rw-r--r--tests/specs/npm/esm_import_cjs_default/main.ts23
-rw-r--r--tests/specs/npm/no_types_cjs/__test__.jsonc4
-rw-r--r--tests/specs/npm/no_types_cjs/main.out3
-rw-r--r--tests/specs/npm/no_types_cjs/main.ts7
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc4
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/main.out4
-rw-r--r--tests/specs/npm/no_types_in_conditional_exports/main.ts2
-rw-r--r--tests/specs/npm/types_general/__test__.jsonc5
-rw-r--r--tests/specs/npm/types_general/main.out80
-rw-r--r--tests/specs/npm/types_general/main.ts27
12 files changed, 221 insertions, 0 deletions
diff --git a/tests/specs/npm/esm_import_cjs_default/__test__.jsonc b/tests/specs/npm/esm_import_cjs_default/__test__.jsonc
new file mode 100644
index 000000000..b2a25914f
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read --allow-env --check=all main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/esm_import_cjs_default/main.out b/tests/specs/npm/esm_import_cjs_default/main.out
new file mode 100644
index 000000000..ec7962e5a
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/main.out
@@ -0,0 +1,58 @@
+[UNORDERED_START]
+Download http://localhost:4260/@denotest/esm-import-cjs-default
+Download http://localhost:4260/@denotest/cjs-default-export
+Download http://localhost:4260/@denotest/cjs-default-export/1.0.0.tgz
+Download http://localhost:4260/@denotest/esm-import-cjs-default/1.0.0.tgz
+[UNORDERED_END]
+Check file:///[WILDLINE]/main.ts
+Node esm importing node cjs
+===========================
+{
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+}
+{ default: [Function (anonymous)], named: [Function (anonymous)] }
+[Module: null prototype] {
+ MyClass: [class MyClass],
+ __esModule: true,
+ default: {
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+ },
+ named: [Function (anonymous)]
+}
+[Module: null prototype] {
+ __esModule: true,
+ default: { default: [Function (anonymous)], named: [Function (anonymous)] },
+ named: [Function (anonymous)]
+}
+===========================
+static method
+Deno esm importing node cjs
+===========================
+{
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+}
+[Module: null prototype] {
+ MyClass: [class MyClass],
+ __esModule: true,
+ default: {
+ default: [Function (anonymous)],
+ named: [Function (anonymous)],
+ MyClass: [class MyClass]
+ },
+ named: [Function (anonymous)]
+}
+===========================
+Deno esm importing node esm
+===========================
+[Function: default]
+[Module: null prototype] { default: [Function: default] }
+===========================
+1
+5
+static method
diff --git a/tests/specs/npm/esm_import_cjs_default/main.ts b/tests/specs/npm/esm_import_cjs_default/main.ts
new file mode 100644
index 000000000..f9c3280e5
--- /dev/null
+++ b/tests/specs/npm/esm_import_cjs_default/main.ts
@@ -0,0 +1,23 @@
+// @ts-check
+import cjsDefault, {
+ MyClass as MyCjsClass,
+} from "npm:@denotest/cjs-default-export";
+import * as cjsNamespace from "npm:@denotest/cjs-default-export";
+import esmDefault from "npm:@denotest/esm-import-cjs-default";
+import * as esmNamespace from "npm:@denotest/esm-import-cjs-default";
+
+console.log("Deno esm importing node cjs");
+console.log("===========================");
+console.log(cjsDefault);
+console.log(cjsNamespace);
+console.log("===========================");
+
+console.log("Deno esm importing node esm");
+console.log("===========================");
+console.log(esmDefault);
+console.log(esmNamespace);
+console.log("===========================");
+
+console.log(cjsDefault.default());
+console.log(esmDefault());
+console.log(MyCjsClass.someStaticMethod());
diff --git a/tests/specs/npm/no_types_cjs/__test__.jsonc b/tests/specs/npm/no_types_cjs/__test__.jsonc
new file mode 100644
index 000000000..de0339cfb
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "check main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/no_types_cjs/main.out b/tests/specs/npm/no_types_cjs/main.out
new file mode 100644
index 000000000..4747a9a32
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/main.out
@@ -0,0 +1,3 @@
+Download http://localhost:4260/@denotest/no-types-cjs
+Download http://localhost:4260/@denotest/no-types-cjs/1.0.0.tgz
+Check file:///[WILDLINE]/no_types_cjs/main.ts
diff --git a/tests/specs/npm/no_types_cjs/main.ts b/tests/specs/npm/no_types_cjs/main.ts
new file mode 100644
index 000000000..32458e839
--- /dev/null
+++ b/tests/specs/npm/no_types_cjs/main.ts
@@ -0,0 +1,7 @@
+import mod from "npm:@denotest/no-types-cjs";
+
+// it actually returns a `number` and has that in its
+// jsdocs, but the jsdocs should not have been resolved so
+// this should type check just fine
+const value: string = mod();
+console.log(value);
diff --git a/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc b/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc
new file mode 100644
index 000000000..8955fcda2
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --check main.ts",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/no_types_in_conditional_exports/main.out b/tests/specs/npm/no_types_in_conditional_exports/main.out
new file mode 100644
index 000000000..46c583234
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/main.out
@@ -0,0 +1,4 @@
+Download http://localhost:4260/@denotest/no-types-in-conditional-exports
+Download http://localhost:4260/@denotest/no-types-in-conditional-exports/1.0.0.tgz
+Check [WILDCARD]npm/no_types_in_conditional_exports/main.ts
+{ foo: "bar" }
diff --git a/tests/specs/npm/no_types_in_conditional_exports/main.ts b/tests/specs/npm/no_types_in_conditional_exports/main.ts
new file mode 100644
index 000000000..7ec2f18fd
--- /dev/null
+++ b/tests/specs/npm/no_types_in_conditional_exports/main.ts
@@ -0,0 +1,2 @@
+import foo from "npm:@denotest/no-types-in-conditional-exports@1.0.0";
+console.log(foo);
diff --git a/tests/specs/npm/types_general/__test__.jsonc b/tests/specs/npm/types_general/__test__.jsonc
new file mode 100644
index 000000000..a991c6eed
--- /dev/null
+++ b/tests/specs/npm/types_general/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "check main.ts",
+ "output": "main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/npm/types_general/main.out b/tests/specs/npm/types_general/main.out
new file mode 100644
index 000000000..ffba4f84d
--- /dev/null
+++ b/tests/specs/npm/types_general/main.out
@@ -0,0 +1,80 @@
+[UNORDERED_START]
+Download http://localhost:4260/@denotest/types
+Download http://localhost:4260/@denotest/types_imported
+Download http://localhost:4260/@denotest/types-exports-subpaths
+Download http://localhost:4260/@denotest/types_imported/1.0.0.tgz
+Download http://localhost:4260/@denotest/types-exports-subpaths/1.0.0.tgz
+Download http://localhost:4260/@denotest/types/1.0.0.tgz
+[UNORDERED_END]
+Check file:///[WILDLINE]/main.ts
+error: TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ bar: 1,
+ ~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'bar' which is declared here on type 'Foobar'
+ bar: string;
+ ~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/subpath.d.ts:3:5
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ prop: 1,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'prop' which is declared here on type 'SomeInterface'
+ prop: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/index.d.ts:2:5
+
+TS2322 [ERROR]: Type 'string' is not assignable to type 'number'.
+ prop2: "asdf",
+ ~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'prop2' which is declared here on type 'SomeInterface'
+ prop2: number;
+ ~~~~~
+ at [WILDCARD]/@denotest/types_imported/1.0.0/index.d.ts:3:5
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ fizz: 1,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'fizz' which is declared here on type 'Fizzbuzz'
+ fizz: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types/1.0.0/index.d.ts:2:3
+
+TS2322 [ERROR]: Type 'number' is not assignable to type 'string'.
+ buzz: 2,
+ ~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+ The expected type comes from property 'buzz' which is declared here on type 'Fizzbuzz'
+ buzz: string;
+ ~~~~
+ at [WILDCARD]/@denotest/types/1.0.0/index.d.ts:3:3
+
+TS2322 [ERROR]: Type '5' is not assignable to type '"test1"'.
+const valueA: "test1" = getClient();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '"import"' is not assignable to type '"test2"'.
+const valueB: "test2" = entryImport();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '12' is not assignable to type '"test3"'.
+const valueC: "test3" = entryA();
+ ~~~~~~
+ at [WILDCARD]/main.ts:[WILDCARD]
+
+TS2322 [ERROR]: Type '"types"' is not assignable to type '"test4"'.
+const valueD: "test4" = entryTypes();
+ ~~~~~~
+ at file:///[WILDCARD]/main.ts:[WILDCARD]
+
+Found 9 errors.
diff --git a/tests/specs/npm/types_general/main.ts b/tests/specs/npm/types_general/main.ts
new file mode 100644
index 000000000..ae420f6d6
--- /dev/null
+++ b/tests/specs/npm/types_general/main.ts
@@ -0,0 +1,27 @@
+import type { Fizzbuzz } from "npm:@denotest/types";
+import type { SomeInterface } from "npm:@denotest/types_imported";
+import type { Foobar as FooInterface } from "npm:@denotest/types_imported/subpath";
+import { getClient } from "npm:@denotest/types-exports-subpaths/client";
+import { entryImport } from "npm:@denotest/types-exports-subpaths/entry-import";
+import { entryA } from "npm:@denotest/types-exports-subpaths/entry-a";
+import { entryTypes } from "npm:@denotest/types-exports-subpaths/entry-types-last-no-declaration-before";
+
+const foobar: FooInterface = {
+ foo: "foo",
+ bar: 1,
+};
+
+const i: SomeInterface = {
+ prop: 1,
+ prop2: "asdf",
+};
+
+const fizzbuzz: Fizzbuzz = {
+ fizz: 1,
+ buzz: 2,
+};
+
+const valueA: "test1" = getClient();
+const valueB: "test2" = entryImport();
+const valueC: "test3" = entryA();
+const valueD: "test4" = entryTypes();