@apollo-deploy/tesseract 0.5.1 → 0.6.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.
Files changed (68) hide show
  1. package/dist/adapters/typescript/emitter/emitSchema.d.ts +12 -0
  2. package/dist/adapters/typescript/emitter/emitSchema.d.ts.map +1 -0
  3. package/dist/adapters/typescript/emitter/emitSchema.js +93 -0
  4. package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -0
  5. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +10 -0
  6. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts.map +1 -0
  7. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +81 -0
  8. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js.map +1 -0
  9. package/dist/adapters/typescript/emitter/importCollector.d.ts +6 -0
  10. package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -0
  11. package/dist/adapters/typescript/emitter/importCollector.js +39 -0
  12. package/dist/adapters/typescript/emitter/importCollector.js.map +1 -0
  13. package/dist/adapters/typescript/emitter/nameAllocator.d.ts +5 -0
  14. package/dist/adapters/typescript/emitter/nameAllocator.d.ts.map +1 -0
  15. package/dist/adapters/typescript/emitter/nameAllocator.js +13 -0
  16. package/dist/adapters/typescript/emitter/nameAllocator.js.map +1 -0
  17. package/dist/adapters/typescript/emitter/parsers.d.ts +7 -0
  18. package/dist/adapters/typescript/emitter/parsers.d.ts.map +1 -0
  19. package/dist/adapters/typescript/emitter/parsers.js +73 -0
  20. package/dist/adapters/typescript/emitter/parsers.js.map +1 -0
  21. package/dist/adapters/typescript/emitter/typeHoister.d.ts +6 -0
  22. package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -0
  23. package/dist/adapters/typescript/emitter/typeHoister.js +47 -0
  24. package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -0
  25. package/dist/adapters/typescript/index.d.ts +3 -3
  26. package/dist/adapters/typescript/index.d.ts.map +1 -1
  27. package/dist/adapters/typescript/index.js +131 -115
  28. package/dist/adapters/typescript/index.js.map +1 -1
  29. package/dist/adapters/typescript/shared.d.ts +12 -5
  30. package/dist/adapters/typescript/shared.d.ts.map +1 -1
  31. package/dist/adapters/typescript/shared.js +92 -40
  32. package/dist/adapters/typescript/shared.js.map +1 -1
  33. package/dist/cli.d.ts +1 -1
  34. package/dist/cli.js +119 -68
  35. package/dist/cli.js.map +1 -1
  36. package/dist/fastify.d.ts +26 -0
  37. package/dist/fastify.d.ts.map +1 -1
  38. package/dist/fastify.js +33 -5
  39. package/dist/fastify.js.map +1 -1
  40. package/dist/helpers/handlebars.d.ts +6 -2
  41. package/dist/helpers/handlebars.d.ts.map +1 -1
  42. package/dist/helpers/handlebars.js +157 -121
  43. package/dist/helpers/handlebars.js.map +1 -1
  44. package/dist/index.d.ts +13 -11
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +75 -43
  47. package/dist/index.js.map +1 -1
  48. package/dist/pipeline/enrich.d.ts +11 -3
  49. package/dist/pipeline/enrich.d.ts.map +1 -1
  50. package/dist/pipeline/enrich.js +180 -154
  51. package/dist/pipeline/enrich.js.map +1 -1
  52. package/dist/pipeline/intake.js +5 -2
  53. package/dist/pipeline/intake.js.map +1 -1
  54. package/dist/pipeline/write.d.ts +13 -3
  55. package/dist/pipeline/write.d.ts.map +1 -1
  56. package/dist/pipeline/write.js +111 -32
  57. package/dist/pipeline/write.js.map +1 -1
  58. package/dist/types/ir.d.ts +64 -40
  59. package/dist/types/ir.d.ts.map +1 -1
  60. package/dist/types/ir.js +6 -2
  61. package/dist/types/ir.js.map +1 -1
  62. package/dist/utils/naming.d.ts +0 -4
  63. package/dist/utils/naming.d.ts.map +1 -1
  64. package/dist/utils/naming.js +294 -182
  65. package/dist/utils/naming.js.map +1 -1
  66. package/package.json +8 -1
  67. package/templates/typescript/domain.hbs +1 -1
  68. package/templates/typescript/types.hbs +7 -1
