1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 08:09:08 -05:00

fix(node): implement ALS enterWith (#22740)

Fixes https://github.com/denoland/deno/issues/18127
https://github.com/denoland/deno/issues/17248

SvelteKit works now!
```
$ deno run -A npm:create-svelte@latest my-app

create-svelte version 6.0.9

┌  Welcome to SvelteKit!
│
◇  Which Svelte app template?
│  SvelteKit demo app
│
◇  Add type checking with TypeScript?
│  Yes, using JavaScript with JSDoc comments
│
◇  Select additional options (use arrow keys/space bar)
│  none
│
└  Your project is ready!

✔ Type-checked JavaScript
  https://www.typescriptlang.org/tsconfig#checkJs

Install community-maintained integrations:
  https://github.com/svelte-add/svelte-add

Next steps:
  1: cd my-app
  2: npm install
  3: git init && git add -A && git commit -m "Initial commit" (optional)
  4: npm run dev -- --open

To close the dev server, hit Ctrl-C

Stuck? Visit us at https://svelte.dev/chat

$ cd my-app/
$ deno task dev
Task dev vite dev

  VITE v5.1.4  ready in 1632 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h + enter to show help
```
This commit is contained in:
Divy Srivastava 2024-03-06 17:35:57 +05:30 committed by GitHub
parent fac7068c1e
commit d283a53655
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 0 deletions

View file

@ -308,6 +308,14 @@ export class AsyncLocalStorage {
const currentFrame = AsyncContextFrame.current();
return currentFrame.get(this.#key);
}
enterWith(store: unknown) {
const frame = AsyncContextFrame.create(
null,
new StorageEntry(this.#key, store),
);
Scope.enter(frame);
}
}
export function executionAsyncId() {

View file

@ -77,3 +77,20 @@ Deno.test(async function nested() {
assertEquals(await deferred.promise, { x: 1 });
assertEquals(await deferred1.promise, null);
});
Deno.test(async function enterWith() {
const als = new AsyncLocalStorage();
const deferred = Promise.withResolvers();
const deferred1 = Promise.withResolvers();
als.run(null, () => {
als.run({ x: 1 }, () => {
als.enterWith({ x: 2 });
deferred.resolve(als.getStore());
});
deferred1.resolve(als.getStore());
});
assertEquals(await deferred.promise, { x: 2 });
assertEquals(await deferred1.promise, { x: 1 });
});