helloadhavan/github_issues huggingface dataset:
Repository: ollama/ollama
Pull request: ignore nil map values

some api clients may pass a nil value so best to ignore it

Changed files:
filename: api/types.go
patch: @@ -216,6 +216,10 @@ func (opts *Options) FromMap(m map[string]interface{}) error {
 		if opt, ok := jsonOpts[key]; ok {
 			field := valueOpts.FieldByName(opt.Name)
 			if field.IsValid() && field.CanSet() {
+				if val == nil {
+					continue
+				}
+
 				switch field.Kind() {
 				case reflect.Int:
 					switch t := val.(type) {
Repository: electron/electron
Pull request: perf: avoid unnecessary vector copy in `GetMimeTypeToExtensionIdMap()`

#### Description of Change

Refactor `GetMimeTypeToExtensionIdMap()` to avoid some unnecessary work:

- `GetMIMETypeAllowlist()` returns a `const&`, so keep a reference instead of cloning it
- Move the `ExtensionRegistry::Get(browser_context)` call outside of the loop
- Remove redundant map lookups

#### Checklist

- [x] PR description included and stakeholders cc'd
- [x] `npm test` passes
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: none.

Changed files:
filename: shell/browser/plugins/plugin_utils.cc
patch: @@ -33,30 +33,33 @@ std::string PluginUtils::GetExtensionIdForMimeType(
 base::flat_map<std::string, std::string>
 PluginUtils::GetMimeTypeToExtensionIdMap(
     content::BrowserContext* browser_context) {
-  base::flat_map<std::string, std::string> mime_type_to_extension_id_map;
 #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
-  std::vector<std::string> allowed_extension_ids =
-      MimeTypesHandler::GetMIMETypeAllowlist();
+  const auto& allowed_extension_ids = MimeTypesHandler::GetMIMETypeAllowlist();
+  if (allowed_extension_ids.empty())
+    return {};
+
+  const extensions::ExtensionSet& enabled_extensions =
+      extensions::ExtensionRegistry::Get(browser_context)->enabled_extensions();
+
+  base::flat_map<std::string, std::string> mime_type_to_extension_id_map;
+
   // Go through the white-listed extensions and try to use them to intercept
   // the URL request.
-  for (const std::string& extension_id : allowed_extension_ids) {
-    const extensions::Extension* extension =
-        extensions::ExtensionRegistry::Get(browser_context)
-            ->enabled_extensions()
-            .GetByID(extension_id);
-    // The white-listed extension may not be installed, so we have to nullptr
-    // check |extension|.
-    if (!extension) {
+  for (const std::string& id : allowed_extension_ids) {
+    const extensions::Extension* extension = enabled_extensions.GetByID(id);
+    if (!extension)  // extension might not be installed, so check for nullptr
       continue;
-    }
 
-    if (MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension)) {
-      for (const auto& supported_mime_type : handler->mime_type_set()) {
-        DCHECK(!mime_type_to_extension_id_map.contains(supported_mime_type));
-        mime_type_to_extension_id_map[supported_mime_type] = extension_id;
+    if (const MimeTypesHandler* handler =
+            MimeTypesHandler::GetHandler(extension)) {
+      for (const std::string& mime_type : handler->mime_type_set()) {
+        const auto [_, inserted] =
+            mime_type_to_extension_id_map.insert_or_assign(mime_type, id);
+        DCHECK(inserted);
       }
     }
   }
 #endif
+
   return mime_type_to_extension_id_map;
 }
Repository: facebook/react
Pull request: Fix ReactHooksInspectionIntegration-test

Resolve conflict between #28508 and #28546


Changed files:
filename: packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js
patch: @@ -1244,7 +1244,7 @@ describe('ReactHooksInspectionIntegration', () => {
         <Context.Provider value="provided">
           <Foo />
         </Context.Provider>,
-        {isConcurrent: true},
+        {unstable_isConcurrent: true},
       );
     });
     let childFiber = renderer.root.findByType(Foo)._currentFiber();
Repository: denoland/deno
Pull request: fix(test): set cwd when running node compatibility tests

Allows tests to resolve path correctly, such as this one https://github.com/nodejs/node/blob/591ba692bfe30408e6a67397e7d18bfa1b9c3561/test/parallel/test-fs-cp.mjs#L35

Changed files:
filename: tests/node_compat/run_all_test_unmodified.ts
patch: @@ -23,6 +23,7 @@ import {
 } from "./common.ts";
 import { generateTestSerialId } from "./test.ts";
 
+const testSuitePath = new URL(import.meta.resolve("./runner/suite/"));
 const testDirUrl = new URL("runner/suite/test/", import.meta.url).href;
 const IS_CI = !!Deno.env.get("CI");
 // The timeout ms for single test execution. If a single test didn't finish in this timeout milliseconds, the test is considered as failure
@@ -171,10 +172,11 @@ export async function runSingle(
 ): Promise<NodeTestFileReport> {
   const testSerialId = generateTestSerialId();
   let cmd: Deno.ChildProcess | undefined;
-  const testPath_ = "tests/node_compat/runner/suite/test/" + testPath;
+  const testPath_ = "test/" + testPath;
   let usesNodeTest = false;
   try {
-    const source = await Deno.readTextFile(testPath_);
+    const testFileUrl = new URL(testPath_, testSuitePath);
+    const source = await Deno.readTextFile(testFileUrl);
     usesNodeTest = usesNodeTestModule(source);
     if (NODE_IGNORED_TEST_CASES.has(testPath)) {
       return { result: NodeTestFileResult.IGNORED, usesNodeTest };
@@ -195,6 +197,7 @@ export async function runSingle(
       },
       stdout: "piped",
       stderr: "piped",
+      cwd: testSuitePath,
     }).spawn();
     const result = await deadline(cmd.output(), TIMEOUT);
     if (result.code === 0) {
Repository: vercel/next.js
Pull request: [devtools] Remove unnecessary cascading update

Just fixing the trivial ones here i.e. just one :(

Changed files:
filename: packages/next/src/next-devtools/dev-overlay/components/devtools-indicator/next-logo.tsx
patch: @@ -1,4 +1,4 @@
-import { useEffect, useRef, useState } from 'react'
+import { useRef, useState } from 'react'
 import { useUpdateAnimation } from './hooks/use-update-animation'
 import { useMeasureWidth } from './hooks/use-measure-width'
 import { useMinimumLoadingTimeMultiple } from './hooks/use-minimum-loading-time-multiple'
@@ -28,6 +28,12 @@ export function NextLogo({
 
   const hasError = totalErrorCount > 0
   const [isErrorExpanded, setIsErrorExpanded] = useState(hasError)
+  const [previousHasError, setPreviousHasError] = useState(hasError)
+  if (previousHasError !== hasError) {
+    setPreviousHasError(hasError)
+    // Reset the expanded state when the error state changes
+    setIsErrorExpanded(hasError)
+  }
   const [dismissed, setDismissed] = useState(false)
   const newErrorDetected = useUpdateAnimation(
     totalErrorCount,
@@ -43,11 +49,6 @@ export function NextLogo({
   const isExpanded = isErrorExpanded || state.disableDevIndicator
   const width = measuredWidth === 0 ? 'auto' : measuredWidth
 
-  useEffect(() => {
-    // eslint-disable-next-line react-hooks/react-compiler -- TODO
-    setIsErrorExpanded(hasError)
-  }, [hasError])
-
   return (
     <div
       data-next-badge-root
Repository: huggingface/transformers
Pull request: Add repr to EncoderDecoderCache

# What does this PR do?

Without it, it would inherit the one from Cache, and fail because `self.layers` does not exist in `EncoderDecoderCache`

Changed files:
filename: src/transformers/cache_utils.py
patch: @@ -1470,6 +1470,12 @@ def __init__(self, self_attention_cache: Cache, cross_attention_cache: Cache):
         for layer_idx in range(len(cross_attention_cache)):
             self.is_updated[layer_idx] = bool(cross_attention_cache.get_seq_length(layer_idx) > 0)
 
+    def __repr__(self) -> str:
+        return (
+            f"{self.__class__.__name__}(self_attention_cache={self.self_attention_cache}, cross_attention_cache="
+            f"{self.cross_attention_cache})"
+        )
+
     def __iter__(self):
         """
         Support for backwards-compatible `past_key_values` iteration, e.g. `for x in past_key_values:` to iterate over
Repository: ggml-org/llama.cpp
Pull request: ggml-cpu: build fails with `-Werror=discarded-qualifiers`

## Why it failed

When compiling with strict compiler flags (-Wwrite-strings -Werror=discarded-qualifiers), the build fails with the following error:

```console
$ cmake \
    -S . \
    -B ../llama.cpp.build \
    --preset=x64-linux-gcc-debug \
    -DCMAKE_INSTALL_PREFIX=/tmp/local \
    -DCMAKE_C_FLAGS="-Wwrite-strings -Werror=discarded-qualifiers" && \
  cmake --build ../llama.cpp.build/
...
/home/otegami/work/cpp/llama.cpp/ggml/src/ggml-cpu/ggml-cpu.c: In function ‘ggml_cpu_init’:
/home/otegami/work/cpp/llama.cpp/ggml/src/ggml-cpu/ggml-cpu.c:3572:24: error: passing argument 1 of ‘putenv’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
 3572 |                 putenv("KMP_BLOCKTIME=200"); // 200ms
      |                        ^~~~~~~~~~~~~~~~~~~
In file included from /home/otegami/work/cpp/llama.cpp/ggml/src/./ggml-impl.h:10,
                 from /home/otegami/work/cpp/llama.cpp/ggml/src/ggml-cpu/ggml-cpu-impl.h:6,
                 from /home/otegami/work/cpp/llama.cpp/ggml/src/ggml-cpu/traits.h:3,
                 from /home/otegami/work/cpp/llama.cpp/ggml/src/ggml-cpu/ggml-cpu.c:6:
/usr/include/stdlib.h:786:26: note: expected ‘char *’ but argument is of type ‘const char *’
  786 | extern int putenv (char *__string) __THROW __nonnull ((1));
      |                    ~~~~~~^~~~~~~~
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.
```

The issue is that putenv() expects a non-const char * but receives a string literal (const char *).

## How to fix

This PR replaces putenv("KMP_BLOCKTIME=200") with setenv("KMP_BLOCKTIME", "200", 0).

Benefits of setenv():
- Accepts const char * parameters (no qualifier warnings)
- Makes copies of the strings (safer memory handling)
- The third parameter (0) ensures we don't overwrite if already set

*Make sure to read the [contributing guidelines](https://github.com/ggml-org/llama.cpp/blob/master/CONTRIBUTING.md) before submitting a PR*


Changed files:
filename: ggml/src/ggml-cpu/ggml-cpu.c
patch: @@ -3567,13 +3567,17 @@ void ggml_cpu_init(void) {
 #ifdef GGML_USE_OPENMP
             //if (!getenv("OMP_WAIT_POLICY")) {
             //    // set the wait policy to active, so that OpenMP threads don't sleep
-            //    putenv("OMP_WAIT_POLICY=active");
+            //    setenv("OMP_WAIT_POLICY", "active", 0)
             //}
 
             if (!getenv("KMP_BLOCKTIME")) {
                 // set the time to wait before sleeping a thread
                 // this is less aggressive than setting the wait policy to active, but should achieve similar results in most cases
-                putenv("KMP_BLOCKTIME=200"); // 200ms
+#ifdef _WIN32
+                _putenv_s("KMP_BLOCKTIME", "200"); // 200ms
+#else
+                setenv("KMP_BLOCKTIME", "200", 0); // 200ms
+#endif
             }
 #endif
         }
Repository: denoland/deno
Pull request: fix: add missing cargo feature to 'deno_npm_cache' crate


Changed files:
filename: libs/npm_cache/Cargo.toml
patch: @@ -24,7 +24,7 @@ deno_path_util.workspace = true
 deno_semver.workspace = true
 deno_unsync.workspace = true
 faster-hex.workspace = true
-flate2.workspace = true
+flate2 = { workspace = true, features = ["default"] }
 futures.workspace = true
 log.workspace = true
 parking_lot.workspace = true
Repository: nodejs/node
Pull request: meta: fix subsystem in commit title

"config" is not recognized as a valid subsystem by `core-validate-commit@4.1.0`.

Refs: https://github.com/nodejs/node/commit/478a2e656d803970e93c
<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: .github/workflows/tools.yml
patch: @@ -237,7 +237,7 @@ jobs:
             run: |
               node ./tools/dep_updaters/update-root-certs.mjs -v -f "$GITHUB_ENV"
           - id: simdjson
-            subsystem: deps, config
+            subsystem: deps
             label: dependencies
             run: |
               ./tools/dep_updaters/update-simdjson.sh > temp-output
Repository: ggml-org/llama.cpp
Pull request: SYCL: Add GGML_OP_MEAN operator support

This PR introduces support for GGML_OP_MEAN in the SYCL backend.

Changes:
- Added ggml_sycl_op_mean() kernel and ggml_sycl_mean() wrapper
- Registered GGML_OP_MEAN in ggml_sycl_compute_forward()
- Updated ggml_backend_sycl_device_supports_op() to report support
- Added proper row-wise mean implementation with parallel division

Verification:
- Build passes successfully with CMake + make
- ./build/bin/test-backend-ops support -o MEAN -b sycl shows 
- ./build/bin/test-backend-ops test -o MEAN -b sycl passes with OK


Changed files:
filename: ggml/src/ggml-sycl/ggml-sycl.cpp
patch: @@ -2151,6 +2151,30 @@ inline void ggml_sycl_op_sum_rows(ggml_backend_sycl_context & ctx, ggml_tensor *
     sum_rows_f32_sycl(src0_dd, dst_dd, ncols, nrows, main_stream);
 }
 
+inline void ggml_sycl_op_mean(ggml_backend_sycl_context & ctx, ggml_tensor * dst) {
+    GGML_ASSERT(dst->src[0]->type == GGML_TYPE_F32);
+    GGML_ASSERT(dst->type == GGML_TYPE_F32);
+
+    dpct::queue_ptr main_stream = ctx.stream();
+    SYCL_CHECK(ggml_sycl_set_device(ctx.device));
+
+    const float * src0_dd = static_cast<const float *>(dst->src[0]->data);
+    float *       dst_dd  = static_cast<float *>(dst->data);
+
+    const int64_t ncols = dst->src[0]->ne[0];
+    const int64_t nrows = ggml_nrows(dst->src[0]);
+
+    sum_rows_f32_sycl(src0_dd, dst_dd, ncols, nrows, main_stream);
+
+    main_stream->parallel_for(
+        sycl::range<1>(nrows),
+        [=](sycl::id<1> row) {
+            dst_dd[row] /= ncols;
+        }
+    );
+}
+
+
 inline void ggml_sycl_op_argsort(ggml_backend_sycl_context & ctx, ggml_tensor * dst) {
     GGML_ASSERT(dst->src[0]->type == GGML_TYPE_F32);
     GGML_ASSERT(dst->type == GGML_TYPE_I32);
@@ -3535,6 +3559,12 @@ static void ggml_sycl_sum_rows(ggml_backend_sycl_context & ctx, ggml_tensor * ds
     ggml_sycl_op_sum_rows(ctx, dst);
 }
 
+static void ggml_sycl_mean(ggml_backend_sycl_context & ctx, ggml_tensor * dst) {
+    scope_op_debug_print scope_dbg_print(__func__, dst, /*num_src=*/1);
+    GGML_ASSERT(ggml_is_contiguous(dst->src[0]));
+    ggml_sycl_op_mean(ctx, dst);
+}
+
 static void ggml_sycl_argsort(ggml_backend_sycl_context & ctx, ggml_tensor * dst) {
     scope_op_debug_print scope_dbg_print(__func__, dst, /*num_src=*/1);
     GGML_ASSERT(ggml_is_contiguous(dst->src[0]));
@@ -3784,6 +3814,9 @@ static bool ggml_sycl_compute_forward(ggml_backend_sycl_context & ctx, struct gg
         case GGML_OP_SUM_ROWS:
             ggml_sycl_sum_rows(ctx, dst);
             break;
+        case GGML_OP_MEAN:
+            ggml_sycl_mean(ctx, dst);
+            break;
         case GGML_OP_ARGSORT:
             ggml_sycl_argsort(ctx, dst);
             break;
@@ -4431,6 +4464,7 @@ static bool ggml_backend_sycl_device_supports_op(ggml_backend_dev_t dev, const g
             return op->src[0]->type == GGML_TYPE_F32 && op->op_params[0] == GGML_SCALE_MODE_NEAREST;
         case GGML_OP_SUM:
         case GGML_OP_SUM_ROWS:
+        case GGML_OP_MEAN:
         case GGML_OP_ARGSORT:
             return ggml_is_contiguous(op->src[0]);
         case GGML_OP_POOL_2D:
Repository: denoland/deno
Pull request: fix(unstable): lint node properties should be enumerable

This makes npm libraries that traverse the ESTree format like `zimmerframe` or `periscopic` work with our lint ast.

Changed files:
filename: cli/js/40_lint.js
patch: @@ -607,6 +607,9 @@ function setNodeGetters(ctx) {
     const name = getString(ctx.strTable, id);
 
     Object.defineProperty(FacadeNode.prototype, name, {
+      // The `parent` key is expected to be non-enumerable.
+      // See the npm `zimmerframe` library.
+      enumerable: name !== "parent",
       get() {
         return readValue(
           this[INTERNAL_CTX],

filename: tests/unit/lint_plugin_test.ts
patch: @@ -1,6 +1,6 @@
 // Copyright 2018-2025 the Deno authors. MIT license.
 
-import { assertEquals } from "./test_util.ts";
+import { assert, assertEquals } from "./test_util.ts";
 import { assertSnapshot } from "@std/testing/snapshot";
 
 // TODO(@marvinhagemeister) Remove once we land "official" types
@@ -1228,3 +1228,21 @@ Deno.test("Plugin - TS keywords", async (t) => {
   await testSnapshot(t, "type A = unknown", "TSUnknownKeyword");
   await testSnapshot(t, "type A = void", "TSVoidKeyword");
 });
+
+Deno.test("Plugin - enumerable properties", () => {
+  const keys: string[] = [];
+  testPlugin(`const a = 42`, {
+    create() {
+      return {
+        Program(node) {
+          // deno-lint-ignore guard-for-in
+          for (const k in node) {
+            keys.push(k);
+          }
+        },
+      };
+    },
+  });
+
+  assert(keys.length > 0);
+});
Repository: ollama/ollama
Pull request: set the scopes correctly

This change fixes the scope authorization to allow cross-repo pushes to work correctly.

Changed files:
filename: server/auth.go
patch: @@ -48,7 +48,12 @@ func (r AuthRedirect) URL() (string, error) {
 	if err != nil {
 		return "", err
 	}
-	return fmt.Sprintf("%s?service=%s&scope=%s&ts=%d&nonce=%s", r.Realm, r.Service, r.Scope, time.Now().Unix(), nonce), nil
+	scopes := []string{}
+	for _, s := range strings.Split(r.Scope, " ") {
+		scopes = append(scopes, fmt.Sprintf("scope=%s", s))
+	}
+	scopeStr := strings.Join(scopes, "&")
+	return fmt.Sprintf("%s?service=%s&%s&ts=%d&nonce=%s", r.Realm, r.Service, scopeStr, time.Now().Unix(), nonce), nil
 }
 
 func getAuthToken(ctx context.Context, redirData AuthRedirect, regOpts *RegistryOptions) (string, error) {
Repository: ollama/ollama
Pull request: fix nous-hermes model file size listing in readme

fix nous-hermes model file size listing in readme

Changed files:
filename: README.md
patch: @@ -41,7 +41,8 @@ Here are some example open-source models that can be downloaded:
 | Llama2 Uncensored        | 7B         | 3.8GB | `ollama pull llama2-uncensored` |
 | Orca Mini                | 3B         | 1.9GB | `ollama pull orca-mini`         |
 | Vicuna                   | 7B         | 3.8GB | `ollama pull vicuna`            |
-| Nous-Hermes              | 13B        | 7.3GB | `ollama pull nous-hermes`       |
+| Nous-Hermes              | 7B         | 3.8GB | `ollama pull nous-hermes`       |
+| Nous-Hermes 13B          | 13B        | 7.3GB | `ollama pull nous-hermes:13b`   |
 | Wizard Vicuna Uncensored | 13B        | 7.3GB | `ollama pull wizard-vicuna`     |
 
 > Note: You should have at least 8 GB of RAM to run the 3B models, 16 GB to run the 7B models, and 32 GB to run the 13B models.
Repository: ggml-org/llama.cpp
Pull request: gguf_convert_endian.py: add support for converting BF16 data

BF16 requires special handling in this script
while it's a 2-bytes data, but view is 1-byte by default. Switch to correct view before attempting byteswapping.

With this change correctly byteswapping models like Meta-Llama-3-8B-Instruct-bf16-GGUF
should be possible.

Changed files:
filename: gguf-py/gguf/scripts/gguf_convert_endian.py
patch: @@ -91,6 +91,7 @@ def convert_byteorder(reader: gguf.GGUFReader, args: argparse.Namespace) -> None
            tensor.tensor_type not in (
                 gguf.GGMLQuantizationType.F32,
                 gguf.GGMLQuantizationType.F16,
+                gguf.GGMLQuantizationType.BF16,
            ):
             raise ValueError(f"Cannot handle type {tensor.tensor_type.name} for tensor {repr(tensor.name)}")
     logger.info(f"* Preparing to convert from {file_endian} to {order}")
@@ -148,6 +149,11 @@ def convert_byteorder(reader: gguf.GGUFReader, args: argparse.Namespace) -> None
 
             # restore old shape in case it's ever used
             tensor.data.resize(oldshape)
+        elif tensor.tensor_type == gguf.GGMLQuantizationType.BF16:
+            # Special case for BF16
+            # It is 2-bytes data, but by default view loads it as 1-byte data.
+            # Change to correct view before byteswapping.
+            tensor.data.view(dtype=np.uint16).byteswap(inplace=True)
         else:
             # Handle other tensor types
             tensor.data.byteswap(inplace=True)
Repository: ollama/ollama
Pull request: adding link to models directly available on ollama

- adding link to models directly available on ollama

- ability to push your own models to the library will come in the future

Changed files:
filename: README.md
patch: @@ -29,7 +29,9 @@ ollama run llama2
 
 ## Model library
 
-`ollama` includes a library of open-source models:
+Ollama's open-source models are available on [ollama.ai/library](https://ollama.ai/library "ollama model library") 
+
+Here are some example open-source models that can be downloaded: 
 
 | Model                    | Parameters | Size  | Download                        |
 | ------------------------ | ---------- | ----- | ------------------------------- |
Repository: nodejs/node
Pull request: doc: recommend setting `noEmit: true` in `tsconfig.json`

- Fixes: https://github.com/nodejs/node/issues/57294

Changed files:
filename: doc/api/typescript.md
patch: @@ -81,6 +81,7 @@ but we recommend version 5.8 or newer with the following `tsconfig.json` setting
 ```json
 {
   "compilerOptions": {
+     "noEmit": true, // Optional - see note below
      "target": "esnext",
      "module": "nodenext",
      "rewriteRelativeImportExtensions": true,
@@ -90,6 +91,10 @@ but we recommend version 5.8 or newer with the following `tsconfig.json` setting
 }
 ```
 
+> \[!NOTE]
+> Use the `noEmit` option if you intend to only execute `*.ts` files, for example a build script.
+> You won't need this flag if you intend to distribute `*.js` files for performance reasons.
+
 ### Determining module system
 
 Node.js supports both [CommonJS][] and [ES Modules][] syntax in TypeScript