@workos/oagen 0.19.5 → 0.20.0

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.
@@ -1,5 +1,5 @@
1
1
  import { t as safeParse$1, v as ExtractorError } from "../tree-sitter-DcUvm0KA.mjs";
2
- import { A as getDefaultPolicy, C as defaultSeverityForCategory, D as isCompatibleSchemaVersion, E as COMPAT_SCHEMA_VERSION, O as validateSnapshot, S as summarizeChanges, T as apiSurfaceToSnapshot, _ as nodeHints, a as registerExtractor, b as classifyAddedSymbol, c as filterSurface, d as specDerivedHttpKeys, f as specDerivedMethodPaths, g as namedTypeWordsOverlap, h as defaultIsNullableOnlyDifference, i as getExtractor, j as mergePolicy, k as ALL_LANGUAGE_IDS, l as specDerivedEnumValues, m as NAMED_TYPE_RE, n as isPatchableChange, o as diffSnapshots, p as specDerivedNames, r as patchOverlay, s as diffSurfaces, t as buildOverlayLookup, u as specDerivedFieldPaths, v as resolveHints, w as severityMeetsThreshold, x as classifySymbolChanges, y as typeExistsInSurface } from "../overlay-Dk70ilXl.mjs";
2
+ import { A as getDefaultPolicy, C as defaultSeverityForCategory, D as isCompatibleSchemaVersion, E as COMPAT_SCHEMA_VERSION, O as validateSnapshot, S as summarizeChanges, T as apiSurfaceToSnapshot, _ as nodeHints, a as registerExtractor, b as classifyAddedSymbol, c as filterSurface, d as specDerivedHttpKeys, f as specDerivedMethodPaths, g as namedTypeWordsOverlap, h as defaultIsNullableOnlyDifference, i as getExtractor, j as mergePolicy, k as ALL_LANGUAGE_IDS, l as specDerivedEnumValues, m as NAMED_TYPE_RE, n as isPatchableChange, o as diffSnapshots, p as specDerivedNames, r as patchOverlay, s as diffSurfaces, t as buildOverlayLookup, u as specDerivedFieldPaths, v as resolveHints, w as severityMeetsThreshold, x as classifySymbolChanges, y as typeExistsInSurface } from "../overlay-cb32jDBS.mjs";
3
3
  import path, { basename, dirname, join, relative, resolve } from "node:path";
4
4
  import Parser from "tree-sitter";
5
5
  import ts from "typescript";
@@ -706,11 +706,21 @@ function extractKotlinClassMembers(classBody, source) {
706
706
  }
707
707
  members.push({
708
708
  key: memberName,
709
- text: source.slice(startIdx, endIdx)
709
+ text: source.slice(startIdx, endIdx),
710
+ startIndex: startIdx,
711
+ endIndex: endIdx
710
712
  });
711
713
  }
712
714
  return members;
713
715
  }
