summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/internal/options.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/internal/options.ts')
-rw-r--r--ext/node/polyfills/internal/options.ts45
1 files changed, 45 insertions, 0 deletions
diff --git a/ext/node/polyfills/internal/options.ts b/ext/node/polyfills/internal/options.ts
new file mode 100644
index 000000000..68ccf0528
--- /dev/null
+++ b/ext/node/polyfills/internal/options.ts
@@ -0,0 +1,45 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import { getOptions } from "internal:deno_node/polyfills/internal_binding/node_options.ts";
+
+let optionsMap: Map<string, { value: string }>;
+
+function getOptionsFromBinding() {
+ if (!optionsMap) {
+ ({ options: optionsMap } = getOptions());
+ }
+
+ return optionsMap;
+}
+
+export function getOptionValue(optionName: string) {
+ const options = getOptionsFromBinding();
+
+ if (optionName.startsWith("--no-")) {
+ const option = options.get("--" + optionName.slice(5));
+
+ return option && !option.value;
+ }
+
+ return options.get(optionName)?.value;
+}