@decimalturn/toml-patch 0.3.3 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -1
- package/README.md +40 -2
- package/dist/toml-patch.cjs.min.js +2 -2
- package/dist/toml-patch.cjs.min.js.map +1 -1
- package/dist/toml-patch.d.ts +30 -1
- package/dist/toml-patch.es.js +196 -34
- package/dist/toml-patch.umd.min.js +2 -2
- package/dist/toml-patch.umd.min.js.map +1 -1
- package/package.json +21 -14
package/LICENSE
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019 Tim Hall
|
|
3
|
+
Copyright (c) 2019–2025 Tim Hall
|
|
4
|
+
Copyright (c) 2025 Martin Leduc
|
|
4
5
|
|
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
7
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# toml-patch
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@decimalturn/toml-patch)
|
|
4
|
+
[](https://jsr.io/@decimalturn/toml-patch)
|
|
5
|
+
[](https://github.com/DecimalTurn/toml-patch/actions/workflows/test-and-build.yml)
|
|
6
|
+
|
|
7
|
+
Patch, parse, and stringify [TOML](https://toml.io/en/) while preserving comments and formatting.
|
|
8
|
+
|
|
9
|
+
Note that this is a maintenance fork of the original toml-patch package. This fork aims at addressing existing issues from the original project and perform dev-dependencies updates.
|
|
10
|
+
Hopefully, the work done here can go upstream one day if timhall returns, but until then, welcome aboard![^1]
|
|
4
11
|
|
|
5
12
|
## Installation
|
|
6
13
|
|
|
@@ -22,6 +29,7 @@ For browser usage, you can use unpkg:
|
|
|
22
29
|
|
|
23
30
|
Patch an existing TOML string with the given updated JS/JSON value, while attempting to retain the format of the existing document, including comments, indentation, and structure.
|
|
24
31
|
|
|
32
|
+
*Example 1*
|
|
25
33
|
```js
|
|
26
34
|
const TOML = require('@decimalturn/toml-patch');
|
|
27
35
|
const assert = require('assert');
|
|
@@ -50,6 +58,34 @@ owner.name = "Tim"
|
|
|
50
58
|
);
|
|
51
59
|
```
|
|
52
60
|
|
|
61
|
+
*Example 2*
|
|
62
|
+
```js
|
|
63
|
+
const TOML = require('@decimalturn/toml-patch');
|
|
64
|
+
const assert = require('assert');
|
|
65
|
+
|
|
66
|
+
const existing = `
|
|
67
|
+
# This is a TOML document
|
|
68
|
+
|
|
69
|
+
title = "TOML example"
|
|
70
|
+
owner.name = "Bob"
|
|
71
|
+
`;
|
|
72
|
+
|
|
73
|
+
const jsObject = TOML.parse(existing);
|
|
74
|
+
jsObject.owner.name = "Tim";
|
|
75
|
+
|
|
76
|
+
const patched = TOML.patch(existing, jsObject);
|
|
77
|
+
|
|
78
|
+
assert.strictEqual(
|
|
79
|
+
patched,
|
|
80
|
+
`
|
|
81
|
+
# This is a TOML document
|
|
82
|
+
|
|
83
|
+
title = "TOML example"
|
|
84
|
+
owner.name = "Tim"
|
|
85
|
+
`
|
|
86
|
+
);
|
|
87
|
+
```
|
|
88
|
+
|
|
53
89
|
<a href="#parse" name="parse">#</a> <b>parse</b>(<i>value</i>)
|
|
54
90
|
|
|
55
91
|
Parse a TOML string into a JS/JSON value.
|
|
@@ -111,4 +147,6 @@ name = "Tim"`
|
|
|
111
147
|
3. Build: `npm run build`
|
|
112
148
|
4. Test: `npm test`
|
|
113
149
|
5. Specs compliance: `npm run specs`
|
|
114
|
-
6. Benchmark: `npm run benchmark
|
|
150
|
+
6. Benchmark: `npm run benchmark`
|
|
151
|
+
|
|
152
|
+
[^1]: Tim Hall has been inactive on most of his open source projects for more than 3 years. The sentence wording was inspired by the npm-run-all2 project.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
//! @decimalturn/toml-patch v0.3.
|
|
2
|
-
"use strict";var e,t;function n(t){return t.type===e.Document}function l(t){return t.type===e.Table}function o(t){return t.type===e.TableArray}function r(t){return t.type===e.KeyValue}function a(t){return t.type===e.InlineArray}function c(t){return t.type===e.InlineItem}function i(t){return t.type===e.InlineTable}function u(t){return t.type===e.Comment}function s(e){return n(e)||l(e)||o(e)||i(e)||a(e)}function f(t){return function(t){return t.type===e.TableKey}(t)||function(t){return t.type===e.TableArrayKey}(t)||c(t)}!function(e){e.Document="Document",e.Table="Table",e.TableKey="TableKey",e.TableArray="TableArray",e.TableArrayKey="TableArrayKey",e.KeyValue="KeyValue",e.Key="Key",e.String="String",e.Integer="Integer",e.Float="Float",e.Boolean="Boolean",e.DateTime="DateTime",e.InlineArray="InlineArray",e.InlineItem="InlineItem",e.InlineTable="InlineTable",e.Comment="Comment"}(e||(e={}));class m{constructor(e){this.iterator=e,this.index=-1,this.value=void 0,this.done=!1,this.peeked=null}next(){var e;if(this.done)return d();const t=this.peeked||this.iterator.next();return this.index+=1,this.value=t.value,this.done=null!==(e=t.done)&&void 0!==e&&e,this.peeked=null,t}peek(){return this.done?d():(this.peeked||(this.peeked=this.iterator.next()),this.peeked)}[Symbol.iterator](){return this}}function d(){return{value:void 0,done:!0}}function y(e){return{lines:e.end.line-e.start.line+1,columns:e.end.column-e.start.column}}function p(e,t){const n=Array.isArray(e)?e:v(e),l=n.findIndex((e=>e>=t))+1;return{line:l,column:t-(n[l-2]+1||0)}}function v(e){const t=/[\r\n|\n]/g,n=[];let l;for(;null!=(l=t.exec(e));)n.push(l.index);return n.push(e.length+1),n}function h(e){return{line:e.line,column:e.column}}function w(e){return{start:h(e.start),end:h(e.end)}}class g extends Error{constructor(e,t,n){let l=`Error parsing TOML (${t.line}, ${t.column+1}):\n`;if(e){const n=function(e,t){const n=v(e),l=n[t.line-2]||0,o=n[t.line-1]||e.length;return e.substr(l,o-l)}(e,t),o=`${function(e,t=" "){return t.repeat(e)}(t.column)}^`;n&&(l+=`${n}\n${o}\n`)}l+=n,super(l),this.line=t.line,this.column=t.column}}!function(e){e.Bracket="Bracket",e.Curly="Curly",e.Equal="Equal",e.Comma="Comma",e.Dot="Dot",e.Comment="Comment",e.Literal="Literal"}(t||(t={}));const b=/\s/,k=/(\r\n|\n)/,x='"',T="'",I=/[\w,\d,\",\',\+,\-,\_]/;function*A(e){const n=new m(e[Symbol.iterator]());n.next();const l=function(e){const t=v(e);return(e,n)=>({start:p(t,e),end:p(t,n)})}(e);for(;!n.done;){if(b.test(n.value));else if("["===n.value||"]"===n.value)yield E(n,l,t.Bracket);else if("{"===n.value||"}"===n.value)yield E(n,l,t.Curly);else if("="===n.value)yield E(n,l,t.Equal);else if(","===n.value)yield E(n,l,t.Comma);else if("."===n.value)yield E(n,l,t.Dot);else if("#"===n.value)yield $(n,l);else{const t=C(e,n.index,T)||C(e,n.index,x);t?yield S(n,l,t,e):yield K(n,l,e)}n.next()}}function E(e,t,n){return{type:n,raw:e.value,loc:t(e.index,e.index+1)}}function $(e,n){const l=e.index;let o=e.value;for(;!e.peek().done&&!k.test(e.peek().value);)e.next(),o+=e.value;return{type:t.Comment,raw:o,loc:n(l,e.index+1)}}function S(e,n,l,o){const r=e.index;let a=l+l+l,c=a;for(e.next(),e.next(),e.next();!e.done&&(!C(o,e.index,l)||O(o,e.index,l));)c+=e.value,e.next();if(e.done)throw new g(o,p(o,e.index),`Expected close of multiline string with ${a}, reached end of file`);return c+=a,e.next(),e.next(),{type:t.Literal,raw:c,loc:n(r,e.index+1)}}function K(e,n,l){if(!I.test(e.value))throw new g(l,p(l,e.index),`Unsupported character "${e.value}". Expected ALPHANUMERIC, ", ', +, -, or _`);const o=e.index;let r=e.value,a=e.value===x,c=e.value===T;const i=e=>{if(e.peek().done)return!0;const t=e.peek().value;return!(a||c)&&(b.test(t)||","===t||"."===t||"]"===t||"}"===t||"="===t||"#"===t)};for(;!e.done&&!i(e)&&(e.next(),e.value===x&&(a=!a),e.value!==T||a||(c=!c),r+=e.value,!e.peek().done);){let t=e.peek().value;a&&"\\"===e.value&&(t===x?(r+=x,e.next()):"\\"===t&&(r+="\\",e.next()))}if(a||c)throw new g(l,p(l,o),`Expected close of string with ${a?x:T}`);return{type:t.Literal,raw:r,loc:n(o,e.index+1)}}function C(e,t,n){if(!n)return!1;if(!(e[t]===n&&e[t+1]===n&&e[t+2]===n))return!1;const l=e.slice(0,t).match(/\\+$/);if(!l)return n;return!(l[0].length%2!=0)&&n}function O(e,t,n){return!!n&&(e[t]===n&&e[t+1]===n&&e[t+2]===n&&e[t+3]===n)}function D(e){return e[e.length-1]}function B(){return Object.create(null)}function j(e){return"number"==typeof e&&e%1==0}function F(e){return"[object Date]"===Object.prototype.toString.call(e)}function N(e){return e&&"object"==typeof e&&!F(e)&&!Array.isArray(e)}function _(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e,...t){return t.reduce(((e,t)=>t(e)),e)}function M(e){if(N(e)){return`{${Object.keys(e).sort().map((t=>`${JSON.stringify(t)}:${M(e[t])}`)).join(",")}}`}return Array.isArray(e)?`[${e.map(M).join(",")}]`:JSON.stringify(e)}function U(e,t){const n=e.length,l=t.length;e.length=n+l;for(let o=0;o<l;o++)e[n+o]=t[o]}const V=/\r\n/g,q=/\n/g,R=/^(\r\n|\n)/,W=/(?<!\\)(?:\\\\)*(\\\s*[\n\r\n]\s*)/g;function J(e){return e.startsWith("'''")?L(H(e,3),G):e.startsWith(T)?H(e,1):e.startsWith('"""')?L(H(e,3),G,X,Q,z,P):e.startsWith(x)?L(H(e,1),P):e}function z(e){let t="",n=0;for(let l=0;l<e.length;l++){const o=e[l];t+='"'===o&&n%2==0?'\\"':o,"\\"===o?n++:n=0}return t}function P(e){const t=e.replace(/\\U[a-fA-F0-9]{8}/g,(e=>{const t=parseInt(e.replace("\\U",""),16),n=String.fromCodePoint(t);return H(JSON.stringify(n),1)})),n=t.replace(/\t/g,"\\t");return JSON.parse(`"${n}"`)}function H(e,t){return e.slice(t,e.length-t)}function G(e){return e.replace(R,"")}function Q(e){return e.replace(V,"\\r\\n").replace(q,"\\n")}function X(e){return e.replace(W,((e,t)=>e.replace(t,"")))}const Y="true",Z=/e/i,ee=/\_/g,te=/inf/,ne=/nan/,le=/^0x/,oe=/^0o/,re=/^0b/,ae=/(\d{4})-(\d{2})-(\d{2})/,ce=/(\d{2}):(\d{2}):(\d{2})/;function*ie(e){const t=A(e),n=new m(t);for(;!n.next().done;)yield*ue(n,e)}function*ue(n,l){if(n.value.type===t.Comment)yield fe(n);else if(n.value.type===t.Bracket)yield function(n,l){const o=n.peek().done||n.peek().value.type!==t.Bracket?e.Table:e.TableArray,r=o===e.Table;if(r&&"["!==n.value.raw)throw new g(l,n.value.loc.start,`Expected table opening "[", found ${n.value.raw}`);if(!r&&("["!==n.value.raw||"["!==n.peek().value.raw))throw new g(l,n.value.loc.start,`Expected array of tables opening "[[", found ${n.value.raw+n.peek().value.raw}`);const a=r?{type:e.TableKey,loc:n.value.loc}:{type:e.TableArrayKey,loc:n.value.loc};n.next(),o===e.TableArray&&n.next();if(n.done)throw new g(l,a.loc.start,"Expected table key, reached end of file");a.item={type:e.Key,loc:w(n.value.loc),raw:n.value.raw,value:[J(n.value.raw)]};for(;!n.peek().done&&n.peek().value.type===t.Dot;){n.next();const e=n.value;n.next();const t=" ".repeat(e.loc.start.column-a.item.loc.end.column),l=" ".repeat(n.value.loc.start.column-e.loc.end.column);a.item.loc.end=n.value.loc.end,a.item.raw+=`${t}.${l}${n.value.raw}`,a.item.value.push(J(n.value.raw))}if(n.next(),r&&(n.done||"]"!==n.value.raw))throw new g(l,n.done?a.item.loc.end:n.value.loc.start,`Expected table closing "]", found ${n.done?"end of file":n.value.raw}`);if(!r&&(n.done||n.peek().done||"]"!==n.value.raw||"]"!==n.peek().value.raw))throw new g(l,n.done||n.peek().done?a.item.loc.end:n.value.loc.start,`Expected array of tables closing "]]", found ${n.done||n.peek().done?"end of file":n.value.raw+n.peek().value.raw}`);r||n.next();a.loc.end=n.value.loc.end;let c=[];for(;!n.peek().done&&n.peek().value.type!==t.Bracket;)n.next(),U(c,[...ue(n,l)]);return{type:r?e.Table:e.TableArray,loc:{start:h(a.loc.start),end:c.length?h(c[c.length-1].loc.end):h(a.loc.end)},key:a,items:c}}(n,l);else{if(n.value.type!==t.Literal)throw new g(l,n.value.loc.start,`Unexpected token "${n.value.type}". Expected Comment, Bracket, or String`);yield*function(n,l){const o={type:e.Key,loc:w(n.value.loc),raw:n.value.raw,value:[J(n.value.raw)]};for(;!n.peek().done&&n.peek().value.type===t.Dot;)n.next(),n.next(),o.loc.end=n.value.loc.end,o.raw+=`.${n.value.raw}`,o.value.push(J(n.value.raw));if(n.next(),n.done||n.value.type!==t.Equal)throw new g(l,n.done?o.loc.end:n.value.loc.start,`Expected "=" for key-value, found ${n.done?"end of file":n.value.raw}`);const r=n.value.loc.start.column;if(n.next(),n.done)throw new g(l,o.loc.start,"Expected value for key-value, reached end of file");const[a,...c]=se(n,l);return[{type:e.KeyValue,key:o,value:a,loc:{start:h(o.loc.start),end:h(a.loc.end)},equals:r},...c]}(n,l)}}function*se(n,l){if(n.value.type===t.Literal)n.value.raw[0]===x||n.value.raw[0]===T?yield function(t){return{type:e.String,loc:t.value.loc,raw:t.value.raw,value:J(t.value.raw)}}(n):n.value.raw===Y||"false"===n.value.raw?yield function(t){return{type:e.Boolean,loc:t.value.loc,value:t.value.raw===Y}}(n):ae.test(n.value.raw)||ce.test(n.value.raw)?yield function(n,l){let o,r=n.value.loc,a=n.value.raw;if(!n.peek().done&&n.peek().value.type===t.Literal&&ae.test(a)&&ce.test(n.peek().value.raw)){const e=r.start;n.next(),r={start:e,end:n.value.loc.end},a+=` ${n.value.raw}`}if(!n.peek().done&&n.peek().value.type===t.Dot){const e=r.start;if(n.next(),n.peek().done||n.peek().value.type!==t.Literal)throw new g(l,n.value.loc.end,"Expected fractional value for DateTime");n.next(),r={start:e,end:n.value.loc.end},a+=`.${n.value.raw}`}if(ae.test(a))o=new Date(a.replace(" ","T"));else{const[e]=(new Date).toISOString().split("T");o=new Date(`${e}T${a}`)}return{type:e.DateTime,loc:r,raw:a,value:o}}(n,l):!n.peek().done&&n.peek().value.type===t.Dot||te.test(n.value.raw)||ne.test(n.value.raw)||Z.test(n.value.raw)&&!le.test(n.value.raw)?yield function(n,l){let o,r=n.value.loc,a=n.value.raw;if(te.test(a))o="-inf"===a?-1/0:1/0;else if(ne.test(a))o=NaN;else if(n.peek().done||n.peek().value.type!==t.Dot)o=Number(a.replace(ee,""));else{const e=r.start;if(n.next(),n.peek().done||n.peek().value.type!==t.Literal)throw new g(l,n.value.loc.end,"Expected fraction value for Float");n.next(),a+=`.${n.value.raw}`,r={start:e,end:n.value.loc.end},o=Number(a.replace(ee,""))}return{type:e.Float,loc:r,raw:a,value:o}}(n,l):yield function(t){if("-0"===t.value.raw||"+0"===t.value.raw)return{type:e.Integer,loc:t.value.loc,raw:t.value.raw,value:0};let n=10;le.test(t.value.raw)?n=16:oe.test(t.value.raw)?n=8:re.test(t.value.raw)&&(n=2);const l=parseInt(t.value.raw.replace(ee,"").replace(oe,"").replace(re,""),n);return{type:e.Integer,loc:t.value.loc,raw:t.value.raw,value:l}}(n);else if(n.value.type===t.Curly)yield function(n,l){if("{"!==n.value.raw)throw new g(l,n.value.loc.start,`Expected "{" for inline table, found ${n.value.raw}`);const o={type:e.InlineTable,loc:w(n.value.loc),items:[]};n.next();for(;!n.done&&(n.value.type!==t.Curly||"}"!==n.value.raw);){if(n.value.type===t.Comma){const e=o.items[o.items.length-1];if(!e)throw new g(l,n.value.loc.start,'Found "," without previous value in inline table');e.comma=!0,e.loc.end=n.value.loc.start,n.next();continue}const[r]=ue(n,l);if(r.type!==e.KeyValue)throw new g(l,n.value.loc.start,`Only key-values are supported in inline tables, found ${r.type}`);const a={type:e.InlineItem,loc:w(r.loc),item:r,comma:!1};o.items.push(a),n.next()}if(n.done||n.value.type!==t.Curly||"}"!==n.value.raw)throw new g(l,n.done?o.loc.start:n.value.loc.start,`Expected "}", found ${n.done?"end of file":n.value.raw}`);return o.loc.end=n.value.loc.end,o}(n,l);else{if(n.value.type!==t.Bracket)throw new g(l,n.value.loc.start,`Unrecognized token type "${n.value.type}". Expected String, Curly, or Bracket`);{const[o,r]=function(n,l){if("["!==n.value.raw)throw new g(l,n.value.loc.start,`Expected "[" for inline array, found ${n.value.raw}`);const o={type:e.InlineArray,loc:w(n.value.loc),items:[]};let r=[];n.next();for(;!n.done&&(n.value.type!==t.Bracket||"]"!==n.value.raw);){if(n.value.type===t.Comma){const e=o.items[o.items.length-1];if(!e)throw new g(l,n.value.loc.start,'Found "," without previous value for inline array');e.comma=!0,e.loc.end=n.value.loc.start}else if(n.value.type===t.Comment)r.push(fe(n));else{const[t,...a]=se(n,l),c={type:e.InlineItem,loc:w(t.loc),item:t,comma:!1};o.items.push(c),U(r,a)}n.next()}if(n.done||n.value.type!==t.Bracket||"]"!==n.value.raw)throw new g(l,n.done?o.loc.start:n.value.loc.start,`Expected "]", found ${n.done?"end of file":n.value.raw}`);return o.loc.end=n.value.loc.end,[o,r]}(n,l);yield o,yield*r}}}function fe(t){return{type:e.Comment,loc:t.value.loc,raw:t.value.raw}}function me(t,n){var l;function o(e,t){for(const n of e)r(n,t)}function r(t,l){const a=n[t.type];switch(a&&"function"==typeof a&&a(t,l),a&&a.enter&&a.enter(t,l),t.type){case e.Document:o(t.items,t);break;case e.Table:r(t.key,t),o(t.items,t);break;case e.TableKey:r(t.item,t);break;case e.TableArray:r(t.key,t),o(t.items,t);break;case e.TableArrayKey:r(t.item,t);break;case e.KeyValue:r(t.key,t),r(t.value,t);break;case e.InlineArray:o(t.items,t);break;case e.InlineItem:r(t.item,t);break;case e.InlineTable:o(t.items,t);break;case e.Key:case e.String:case e.Integer:case e.Float:case e.Boolean:case e.DateTime:case e.Comment:break;default:throw new Error(`Unrecognized node type "${t.type}"`)}a&&a.exit&&a.exit(t,l)}null!=(l=t)&&"function"==typeof l[Symbol.iterator]?o(t,null):r(t,null)}const de=new WeakMap,ye=e=>(de.has(e)||de.set(e,new WeakMap),de.get(e)),pe=new WeakMap,ve=e=>(pe.has(e)||pe.set(e,new WeakMap),pe.get(e));function he(e,t,n,l){if(s(t)){const e=t.items.indexOf(n);if(e<0)throw new Error("Could not find existing item in parent node for replace");t.items.splice(e,1,l)}else if(r(t)&&i(t.value)&&!i(n)){const e=t.value.items.indexOf(n);if(e<0)throw new Error("Could not find existing item in parent node for replace");t.value.items.splice(e,1,l)}else if(f(t))t.item=l;else{if(!r(t))throw new Error(`Unsupported parent type "${t.type}" for replace`);t.key===n?t.key=l:t.value=l}Te(l,{lines:n.loc.start.line-l.loc.start.line,columns:n.loc.start.column-l.loc.start.column});const o=y(n.loc),a=y(l.loc);Ie({lines:a.lines-o.lines,columns:a.columns-o.columns},ve(e),l,n)}function we(e,t,f,m){if(!s(t))throw new Error(`Unsupported parent type "${t.type}" for insert`);let d,p;m=null!=m&&"number"==typeof m?m:t.items.length,a(t)||i(t)?({shift:d,offset:p}=function(e,t,n){if(!c(t))throw new Error(`Incompatible child type "${t.type}"`);const l=null!=n?e.items[n-1]:D(e.items),o=null==n||n===e.items.length;e.items.splice(n,0,t);const r=!!l,i=!o,s=o&&!0===t.comma;r&&(l.comma=!0);i&&(t.comma=!0);const f=a(e)&&function(e){if(!e.items.length)return!1;return y(e.loc).lines>e.items.length}(e),m=l?{line:l.loc.end.line,column:f?u(l)?e.loc.start.column:l.loc.start.column:l.loc.end.column}:h(e.loc.start);let d=0;if(f)d=1;else{const e=2,t=1;m.column+=r?e:t}m.line+=d;const p={lines:m.line-t.loc.start.line,columns:m.column-t.loc.start.column},v=y(t.loc),w={lines:v.lines+(d-1),columns:v.columns+(r||i?2:0)+(s?1:0)};return{shift:p,offset:w}}(t,f,m)):({shift:d,offset:p}=function(e,t,a){if(c=t,!(r(c)||l(c)||o(c)||u(c)))throw new Error(`Incompatible child type "${t.type}"`);var c;const i=e.items[a-1],s=n(e)&&!e.items.length;e.items.splice(a,0,t);const f=i?{line:i.loc.end.line,column:u(i)?e.loc.start.column:i.loc.start.column}:h(e.loc.start),m=l(t)||o(t);let d=0;s||(d=m?2:1);f.line+=d;const p={lines:f.line-t.loc.start.line,columns:f.column-t.loc.start.column},v=y(t.loc),w={lines:v.lines+(d-1),columns:v.columns};return{shift:p,offset:w}}(t,f,m)),Te(f,d);const v=t.items[m-1],w=v&&ve(e).get(v);w&&(p.lines+=w.lines,p.columns+=w.columns,ve(e).delete(v));ve(e).set(f,p)}function ge(e,t,n){if(!s(t))throw new Error(`Unsupported parent type "${t.type}" for remove`);let l=t.items.indexOf(n);if(l<0){if(l=t.items.findIndex((e=>f(e)&&e.item===n)),l<0)throw new Error("Could not find node in parent for removal");n=t.items[l]}const o=t.items[l-1];let r=t.items[l+1];t.items.splice(l,1);let a=y(n.loc);r&&u(r)&&r.loc.start.line===n.loc.end.line&&(a=y({start:n.loc.start,end:r.loc.end}),r=t.items[l+1],t.items.splice(l,1));const i=o&&c(o)||r&&c(r),m=o&&o.loc.end.line===n.loc.start.line,d=r&&r.loc.start.line===n.loc.end.line,p=i&&(m||d),v={lines:-(a.lines-(p?1:0)),columns:-a.columns};i&&m&&(v.columns-=2),i&&!o&&r&&(v.columns-=2),i&&o&&!r&&(o.comma=!1);const h=o||t,w=o?ve(e):ye(e),g=ve(e),b=w.get(h);b&&(v.lines+=b.lines,v.columns+=b.columns);const k=g.get(n);k&&(v.lines+=k.lines,v.columns+=k.columns),w.set(h,v)}function be(e,t,n=!0){if(!n)return;if(!t.items.length)return;Ie({lines:0,columns:1},ye(e),t);const l=D(t.items);Ie({lines:0,columns:1},ve(e),l)}function ke(e,t,n=!1){if(!n)return;if(!t.items.length)return;const l=D(t.items);l.comma=!0,Ie({lines:0,columns:1},ve(e),l)}function xe(t){const n=ye(t),l=ve(t),o={lines:0,columns:{}};function r(e){const t=o.lines;e.loc.start.line+=t;const l=o.columns[e.loc.start.line]||0;e.loc.start.column+=l;const r=n.get(e);r&&(o.lines+=r.lines,o.columns[e.loc.start.line]=(o.columns[e.loc.start.line]||0)+r.columns)}function a(e){const t=o.lines;e.loc.end.line+=t;const n=o.columns[e.loc.end.line]||0;e.loc.end.column+=n;const r=l.get(e);r&&(o.lines+=r.lines,o.columns[e.loc.end.line]=(o.columns[e.loc.end.line]||0)+r.columns)}const c={enter:r,exit:a};me(t,{[e.Document]:c,[e.Table]:c,[e.TableArray]:c,[e.InlineTable]:c,[e.InlineArray]:c,[e.InlineItem]:c,[e.TableKey]:c,[e.TableArrayKey]:c,[e.KeyValue]:{enter(e){const t=e.loc.start.line+o.lines,n=l.get(e.key);e.equals+=(o.columns[t]||0)+(n?n.columns:0),r(e)},exit:a},[e.Key]:c,[e.String]:c,[e.Integer]:c,[e.Float]:c,[e.Boolean]:c,[e.DateTime]:c,[e.Comment]:c}),de.delete(t),pe.delete(t)}function Te(t,n,l={}){const{first_line_only:o=!1}=l,r=t.loc.start.line,{lines:a,columns:c}=n,i=e=>{o&&e.loc.start.line!==r||(e.loc.start.column+=c,e.loc.end.column+=c),e.loc.start.line+=a,e.loc.end.line+=a};return me(t,{[e.Table]:i,[e.TableKey]:i,[e.TableArray]:i,[e.TableArrayKey]:i,[e.KeyValue](e){i(e),e.equals+=c},[e.Key]:i,[e.String]:i,[e.Integer]:i,[e.Float]:i,[e.Boolean]:i,[e.DateTime]:i,[e.InlineArray]:i,[e.InlineItem]:i,[e.InlineTable]:i,[e.Comment]:i}),t}function Ie(e,t,n,l){const o=t.get(l||n);o&&(e.lines+=o.lines,e.columns+=o.columns),t.set(n,e)}function Ae(){return{type:e.Document,loc:{start:{line:1,column:0},end:{line:1,column:0}},items:[]}}function Ee(t){const n=function(t){const n=Ce(t);return{type:e.TableKey,loc:{start:{line:1,column:0},end:{line:1,column:n.length+2}},item:{type:e.Key,loc:{start:{line:1,column:1},end:{line:1,column:n.length+1}},value:t,raw:n}}}(t);return{type:e.Table,loc:w(n.loc),key:n,items:[]}}function $e(t){const n=function(t){const n=Ce(t);return{type:e.TableArrayKey,loc:{start:{line:1,column:0},end:{line:1,column:n.length+4}},item:{type:e.Key,loc:{start:{line:1,column:2},end:{line:1,column:n.length+2}},value:t,raw:n}}}(t);return{type:e.TableArray,loc:w(n.loc),key:n,items:[]}}function Se(t,n){const l=function(t){const n=Ce(t);return{type:e.Key,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t),{column:o}=l.loc.end,r=o+1;return Te(n,{lines:0,columns:o+3-n.loc.start.column},{first_line_only:!0}),{type:e.KeyValue,loc:{start:h(l.loc.start),end:h(n.loc.end)},key:l,equals:r,value:n}}const Ke=/[\w,\d,\_,\-]+/;function Ce(e){return e.map((e=>Ke.test(e)?e:JSON.stringify(e))).join(".")}function Oe(t){return{type:e.InlineItem,loc:w(t.loc),item:t,comma:!1}}function De(e){return e.items.filter((e=>{if(!r(e))return!1;const t=i(e.value),n=a(e.value)&&e.value.items.length&&i(e.value.items[0].item);return t||n})).forEach((t=>{ge(e,e,t),i(t.value)?we(e,e,function(e){const t=Ee(e.key.value);for(const n of e.value.items)we(t,t,n.item);return xe(t),t}(t)):function(e){const t=Ae();for(const n of e.value.items){const l=$e(e.key.value);we(t,t,l);for(const e of n.item.items)we(t,l,e.item)}return xe(t),t.items}(t).forEach((t=>{we(e,e,t)}))})),xe(e),e}function Be(e){let t=0,n=0;for(const l of e.items)0===n&&l.loc.start.line>1?t=1-l.loc.start.line:l.loc.start.line+t>n+2&&(t+=n+2-(l.loc.start.line+t)),Te(l,{lines:t,columns:0}),n=l.loc.end.line;return e}const je={printWidth:80,trailingComma:!1,bracketSpacing:!0};function Fe(e,t={}){t=Object.assign({},je,t),e=function(e){let t={};for(const n in e)N(e[n])||Array.isArray(e[n])||(t[n]=e[n]);for(const n in e)(N(e[n])||Array.isArray(e[n]))&&(t[n]=e[n]);return t}(e=Le(e));const n=Ae();for(const l of Ne(e,t))we(n,n,l);xe(n);const l=L(n,De,(e=>function(e){return e}(e)),Be);return l}function*Ne(e,t){for(const n of Object.keys(e))yield Se([n],_e(e[n],t))}function _e(t,n){if(null==t)throw new Error('"null" and "undefined" values are not supported');return function(e){return"string"==typeof e}(t)?function(t){const n=JSON.stringify(t);return{type:e.String,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):j(t)?function(t){const n=t.toString();return{type:e.Integer,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):function(e){return"number"==typeof e&&!j(e)}(t)?function(t){const n=t.toString();return{type:e.Float,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):function(e){return"boolean"==typeof e}(t)?function(t){return{type:e.Boolean,loc:{start:{line:1,column:0},end:{line:1,column:t?4:5}},value:t}}(t):F(t)?function(t){const n=t.toISOString();return{type:e.DateTime,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):Array.isArray(t)?function(t,n){const l={type:e.InlineArray,loc:{start:{line:1,column:0},end:{line:1,column:2}},items:[]};for(const e of t){we(l,l,Oe(_e(e,n)))}return be(l,l,n.bracketSpacing),ke(l,l,n.trailingComma),xe(l),l}(t,n):function(t,n){if(t=Le(t),!N(t))return _e(t,n);const l={type:e.InlineTable,loc:{start:{line:1,column:0},end:{line:1,column:2}},items:[]},o=[...Ne(t,n)];for(const e of o){we(l,l,Oe(e))}return be(l,l,n.bracketSpacing),ke(l,l,n.trailingComma),xe(l),l}(t,n)}function Le(e){return e?F(e)?e:"function"==typeof e.toJSON?e.toJSON():e:e}const Me=/(\r\n|\n)/g;function Ue(t,n="\n"){const l=[];return me(t,{[e.TableKey](e){const{start:t,end:n}=e.loc;Ve(l,{start:t,end:{line:t.line,column:t.column+1}},"["),Ve(l,{start:{line:n.line,column:n.column-1},end:n},"]")},[e.TableArrayKey](e){const{start:t,end:n}=e.loc;Ve(l,{start:t,end:{line:t.line,column:t.column+2}},"[["),Ve(l,{start:{line:n.line,column:n.column-2},end:n},"]]")},[e.KeyValue](e){const{start:{line:t}}=e.loc;Ve(l,{start:{line:t,column:e.equals},end:{line:t,column:e.equals+1}},"=")},[e.Key](e){Ve(l,e.loc,e.raw)},[e.String](e){Ve(l,e.loc,e.raw)},[e.Integer](e){Ve(l,e.loc,e.raw)},[e.Float](e){Ve(l,e.loc,e.raw)},[e.Boolean](e){Ve(l,e.loc,e.value.toString())},[e.DateTime](e){Ve(l,e.loc,e.raw)},[e.InlineArray](e){const{start:t,end:n}=e.loc;Ve(l,{start:t,end:{line:t.line,column:t.column+1}},"["),Ve(l,{start:{line:n.line,column:n.column-1},end:n},"]")},[e.InlineTable](e){const{start:t,end:n}=e.loc;Ve(l,{start:t,end:{line:t.line,column:t.column+1}},"{"),Ve(l,{start:{line:n.line,column:n.column-1},end:n},"}")},[e.InlineItem](e){if(!e.comma)return;const t=e.loc.end;Ve(l,{start:t,end:{line:t.line,column:t.column+1}},",")},[e.Comment](e){Ve(l,e.loc,e.raw)}}),l.join(n)+n}function Ve(e,t,n){const l=n.split(Me).filter((e=>"\n"!==e&&"\r\n"!==e)),o=t.end.line-t.start.line+1;if(l.length!==o)throw new Error(`Mismatch between location and raw string, expected ${o} lines for "${n}"`);for(let n=t.start.line;n<=t.end.line;n++){const o=qe(e,n),r=n===t.start.line,a=n===t.end.line,c=r?o.substr(0,t.start.column).padEnd(t.start.column," "):"",i=a?o.substr(t.end.column):"";e[n-1]=c+l[n-t.start.line]+i}}function qe(e,t){if(!e[t-1])for(let n=0;n<t;n++)e[n]||(e[n]="");return e[t-1]}function Re(t,n=""){const l=B(),o=new Set,r=new Set,a=new Set;let c,u=l,s=!1;return me(t,{[e.Table](e){const t=e.key.item.value;try{Je(l,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const c=He(t);o.add(c),a.add(c),u=ze(l,t)},[e.TableArray](e){const t=e.key.item.value;try{Je(l,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const c=He(t);r.add(c),a.add(c),u=function(e,t){const n=Pe(e,t.slice(0,-1)),l=D(t);n[l]||(n[l]=[]);const o=B();return n[D(t)].push(o),o}(l,t)},[e.KeyValue]:{enter(e){if(s)return;const t=e.key.value;try{Je(u,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const l=We(e.value);(t.length>1?ze(u,t.slice(0,-1)):u)[D(t)]=l,a.add(He(t)),i(e.value)&&(c=u,u=l)},exit(e){i(e.value)&&(u=c)}},[e.InlineTable]:{enter(){s=!0},exit(){s=!1}}}),l}function We(t){switch(t.type){case e.InlineTable:const n=B();return t.items.forEach((({item:e})=>{const t=e.key.value,l=We(e.value);(t.length>1?ze(n,t.slice(0,-1)):n)[D(t)]=l})),n;case e.InlineArray:return t.items.map((e=>We(e.item)));case e.String:case e.Integer:case e.Float:case e.Boolean:case e.DateTime:return t.value;default:throw new Error(`Unrecognized value type "${t.type}"`)}}function Je(t,n,l,o){let r=[],a=0;for(const e of n){if(r.push(e),!_(t,e))return;if("object"!=typeof(c=t[e])&&!F(c))throw new Error(`Invalid key, a value has already been defined for ${r.join(".")}`);const l=He(r);if(Array.isArray(t[e])&&!o.table_arrays.has(l))throw new Error(`Invalid key, cannot add to a static array at ${l}`);const i=a++<n.length-1;t=Array.isArray(t[e])&&i?D(t[e]):t[e]}var c;const i=He(n);if(t&&l===e.Table&&o.defined.has(i))throw new Error(`Invalid key, a table has already been defined named ${i}`);if(t&&l===e.TableArray&&!o.table_arrays.has(i))throw new Error(`Invalid key, cannot add an array of tables to a table at ${i}`)}function ze(e,t){const n=Pe(e,t.slice(0,-1)),l=D(t);return n[l]||(n[l]=B()),n[l]}function Pe(e,t){return t.reduce(((e,t)=>(e[t]||(e[t]=B()),Array.isArray(e[t])?D(e[t]):e[t])),e)}function He(e){return e.join(".")}var Ge;function Qe(e){return e.type===Ge.Remove}function Xe(e,t,n=[]){return e===t||(o=t,F(l=e)&&F(o)&&l.toISOString()===o.toISOString())?[]:Array.isArray(e)&&Array.isArray(t)?function(e,t,n=[]){let l=[];const o=e.map(M),r=t.map(M);r.forEach(((a,c)=>{const i=c>=o.length;if(!i&&o[c]===a)return;const u=o.indexOf(a,c+1);if(!i&&u>-1){l.push({type:Ge.Move,path:n,from:u,to:c});const e=o.splice(u,1);return void o.splice(c,0,...e)}const s=!r.includes(o[c]);if(!i&&s)return U(l,Xe(e[c],t[c],n.concat(c))),void(o[c]=a);l.push({type:Ge.Add,path:n.concat(c)}),o.splice(c,0,a)}));for(let e=r.length;e<o.length;e++)l.push({type:Ge.Remove,path:n.concat(e)});return l}(e,t,n):N(e)&&N(t)?function(e,t,n=[]){let l=[];const o=Object.keys(e),r=o.map((t=>M(e[t]))),a=Object.keys(t),c=a.map((e=>M(t[e]))),i=(e,t)=>{if(t.indexOf(e)<0)return!1;const n=o[r.indexOf(e)];return!a.includes(n)};return o.forEach(((o,u)=>{const s=n.concat(o);if(a.includes(o))U(l,Xe(e[o],t[o],s));else if(i(r[u],c)){const e=a[c.indexOf(r[u])];l.push({type:Ge.Rename,path:n,from:o,to:e})}else l.push({type:Ge.Remove,path:s})})),a.forEach(((e,t)=>{o.includes(e)||i(c[t],r)||l.push({type:Ge.Add,path:n.concat(e)})})),l}(e,t,n):[{type:Ge.Edit,path:n}];var l,o}function Ye(e,t){if(!t.length)return e;if(r(e))return Ye(e.value,t);const n={};let a;if(s(e)&&e.items.some(((e,i)=>{try{let u=[];if(r(e))u=e.key.value;else if(l(e))u=e.key.item.value;else if(o(e)){u=e.key.item.value;const t=M(u);n[t]||(n[t]=0);const l=n[t]++;u=u.concat(l)}else c(e)&&r(e.item)?u=e.item.key.value:c(e)&&(u=[i]);return!(!u.length||!function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(u,t.slice(0,u.length)))&&(a=Ye(e,t.slice(u.length)),!0)}catch(e){return!1}})),!a)throw new Error(`Could not find node at path ${t.join(".")}`);return a}function Ze(e,t){try{return Ye(e,t)}catch(e){}}function et(e,t){let n,l=t;for(;l.length&&!n;)l=l.slice(0,-1),n=Ze(e,l);if(!n)throw new Error(`Count not find parent node for path ${t.join(".")}`);return n}!function(e){e.Add="Add",e.Edit="Edit",e.Remove="Remove",e.Move="Move",e.Rename="Rename"}(Ge||(Ge={})),exports.parse=function(e){return Re(ie(e),e)},exports.patch=function(t,i,u){const s=[...ie(t)],m=Re(s);return Ue(function(e,t,i){return i.forEach((i=>{if(function(e){return e.type===Ge.Add}(i)){const c=Ye(t,i.path),u=i.path.slice(0,-1);let s,f=D(i.path),m=o(c);if(j(f)&&!u.some(j)){const t=Ze(e,u.concat(0));t&&o(t)&&(m=!0)}if(l(c))s=e;else if(m){s=e;const t=e,n=Ze(t,u.concat(f-1)),l=Ze(t,u.concat(f));f=l?t.items.indexOf(l):n?t.items.indexOf(n)+1:t.items.length}else s=et(e,i.path),r(s)&&(s=s.value);o(s)||a(s)||n(s)?we(e,s,c,f):we(e,s,c)}else if(function(e){return e.type===Ge.Edit}(i)){let n,l=Ye(e,i.path),o=Ye(t,i.path);r(l)&&r(o)?(n=l,l=l.value,o=o.value):r(l)&&c(o)&&r(o.item)?(n=l,l=l.value,o=o.item.value):n=et(e,i.path),he(e,n,l,o)}else if(Qe(i)){let t=et(e,i.path);r(t)&&(t=t.value);const n=Ye(e,i.path);ge(e,t,n)}else if(function(e){return e.type===Ge.Move}(i)){let t=Ye(e,i.path);f(t)&&(t=t.item),r(t)&&(t=t.value);const n=t.items[i.from];ge(e,t,n),we(e,t,n,i.to)}else if(function(e){return e.type===Ge.Rename}(i)){let n=Ye(e,i.path.concat(i.from)),l=Ye(t,i.path.concat(i.to));f(n)&&(n=n.item),f(l)&&(l=l.item),he(e,n,n.key,l.key)}})),xe(e),e}({type:e.Document,loc:{start:{line:1,column:0},end:{line:1,column:0}},items:s},Fe(i,u),function(e){for(let t=0;t<e.length;t++){const n=e[t];if(Qe(n)){let l=t+1;for(;l<e.length;){const o=e[l];if(Qe(o)&&o.path[0]===n.path[0]&&o.path[1]>n.path[1]){e.splice(l,1),e.splice(t,0,o),t=0;break}l++}}}return e}(Xe(m,i))).items)},exports.stringify=function(e,t){return Ue(Fe(e,t).items)};
|
|
1
|
+
//! @decimalturn/toml-patch v0.3.8 - https://github.com/DecimalTurn/toml-patch - @license: MIT
|
|
2
|
+
"use strict";var e,t;function n(t){return t.type===e.Document}function l(t){return t.type===e.Table}function o(t){return t.type===e.TableArray}function r(t){return t.type===e.KeyValue}function a(t){return t.type===e.InlineArray}function i(t){return t.type===e.InlineItem}function c(t){return t.type===e.InlineTable}function u(t){return t.type===e.Comment}function s(e){return n(e)||l(e)||o(e)||c(e)||a(e)}function f(t){return function(t){return t.type===e.TableKey}(t)||function(t){return t.type===e.TableArrayKey}(t)||i(t)}!function(e){e.Document="Document",e.Table="Table",e.TableKey="TableKey",e.TableArray="TableArray",e.TableArrayKey="TableArrayKey",e.KeyValue="KeyValue",e.Key="Key",e.String="String",e.Integer="Integer",e.Float="Float",e.Boolean="Boolean",e.DateTime="DateTime",e.InlineArray="InlineArray",e.InlineItem="InlineItem",e.InlineTable="InlineTable",e.Comment="Comment"}(e||(e={}));class m{constructor(e){this.iterator=e,this.index=-1,this.value=void 0,this.done=!1,this.peeked=null}next(){var e;if(this.done)return d();const t=this.peeked||this.iterator.next();return this.index+=1,this.value=t.value,this.done=null!==(e=t.done)&&void 0!==e&&e,this.peeked=null,t}peek(){return this.done?d():(this.peeked||(this.peeked=this.iterator.next()),this.peeked)}[Symbol.iterator](){return this}}function d(){return{value:void 0,done:!0}}function p(e){return{lines:e.end.line-e.start.line+1,columns:e.end.column-e.start.column}}function y(e,t){const n=Array.isArray(e)?e:v(e),l=n.findIndex((e=>e>=t))+1;return{line:l,column:t-(n[l-2]+1||0)}}function v(e){const t=/\r\n|\n/g,n=[];let l;for(;null!=(l=t.exec(e));)n.push(l.index+l[0].length-1);return n.push(e.length+1),n}function h(e){return{line:e.line,column:e.column}}function w(e){return{start:h(e.start),end:h(e.end)}}class g extends Error{constructor(e,t,n){let l=`Error parsing TOML (${t.line}, ${t.column+1}):\n`;if(e){const n=function(e,t){const n=v(e),l=n[t.line-2]||0,o=n[t.line-1]||e.length;return e.substr(l,o-l)}(e,t),o=`${function(e,t=" "){return t.repeat(e)}(t.column)}^`;n&&(l+=`${n}\n${o}\n`)}l+=n,super(l),this.line=t.line,this.column=t.column}}!function(e){e.Bracket="Bracket",e.Curly="Curly",e.Equal="Equal",e.Comma="Comma",e.Dot="Dot",e.Comment="Comment",e.Literal="Literal"}(t||(t={}));const b=/\s/,k=/(\r\n|\n)/,x='"',T="'",I=/[\w,\d,\",\',\+,\-,\_]/;function*A(e){const n=new m(e[Symbol.iterator]());n.next();const l=function(e){const t=v(e);return(e,n)=>({start:y(t,e),end:y(t,n)})}(e);for(;!n.done;){if(b.test(n.value));else if("["===n.value||"]"===n.value)yield $(n,l,t.Bracket);else if("{"===n.value||"}"===n.value)yield $(n,l,t.Curly);else if("="===n.value)yield $(n,l,t.Equal);else if(","===n.value)yield $(n,l,t.Comma);else if("."===n.value)yield $(n,l,t.Dot);else if("#"===n.value)yield E(n,l);else{const t=C(e,n.index,T)||C(e,n.index,x);t?yield S(n,l,t,e):yield K(n,l,e)}n.next()}}function $(e,t,n){return{type:n,raw:e.value,loc:t(e.index,e.index+1)}}function E(e,n){const l=e.index;let o=e.value;for(;!e.peek().done&&!k.test(e.peek().value);)e.next(),o+=e.value;return{type:t.Comment,raw:o,loc:n(l,e.index+1)}}function S(e,n,l,o){const r=e.index;let a=l+l+l,i=a;for(e.next(),e.next(),e.next();!e.done&&(!C(o,e.index,l)||O(o,e.index,l));)i+=e.value,e.next();if(e.done)throw new g(o,y(o,e.index),`Expected close of multiline string with ${a}, reached end of file`);return i+=a,e.next(),e.next(),{type:t.Literal,raw:i,loc:n(r,e.index+1)}}function K(e,n,l){if(!I.test(e.value))throw new g(l,y(l,e.index),`Unsupported character "${e.value}". Expected ALPHANUMERIC, ", ', +, -, or _`);const o=e.index;let r=e.value,a=e.value===x,i=e.value===T;const c=e=>{if(e.peek().done)return!0;const t=e.peek().value;return!(a||i)&&(b.test(t)||","===t||"."===t||"]"===t||"}"===t||"="===t||"#"===t)};for(;!e.done&&!c(e)&&(e.next(),e.value===x&&(a=!a),e.value!==T||a||(i=!i),r+=e.value,!e.peek().done);){let t=e.peek().value;a&&"\\"===e.value&&(t===x?(r+=x,e.next()):"\\"===t&&(r+="\\",e.next()))}if(a||i)throw new g(l,y(l,o),`Expected close of string with ${a?x:T}`);return{type:t.Literal,raw:r,loc:n(o,e.index+1)}}function C(e,t,n){if(!n)return!1;if(!(e[t]===n&&e[t+1]===n&&e[t+2]===n))return!1;const l=e.slice(0,t).match(/\\+$/);if(!l)return n;return!(l[0].length%2!=0)&&n}function O(e,t,n){return!!n&&(e[t]===n&&e[t+1]===n&&e[t+2]===n&&e[t+3]===n)}function D(e){return e[e.length-1]}function j(){return Object.create(null)}function B(e){return"number"==typeof e&&e%1==0&&isFinite(e)&&!Object.is(e,-0)}function N(e){return"[object Date]"===Object.prototype.toString.call(e)}function F(e){return e&&"object"==typeof e&&!N(e)&&!Array.isArray(e)}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,...t){return t.reduce(((e,t)=>t(e)),e)}function M(e){if(F(e)){return`{${Object.keys(e).sort().map((t=>`${JSON.stringify(t)}:${M(e[t])}`)).join(",")}}`}return Array.isArray(e)?`[${e.map(M).join(",")}]`:JSON.stringify(e)}function U(e,t){const n=e.length,l=t.length;e.length=n+l;for(let o=0;o<l;o++)e[n+o]=t[o]}const V=/\r\n/g,q=/\n/g,R=/^(\r\n|\n)/,W=/(?<!\\)(?:\\\\)*(\\\s*[\n\r\n]\s*)/g;function J(e){return e.startsWith("'''")?_(H(e,3),G):e.startsWith(T)?H(e,1):e.startsWith('"""')?_(H(e,3),G,X,Q,z,P):e.startsWith(x)?_(H(e,1),P):e}function z(e){let t="",n=0;for(let l=0;l<e.length;l++){const o=e[l];t+='"'===o&&n%2==0?'\\"':o,"\\"===o?n++:n=0}return t}function P(e){const t=e.replace(/\\U[a-fA-F0-9]{8}/g,(e=>{const t=parseInt(e.replace("\\U",""),16),n=String.fromCodePoint(t);return H(JSON.stringify(n),1)})),n=t.replace(/\t/g,"\\t");return JSON.parse(`"${n}"`)}function H(e,t){return e.slice(t,e.length-t)}function G(e){return e.replace(R,"")}function Q(e){return e.replace(V,"\\r\\n").replace(q,"\\n")}function X(e){return e.replace(W,((e,t)=>e.replace(t,"")))}const Y="true",Z=/e/i,ee=/\_/g,te=/inf/,ne=/nan/,le=/^0x/,oe=/^0o/,re=/^0b/,ae=/(\d{4})-(\d{2})-(\d{2})/,ie=/(\d{2}):(\d{2}):(\d{2})/;function*ce(e){const t=A(e),n=new m(t);for(;!n.next().done;)yield*ue(n,e)}function*ue(n,l){if(n.value.type===t.Comment)yield fe(n);else if(n.value.type===t.Bracket)yield function(n,l){const o=n.peek().done||n.peek().value.type!==t.Bracket?e.Table:e.TableArray,r=o===e.Table;if(r&&"["!==n.value.raw)throw new g(l,n.value.loc.start,`Expected table opening "[", found ${n.value.raw}`);if(!r&&("["!==n.value.raw||"["!==n.peek().value.raw))throw new g(l,n.value.loc.start,`Expected array of tables opening "[[", found ${n.value.raw+n.peek().value.raw}`);const a=r?{type:e.TableKey,loc:n.value.loc}:{type:e.TableArrayKey,loc:n.value.loc};n.next(),o===e.TableArray&&n.next();if(n.done)throw new g(l,a.loc.start,"Expected table key, reached end of file");a.item={type:e.Key,loc:w(n.value.loc),raw:n.value.raw,value:[J(n.value.raw)]};for(;!n.peek().done&&n.peek().value.type===t.Dot;){n.next();const e=n.value;n.next();const t=" ".repeat(e.loc.start.column-a.item.loc.end.column),l=" ".repeat(n.value.loc.start.column-e.loc.end.column);a.item.loc.end=n.value.loc.end,a.item.raw+=`${t}.${l}${n.value.raw}`,a.item.value.push(J(n.value.raw))}if(n.next(),r&&(n.done||"]"!==n.value.raw))throw new g(l,n.done?a.item.loc.end:n.value.loc.start,`Expected table closing "]", found ${n.done?"end of file":n.value.raw}`);if(!r&&(n.done||n.peek().done||"]"!==n.value.raw||"]"!==n.peek().value.raw))throw new g(l,n.done||n.peek().done?a.item.loc.end:n.value.loc.start,`Expected array of tables closing "]]", found ${n.done||n.peek().done?"end of file":n.value.raw+n.peek().value.raw}`);r||n.next();a.loc.end=n.value.loc.end;let i=[];for(;!n.peek().done&&n.peek().value.type!==t.Bracket;)n.next(),U(i,[...ue(n,l)]);return{type:r?e.Table:e.TableArray,loc:{start:h(a.loc.start),end:i.length?h(i[i.length-1].loc.end):h(a.loc.end)},key:a,items:i}}(n,l);else{if(n.value.type!==t.Literal)throw new g(l,n.value.loc.start,`Unexpected token "${n.value.type}". Expected Comment, Bracket, or String`);yield*function(n,l){const o={type:e.Key,loc:w(n.value.loc),raw:n.value.raw,value:[J(n.value.raw)]};for(;!n.peek().done&&n.peek().value.type===t.Dot;)n.next(),n.next(),o.loc.end=n.value.loc.end,o.raw+=`.${n.value.raw}`,o.value.push(J(n.value.raw));if(n.next(),n.done||n.value.type!==t.Equal)throw new g(l,n.done?o.loc.end:n.value.loc.start,`Expected "=" for key-value, found ${n.done?"end of file":n.value.raw}`);const r=n.value.loc.start.column;if(n.next(),n.done)throw new g(l,o.loc.start,"Expected value for key-value, reached end of file");const[a,...i]=se(n,l);return[{type:e.KeyValue,key:o,value:a,loc:{start:h(o.loc.start),end:h(a.loc.end)},equals:r},...i]}(n,l)}}function*se(n,l){if(n.value.type===t.Literal)n.value.raw[0]===x||n.value.raw[0]===T?yield function(t){return{type:e.String,loc:t.value.loc,raw:t.value.raw,value:J(t.value.raw)}}(n):n.value.raw===Y||"false"===n.value.raw?yield function(t){return{type:e.Boolean,loc:t.value.loc,value:t.value.raw===Y}}(n):ae.test(n.value.raw)||ie.test(n.value.raw)?yield function(n,l){let o,r=n.value.loc,a=n.value.raw;if(!n.peek().done&&n.peek().value.type===t.Literal&&ae.test(a)&&ie.test(n.peek().value.raw)){const e=r.start;n.next(),r={start:e,end:n.value.loc.end},a+=` ${n.value.raw}`}if(!n.peek().done&&n.peek().value.type===t.Dot){const e=r.start;if(n.next(),n.peek().done||n.peek().value.type!==t.Literal)throw new g(l,n.value.loc.end,"Expected fractional value for DateTime");n.next(),r={start:e,end:n.value.loc.end},a+=`.${n.value.raw}`}if(ae.test(a))o=new Date(a.replace(" ","T"));else{const[e]=(new Date).toISOString().split("T");o=new Date(`${e}T${a}`)}return{type:e.DateTime,loc:r,raw:a,value:o}}(n,l):!n.peek().done&&n.peek().value.type===t.Dot||te.test(n.value.raw)||ne.test(n.value.raw)||Z.test(n.value.raw)&&!le.test(n.value.raw)?yield function(n,l){let o,r=n.value.loc,a=n.value.raw;if(te.test(a))o="-inf"===a?-1/0:1/0;else if(ne.test(a))o=NaN;else if(n.peek().done||n.peek().value.type!==t.Dot)o=Number(a.replace(ee,""));else{const e=r.start;if(n.next(),n.peek().done||n.peek().value.type!==t.Literal)throw new g(l,n.value.loc.end,"Expected fraction value for Float");n.next(),a+=`.${n.value.raw}`,r={start:e,end:n.value.loc.end},o=Number(a.replace(ee,""))}return{type:e.Float,loc:r,raw:a,value:o}}(n,l):yield function(t){if("-0"===t.value.raw||"+0"===t.value.raw)return{type:e.Integer,loc:t.value.loc,raw:t.value.raw,value:0};let n=10;le.test(t.value.raw)?n=16:oe.test(t.value.raw)?n=8:re.test(t.value.raw)&&(n=2);const l=parseInt(t.value.raw.replace(ee,"").replace(oe,"").replace(re,""),n);return{type:e.Integer,loc:t.value.loc,raw:t.value.raw,value:l}}(n);else if(n.value.type===t.Curly)yield function(n,l){if("{"!==n.value.raw)throw new g(l,n.value.loc.start,`Expected "{" for inline table, found ${n.value.raw}`);const o={type:e.InlineTable,loc:w(n.value.loc),items:[]};n.next();for(;!n.done&&(n.value.type!==t.Curly||"}"!==n.value.raw);){if(n.value.type===t.Comma){const e=o.items[o.items.length-1];if(!e)throw new g(l,n.value.loc.start,'Found "," without previous value in inline table');e.comma=!0,e.loc.end=n.value.loc.start,n.next();continue}const[r]=ue(n,l);if(r.type!==e.KeyValue)throw new g(l,n.value.loc.start,`Only key-values are supported in inline tables, found ${r.type}`);const a={type:e.InlineItem,loc:w(r.loc),item:r,comma:!1};o.items.push(a),n.next()}if(n.done||n.value.type!==t.Curly||"}"!==n.value.raw)throw new g(l,n.done?o.loc.start:n.value.loc.start,`Expected "}", found ${n.done?"end of file":n.value.raw}`);return o.loc.end=n.value.loc.end,o}(n,l);else{if(n.value.type!==t.Bracket)throw new g(l,n.value.loc.start,`Unrecognized token type "${n.value.type}". Expected String, Curly, or Bracket`);{const[o,r]=function(n,l){if("["!==n.value.raw)throw new g(l,n.value.loc.start,`Expected "[" for inline array, found ${n.value.raw}`);const o={type:e.InlineArray,loc:w(n.value.loc),items:[]};let r=[];n.next();for(;!n.done&&(n.value.type!==t.Bracket||"]"!==n.value.raw);){if(n.value.type===t.Comma){const e=o.items[o.items.length-1];if(!e)throw new g(l,n.value.loc.start,'Found "," without previous value for inline array');e.comma=!0,e.loc.end=n.value.loc.start}else if(n.value.type===t.Comment)r.push(fe(n));else{const[t,...a]=se(n,l),i={type:e.InlineItem,loc:w(t.loc),item:t,comma:!1};o.items.push(i),U(r,a)}n.next()}if(n.done||n.value.type!==t.Bracket||"]"!==n.value.raw)throw new g(l,n.done?o.loc.start:n.value.loc.start,`Expected "]", found ${n.done?"end of file":n.value.raw}`);return o.loc.end=n.value.loc.end,[o,r]}(n,l);yield o,yield*r}}}function fe(t){return{type:e.Comment,loc:t.value.loc,raw:t.value.raw}}function me(t,n){var l;function o(e,t){for(const n of e)r(n,t)}function r(t,l){const a=n[t.type];switch(a&&"function"==typeof a&&a(t,l),a&&a.enter&&a.enter(t,l),t.type){case e.Document:o(t.items,t);break;case e.Table:r(t.key,t),o(t.items,t);break;case e.TableKey:r(t.item,t);break;case e.TableArray:r(t.key,t),o(t.items,t);break;case e.TableArrayKey:r(t.item,t);break;case e.KeyValue:r(t.key,t),r(t.value,t);break;case e.InlineArray:o(t.items,t);break;case e.InlineItem:r(t.item,t);break;case e.InlineTable:o(t.items,t);break;case e.Key:case e.String:case e.Integer:case e.Float:case e.Boolean:case e.DateTime:case e.Comment:break;default:throw new Error(`Unrecognized node type "${t.type}"`)}a&&a.exit&&a.exit(t,l)}null!=(l=t)&&"function"==typeof l[Symbol.iterator]?o(t,null):r(t,null)}const de=new WeakMap,pe=e=>(de.has(e)||de.set(e,new WeakMap),de.get(e)),ye=new WeakMap,ve=e=>(ye.has(e)||ye.set(e,new WeakMap),ye.get(e));function he(e,t,n,l){if(s(t)){const e=t.items.indexOf(n);if(e<0)throw new Error("Could not find existing item in parent node for replace");t.items.splice(e,1,l)}else if(r(t)&&c(t.value)&&!c(n)){const e=t.value.items.indexOf(n);if(e<0)throw new Error("Could not find existing item in parent node for replace");t.value.items.splice(e,1,l)}else if(f(t))t.item=l;else{if(!r(t))throw new Error(`Unsupported parent type "${t.type}" for replace`);t.key===n?t.key=l:t.value=l}Te(l,{lines:n.loc.start.line-l.loc.start.line,columns:n.loc.start.column-l.loc.start.column});const o=p(n.loc),a=p(l.loc);Ie({lines:a.lines-o.lines,columns:a.columns-o.columns},ve(e),l,n)}function we(e,t,f,m){if(!s(t))throw new Error(`Unsupported parent type "${t.type}" for insert`);let d,y;m=null!=m&&"number"==typeof m?m:t.items.length,a(t)||c(t)?({shift:d,offset:y}=function(e,t,n){if(!i(t))throw new Error(`Incompatible child type "${t.type}"`);const l=null!=n?e.items[n-1]:D(e.items),o=null==n||n===e.items.length;e.items.splice(n,0,t);const r=!!l,c=!o,s=o&&!0===t.comma;r&&(l.comma=!0);c&&(t.comma=!0);const f=a(e)&&function(e){if(!e.items.length)return!1;return p(e.loc).lines>e.items.length}(e),m=l?{line:l.loc.end.line,column:f?u(l)?e.loc.start.column:l.loc.start.column:l.loc.end.column}:h(e.loc.start);let d=0;if(f)d=1;else{const e=2,t=1;m.column+=r?e:t}m.line+=d;const y={lines:m.line-t.loc.start.line,columns:m.column-t.loc.start.column},v=p(t.loc),w={lines:v.lines+(d-1),columns:v.columns+(r||c?2:0)+(s?1:0)};return{shift:y,offset:w}}(t,f,m)):({shift:d,offset:y}=function(e,t,a){if(i=t,!(r(i)||l(i)||o(i)||u(i)))throw new Error(`Incompatible child type "${t.type}"`);var i;const c=e.items[a-1],s=n(e)&&!e.items.length;e.items.splice(a,0,t);const f=c?{line:c.loc.end.line,column:u(c)?e.loc.start.column:c.loc.start.column}:h(e.loc.start),m=l(t)||o(t);let d=0;s||(d=m?2:1);f.line+=d;const y={lines:f.line-t.loc.start.line,columns:f.column-t.loc.start.column},v=p(t.loc),w={lines:v.lines+(d-1),columns:v.columns};return{shift:y,offset:w}}(t,f,m)),Te(f,d);const v=t.items[m-1],w=v&&ve(e).get(v);w&&(y.lines+=w.lines,y.columns+=w.columns,ve(e).delete(v));ve(e).set(f,y)}function ge(e,t,n){if(!s(t))throw new Error(`Unsupported parent type "${t.type}" for remove`);let l=t.items.indexOf(n);if(l<0){if(l=t.items.findIndex((e=>f(e)&&e.item===n)),l<0)throw new Error("Could not find node in parent for removal");n=t.items[l]}const o=t.items[l-1];let r=t.items[l+1];t.items.splice(l,1);let a=p(n.loc);r&&u(r)&&r.loc.start.line===n.loc.end.line&&(a=p({start:n.loc.start,end:r.loc.end}),r=t.items[l+1],t.items.splice(l,1));const c=o&&i(o)||r&&i(r),m=o&&o.loc.end.line===n.loc.start.line,d=r&&r.loc.start.line===n.loc.end.line,y=c&&(m||d),v={lines:-(a.lines-(y?1:0)),columns:-a.columns};void 0===o&&void 0===r&&(v.lines=0,v.columns=0),c&&m&&(v.columns-=2),c&&!o&&r&&(v.columns-=2),c&&o&&!r&&(o.comma=!1);const h=o||t,w=o?ve(e):pe(e),g=ve(e),b=w.get(h);b&&(v.lines+=b.lines,v.columns+=b.columns);const k=g.get(n);k&&(v.lines+=k.lines,v.columns+=k.columns),w.set(h,v)}function be(e,t,n=!0){if(!n)return;if(!t.items.length)return;Ie({lines:0,columns:1},pe(e),t);const l=D(t.items);Ie({lines:0,columns:1},ve(e),l)}function ke(e,t,n=!1){if(!n)return;if(!t.items.length)return;const l=D(t.items);l.comma=!0,Ie({lines:0,columns:1},ve(e),l)}function xe(t){const n=pe(t),l=ve(t),o={lines:0,columns:{}};function r(e){const t=o.lines;e.loc.start.line+=t;const l=o.columns[e.loc.start.line]||0;e.loc.start.column+=l;const r=n.get(e);r&&(o.lines+=r.lines,o.columns[e.loc.start.line]=(o.columns[e.loc.start.line]||0)+r.columns)}function a(e){const t=o.lines;e.loc.end.line+=t;const n=o.columns[e.loc.end.line]||0;e.loc.end.column+=n;const r=l.get(e);r&&(o.lines+=r.lines,o.columns[e.loc.end.line]=(o.columns[e.loc.end.line]||0)+r.columns)}const i={enter:r,exit:a};me(t,{[e.Document]:i,[e.Table]:i,[e.TableArray]:i,[e.InlineTable]:i,[e.InlineArray]:i,[e.InlineItem]:i,[e.TableKey]:i,[e.TableArrayKey]:i,[e.KeyValue]:{enter(e){const t=e.loc.start.line+o.lines,n=l.get(e.key);e.equals+=(o.columns[t]||0)+(n?n.columns:0),r(e)},exit:a},[e.Key]:i,[e.String]:i,[e.Integer]:i,[e.Float]:i,[e.Boolean]:i,[e.DateTime]:i,[e.Comment]:i}),de.delete(t),ye.delete(t)}function Te(t,n,l={}){const{first_line_only:o=!1}=l,r=t.loc.start.line,{lines:a,columns:i}=n,c=e=>{o&&e.loc.start.line!==r||(e.loc.start.column+=i,e.loc.end.column+=i),e.loc.start.line+=a,e.loc.end.line+=a};return me(t,{[e.Table]:c,[e.TableKey]:c,[e.TableArray]:c,[e.TableArrayKey]:c,[e.KeyValue](e){c(e),e.equals+=i},[e.Key]:c,[e.String]:c,[e.Integer]:c,[e.Float]:c,[e.Boolean]:c,[e.DateTime]:c,[e.InlineArray]:c,[e.InlineItem]:c,[e.InlineTable]:c,[e.Comment]:c}),t}function Ie(e,t,n,l){const o=t.get(l||n);o&&(e.lines+=o.lines,e.columns+=o.columns),t.set(n,e)}function Ae(){return{type:e.Document,loc:{start:{line:1,column:0},end:{line:1,column:0}},items:[]}}function $e(t){const n=function(t){const n=Ce(t);return{type:e.TableKey,loc:{start:{line:1,column:0},end:{line:1,column:n.length+2}},item:{type:e.Key,loc:{start:{line:1,column:1},end:{line:1,column:n.length+1}},value:t,raw:n}}}(t);return{type:e.Table,loc:w(n.loc),key:n,items:[]}}function Ee(t){const n=function(t){const n=Ce(t);return{type:e.TableArrayKey,loc:{start:{line:1,column:0},end:{line:1,column:n.length+4}},item:{type:e.Key,loc:{start:{line:1,column:2},end:{line:1,column:n.length+2}},value:t,raw:n}}}(t);return{type:e.TableArray,loc:w(n.loc),key:n,items:[]}}function Se(t,n){const l=function(t){const n=Ce(t);return{type:e.Key,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t),{column:o}=l.loc.end,r=o+1;return Te(n,{lines:0,columns:o+3-n.loc.start.column},{first_line_only:!0}),{type:e.KeyValue,loc:{start:h(l.loc.start),end:h(n.loc.end)},key:l,equals:r,value:n}}const Ke=/^[\w-]+$/;function Ce(e){return e.map((e=>Ke.test(e)?e:JSON.stringify(e))).join(".")}function Oe(t){return{type:e.InlineItem,loc:w(t.loc),item:t,comma:!1}}function De(e){return e.items.filter((e=>{if(!r(e))return!1;const t=c(e.value),n=a(e.value)&&e.value.items.length&&c(e.value.items[0].item);return t||n})).forEach((t=>{ge(e,e,t),c(t.value)?we(e,e,function(e){const t=$e(e.key.value);for(const n of e.value.items)we(t,t,n.item);return xe(t),t}(t)):function(e){const t=Ae();for(const n of e.value.items){const l=Ee(e.key.value);we(t,t,l);for(const e of n.item.items)we(t,l,e.item)}return xe(t),t.items}(t).forEach((t=>{we(e,e,t)}))})),xe(e),e}function je(e){let t=0,n=0;for(const l of e.items)0===n&&l.loc.start.line>1?t=1-l.loc.start.line:l.loc.start.line+t>n+2&&(t+=n+2-(l.loc.start.line+t)),Te(l,{lines:t,columns:0}),n=l.loc.end.line;return e}const Be={printWidth:80,trailingComma:!1,bracketSpacing:!0};function Ne(e,t={}){t=Object.assign({},Be,t),e=function(e){const t=[],n=[];for(const l in e)F(e[l])||Array.isArray(e[l])?n.push(l):t.push(l);const l={};for(let n=0;n<t.length;n++){const o=t[n];l[o]=e[o]}for(let t=0;t<n.length;t++){const o=n[t];l[o]=e[o]}return l}(e=_e(e));const n=Ae();for(const l of Fe(e,t))we(n,n,l);xe(n);const l=_(n,De,(e=>function(e){return e}(e)),je);return l}function*Fe(e,t){for(const n of Object.keys(e))yield Se([n],Le(e[n],t))}function Le(t,n){if(null==t)throw new Error('"null" and "undefined" values are not supported');return function(e){return"string"==typeof e}(t)?function(t){const n=JSON.stringify(t);return{type:e.String,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):B(t)?function(t){const n=t.toString();return{type:e.Integer,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):function(e){return"number"==typeof e&&(!B(e)||!isFinite(e)||Object.is(e,-0))}(t)?function(t){let n;return n=t===1/0?"inf":t===-1/0?"-inf":Number.isNaN(t)?"nan":Object.is(t,-0)?"-0.0":t.toString(),{type:e.Float,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):function(e){return"boolean"==typeof e}(t)?function(t){return{type:e.Boolean,loc:{start:{line:1,column:0},end:{line:1,column:t?4:5}},value:t}}(t):N(t)?function(t){const n=t.toISOString();return{type:e.DateTime,loc:{start:{line:1,column:0},end:{line:1,column:n.length}},raw:n,value:t}}(t):Array.isArray(t)?function(t,n){const l={type:e.InlineArray,loc:{start:{line:1,column:0},end:{line:1,column:2}},items:[]};for(const e of t){we(l,l,Oe(Le(e,n)))}return be(l,l,n.bracketSpacing),ke(l,l,n.trailingComma),xe(l),l}(t,n):function(t,n){if(t=_e(t),!F(t))return Le(t,n);const l={type:e.InlineTable,loc:{start:{line:1,column:0},end:{line:1,column:2}},items:[]},o=[...Fe(t,n)];for(const e of o){we(l,l,Oe(e))}return be(l,l,n.bracketSpacing),ke(l,l,n.trailingComma),xe(l),l}(t,n)}function _e(e){return e?N(e)?e:"function"==typeof e.toJSON?e.toJSON():e:e}const Me=/(\r\n|\n)/g;function Ue(t,n="\n",l){var o;const r=null!==(o=null==l?void 0:l.trailingNewline)&&void 0!==o?o:1,a=[];return me(t,{[e.TableKey](e){const{start:t,end:n}=e.loc;Ve(a,{start:t,end:{line:t.line,column:t.column+1}},"["),Ve(a,{start:{line:n.line,column:n.column-1},end:n},"]")},[e.TableArrayKey](e){const{start:t,end:n}=e.loc;Ve(a,{start:t,end:{line:t.line,column:t.column+2}},"[["),Ve(a,{start:{line:n.line,column:n.column-2},end:n},"]]")},[e.KeyValue](e){const{start:{line:t}}=e.loc;Ve(a,{start:{line:t,column:e.equals},end:{line:t,column:e.equals+1}},"=")},[e.Key](e){Ve(a,e.loc,e.raw)},[e.String](e){Ve(a,e.loc,e.raw)},[e.Integer](e){Ve(a,e.loc,e.raw)},[e.Float](e){Ve(a,e.loc,e.raw)},[e.Boolean](e){Ve(a,e.loc,e.value.toString())},[e.DateTime](e){Ve(a,e.loc,e.raw)},[e.InlineArray](e){const{start:t,end:n}=e.loc;Ve(a,{start:t,end:{line:t.line,column:t.column+1}},"["),Ve(a,{start:{line:n.line,column:n.column-1},end:n},"]")},[e.InlineTable](e){const{start:t,end:n}=e.loc;Ve(a,{start:t,end:{line:t.line,column:t.column+1}},"{"),Ve(a,{start:{line:n.line,column:n.column-1},end:n},"}")},[e.InlineItem](e){if(!e.comma)return;const t=e.loc.end;Ve(a,{start:t,end:{line:t.line,column:t.column+1}},",")},[e.Comment](e){Ve(a,e.loc,e.raw)}}),a.join(n)+n.repeat(r)}function Ve(e,t,n){const l=n.split(Me).filter((e=>"\n"!==e&&"\r\n"!==e)),o=t.end.line-t.start.line+1;if(l.length!==o)throw new Error(`Mismatch between location and raw string, expected ${o} lines for "${n}"`);for(let o=t.start.line;o<=t.end.line;o++){const r=qe(e,o);if(void 0===r)throw new Error(`Line ${o} is uninitialized when writing "${n}" at ${t.start.line}:${t.start.column} to ${t.end.line}:${t.end.column}`);const a=o===t.start.line,i=o===t.end.line,c=a?r.substr(0,t.start.column).padEnd(t.start.column," "):"",u=i?r.substr(t.end.column):"";e[o-1]=c+l[o-t.start.line]+u}}function qe(e,t){if(!e[t-1])for(let n=0;n<t;n++)e[n]||(e[n]="");return e[t-1]}function Re(t,n=""){const l=j(),o=new Set,r=new Set,a=new Set;let i=l,c=0;return me(t,{[e.Table](e){const t=e.key.item.value;try{Je(l,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const c=He(t);o.add(c),a.add(c),i=ze(l,t)},[e.TableArray](e){const t=e.key.item.value;try{Je(l,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const c=He(t);r.add(c),a.add(c),i=function(e,t){const n=Pe(e,t.slice(0,-1)),l=D(t);n[l]||(n[l]=[]);const o=j();return n[D(t)].push(o),o}(l,t)},[e.KeyValue]:{enter(e){if(c>0)return;const t=e.key.value;try{Je(i,t,e.type,{tables:o,table_arrays:r,defined:a})}catch(t){const l=t;throw new g(n,e.key.loc.start,l.message)}const l=We(e.value);(t.length>1?ze(i,t.slice(0,-1)):i)[D(t)]=l,a.add(He(t))}},[e.InlineTable]:{enter(){c++},exit(){c--}}}),l}function We(t){switch(t.type){case e.InlineTable:const n=j();return t.items.forEach((({item:e})=>{const t=e.key.value,l=We(e.value);(t.length>1?ze(n,t.slice(0,-1)):n)[D(t)]=l})),n;case e.InlineArray:return t.items.map((e=>We(e.item)));case e.String:case e.Integer:case e.Float:case e.Boolean:case e.DateTime:return t.value;default:throw new Error(`Unrecognized value type "${t.type}"`)}}function Je(t,n,l,o){let r=[],a=0;for(const e of n){if(r.push(e),!L(t,e))return;if("object"!=typeof(i=t[e])&&!N(i))throw new Error(`Invalid key, a value has already been defined for ${r.join(".")}`);const l=He(r);if(Array.isArray(t[e])&&!o.table_arrays.has(l))throw new Error(`Invalid key, cannot add to a static array at ${l}`);const c=a++<n.length-1;t=Array.isArray(t[e])&&c?D(t[e]):t[e]}var i;const c=He(n);if(t&&l===e.Table&&o.defined.has(c))throw new Error(`Invalid key, a table has already been defined named ${c}`);if(t&&l===e.TableArray&&!o.table_arrays.has(c))throw new Error(`Invalid key, cannot add an array of tables to a table at ${c}`)}function ze(e,t){const n=Pe(e,t.slice(0,-1)),l=D(t);return n[l]||(n[l]=j()),n[l]}function Pe(e,t){return t.reduce(((e,t)=>(e[t]||(e[t]=j()),Array.isArray(e[t])?D(e[t]):e[t])),e)}function He(e){return e.join(".")}var Ge;function Qe(e){return e.type===Ge.Remove}function Xe(e,t,n=[]){return e===t||(o=t,N(l=e)&&N(o)&&l.toISOString()===o.toISOString())?[]:Array.isArray(e)&&Array.isArray(t)?function(e,t,n=[]){let l=[];const o=e.map(M),r=t.map(M);r.forEach(((a,i)=>{const c=i>=o.length;if(!c&&o[i]===a)return;const u=o.indexOf(a,i+1);if(!c&&u>-1){l.push({type:Ge.Move,path:n,from:u,to:i});const e=o.splice(u,1);return void o.splice(i,0,...e)}const s=!r.includes(o[i]);if(!c&&s)return U(l,Xe(e[i],t[i],n.concat(i))),void(o[i]=a);l.push({type:Ge.Add,path:n.concat(i)}),o.splice(i,0,a)}));for(let e=r.length;e<o.length;e++)l.push({type:Ge.Remove,path:n.concat(e)});return l}(e,t,n):F(e)&&F(t)?function(e,t,n=[]){let l=[];const o=Object.keys(e),r=o.map((t=>M(e[t]))),a=Object.keys(t),i=a.map((e=>M(t[e]))),c=(e,t)=>{if(t.indexOf(e)<0)return!1;const n=o[r.indexOf(e)];return!a.includes(n)};return o.forEach(((o,u)=>{const s=n.concat(o);if(a.includes(o))U(l,Xe(e[o],t[o],s));else if(c(r[u],i)){const e=a[i.indexOf(r[u])];l.push({type:Ge.Rename,path:n,from:o,to:e})}else l.push({type:Ge.Remove,path:s})})),a.forEach(((e,t)=>{o.includes(e)||c(i[t],r)||l.push({type:Ge.Add,path:n.concat(e)})})),l}(e,t,n):[{type:Ge.Edit,path:n}];var l,o}function Ye(e,t){if(!t.length)return e;if(r(e))return Ye(e.value,t);const n={};let a;if(s(e)&&e.items.some(((e,c)=>{try{let u=[];if(r(e))u=e.key.value;else if(l(e))u=e.key.item.value;else if(o(e)){u=e.key.item.value;const t=M(u);n[t]||(n[t]=0);const l=n[t]++;u=u.concat(l)}else i(e)&&r(e.item)?u=e.item.key.value:i(e)&&(u=[c]);return!(!u.length||!function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(u,t.slice(0,u.length)))&&(a=Ye(e,t.slice(u.length)),!0)}catch(e){return!1}})),!a)throw new Error(`Could not find node at path ${t.join(".")}`);return a}function Ze(e,t){try{return Ye(e,t)}catch(e){}}function et(e,t){let n,l=t;for(;l.length&&!n;)l=l.slice(0,-1),n=Ze(e,l);if(!n)throw new Error(`Count not find parent node for path ${t.join(".")}`);return n}!function(e){e.Add="Add",e.Edit="Edit",e.Remove="Remove",e.Move="Move",e.Rename="Rename"}(Ge||(Ge={})),exports.parse=function(e){return Re(ce(e),e)},exports.patch=function(t,c,u){const s=[...ce(t)],m=Re(s),d=function(e,t,c){return c.forEach((c=>{if(function(e){return e.type===Ge.Add}(c)){const i=Ye(t,c.path),u=c.path.slice(0,-1);let s,f=D(c.path),m=o(i);if(B(f)&&!u.some(B)){const t=Ze(e,u.concat(0));t&&o(t)&&(m=!0)}if(l(i))s=e;else if(m){s=e;const t=e,n=Ze(t,u.concat(f-1)),l=Ze(t,u.concat(f));f=l?t.items.indexOf(l):n?t.items.indexOf(n)+1:t.items.length}else s=et(e,c.path),r(s)&&(s=s.value);o(s)||a(s)||n(s)?we(e,s,i,f):we(e,s,i)}else if(function(e){return e.type===Ge.Edit}(c)){let n,l=Ye(e,c.path),o=Ye(t,c.path);r(l)&&r(o)?(n=l,l=l.value,o=o.value):r(l)&&i(o)&&r(o.item)?(n=l,l=l.value,o=o.item.value):n=et(e,c.path),he(e,n,l,o)}else if(Qe(c)){let t=et(e,c.path);r(t)&&(t=t.value);const n=Ye(e,c.path);ge(e,t,n)}else if(function(e){return e.type===Ge.Move}(c)){let t=Ye(e,c.path);f(t)&&(t=t.item),r(t)&&(t=t.value);const n=t.items[c.from];ge(e,t,n),we(e,t,n,c.to)}else if(function(e){return e.type===Ge.Rename}(c)){let n=Ye(e,c.path.concat(c.from)),l=Ye(t,c.path.concat(c.to));f(n)&&(n=n.item),f(l)&&(l=l.item),he(e,n,n.key,l.key)}})),xe(e),e}({type:e.Document,loc:{start:{line:1,column:0},end:{line:1,column:0}},items:s},Ne(c,u),function(e){for(let t=0;t<e.length;t++){const n=e[t];if(Qe(n)){let l=t+1;for(;l<e.length;){const o=e[l];if(Qe(o)&&o.path[0]===n.path[0]&&o.path[1]>n.path[1]){e.splice(l,1),e.splice(t,0,o),t=0;break}l++}}}return e}(Xe(m,c)));let p="\n";const y=t.indexOf("\n");y>0&&"\r"===t.substring(y-1,y)&&(p="\r\n");const v=function(e,t){let n=0,l=e.length;for(;l>=t.length&&e.substring(l-t.length,l)===t;)n++,l-=t.length;return n}(t,p);return Ue(d.items,p,{trailingNewline:v})},exports.stringify=function(e,t){return Ue(Ne(e,t).items)};
|
|
3
3
|
//# sourceMappingURL=toml-patch.cjs.min.js.map
|