716
+ /**
717
+ * KDoc signature that identifies a generator-emitted service accessor inside
718
+ * the WorkOS class. The Kotlin client emitter writes every accessor with this
719
+ * exact doc preamble — when the existing file carries a member with this doc
720
+ * but the regenerated content omits it, the member is stale (its mount target
721
+ * was remapped or removed) and gets pruned.
722
+ */
723
+ const KOTLIN_MANAGED_ACCESSOR_DOC = /\/\*\*[\s\S]*?Lazily-constructed \[[^\]]+\] accessor for this \[WorkOS\] client\.[\s\S]*?\*\//;
714
724
  const kotlinMergeAdapter = {
715
725
  language: "kotlin",
716
726
  grammarModule: "tree-sitter-kotlin",
@@ -751,6 +761,9 @@ const kotlinMergeAdapter = {
751
761
  renderImports(imports) {
752
762
  return imports.map((entry) => entry.text);
753
763
  },
764
+ isManagedMember(member) {
765
+ return KOTLIN_MANAGED_ACCESSOR_DOC.test(member.text);
766
+ },
754
767
  shouldSkipDeepMerge(_symbolName, existingMemberKeys, newMembers) {
755
768
  const newText = newMembers.map((m) => m.text).join("\n");
756
769
  for (const match of newText.matchAll(/this\.(\w+)/g)) {
@@ -1839,6 +1852,7 @@ async function mergeIntoExisting(existingContent, generatedContent, language, he
1839
1852
  let result = existingContent;
1840
1853
  if (toAppend.length > 0) result = result.trimEnd() + "\n\n" + toAppend.join("\n\n") + "\n";
1841
1854
  let deepAdded = 0;
1855
+ let deepPruned = 0;
1842
1856
  const insertions = [];
1843
1857
  if (adapter.extractMembers) {
1844
1858
  const parser = await getParser(language);
@@ -1848,6 +1862,37 @@ async function mergeIntoExisting(existingContent, generatedContent, language, he
1848
1862
  const generatedSymbols = adapter.extractMembers(generatedTree, generatedContent);
1849
1863
  const existingTree = safeParse(parser, existingContent);
1850
1864
  const deepIgnoredSymbols = buildIgnoredSymbolNames(adapter.extractDocstrings(existingTree, existingContent), findIgnoredRegions(existingContent));
1865
+ if (adapter.isManagedMember) {
1866
+ const pruneEdits = [];
1867
+ for (const [symbolName, genSymbol] of generatedSymbols) {
1868
+ if (deepIgnoredSymbols.has(symbolName)) continue;
1869
+ const existSymbol = resultSymbols.get(symbolName);
1870
+ if (!existSymbol) continue;
1871
+ const genMemberKeys = new Set(genSymbol.members.map((m) => m.key));
1872
+ for (const existMember of existSymbol.members) {
1873
+ if (genMemberKeys.has(existMember.key)) continue;
1874
+ if (existMember.startIndex === void 0 || existMember.endIndex === void 0) continue;
1875
+ if (!adapter.isManagedMember(existMember)) continue;
1876
+ pruneEdits.push({
1877
+ start: existMember.startIndex,
1878
+ end: existMember.endIndex
1879
+ });
1880
+ }
1881
+ }
1882
+ if (pruneEdits.length > 0) {
1883
+ pruneEdits.sort((a, b) => b.start - a.start);
1884
+ for (const edit of pruneEdits) {
1885
+ let end = edit.end;
1886
+ while (end < result.length && (result[end] === " " || result[end] === " ")) end++;
1887
+ if (result[end] === "\n") end++;
1888
+ result = result.slice(0, edit.start) + result.slice(end);
1889
+ }
1890
+ deepPruned = pruneEdits.length;
1891
+ const reTree = safeParse(parser, result);
1892
+ resultSymbols.clear();
1893
+ for (const [k, v] of adapter.extractMembers(reTree, result)) resultSymbols.set(k, v);
1894
+ }
1895
+ }
1851
1896
  for (const [symbolName, genSymbol] of generatedSymbols) {
1852
1897
  if (deepIgnoredSymbols.has(symbolName)) continue;
1853
1898
  const existSymbol = resultSymbols.get(symbolName);
@@ -2030,7 +2075,7 @@ async function mergeIntoExisting(existingContent, generatedContent, language, he
2030
2075
  }
2031
2076
  }
2032
2077
  const totalAdded = (toAppend.length > 0 || deepAdded > 0 ? adapter.renderImports ? adapter.renderImports(newImports).length : newImports.length : 0) + toAppend.length + deepAdded;
2033
- if (totalAdded === 0 && docstringUpdates === 0) return {
2078
+ if (totalAdded === 0 && docstringUpdates === 0 && deepPruned === 0) return {
2034
2079
  content: existingContent,
2035
2080
  added: 0,
2036
2081
  preserved,
@@ -3491,4 +3536,4 @@ function summarize(changes) {
3491
3536
  //#endregion
3492
3537
  export { MANIFEST_FILENAME as a, treeShakeFiles as c, collectReferencedNames as d, generateAllFiles as f, resolveOperations as h, generate as i, applyFileHeaders as l, deriveMethodName as m, getEmitter as n, integrateGeneratedFiles as o, generateFiles as p, registerEmitter as r, mapFilesForTargetIntegration as s, diffSpecs as t, buildEmitterContext as u };
3493
3538
 
3494
- //# sourceMappingURL=diff-DE8ycKqW.mjs.map
3539
+ //# sourceMappingURL=diff-C8mjApjv.mjs.map