@shapeshift-labs/frontier-lang-compiler 0.2.144 → 0.2.145

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.
@@ -17,7 +17,7 @@ function removePreparedMemberAdditions(sourceText, preparedRegions, side) {
17
17
  const replacements = preparedRegions
18
18
  .map((region) => ({
19
19
  range: region[side],
20
- replacement: removeMembersFromBody(region[side].body, region[`${side}AddedMembers`] ?? [], region.kind)
20
+ replacement: removeMembersFromBody(region[side].body, region[`${side}AddedMembers`] ?? [], region.kind, region.base.body)
21
21
  }))
22
22
  .sort((left, right) => right.range.bodyStart - left.range.bodyStart);
23
23
  for (const { range, replacement } of replacements) {
@@ -88,16 +88,25 @@ function appendReadyBody(before, kind) {
88
88
  return `${before.replace(/\s*$/, '')},`;
89
89
  }
90
90
 
91
- function removeMembersFromBody(body, members, kind) {
91
+ function removeMembersFromBody(body, members, kind, baseBody) {
92
92
  let output = body;
93
93
  for (const member of [...members].sort((left, right) => right.start - left.start || right.end - left.end)) {
94
94
  output = `${output.slice(0, member.start)}${output.slice(member.end)}`;
95
95
  }
96
96
  if (kind !== 'object') return output;
97
+ if (typeof baseBody === 'string' && sameObjectBodyIgnoringTrailingDelimiter(output, baseBody)) return baseBody;
97
98
  const trailing = String(body ?? '').match(/\s*$/)?.[0] ?? '';
98
99
  return output.replace(/,\s*$/, trailing);
99
100
  }
100
101
 
102
+ function sameObjectBodyIgnoringTrailingDelimiter(left, right) {
103
+ return normalizeObjectTrailingDelimiter(left) === normalizeObjectTrailingDelimiter(right);
104
+ }
105
+
106
+ function normalizeObjectTrailingDelimiter(body) {
107
+ return String(body ?? '').replace(/,\s*$/, (trailing) => trailing.replace(',', ''));
108
+ }
109
+
101
110
  function minimumIndent(lines) {
102
111
  const indents = lines.filter((line) => line.trim()).map(leadingWhitespace);
103
112
  return indents.length ? Math.min(...indents) : 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshift-labs/frontier-lang-compiler",
3
- "version": "0.2.144",
3
+ "version": "0.2.145",
4
4
  "description": "Compiler facade for Frontier Lang source documents and language projection adapters.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",