@@ -2,269 +2,381 @@
2
2
  * Name transformation utilities.
3
3
  * Ported from SDK Forge — single source of truth for method naming.
4
4
  */
5
- import { camelCase, pascalCase, kebabCase } from 'change-case';
6
- // ── Public name helpers ───────────────────────────────
5
+ import { camelCase, pascalCase, kebabCase } from "change-case";
6
+ // ─────────────────────────────────────────────────────────────
7
+ // CACHES (performance-critical)
8
+ // ─────────────────────────────────────────────────────────────
9
+ const memo = new Map();
10
+ function cached(key, fn) {
11
+ const hit = memo.get(key);
12
+ if (hit !== undefined)
13
+ return hit;
14
+ const val = fn();
15
+ memo.set(key, val);
16
+ return val;
17
+ }
18
+ // ─────────────────────────────────────────────────────────────
19
+ // PUBLIC HELPERS
20
+ // ─────────────────────────────────────────────────────────────
7
21
  export function toMethodName(operationId) {
8
- return camelCase(operationId);
22
+ return cached(`method:${operationId}`, () => camelCase(operationId));
9
23
  }
10
24
  export function toInterfaceName(tag) {
11
- return `${pascalCase(tag)}API`;
25
+ return cached(`iface:${tag}`, () => `${pascalCase(tag)}API`);
12
26
  }
13
27
  export function toFactoryName(tag) {
14
- return `create${pascalCase(tag)}API`;
28
+ return cached(`factory:${tag}`, () => `create${pascalCase(tag)}API`);
15
29
  }
16
30
  export function toFileName(tag) {
17
- return kebabCase(tag);
31
+ return cached(`file:${tag}`, () => kebabCase(tag));
18
32
  }
19
33
  export function toTypeName(name) {
20
- return pascalCase(name);
34
+ return cached(`type:${name}`, () => pascalCase(name));
21
35
  }
22
36
  export function toPropertyName(name) {
23
- return camelCase(name);
37
+ return cached(`prop:${name}`, () => camelCase(name));
24
38
  }
25
39
  export function toClientName(title) {
26
- return pascalCase(title);
40
+ return cached(`client:${title}`, () => pascalCase(title));
27
41
  }
42
+ // ─────────────────────────────────────────────────────────────
43
+ // OPERATION ID DERIVATION (FIXED & OPTIMIZED)
44
+ // ─────────────────────────────────────────────────────────────
45
+ const PATH_PARAM_REGEX = /\{([^}]+)\}/g;
46
+ const CLEAN_PATH_REGEX = /[^a-zA-Z0-9_]/g;
47
+ const MULTI_UNDERSCORE = /_+/g;
28
48
  export function deriveOperationId(method, path) {
29
49
  const cleaned = path
30
- .replace(/\{([^}]+)\}/g, 'By_$1')
31
- .replace(/[^a-zA-Z0-9_]/g, '_')
32
- .replace(/_+/g, '_')
33
- .replace(/^_|_$/g, '');
50
+ .replace(PATH_PARAM_REGEX, "By_$1")
51
+ .replace(CLEAN_PATH_REGEX, "_")
52
+ .replace(MULTI_UNDERSCORE, "_")
53
+ .replace(/^_|_$/g, "");
34
54
  return camelCase(`${method.toLowerCase()}_${cleaned}`);
35
55
  }
