Skip to content

Commit

Permalink
fix: work around typescript false positive in Object.defineProperty
Browse files Browse the repository at this point in the history
  • Loading branch information
lubieowoce committed Feb 12, 2025
1 parent bd5d4a9 commit 88dcd1c
Show file tree
Hide file tree
Showing 28 changed files with 43 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2274,7 +2274,14 @@ fn create_var_declarator(ident: &Ident, extra_items: &mut Vec<ModuleItem>) {
fn assign_name_to_ident(ident: &Ident, name: &str, extra_items: &mut Vec<ModuleItem>) {
// Assign a name with `Object.defineProperty($$ACTION_0, 'name', {value: 'default'})`
extra_items.push(quote!(
"Object.defineProperty($action, \"name\", { value: $name, writable: false });"
// WORKAROUND for https://github.com/microsoft/TypeScript/issues/61165
// This should just be
//
// "Object.defineProperty($action, \"name\", { value: $name, writable: false });"
//
// but due to the above typescript bug, `Object.defineProperty` calls are typechecked incorrectly
// in js files, and it can cause false positives when typechecking our fixture files.
"Object[\"defineProperty\"]($action, \"name\", { value: $name, writable: false });"
as ModuleItem,
action: Ident = ident.clone(),
name: Expr = name.into(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export default /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_ACTION_0 = ()=>{};
var $$RSC_SERVER_ACTION_0;
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* __next_internal_action_entry_do_not_use__ {"00c18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export default /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ async function $$RSC_SERVER_ACTION_0() {}
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_ACTION_0 =
console.log(a, b);
};
var $$RSC_SERVER_ACTION_0;
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { validator } from 'auth';
export const /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ action = validator(async ()=>{});
export default /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_ACTION_0 = validator(async ()=>{});
var $$RSC_SERVER_ACTION_0;
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const v = 'world';
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function fn() {
return 'hello, ' + v;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fn",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function() {
return 'foo';
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
Expand All @@ -13,7 +13,7 @@ export { bar };
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_1 = $$cache__("default", "80951c375b4a6a6e89d67b743ec5808127cfde405d", 0, async function bar() {
return 'bar';
});
Object.defineProperty($$RSC_SERVER_CACHE_1, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_1, "name", {
value: "bar",
writable: false
});
Expand All @@ -25,15 +25,15 @@ const qux = async function qux() {
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_2 = $$cache__("default", "8069348c79fce073bae2f70f139565a2fda1c74c74", 0, async function baz() {
return qux() + 'baz';
});
Object.defineProperty($$RSC_SERVER_CACHE_2, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_2, "name", {
value: "baz",
writable: false
});
const baz = registerServerReference($$RSC_SERVER_CACHE_2, "8069348c79fce073bae2f70f139565a2fda1c74c74", null);
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_3 = $$cache__("default", "8012a8d21b6362b4cc8f5b15560525095bc48dba80", 0, async function() {
return 'quux';
});
Object.defineProperty($$RSC_SERVER_CACHE_3, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_3, "name", {
value: "quux",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function() {
return 'data';
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "my_fn",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,31 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function foo() {
return 'data A';
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
export var foo = registerServerReference($$RSC_SERVER_CACHE_0, "803128060c414d59f8552e4788b846c0d2b7f74743", null);
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_1 = $$cache__("default", "80951c375b4a6a6e89d67b743ec5808127cfde405d", 0, async function bar() {
return 'data B';
});
Object.defineProperty($$RSC_SERVER_CACHE_1, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_1, "name", {
value: "bar",
writable: false
});
export var bar = registerServerReference($$RSC_SERVER_CACHE_1, "80951c375b4a6a6e89d67b743ec5808127cfde405d", null);
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_2 = $$cache__("default", "c069348c79fce073bae2f70f139565a2fda1c74c74", 0, async function Cached({ children }) {
return children;
});
Object.defineProperty($$RSC_SERVER_CACHE_2, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_2, "name", {
value: "Cached",
writable: false
});
export default registerServerReference($$RSC_SERVER_CACHE_2, "c069348c79fce073bae2f70f139565a2fda1c74c74", null);
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_3 = $$cache__("default", "8012a8d21b6362b4cc8f5b15560525095bc48dba80", 0, async function baz() {
return 'data C';
});
Object.defineProperty($$RSC_SERVER_CACHE_3, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_3, "name", {
value: "baz",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function fn() {
return 'foo';
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fn",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("x", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function foo() {
return 'data';
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$ca
foo: $$ACTION_ARG_1
};
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fn",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$ca
}
];
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "cache",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_1 = $$ca
// @ts-expect-error: data is not a valid react child
return <div>{data}</div>;
});
Object.defineProperty($$RSC_SERVER_CACHE_1, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_1, "name", {
value: "Component",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$ca
foo: $$ACTION_ARG_1
};
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fn",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_1 = $$ca
r: children
};
});
Object.defineProperty($$RSC_SERVER_CACHE_1, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_1, "name", {
value: "getCachedRandom",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ function Foo() {
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function bar() {
return <Foo/>;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "bar",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export var $$RSC_SERVER_CACHE_0 = $$cache__("default", "e03128060c414d59f8552e47
b
];
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "f1",
writable: false
});
Expand All @@ -30,7 +30,7 @@ export var // Should be 1 111111 1, which is "ff" in hex.
rest
];
});
Object.defineProperty($$RSC_SERVER_CACHE_2, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_2, "name", {
value: "f3",
writable: false
});
Expand Down Expand Up @@ -70,7 +70,7 @@ export var // Should be 1 111111 1, which is "ff" in hex.
g
];
});
Object.defineProperty($$RSC_SERVER_CACHE_5, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_5, "name", {
value: "f6",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$ca
{b}
</div>;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "cache",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$ca
{c}
</div>;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
'use cache'

// FIXME: this produces incorrect output, with
//
// Object.defineProperty($$RSC_SERVER_ACTION_0, ...)
//
// where `$$RSC_SERVER_ACTION_0` doesn't exist.
// but why is typescript not complaining about an undefined variable there?
export default async function (a, b, c) {
'use server'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_ACTION_1 = a
</div>;
};
export default registerServerReference($$RSC_SERVER_ACTION_1, "7090b5db271335765a4b0eab01f044b381b5ebd5cd", null);
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
Object["defineProperty"]($$RSC_SERVER_ACTION_0, "name", {
value: "default",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Client } from 'components';
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "e03128060c414d59f8552e4788b846c0d2b7f74743", 2, async function([$$ACTION_ARG_0, $$ACTION_ARG_1], c) {
return $$ACTION_ARG_0 + $$ACTION_ARG_1 + c;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fn1",
writable: false
});
Expand All @@ -14,7 +14,7 @@ export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_2 = $$ca
fn2([$$ACTION_ARG_0, $$ACTION_ARG_1]) {
return $$ACTION_ARG_0 + $$ACTION_ARG_1;
});
Object.defineProperty($$RSC_SERVER_CACHE_2, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_2, "name", {
value: "fn2",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function foo() {});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "c03128060c414d59f8552e4788b846c0d2b7f74743", 2, async function foo([$$ACTION_ARG_0, $$ACTION_ARG_1]) {
return $$ACTION_ARG_0 * $$ACTION_ARG_1;
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function fetch1() {
return fetch('https://example.com').then((res)=>res.json());
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "fetch",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cache as $$cache__ } from "private-next-rsc-cache-wrapper";
export var /*#__TURBOPACK_DISABLE_EXPORT_MERGING__*/ $$RSC_SERVER_CACHE_0 = $$cache__("default", "803128060c414d59f8552e4788b846c0d2b7f74743", 0, async function foo() {
return fetch('https://example.com').then((res)=>res.json());
});
Object.defineProperty($$RSC_SERVER_CACHE_0, "name", {
Object["defineProperty"]($$RSC_SERVER_CACHE_0, "name", {
value: "foo",
writable: false
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"moduleDetection": "force"
},
"files": ["./index.ts"], // loads ambient declarations for modules used in tests
"include": ["./**/*/input.js", "./**/*/output.js", "./**/*/output.tsx"],
"include": ["./**/*/input.js", "./**/*/output.js"],
"exclude": [
// FIXME: invalid transformation of hoisted functions (https://github.com/vercel/next.js/issues/57392)
"./server-graph/25/output.js",
Expand Down

0 comments on commit 88dcd1c

Please sign in to comment.