@workos/oagen 0.19.4 → 0.19.6
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/dist/cli/index.mjs +67 -6
- package/dist/cli/index.mjs.map +1 -1
- package/dist/{diff-P41Nm-Pr.mjs → diff-C8mjApjv.mjs} +68 -7
- package/dist/diff-C8mjApjv.mjs.map +1 -0
- package/dist/index.mjs +1 -1
- package/dist/verify/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/diff-P41Nm-Pr.mjs.map +0 -1
|
@@ -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,
|
|
@@ -2455,10 +2500,26 @@ function spliceExtraImports(existingLines, resultLines) {
|
|
|
2455
2500
|
const existingPhpUse = new Set(existingLines.filter(isPhpUseImport).map((l) => l.trim()));
|
|
2456
2501
|
const generatedPhpUse = new Set(resultLines.filter(isPhpUseImport).map((l) => l.trim()));
|
|
2457
2502
|
const extraPhpUse = [...existingPhpUse].filter((l) => !generatedPhpUse.has(l));
|
|
2458
|
-
const
|
|
2459
|
-
const
|
|
2460
|
-
|
|
2461
|
-
|
|
2503
|
+
const rubyRequireRe = /^(require(?:_relative)?)\s+['"]([^'"]+)['"]\s*$/;
|
|
2504
|
+
const rubyRequireKey = (l) => {
|
|
2505
|
+
const m = l.trim().match(rubyRequireRe);
|
|
2506
|
+
return m ? `${m[1]}\t${m[2]}` : void 0;
|
|
2507
|
+
};
|
|
2508
|
+
const generatedRubyRequireKeys = /* @__PURE__ */ new Set();
|
|
2509
|
+
for (const l of resultLines) {
|
|
2510
|
+
const key = rubyRequireKey(l);
|
|
2511
|
+
if (key) generatedRubyRequireKeys.add(key);
|
|
2512
|
+
}
|
|
2513
|
+
const seenExistingKeys = /* @__PURE__ */ new Set();
|
|
2514
|
+
const extraRubyRequire = [];
|
|
2515
|
+
for (const l of existingLines) {
|
|
2516
|
+
const key = rubyRequireKey(l);
|
|
2517
|
+
if (!key) continue;
|
|
2518
|
+
if (generatedRubyRequireKeys.has(key)) continue;
|
|
2519
|
+
if (seenExistingKeys.has(key)) continue;
|
|
2520
|
+
seenExistingKeys.add(key);
|
|
2521
|
+
extraRubyRequire.push(l.trim());
|
|
2522
|
+
}
|
|
2462
2523
|
const allExtra = [
|
|
2463
2524
|
...extraSimple,
|
|
2464
2525
|
...extraFromLines,
|
|
@@ -3475,4 +3536,4 @@ function summarize(changes) {
|
|
|
3475
3536
|
//#endregion
|
|
3476
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 };
|
|
3477
3538
|
|
|
3478
|
-
//# sourceMappingURL=diff-
|
|
3539
|
+
//# sourceMappingURL=diff-C8mjApjv.mjs.map
|