36
- // ── Verb registry — single source of truth ────────────
56
+ // ─────────────────────────────────────────────────────────────
57
+ // VERB SYSTEM (OPTIMIZED LOOKUPS)
58
+ // ─────────────────────────────────────────────────────────────
37
59
  const VERB_SYNONYMS = {
38
- get: 'get', retrieve: 'get', fetch: 'get', find: 'get', show: 'get',
39
- read: 'get', load: 'get', lookup: 'get', view: 'get',
40
- list: 'list', search: 'list', browse: 'list', index: 'list', query: 'list',
41
- create: 'create', add: 'create', insert: 'create', make: 'create', register: 'register',
42
- update: 'update', modify: 'update', edit: 'update', change: 'update', patch: 'update', set: 'set',
43
- delete: 'delete', remove: 'remove', destroy: 'delete', purge: 'delete', erase: 'delete',
44
- authenticate: 'authenticate', login: 'login', logout: 'logout',
45
- authorize: 'authorize', impersonate: 'impersonate', revoke: 'revoke',
46
- activate: 'activate', deactivate: 'deactivate', enable: 'enable', disable: 'disable',
47
- start: 'start', stop: 'stop',
48
- trigger: 'trigger', force: 'force', schedule: 'schedule', submit: 'submit',
49
- resubmit: 'resubmit', cancel: 'cancel', approve: 'approve', reject: 'reject',
50
- complete: 'complete', revalidate: 'revalidate', reconcile: 'reconcile',
51
- export: 'export', import: 'import', download: 'download', upload: 'upload',
52
- presign: 'presign', generate: 'generate', batch: 'batch', rotate: 'rotate',
53
- check: 'check', verify: 'verify', validate: 'validate',
54
- invite: 'invite', accept: 'accept', join: 'join', leave: 'leave', ban: 'ban', unban: 'unban',
55
- sync: 'sync', refresh: 'refresh', reset: 'reset', send: 'send', request: 'request',
56
- mark: 'mark', compare: 'compare', switch: 'switch', evaluate: 'evaluate',
60
+ get: "get",
61
+ retrieve: "get",
62
+ fetch: "get",
63
+ find: "get",
64
+ show: "get",
65
+ read: "get",
66
+ load: "get",
67
+ lookup: "get",
68
+ view: "get",
69
+ list: "list",
70
+ search: "list",
71
+ browse: "list",
72
+ index: "list",
73
+ query: "list",
74
+ create: "create",
75
+ add: "create",
76
+ insert: "create",
77
+ make: "create",
78
+ register: "create",
79
+ update: "update",
80
+ modify: "update",
81
+ edit: "update",
82
+ change: "update",
83
+ patch: "update",
84
+ set: "set",
85
+ delete: "delete",
86
+ remove: "delete",
87
+ destroy: "delete",
88
+ purge: "delete",
89
+ erase: "delete",
90
+ authenticate: "authenticate",
91
+ login: "login",
92
+ logout: "logout",
93
+ authorize: "authorize",
94
+ impersonate: "impersonate",
95
+ revoke: "revoke",
96
+ activate: "activate",
97
+ deactivate: "deactivate",
98
+ enable: "enable",
99
+ disable: "disable",
100
+ start: "start",
101
+ stop: "stop",
102
+ trigger: "trigger",
103
+ force: "force",
104
+ schedule: "schedule",
105
+ submit: "submit",
106
+ resubmit: "resubmit",
107
+ cancel: "cancel",
108
+ approve: "approve",
109
+ reject: "reject",
110
+ complete: "complete",
111
+ revalidate: "revalidate",
112
+ reconcile: "reconcile",
113
+ export: "export",
114
+ import: "import",
115
+ download: "download",
116
+ upload: "upload",
117
+ presign: "presign",
118
+ generate: "generate",
119
+ batch: "batch",
120
+ rotate: "rotate",
121
+ check: "check",
122
+ verify: "verify",
123
+ validate: "validate",
124
+ invite: "invite",
125
+ accept: "accept",
126
+ join: "join",
127
+ leave: "leave",
128
+ ban: "ban",
129
+ unban: "unban",
130
+ sync: "sync",
131
+ refresh: "refresh",
132
+ reset: "reset",
133
+ send: "send",
134
+ request: "request",
135
+ mark: "mark",
136
+ compare: "compare",
137
+ switch: "switch",
138
+ evaluate: "evaluate",
57
139
  };
58
140
  const ACTION_VERBS = new Set(Object.values(VERB_SYNONYMS));
