aboutsummaryrefslogtreecommitdiff
path: root/node_modules/yaml/browser/dist/nodes/toJS.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/yaml/browser/dist/nodes/toJS.js')
-rw-r--r--node_modules/yaml/browser/dist/nodes/toJS.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/node_modules/yaml/browser/dist/nodes/toJS.js b/node_modules/yaml/browser/dist/nodes/toJS.js
new file mode 100644
index 0000000..436c7e8
--- /dev/null
+++ b/node_modules/yaml/browser/dist/nodes/toJS.js
@@ -0,0 +1,37 @@
+import { hasAnchor } from './Node.js';
+
+/**
+ * Recursively convert any node or its contents to native JavaScript
+ *
+ * @param value - The input value
+ * @param arg - If `value` defines a `toJSON()` method, use this
+ * as its first argument
+ * @param ctx - Conversion context, originally set in Document#toJS(). If
+ * `{ keep: true }` is not set, output should be suitable for JSON
+ * stringification.
+ */
+function toJS(value, arg, ctx) {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ if (Array.isArray(value))
+ return value.map((v, i) => toJS(v, String(i), ctx));
+ if (value && typeof value.toJSON === 'function') {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+ if (!ctx || !hasAnchor(value))
+ return value.toJSON(arg, ctx);
+ const data = { aliasCount: 0, count: 1, res: undefined };
+ ctx.anchors.set(value, data);
+ ctx.onCreate = res => {
+ data.res = res;
+ delete ctx.onCreate;
+ };
+ const res = value.toJSON(arg, ctx);
+ if (ctx.onCreate)
+ ctx.onCreate(res);
+ return res;
+ }
+ if (typeof value === 'bigint' && !(ctx === null || ctx === void 0 ? void 0 : ctx.keep))
+ return Number(value);
+ return value;
+}
+
+export { toJS };