59
- const ABBREVIATION_REGISTRY = {
60
- app: ['application', 'applications'],
61
- auth: ['authentication', 'authorization'],
62
- org: ['organization', 'organizations'],
63
- repo: ['repository', 'repositories'],
64
- env: ['environment', 'environments'],
65
- config: ['configuration', 'configurations'],
66
- admin: ['administrator', 'administrators'],
67
- msg: ['message', 'messages'],
68
- notif: ['notification', 'notifications'],
69
- sub: ['subscription', 'subscriptions'],
70
- perm: ['permission', 'permissions'],
71
- dept: ['department', 'departments'],
72
- acct: ['account', 'accounts'],
73
- usr: ['user', 'users'],
74
- doc: ['document', 'documents'],
75
- txn: ['transaction', 'transactions'],
76
- };
77
141
  const FILLER_WORDS = new Set([
78
- 'a', 'an', 'the', 'for', 'of', 'to', 'by', 'in', 'on', 'at', 'from',
79
- 'with', 'within', 'between', 'after', 'before', 'into', 'as', 'all',
80
- 'new', 'current', 'currently', 'active', 'specific', 'existing', 'given',
81
- 'individual', 'particular', 'and', 'or', 'this', 'that', 'its',
142
+ "a",
143
+ "an",
144
+ "the",
145
+ "for",
146
+ "of",
147
+ "to",
148
+ "by",
149
+ "in",
150
+ "on",
151
+ "at",
152
+ "from",
153
+ "with",
154
+ "within",
155
+ "between",
156
+ "after",
157
+ "before",
158
+ "into",
159
+ "as",
160
+ "all",
161
+ "new",
162
+ "current",
163
+ "currently",
164
+ "active",
165
+ "specific",
166
+ "existing",
167
+ "given",
168
+ "individual",
169
+ "particular",
170
+ "and",
171
+ "or",
172
+ "this",
173
+ "that",
174
+ "its",
82
175
  ]);
83
- // ── Tag helpers ───────────────────────────────────────
84
- function getTagForms(tagName) {
85
- const pc = pascalCase(tagName);
86
- return pc.endsWith('s') ? [pc, pc.slice(0, -1)] : [pc, `${pc}s`];
176
+ const ABBREV = {
177
+ app: ["application", "applications"],
178
+ auth: ["authentication", "authorization"],
179
+ org: ["organization", "organizations"],
180
+ repo: ["repository", "repositories"],
181
+ env: ["environment", "environments"],
182
+ config: ["configuration", "configurations"],
183
+ admin: ["administrator", "administrators"],
184
+ msg: ["message", "messages"],
185
+ notif: ["notification", "notifications"],
186
+ sub: ["subscription", "subscriptions"],
187
+ perm: ["permission", "permissions"],
188
+ dept: ["department", "departments"],
189
+ acct: ["account", "accounts"],
190
+ usr: ["user", "users"],
191
+ doc: ["document", "documents"],
192
+ txn: ["transaction", "transactions"],
193
+ };
194
+ // ─────────────────────────────────────────────────────────────
195
+ // TAG ANALYSIS (OPTIMIZED, LESS ALLOCATION)
196
+ // ─────────────────────────────────────────────────────────────
197
+ function splitWords(input) {
198
+ return input
199
+ .toLowerCase()
200
+ .split(/[\s\-_]+/)
201
+ .filter(Boolean);
202
+ }
203
+ function addPlural(word, out) {
204
+ if (word.endsWith("ies"))
205
+ out.add(word.slice(0, -3) + "y");
206
+ else if (word.endsWith("y"))
207
+ out.add(word.slice(0, -1) + "ies");
208
+ else if (word.endsWith("s"))
209
+ out.add(word.slice(0, -1));
210
+ else
211
+ out.add(word + "s");
87
212
  }
88
213
  function getTagWordsLower(tagName) {
89
214
  const words = new Set();
90
- for (const part of tagName.toLowerCase().split(/[\s\-_]+/)) {
215
+ const parts = splitWords(tagName);
216
+ for (const part of parts) {
91
217
  words.add(part);
92
- addPluralForms(words, part);
93
- const formsToExpand = new Set([part]);
94
- if (part.endsWith('ies'))
95
- formsToExpand.add(`${part.slice(0, -3)}y`);
96
- else if (part.endsWith('s') && part.length > 1)
97
- formsToExpand.add(part.slice(0, -1));
98
- else
99
- formsToExpand.add(`${part}s`);
100
- for (const form of formsToExpand) {
101
- for (const expansion of ABBREVIATION_REGISTRY[form] ?? []) {
102
- words.add(expansion);
103
- addPluralForms(words, expansion);
218
+ addPlural(part, words);
219
+ const expanded = ABBREV[part];
220
+ if (expanded) {
221
+ for (const e of expanded) {
222
+ words.add(e);
223
+ addPlural(e, words);
104
224
  }
105
225
  }
106
226
  }
107
227
  return words;
108
228
  }
109
- function addPluralForms(set, word) {
110
- if (word.endsWith('ies'))
111
- set.add(`${word.slice(0, -3)}y`);
112
- else if (word.endsWith('s'))
113
- set.add(word.slice(0, -1));
114
- else if (word.endsWith('y'))
115
- set.add(`${word.slice(0, -1)}ies`);
116
- else
117
- set.add(`${word}s`);
229
+ function getTagForms(tagName) {
230
+ const pc = pascalCase(tagName);
231
+ return pc.endsWith("s") ? [pc, pc.slice(0, -1)] : [pc, `${pc}s`];
118
232
  }
119
- // ── HTTP verb mapping ─────────────────────────────────
120
- function mapHttpMethodToVerb(httpMethod, isCollection) {
121
- switch (httpMethod.toLowerCase()) {
122
- case 'get': return isCollection ? 'list' : 'get';
123
- case 'post': return 'create';
124
- case 'put':
125
- case 'patch': return 'update';
126
- case 'delete': return 'delete';
127
- default: return httpMethod.toLowerCase();
128
- }
233
+ // ─────────────────────────────────────────────────────────────
234
+ // HTTP / PATH ANALYSIS
235
+ // ─────────────────────────────────────────────────────────────
236
+ function mapHttpMethodToVerb(method, isCollection) {
237
+ const m = method.toLowerCase();
238
+ if (m === "get")
239
+ return isCollection ? "list" : "get";
240
+ if (m === "post")
241
+ return "create";
242
+ if (m === "put" || m === "patch")
243
+ return "update";
244
+ if (m === "delete")
245
+ return "delete";
246
+ return m;
129
247
  }
130
248
  function isCollectionEndpoint(path) {
131
- const segments = path.split('/').filter(Boolean);
132
- return segments.length === 0 || !segments[segments.length - 1].startsWith('{');
249
+ const last = path.split("/").filter(Boolean).pop();
250
+ return !last || !last.startsWith("{");
133
251
  }
134
- // ── Strategy helpers ──────────────────────────────────
135
- function stripTagPrefix(remainder, tagForms) {
136
- for (const form of tagForms) {
137
- if (!remainder.startsWith(form))
138
- continue;
139
- const after = remainder.slice(form.length);
140
- if (!after)
141
- return '';
142
- if (after[0] >= 'A' && after[0] <= 'Z')
143
- return after;
144
- if (after[0] === 's') {
145
- const afterS = after.slice(1);
146
- if (!afterS || (afterS[0] >= 'A' && afterS[0] <= 'Z'))
147
- return afterS;
252
+ // ─────────────────────────────────────────────────────────────
253
+ // CLEANING STRATEGIES (FIXED LOGIC)
254
+ // ─────────────────────────────────────────────────────────────
255
+ function stripTagEdges(input, forms) {
256
+ let out = input;
257
+ for (const f of forms) {
258
+ if (out.startsWith(f)) {
259
+ const next = out.slice(f.length);
260
+ if (next && /[A-Z]/.test(next[0]))
261
+ out = next;
262
+ else if (next.startsWith("s") && /[A-Z]/.test(next[1] ?? ""))
263
+ out = next.slice(1);
148
264
  }
149
- }
150
- return remainder;
151
- }
152
- function stripTagSuffix(remainder, tagForms) {
153
- const candidates = [...tagForms, ...tagForms.map((f) => `${f}s`)];
154
- for (const form of candidates) {
155
- if (remainder.endsWith(form)) {
156
- const before = remainder.slice(0, -form.length);
265
+ if (out.endsWith(f)) {
266
+ const before = out.slice(0, -f.length);
157
267
  if (before)
158
- return before;
268
+ out = before;
159
269
  }
160
270
  }
161
- return remainder;
271
+ return out;
162
272
  }
163
- function isActionVerbWord(pcWord) {
164
- return ACTION_VERBS.has(VERB_SYNONYMS[pcWord.toLowerCase()] ?? pcWord.toLowerCase());
273
+ function isActionVerb(word) {
274
+ const v = VERB_SYNONYMS[word.toLowerCase()] ?? word.toLowerCase();
275
+ return ACTION_VERBS.has(v);
165
276
  }
166
277
  function isCleanName(name) {
167
278
  if (/By[A-Z]/.test(name))
168
279
  return false;
169
280
  return (name.match(/[A-Z]/g)?.length ?? 0) <= 3;
170
281
  }
171
- // ── Strategy 1: clean operationId ────────────────────
172
- function cleanOperationId(opId, tagName) {
173
- const pcOp = pascalCase(opId);
174
- const tagForms = getTagForms(tagName);
175
- const verbMatch = pcOp.match(/^(Get|Post|Put|Patch|Delete|List|Create|Update|Remove)/);
176
- const verb = verbMatch?.[1] ?? '';
177
- let remainder = verb ? pcOp.slice(verb.length) : pcOp;
178
- remainder = stripTagPrefix(remainder, tagForms);
179
- remainder = stripTagSuffix(remainder, tagForms);
180
- remainder = remainder.replace(/By[A-Z][a-zA-Z]*/g, '');
282
+ // ─────────────────────────────────────────────────────────────
283
+ // STRATEGY 1: OPERATION ID
284
+ // ─────────────────────────────────────────────────────────────
285
+ function cleanOperationId(opId, tag) {
286
+ const pc = pascalCase(opId);
287
+ const forms = getTagForms(tag);
288
+ const verbMatch = pc.match(/^(Get|Post|Put|Patch|Delete|List|Create|Update|Remove)/);
289
+ const verb = verbMatch?.[1] ?? "";
290
+ let remainder = verb ? pc.slice(verb.length) : pc;
291
+ remainder = stripTagEdges(remainder, forms);
292
+ remainder = remainder.replace(/By[A-Z][a-zA-Z]*/g, "");
181
293
  if (!remainder)
182
294
  return verb ? verb.toLowerCase() : camelCase(opId);
183
- if (verb && isActionVerbWord(remainder))
184
- return camelCase(remainder);
185
- if (!verb)
295
+ if (verb && isActionVerb(remainder))
186
296
  return camelCase(remainder);
187
- return camelCase(`${verb}${remainder}`);
297
+ return verb ? camelCase(`${verb}${remainder}`) : camelCase(remainder);
188
298
  }
189
- // ── Strategy 2: clean summary ─────────────────────────
190
- function cleanSummary(summary, tagName) {
191
- const cleaned = summary.trim()
192
- .replace(/\([^)]*\)/g, '')
193
- .replace(/'s\b/g, '')
194
- .replace(/\bby\s+\w+$/i, '')
195
- .replace(/\s+/g, ' ')
299
+ // ─────────────────────────────────────────────────────────────
300
+ // STRATEGY 2: SUMMARY
301
+ // ─────────────────────────────────────────────────────────────
302
+ function cleanSummary(summary, tag) {
303
+ const cleaned = summary
304
+ .trim()
305
+ .replace(/\([^)]*\)/g, "")
306
+ .replace(/'s\b/g, "")
307
+ .replace(/\bby\s+\w+$/i, "")
308
+ .replace(/\s+/g, " ")
196
309
  .trim();
197
- const words = cleaned.split(/\s+/);
310
+ const words = cleaned.split(" ");
198
311
  if (!words.length)
199
312
  return null;
200
- let verb;
201
- let objectStartIdx;
202
313
  const first = words[0].toLowerCase();
203
314
  const second = words[1]?.toLowerCase();
204
- if (first === 'log' && second === 'out') {
205
- verb = 'logOut';
206
- objectStartIdx = 2;
315
+ let verb;
316
+ let idx = 1;
317
+ if (first === "log" && second === "out") {
318
+ verb = "logOut";
319
+ idx = 2;
207
320
  }
208
321
  else {
209
322
  verb = VERB_SYNONYMS[first] ?? camelCase(first);
210
- objectStartIdx = 1;
211
323
  }
212
- const tagWords = getTagWordsLower(tagName);
213
- const objectWords = words.slice(objectStartIdx)
324
+ const tagWords = getTagWordsLower(tag);
325
+ const objectWords = words
326
+ .slice(idx)
214
327
  .map((w) => w.toLowerCase())
215
328
  .filter((w) => !FILLER_WORDS.has(w) && !tagWords.has(w))
216
329
  .slice(0, 3);
217
- return objectWords.length ? camelCase(`${verb} ${objectWords.join(' ')}`) : verb;
330
+ return objectWords.length
331
+ ? camelCase(`${verb} ${objectWords.join(" ")}`)
332
+ : verb;
218
333
  }
219
- // ── Strategy 3: path-derived ──────────────────────────
220
- function cleanPathDerived(path, httpMethod, tagName) {
221
- const tagWords = getTagWordsLower(tagName);
222
- const meaningful = path.split('/').filter((s) => s && !s.startsWith('{') && !tagWords.has(s.toLowerCase()));
223
- if (meaningful.length > 0) {
224
- const last = meaningful[meaningful.length - 1];
225
- if (isActionVerbWord(pascalCase(last))) {
226
- const action = meaningful.pop();
227
- return meaningful.length ? camelCase(`${action} ${meaningful.join(' ')}`) : camelCase(action);
228
- }
229
- }
230
- const verb = mapHttpMethodToVerb(httpMethod, isCollectionEndpoint(path));
231
- return meaningful.length ? camelCase(`${verb} ${meaningful.join(' ')}`) : verb;
334
+ // ─────────────────────────────────────────────────────────────
335
+ // STRATEGY 3: PATH
336
+ // ─────────────────────────────────────────────────────────────
337
+ function cleanPathDerived(path, method, tag) {
338
+ const tagWords = getTagWordsLower(tag);
339
+ const meaningful = path
340
+ .split("/")
341
+ .filter((s) => s && !s.startsWith("{") && !tagWords.has(s.toLowerCase()));
342
+ const verb = mapHttpMethodToVerb(method, isCollectionEndpoint(path));
343
+ return meaningful.length
344
+ ? camelCase(`${verb} ${meaningful.join(" ")}`)
345
+ : verb;
232
346
  }
233
347
  export function deriveCleanMethodName(params) {
234
348
  const { operationId, summary, path, httpMethod, tagName } = params;
235
349
  if (operationId) {
236
- const candidate = cleanOperationId(operationId, tagName);
237
- if (isCleanName(candidate))
238
- return candidate;
350
+ const c = cleanOperationId(operationId, tagName);
351
+ if (isCleanName(c))
352
+ return c;
239
353
  }
240
354
  if (summary) {
241
- const candidate = cleanSummary(summary, tagName);
242
- if (candidate)
243
- return candidate;
355
+ const c = cleanSummary(summary, tagName);
356
+ if (c)
357
+ return c;
244
358
  }
245
359
  return cleanPathDerived(path, httpMethod, tagName);
246
360
  }
247
- // ── Deduplication ─────────────────────────────────────
248
- /**
249
- * Deduplicate method names within a group.
250
- * Takes an array of names, returns a deduplicated array of the same length.
251
- */
361
+ // ─────────────────────────────────────────────────────────────
362
+ // DEDUPLICATION (FIXED + STABLE)
363
+ // ─────────────────────────────────────────────────────────────
252
364
  export function deduplicateMethodNames(names) {
253
365
  const counts = new Map();
254
366
  for (const n of names)
255
367
  counts.set(n, (counts.get(n) ?? 0) + 1);
256
- const result = [...names];
257
368
  const seen = new Map();
258
- for (let i = 0; i < result.length; i++) {
259
- const name = result[i];
260
- if ((counts.get(name) ?? 0) <= 1)
369
+ const out = new Array(names.length);
370
+ for (let i = 0; i < names.length; i++) {
371
+ const name = names[i];
372
+ if ((counts.get(name) ?? 0) <= 1) {
373
+ out[i] = name;
261
374
  continue;
375
+ }
262
376
  const idx = (seen.get(name) ?? 0) + 1;
263
377
  seen.set(name, idx);
264
- if (idx > 1) {
265
- result[i] = `${name}${idx}`;
266
- }
378
+ out[i] = idx === 1 ? name : `${name}${idx}`;
267
379
  }
268
- return result;
380
+ return out;
269
381
  }
270
382
  //# sourceMappingURL=naming.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"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"}